Colin Watson has proposed merging ~cjwatson/launchpad-buildd:recipe-create-homedir into launchpad-buildd:master.
Commit message: sourcepackagerecipe: Create /home/buildd inside chroot if necessary Requested reviews: Launchpad code reviewers (launchpad-reviewers) For more details, see: https://code.launchpad.net/~cjwatson/launchpad-buildd/+git/launchpad-buildd/+merge/451464 Recently-built chroots for mantic no longer include /home/buildd. This is probably a reasonable cleanup, but it broke recipe builds. -- Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad-buildd:recipe-create-homedir into launchpad-buildd:master.
diff --git a/debian/changelog b/debian/changelog index 0bdad53..fd9125d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +launchpad-buildd (235) UNRELEASED; urgency=medium + + * sourcepackagerecipe: Create /home/buildd inside the chroot if it doesn't + already exist. + + -- Colin Watson <[email protected]> Fri, 15 Sep 2023 17:30:59 +0100 + launchpad-buildd (234) focal; urgency=medium [ Colin Watson ] diff --git a/lpbuildd/sourcepackagerecipe.py b/lpbuildd/sourcepackagerecipe.py index 250c3b5..83dfa60 100644 --- a/lpbuildd/sourcepackagerecipe.py +++ b/lpbuildd/sourcepackagerecipe.py @@ -6,6 +6,7 @@ import os import re +import subprocess from lpbuildd.builder import get_build_path from lpbuildd.debian import DebianBuildManager, DebianBuildState @@ -17,19 +18,6 @@ RETCODE_FAILURE_INSTALL_BUILD_DEPS = 202 RETCODE_FAILURE_BUILD_SOURCE_PACKAGE = 203 -def splat_file(path, contents): - """Write a string to the specified path. - - :param path: The path to store the string in. - :param contents: The string to write to the file. - """ - file_obj = open(path, "w") - try: - file_obj.write(contents) - finally: - file_obj.close() - - def get_chroot_path(home, build_id, *extra): """Return a path within the chroot. @@ -81,9 +69,26 @@ class SourcePackageRecipeBuildManager(DebianBuildManager): def doRunBuild(self): """Run the build process to build the source package.""" - os.makedirs(get_chroot_path(self.home, self._buildid, "work")) - recipe_path = get_chroot_path(self.home, self._buildid, "work/recipe") - splat_file(recipe_path, self.recipe_text) + work_dir = os.path.join(os.environ["HOME"], "work") + self.backend.run(["mkdir", "-p", work_dir]) + # buildrecipe currently needs to be able to write directly to the + # work directory. (That directory needs to be inside the chroot so + # that buildrecipe can run dpkg-buildpackage on it from inside the + # chroot.) + subprocess.run( + [ + "sudo", + "chown", + "-R", + "buildd:", + get_chroot_path(self.home, self._buildid, "work"), + ], + check=True, + ) + with self.backend.open( + os.path.join(work_dir, "recipe"), "w" + ) as recipe_file: + recipe_file.write(self.recipe_text) args = ["buildrecipe"] if self.git: args.append("--git")
_______________________________________________ Mailing list: https://launchpad.net/~launchpad-reviewers Post to : [email protected] Unsubscribe : https://launchpad.net/~launchpad-reviewers More help : https://help.launchpad.net/ListHelp

