Browse Source

Merge pull request #2592 from blink1073/fix-linked-packages

Make sure linked packages are updated
S. Chris Colbert 7 years ago
parent
commit
9b7fc161c2

+ 1 - 0
MANIFEST.in

@@ -10,6 +10,7 @@ include setupbase.py
 include jupyterlab/package.app.json
 include jupyterlab/webpack.config.js
 include jupyterlab/index.app.js
+include jupyterlab/node-version-check.js
 include jupyterlab/released_packages.txt
 
 prune jupyterlab/tests

+ 22 - 5
jupyterlab/commands.py

@@ -225,8 +225,7 @@ def check_node():
     """Check for the existence of node and whether it is the right version.
     """
     try:
-        scripts = os.path.abspath(os.path.join(here, '../scripts'))
-        run(['node', 'node-version-check.js'], cwd=scripts)
+        run(['node', 'node-version-check.js'], cwd=here)
     except Exception:
         raise ValueError('`node` version 5+ is required, see extensions in README')
 
@@ -455,9 +454,20 @@ def build(app_dir=None, name=None, version=None, logger=None):
     _ensure_package(app_dir, name=name, version=version, logger=logger)
     staging = pjoin(app_dir, 'staging')
 
-    # Install the linked extensions.
-    for path in _get_linked_packages(app_dir, logger=logger).values():
-        install_extension(path, app_dir)
+    extensions = _get_extensions(app_dir)
+
+    # Install the linked packages.
+    for (name, path) in _get_linked_packages(app_dir, logger=logger).items():
+        # Handle linked extensions.
+        if name in extensions:
+            install_extension(path, app_dir)
+        # Handle linked packages that are not extensions.
+        else:
+            # Remove any existing package from staging/node_modules
+            target = pjoin(app_dir, 'staging', 'node_modules', name)
+            target = target.replace('/', os.sep)
+            if os.path.exists(target):
+                shutil.rmtree(target)
 
     # Make sure packages are installed.
     run(['npm', 'install'], cwd=staging, logger=logger)
@@ -567,6 +577,7 @@ def _test_overlap(spec1, spec2):
         gx(y2, x1, True) and lx(y2, x2, True)
     )
 
+
 def _format_compatibility_errors(name, version, errors):
     """Format a message for compatibility errors.
     """
@@ -675,6 +686,12 @@ def _ensure_package(app_dir, name=None, version=None, logger=None):
         else:
             data['jupyterlab']['mimeExtensions'].append(key)
 
+    # Handle linked packages that are not extensions.
+    for (key, path) in _get_linked_packages(app_dir).items():
+        if key in extensions:
+            continue
+        data['dependencies'][key] = path
+
     for item in _get_uinstalled_core_extensions(app_dir):
         if item in data['jupyterlab']['extensions']:
             data['jupyterlab']['extensions'].remove(item)

+ 0 - 0
scripts/node-version-check.js → jupyterlab/node-version-check.js


+ 1 - 1
packages/launcher-extension/package.json

@@ -18,7 +18,7 @@
     "@jupyterlab/filebrowser": "^0.7.0",
     "@jupyterlab/launcher": "^0.7.0",
     "@jupyterlab/services": "^0.46.0",
-    "@phosphor/coreutils": "^1.1.1",
+    "@phosphor/coreutils": "^1.2.0",
     "@phosphor/widgets": "^1.3.0"
   },
   "devDependencies": {

+ 2 - 1
setupbase.py

@@ -76,7 +76,8 @@ def find_package_data():
     """
     return {
         'jupyterlab': ['build/*', 'index.app.js', 'webpack.config.js',
-                       'package.app.json', 'released_packages.txt']
+                       'package.app.json', 'released_packages.txt',
+                       'node-version-check.js']
     }