mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 09:23:03 -04:00
deploy-ng: Allow specifying installers for each platform
This commit is contained in:
parent
f535a641e4
commit
1afcda4700
@ -24,6 +24,28 @@ if 'basestring' not in globals():
|
||||
basestring = str
|
||||
|
||||
|
||||
def _parse_list(input):
|
||||
if isinstance(input, basestring):
|
||||
input = input.strip().replace(',', '\n')
|
||||
if input:
|
||||
return [item.strip() for item in input.split('\n') if item.strip()]
|
||||
else:
|
||||
return []
|
||||
else:
|
||||
return input
|
||||
|
||||
|
||||
def _parse_dict(input):
|
||||
if isinstance(input, dict):
|
||||
return input
|
||||
d = {}
|
||||
for item in _parse_list(input):
|
||||
key, sep, value = item.partition('=')
|
||||
d[key.strip()] = value.strip()
|
||||
return d
|
||||
|
||||
|
||||
|
||||
def egg2bam(_build_cmd, srcpath, dstpath):
|
||||
dstpath = dstpath + '.bam'
|
||||
subprocess.call([
|
||||
@ -96,25 +118,6 @@ class build_apps(distutils.core.Command):
|
||||
def finalize_options(self):
|
||||
# We need to massage the inputs a bit in case they came from a
|
||||
# setup.cfg file.
|
||||
def _parse_list(input):
|
||||
if isinstance(input, basestring):
|
||||
input = input.strip().replace(',', '\n')
|
||||
if input:
|
||||
return [item.strip() for item in input.split('\n') if item.strip()]
|
||||
else:
|
||||
return []
|
||||
else:
|
||||
return input
|
||||
|
||||
def _parse_dict(input):
|
||||
if isinstance(input, dict):
|
||||
return input
|
||||
d = {}
|
||||
for item in _parse_list(input):
|
||||
key, sep, value = item.partition('=')
|
||||
d[key.strip()] = value.strip()
|
||||
return d
|
||||
|
||||
self.gui_apps = _parse_dict(self.gui_apps)
|
||||
self.console_apps = _parse_dict(self.console_apps)
|
||||
|
||||
@ -758,14 +761,22 @@ class build_apps(distutils.core.Command):
|
||||
|
||||
|
||||
class bdist_apps(distutils.core.Command):
|
||||
DEFAULT_INSTALLERS = {
|
||||
'manylinux1_x86_64': ['gztar'],
|
||||
'manylinux1_i386': ['gztar'],
|
||||
# Everything else defaults to ['zip']
|
||||
}
|
||||
|
||||
description = 'bundle built Panda3D applications into distributable forms'
|
||||
user_options = []
|
||||
|
||||
def initialize_options(self):
|
||||
pass
|
||||
self.installers = {}
|
||||
|
||||
def finalize_options(self):
|
||||
pass
|
||||
# We need to massage the inputs a bit in case they came from a
|
||||
# setup.cfg file.
|
||||
self.installers = _parse_dict(self.installers)
|
||||
|
||||
def run(self):
|
||||
build_cmd = self.get_finalized_command('build_apps')
|
||||
@ -780,20 +791,26 @@ class bdist_apps(distutils.core.Command):
|
||||
|
||||
for platform in platforms:
|
||||
build_dir = os.path.join(build_base, platform)
|
||||
base_dir = self.distribution.get_name()
|
||||
temp_dir = os.path.join(build_base, base_dir)
|
||||
archive_format = 'gztar' if 'linux' in platform else 'zip'
|
||||
basename = '{}_{}'.format(self.distribution.get_fullname(), platform)
|
||||
installers = self.installers.get(platform, self.DEFAULT_INSTALLERS.get(platform, ['zip']))
|
||||
print(installers)
|
||||
|
||||
if (os.path.exists(temp_dir)):
|
||||
shutil.rmtree(temp_dir)
|
||||
shutil.copytree(build_dir, temp_dir)
|
||||
for installer in installers:
|
||||
self.announce('\nBuilding {} for platform: {}'.format(installer, platform), distutils.log.INFO)
|
||||
|
||||
self.announce('Building {} for platform: {}'.format(archive_format, platform), distutils.log.INFO)
|
||||
if installer in ('zip', 'gztar'):
|
||||
base_dir = self.distribution.get_name()
|
||||
temp_dir = os.path.join(build_base, base_dir)
|
||||
if (os.path.exists(temp_dir)):
|
||||
shutil.rmtree(temp_dir)
|
||||
shutil.copytree(build_dir, temp_dir)
|
||||
|
||||
distutils.archive_util.make_archive(basename, archive_format, root_dir=build_base, base_dir=base_dir)
|
||||
distutils.archive_util.make_archive(basename, installer, root_dir=build_base, base_dir=base_dir)
|
||||
|
||||
shutil.rmtree(temp_dir)
|
||||
else:
|
||||
self.announce('\tUnknown installer: {}'.format(installer), distutils.log.ERROR)
|
||||
|
||||
shutil.rmtree(temp_dir)
|
||||
|
||||
def setup(**attrs):
|
||||
commandClasses = attrs.setdefault("cmdclass", {})
|
||||
|
Loading…
x
Reference in New Issue
Block a user