1
1
#!/usr/bin/env python
2
2
# Copyright (c) IPython Development Team.
3
3
# Distributed under the terms of the Modified BSD License.
4
+ import glob
4
5
import os
5
6
import sys
6
7
@@ -61,14 +62,35 @@ def run(self):
61
62
sys .path .insert (0 , '' )
62
63
from setupbase import wrap_installers , npm_builder , get_data_files
63
64
64
- data_files = get_data_files (data_files_spec )
65
-
66
65
builder = npm_builder (build_cmd = "build:prod" , npm = "jlpm" )
66
+
67
+ cmdclass = {}
67
68
if os .environ .get ("IPP_DISABLE_JS" ) == "1" :
68
69
print ("Skipping js installation" )
69
- cmdclass = {}
70
70
else :
71
- cmdclass = wrap_installers (pre_develop = builder , pre_dist = builder )
71
+ # this tells us if labextension is built at all, not if it's up-to-date
72
+ labextension_built = glob .glob (os .path .join (lab_path , "*" ))
73
+ if not labextension_built :
74
+ # jupyter-packaging doesn't update data_files or package_data correctly
75
+ # after running builds
76
+ # run build first if we know it's needed
77
+ builder ()
78
+ # don't need to run it again
79
+ needs_js = False
80
+
81
+ needs_js = True
82
+ if not os .path .isdir (os .path .join (here , ".git" )):
83
+ print ("Installing from a dist, not a repo" )
84
+ # not in a repo, probably installing from sdist
85
+ # could be git-archive, though!
86
+ # skip rebuilding js if it's already present
87
+ if labextension_built :
88
+ print (f"Not regenerating labextension in { lab_path } " )
89
+ needs_js = False
90
+
91
+ if needs_js :
92
+ cmdclass = wrap_installers (pre_develop = builder , pre_dist = builder )
93
+
72
94
73
95
if "bdist_egg" not in sys .argv :
74
96
cmdclass ["bdist_egg" ] = bdist_egg_disabled
@@ -78,7 +100,7 @@ def run(self):
78
100
version = version_ns ["__version__" ],
79
101
packages = setuptools .find_packages (),
80
102
description = "Interactive Parallel Computing with IPython" ,
81
- data_files = data_files ,
103
+ data_files = get_data_files ( data_files_spec ) ,
82
104
long_description = readme ,
83
105
long_description_content_type = "text/markdown" ,
84
106
author = "IPython Development Team" ,
0 commit comments