mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -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
|
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):
|
def egg2bam(_build_cmd, srcpath, dstpath):
|
||||||
dstpath = dstpath + '.bam'
|
dstpath = dstpath + '.bam'
|
||||||
subprocess.call([
|
subprocess.call([
|
||||||
@ -96,25 +118,6 @@ class build_apps(distutils.core.Command):
|
|||||||
def finalize_options(self):
|
def finalize_options(self):
|
||||||
# We need to massage the inputs a bit in case they came from a
|
# We need to massage the inputs a bit in case they came from a
|
||||||
# setup.cfg file.
|
# 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.gui_apps = _parse_dict(self.gui_apps)
|
||||||
self.console_apps = _parse_dict(self.console_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):
|
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'
|
description = 'bundle built Panda3D applications into distributable forms'
|
||||||
user_options = []
|
user_options = []
|
||||||
|
|
||||||
def initialize_options(self):
|
def initialize_options(self):
|
||||||
pass
|
self.installers = {}
|
||||||
|
|
||||||
def finalize_options(self):
|
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):
|
def run(self):
|
||||||
build_cmd = self.get_finalized_command('build_apps')
|
build_cmd = self.get_finalized_command('build_apps')
|
||||||
@ -780,20 +791,26 @@ class bdist_apps(distutils.core.Command):
|
|||||||
|
|
||||||
for platform in platforms:
|
for platform in platforms:
|
||||||
build_dir = os.path.join(build_base, platform)
|
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)
|
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)):
|
for installer in installers:
|
||||||
shutil.rmtree(temp_dir)
|
self.announce('\nBuilding {} for platform: {}'.format(installer, platform), distutils.log.INFO)
|
||||||
shutil.copytree(build_dir, temp_dir)
|
|
||||||
|
|
||||||
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):
|
def setup(**attrs):
|
||||||
commandClasses = attrs.setdefault("cmdclass", {})
|
commandClasses = attrs.setdefault("cmdclass", {})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user