diff --git a/direct/src/showutil/dist.py b/direct/src/showutil/dist.py index 132cf85acc..0173b8ecd5 100644 --- a/direct/src/showutil/dist.py +++ b/direct/src/showutil/dist.py @@ -83,6 +83,8 @@ class build_apps(distutils.core.Command): self.platforms = [] self.plugins = [] self.embed_prc_data = True + self.extra_prc_files = [] + self.extra_prc_data = '' self.requirements_path = './requirements.txt' self.pypi_extra_indexes = [] self.file_handlers= { @@ -128,6 +130,7 @@ class build_apps(distutils.core.Command): self.include_modules = _parse_dict(self.include_modules) self.exclude_modules = _parse_dict(self.exclude_modules) self.plugins = _parse_list(self.plugins) + self.extra_prc_files = _parse_list(self.extra_prc_files) num_gui_apps = len(self.gui_apps) num_console_apps = len(self.console_apps) @@ -290,26 +293,38 @@ class build_apps(distutils.core.Command): for fn in etcfiles: with p3dwhl.open(fn) as f: prcstring += f.read().decode('utf8') + user_prcstring = self.extra_prc_data + for fn in self.extra_prc_files: + with open(fn) as f: + user_prcstring += f.read() # Clenup PRC data - prcexport = [] check_plugins = [ + #TODO find a better way to get this list 'pandaegg', 'p3ffmpeg', 'p3ptloader', ] - for ln in prcstring.split('\n'): - useline = True - if ln.startswith('#') or not ln: - useline = False - else: - for plugin in check_plugins: - if plugin in ln and plugin not in self.plugins: - useline = False - break - - if useline: - prcexport.append(ln) + def parse_prc(prcstr, warn_on_missing_plugin): + out = [] + for ln in prcstr.split('\n'): + ln = ln.strip() + useline = True + if ln.startswith('#') or not ln: + useline = False + else: + for plugin in check_plugins: + if plugin in ln and plugin not in self.plugins: + useline = False + if warn_on_missing_plugin: + self.warn( + "Missing plugin ({0}) referenced in user PRC data".format(plugin) + ) + break + if useline: + out.append(ln) + return out + prcexport = parse_prc(prcstring, 0) + parse_prc(user_prcstring, 1) # Export PRC data prcexport = '\n'.join(prcexport) @@ -464,6 +479,7 @@ class build_apps(distutils.core.Command): ] ignore_copy_list += self.exclude_patterns ignore_copy_list += freezer_modpaths + ignore_copy_list += self.extra_prc_files ignore_copy_list = [p3d.GlobPattern(i) for i in ignore_copy_list] include_copy_list = [p3d.GlobPattern(i) for i in self.include_patterns]