From 47c4683dcd92063cc28bfae763ea64dfb96ada87 Mon Sep 17 00:00:00 2001 From: Yadu Date: Tue, 11 Apr 2023 22:12:26 +0800 Subject: [PATCH] Fix document generation on the buildfarm for some ament_python pkgs (#52) * Copy modules along with pkg_src_directory Signed-off-by: Yadunund * Update rosdoc2/verbs/build/builders/sphinx_builder.py Co-authored-by: Chris Lalancette --------- Signed-off-by: Yadunund Co-authored-by: Chris Lalancette --- rosdoc2/verbs/build/builders/sphinx_builder.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/rosdoc2/verbs/build/builders/sphinx_builder.py b/rosdoc2/verbs/build/builders/sphinx_builder.py index 08f1307..579e332 100644 --- a/rosdoc2/verbs/build/builders/sphinx_builder.py +++ b/rosdoc2/verbs/build/builders/sphinx_builder.py @@ -412,7 +412,7 @@ def build(self, *, doc_build_folder, output_staging_directory): os.path.join( package_xml_directory, self.build_context.python_source)) - # If not provided, try to find the package source direcotry + # If not provided, try to find the package source directory else: package_list = setuptools.find_packages(where=package_xml_directory) if self.build_context.package.name in package_list: @@ -609,10 +609,18 @@ def generate_wrapping_rosdoc2_sphinx_project_into_directory( os.path.abspath(user_sourcedir), os.path.abspath(directory), dirs_exist_ok=True) - shutil.copytree( - os.path.abspath(package_src_directory), - os.path.abspath(directory), - dirs_exist_ok=True) + if self.build_context.build_type == 'ament_python': + # shutil.copy tree will recursively copy an entire + # directory rooted at the provided src directory. + # If we supply package_src_directory as src, + # it will copy the contents within package_src_directory. + # However, we want to copy the package_src_directory itself + # such that the python modules will reside within this folder + # at the destination directory. + shutil.copytree( + os.path.abspath(os.path.join(package_src_directory, '..')), + os.path.abspath(directory), + dirs_exist_ok=True) except OSError as e: print(f'Failed to copy user content: {e}')