mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 08:44:19 -04:00
dist: make config.prc handling a bit more robust
Strip comments after value, don't look for variable names mid-string, and sort the prc files deterministically.
This commit is contained in:
parent
7ce1a9ffed
commit
69296585a4
31
direct/src/dist/commands.py
vendored
31
direct/src/dist/commands.py
vendored
@ -574,15 +574,19 @@ class build_apps(setuptools.Command):
|
|||||||
libdir = os.path.dirname(dtool_fn.to_os_specific())
|
libdir = os.path.dirname(dtool_fn.to_os_specific())
|
||||||
etcdir = os.path.join(libdir, '..', 'etc')
|
etcdir = os.path.join(libdir, '..', 'etc')
|
||||||
|
|
||||||
for fn in os.listdir(etcdir):
|
etcfiles = os.listdir(etcdir)
|
||||||
|
etcfiles.sort(reverse=True)
|
||||||
|
for fn in etcfiles:
|
||||||
if fn.lower().endswith('.prc'):
|
if fn.lower().endswith('.prc'):
|
||||||
with open(os.path.join(etcdir, fn)) as f:
|
with open(os.path.join(etcdir, fn)) as f:
|
||||||
prcstring += f.read()
|
prcstring += f.read()
|
||||||
else:
|
else:
|
||||||
etcfiles = [i for i in p3dwhl.namelist() if i.endswith('.prc')]
|
etcfiles = [i for i in p3dwhl.namelist() if i.endswith('.prc')]
|
||||||
|
etcfiles.sort(reverse=True)
|
||||||
for fn in etcfiles:
|
for fn in etcfiles:
|
||||||
with p3dwhl.open(fn) as f:
|
with p3dwhl.open(fn) as f:
|
||||||
prcstring += f.read().decode('utf8')
|
prcstring += f.read().decode('utf8')
|
||||||
|
|
||||||
user_prcstring = self.extra_prc_data
|
user_prcstring = self.extra_prc_data
|
||||||
for fn in self.extra_prc_files:
|
for fn in self.extra_prc_files:
|
||||||
with open(fn) as f:
|
with open(fn) as f:
|
||||||
@ -601,12 +605,26 @@ class build_apps(setuptools.Command):
|
|||||||
for ln in prcstr.split('\n'):
|
for ln in prcstr.split('\n'):
|
||||||
ln = ln.strip()
|
ln = ln.strip()
|
||||||
useline = True
|
useline = True
|
||||||
|
|
||||||
if ln.startswith('#') or not ln:
|
if ln.startswith('#') or not ln:
|
||||||
continue
|
continue
|
||||||
if 'model-cache-dir' in ln:
|
|
||||||
ln = ln.replace('/panda3d', '/{}'.format(self.distribution.get_name()))
|
words = ln.split(None, 1)
|
||||||
|
if not words:
|
||||||
|
continue
|
||||||
|
var = words[0]
|
||||||
|
value = words[1] if len(words) > 1 else ''
|
||||||
|
|
||||||
|
# Strip comment after value.
|
||||||
|
c = value.find(' #')
|
||||||
|
if c > 0:
|
||||||
|
value = value[:c].rstrip()
|
||||||
|
|
||||||
|
if var == 'model-cache-dir' and value:
|
||||||
|
value = value.replace('/panda3d', '/{}'.format(self.distribution.get_name()))
|
||||||
|
|
||||||
for plugin in check_plugins:
|
for plugin in check_plugins:
|
||||||
if plugin in ln and plugin not in self.plugins:
|
if plugin in value and plugin not in self.plugins:
|
||||||
useline = False
|
useline = False
|
||||||
if warn_on_missing_plugin:
|
if warn_on_missing_plugin:
|
||||||
self.warn(
|
self.warn(
|
||||||
@ -614,7 +632,10 @@ class build_apps(setuptools.Command):
|
|||||||
)
|
)
|
||||||
break
|
break
|
||||||
if useline:
|
if useline:
|
||||||
out.append(ln)
|
if value:
|
||||||
|
out.append(var + ' ' + value)
|
||||||
|
else:
|
||||||
|
out.append(var)
|
||||||
return out
|
return out
|
||||||
prcexport = parse_prc(prcstring, 0) + parse_prc(user_prcstring, 1)
|
prcexport = parse_prc(prcstring, 0) + parse_prc(user_prcstring, 1)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user