|
@@ -213,7 +213,8 @@ class build_apps(setuptools.Command):
|
|
|
'dciman32.dll', 'comdlg32.dll', 'comctl32.dll', 'ole32.dll',
|
|
'dciman32.dll', 'comdlg32.dll', 'comctl32.dll', 'ole32.dll',
|
|
|
'oleaut32.dll', 'gdiplus.dll', 'winmm.dll', 'iphlpapi.dll',
|
|
'oleaut32.dll', 'gdiplus.dll', 'winmm.dll', 'iphlpapi.dll',
|
|
|
'msvcrt.dll', 'kernelbase.dll', 'msimg32.dll', 'msacm32.dll',
|
|
'msvcrt.dll', 'kernelbase.dll', 'msimg32.dll', 'msacm32.dll',
|
|
|
- 'setupapi.dll', 'version.dll',
|
|
|
|
|
|
|
+ 'setupapi.dll', 'version.dll', 'userenv.dll', 'netapi32.dll',
|
|
|
|
|
+ 'crypt32.dll',
|
|
|
|
|
|
|
|
# manylinux1/linux
|
|
# manylinux1/linux
|
|
|
'libdl.so.*', 'libstdc++.so.*', 'libm.so.*', 'libgcc_s.so.*',
|
|
'libdl.so.*', 'libstdc++.so.*', 'libm.so.*', 'libgcc_s.so.*',
|
|
@@ -229,6 +230,42 @@ class build_apps(setuptools.Command):
|
|
|
'/usr/lib/libSystem.*.dylib',
|
|
'/usr/lib/libSystem.*.dylib',
|
|
|
'/usr/lib/libbz2.*.dylib',
|
|
'/usr/lib/libbz2.*.dylib',
|
|
|
'/usr/lib/libedit.*.dylib',
|
|
'/usr/lib/libedit.*.dylib',
|
|
|
|
|
+ '/usr/lib/libffi.dylib',
|
|
|
|
|
+ '/usr/lib/libauditd.0.dylib',
|
|
|
|
|
+ '/usr/lib/libgermantok.dylib',
|
|
|
|
|
+ '/usr/lib/liblangid.dylib',
|
|
|
|
|
+ '/usr/lib/libarchive.2.dylib',
|
|
|
|
|
+ '/usr/lib/libipsec.A.dylib',
|
|
|
|
|
+ '/usr/lib/libpanel.5.4.dylib',
|
|
|
|
|
+ '/usr/lib/libiodbc.2.1.18.dylib',
|
|
|
|
|
+ '/usr/lib/libhunspell-1.2.0.0.0.dylib',
|
|
|
|
|
+ '/usr/lib/libsqlite3.dylib',
|
|
|
|
|
+ '/usr/lib/libpam.1.dylib',
|
|
|
|
|
+ '/usr/lib/libtidy.A.dylib',
|
|
|
|
|
+ '/usr/lib/libDHCPServer.A.dylib',
|
|
|
|
|
+ '/usr/lib/libpam.2.dylib',
|
|
|
|
|
+ '/usr/lib/libXplugin.1.dylib',
|
|
|
|
|
+ '/usr/lib/libxslt.1.dylib',
|
|
|
|
|
+ '/usr/lib/libiodbcinst.2.1.18.dylib',
|
|
|
|
|
+ '/usr/lib/libBSDPClient.A.dylib',
|
|
|
|
|
+ '/usr/lib/libsandbox.1.dylib',
|
|
|
|
|
+ '/usr/lib/libform.5.4.dylib',
|
|
|
|
|
+ '/usr/lib/libbsm.0.dylib',
|
|
|
|
|
+ '/usr/lib/libMatch.1.dylib',
|
|
|
|
|
+ '/usr/lib/libresolv.9.dylib',
|
|
|
|
|
+ '/usr/lib/libcharset.1.dylib',
|
|
|
|
|
+ '/usr/lib/libxml2.2.dylib',
|
|
|
|
|
+ '/usr/lib/libiconv.2.dylib',
|
|
|
|
|
+ '/usr/lib/libScreenReader.dylib',
|
|
|
|
|
+ '/usr/lib/libdtrace.dylib',
|
|
|
|
|
+ '/usr/lib/libicucore.A.dylib',
|
|
|
|
|
+ '/usr/lib/libsasl2.2.dylib',
|
|
|
|
|
+ '/usr/lib/libpcap.A.dylib',
|
|
|
|
|
+ '/usr/lib/libexslt.0.dylib',
|
|
|
|
|
+ '/usr/lib/libcurl.4.dylib',
|
|
|
|
|
+ '/usr/lib/libncurses.5.4.dylib',
|
|
|
|
|
+ '/usr/lib/libxar.1.dylib',
|
|
|
|
|
+ '/usr/lib/libmenu.5.4.dylib',
|
|
|
'/System/Library/**',
|
|
'/System/Library/**',
|
|
|
]
|
|
]
|
|
|
|
|
|
|
@@ -491,6 +528,7 @@ class build_apps(setuptools.Command):
|
|
|
|
|
|
|
|
path = sys.path[:]
|
|
path = sys.path[:]
|
|
|
p3dwhl = None
|
|
p3dwhl = None
|
|
|
|
|
+ wheelpaths = []
|
|
|
|
|
|
|
|
if use_wheels:
|
|
if use_wheels:
|
|
|
wheelpaths = self.download_wheels(platform)
|
|
wheelpaths = self.download_wheels(platform)
|
|
@@ -769,6 +807,7 @@ class build_apps(setuptools.Command):
|
|
|
for module, source_path in freezer_extras:
|
|
for module, source_path in freezer_extras:
|
|
|
if source_path is not None:
|
|
if source_path is not None:
|
|
|
# Rename panda3d/core.pyd to panda3d.core.pyd
|
|
# Rename panda3d/core.pyd to panda3d.core.pyd
|
|
|
|
|
+ source_path = os.path.normpath(source_path)
|
|
|
basename = os.path.basename(source_path)
|
|
basename = os.path.basename(source_path)
|
|
|
if '.' in module:
|
|
if '.' in module:
|
|
|
basename = module.rsplit('.', 1)[0] + '.' + basename
|
|
basename = module.rsplit('.', 1)[0] + '.' + basename
|
|
@@ -778,6 +817,20 @@ class build_apps(setuptools.Command):
|
|
|
if len(parts) >= 3 and '-' in parts[-2]:
|
|
if len(parts) >= 3 and '-' in parts[-2]:
|
|
|
parts = parts[:-2] + parts[-1:]
|
|
parts = parts[:-2] + parts[-1:]
|
|
|
basename = '.'.join(parts)
|
|
basename = '.'.join(parts)
|
|
|
|
|
+
|
|
|
|
|
+ # Was this not found in a wheel? Then we may have a problem,
|
|
|
|
|
+ # since it may be for the current platform instead of the target
|
|
|
|
|
+ # platform.
|
|
|
|
|
+ if use_wheels:
|
|
|
|
|
+ found_in_wheel = False
|
|
|
|
|
+ for whl in wheelpaths:
|
|
|
|
|
+ whl = os.path.normpath(whl)
|
|
|
|
|
+ if source_path.lower().startswith(os.path.join(whl, '').lower()):
|
|
|
|
|
+ found_in_wheel = True
|
|
|
|
|
+ break
|
|
|
|
|
+
|
|
|
|
|
+ if not found_in_wheel:
|
|
|
|
|
+ self.warn('{} was not found in any downloaded wheel, is a dependency missing from requirements.txt?'.format(basename))
|
|
|
else:
|
|
else:
|
|
|
# Builtin module, but might not be builtin in wheel libs, so double check
|
|
# Builtin module, but might not be builtin in wheel libs, so double check
|
|
|
if module in whl_modules:
|
|
if module in whl_modules:
|
|
@@ -881,6 +934,26 @@ class build_apps(setuptools.Command):
|
|
|
return check_pattern(fname, include_copy_list) and \
|
|
return check_pattern(fname, include_copy_list) and \
|
|
|
not check_pattern(fname, ignore_copy_list)
|
|
not check_pattern(fname, ignore_copy_list)
|
|
|
|
|
|
|
|
|
|
+ def skip_directory(src):
|
|
|
|
|
+ # Provides a quick-out for directory checks. NOT recursive.
|
|
|
|
|
+ fn = p3d.Filename.from_os_specific(os.path.normpath(src))
|
|
|
|
|
+ path = fn.get_fullpath()
|
|
|
|
|
+ fn.make_absolute()
|
|
|
|
|
+ abspath = fn.get_fullpath()
|
|
|
|
|
+
|
|
|
|
|
+ for pattern in ignore_copy_list:
|
|
|
|
|
+ if not pattern.pattern.endswith('/*') and \
|
|
|
|
|
+ not pattern.pattern.endswith('/**'):
|
|
|
|
|
+ continue
|
|
|
|
|
+
|
|
|
|
|
+ if abspath.startswith(pattern_dir + '/'):
|
|
|
|
|
+ return True
|
|
|
|
|
+
|
|
|
|
|
+ if path.startswith(pattern_dir + '/'):
|
|
|
|
|
+ return True
|
|
|
|
|
+
|
|
|
|
|
+ return False
|
|
|
|
|
+
|
|
|
def copy_file(src, dst):
|
|
def copy_file(src, dst):
|
|
|
src = os.path.normpath(src)
|
|
src = os.path.normpath(src)
|
|
|
dst = os.path.normpath(dst)
|
|
dst = os.path.normpath(dst)
|
|
@@ -921,6 +994,10 @@ class build_apps(setuptools.Command):
|
|
|
rootdir = os.getcwd()
|
|
rootdir = os.getcwd()
|
|
|
for dirname, subdirlist, filelist in os.walk(rootdir):
|
|
for dirname, subdirlist, filelist in os.walk(rootdir):
|
|
|
dirpath = os.path.relpath(dirname, rootdir)
|
|
dirpath = os.path.relpath(dirname, rootdir)
|
|
|
|
|
+ if skip_directory(dirpath):
|
|
|
|
|
+ self.announce('skipping directory {}'.format(dirpath))
|
|
|
|
|
+ continue
|
|
|
|
|
+
|
|
|
for fname in filelist:
|
|
for fname in filelist:
|
|
|
src = os.path.join(dirpath, fname)
|
|
src = os.path.join(dirpath, fname)
|
|
|
dst = os.path.join(builddir, update_path(src))
|
|
dst = os.path.join(builddir, update_path(src))
|