Hello, I am working on the pyfai package. This pacakge contain one module with extensions (the important point)
The new upstream version 0.14.0 provide a build_man target via the setup.py So in ordert to generate the doc I need to do python setup.py build_man Now if I look at this target, I can find this code ----- class BuildMan(Command): """Command to build man pages""" user_options = [] def initialize_options(self): pass def finalize_options(self): pass def entry_points_iterator(self): """Iterate other entry points available on the project.""" entry_points = self.distribution.entry_points console_scripts = entry_points.get('console_scripts', []) gui_scripts = entry_points.get('gui_scripts', []) scripts = [] scripts.extend(console_scripts) scripts.extend(gui_scripts) for script in scripts: elements = script.split("=") target_name = elements[0].strip() elements = elements[1].split(":") module_name = elements[0].strip() function_name = elements[1].strip() yield target_name, module_name, function_name def run(self): build = self.get_finalized_command('build') path = sys.path path.insert(0, os.path.abspath(build.build_lib)) env = dict((str(k), str(v)) for k, v in os.environ.items()) env["PYTHONPATH"] = os.pathsep.join(path) import subprocess status = subprocess.call(["mkdir", "-p", "build/man"]) if status != 0: raise RuntimeError("Fail to create build/man directory") import tempfile import stat script_name = None entry_points = self.entry_points_iterator() for target_name, module_name, function_name in entry_points: logger.info("Build man for entry-point target '%s'" % target_name) # help2man expect a single executable file to extract the help # we create it, execute it, and delete it at the end py3 = sys.version_info >= (3, 0) try: # create a launcher using the right python interpreter script_fid, script_name = tempfile.mkstemp(prefix="%s_" % target_name, text=True) script = os.fdopen(script_fid, 'wt') script.write("#!%s\n" % sys.executable) script.write("import %s as app\n" % module_name) script.write("app.%s()\n" % function_name) script.close() # make it executable mode = os.stat(script_name).st_mode os.chmod(script_name, mode + stat.S_IEXEC) # execute help2man man_file = "build/man/%s.1" % target_name command_line = ["help2man", script_name, "-o", man_file] if not py3: # Before Python 3.4, ArgParser --version was using # stderr to print the version command_line.append("--no-discard-stderr") p = subprocess.Popen(command_line, env=env) status = p.wait() if status != 0: raise RuntimeError("Fail to generate '%s' man documentation" % target_name) finally: # clean up the script if script_name is not None: os.remove(script_name) ----- As you can see this create a launch script for each entry point found in the setup.py and run help2man on it. For now I would like to use this setup.py without modification. So what should I do to run python setup.py build_man with the options provided by pybuild during the normal build in order to let the generated script find the pyFAI modules and its extensions ? Second questions what is the right way to generate the man pages for a python application ? thanks for your help Frederic