Colin Watson has proposed merging lp:~cjwatson/launchpad-buildd/chroot-top-level-dir into lp:launchpad-buildd.
Commit message: Tolerate chroot tarballs with a top-level directory other than chroot-autobuild/. Requested reviews: Launchpad code reviewers (launchpad-reviewers) For more details, see: https://code.launchpad.net/~cjwatson/launchpad-buildd/chroot-top-level-dir/+merge/342833 This makes things a little more flexible in the face of different ways of generating chroot tarballs. -- Your team Launchpad code reviewers is requested to review the proposed merge of lp:~cjwatson/launchpad-buildd/chroot-top-level-dir into lp:launchpad-buildd.
=== modified file 'debian/changelog' --- debian/changelog 2018-04-04 16:25:31 +0000 +++ debian/changelog 2018-04-07 23:23:06 +0000 @@ -1,6 +1,8 @@ launchpad-buildd (161) UNRELEASED; urgency=medium * Pass build URL to snapcraft using SNAPCRAFT_IMAGE_INFO. + * Tolerate chroot tarballs with a top-level directory other than + chroot-autobuild/. -- Colin Watson <[email protected]> Wed, 04 Apr 2018 17:03:14 +0100 === modified file 'lpbuildd/target/chroot.py' --- lpbuildd/target/chroot.py 2017-11-10 20:55:33 +0000 +++ lpbuildd/target/chroot.py 2018-04-07 23:23:06 +0000 @@ -31,7 +31,9 @@ def create(self, tarball_path): """See `Backend`.""" subprocess.check_call( - ["sudo", "tar", "-C", self.build_path, "-xf", tarball_path]) + ["sudo", "tar", "-C", self.build_path, + "--transform", "s,[^/]*,chroot-autobuild,", + "-xf", tarball_path]) def start(self): """See `Backend`.""" === modified file 'lpbuildd/target/lxd.py' --- lpbuildd/target/lxd.py 2018-02-04 00:15:39 +0000 +++ lpbuildd/target/lxd.py 2018-04-07 23:23:06 +0000 @@ -124,7 +124,8 @@ return False def _convert(self, source_tarball, target_tarball): - creation_time = source_tarball.getmember("chroot-autobuild").mtime + first_entry = next(iter(source_tarball)) + creation_time = first_entry.mtime metadata = { "architecture": self.lxc_arch, "creation_date": creation_time, @@ -147,11 +148,15 @@ # Mangle the chroot tarball into the form needed by LXD: when using # the combined metadata/rootfs form, the rootfs must be under - # rootfs/ rather than under chroot-autobuild/. + # rootfs/ rather than under chroot-autobuild/ or anything else. for entry in source_tarball: fileptr = None try: - orig_name = entry.name.split("chroot-autobuild", 1)[-1] + orig_name_bits = entry.name.split("/", 1) + if len(orig_name_bits) > 1: + orig_name = "/" + orig_name_bits[1] + else: + orig_name = "" entry.name = "rootfs" + orig_name if entry.isfile(): @@ -162,8 +167,7 @@ elif entry.islnk(): # Update hardlinks to point to the right target entry.linkname = ( - "rootfs" + - entry.linkname.split("chroot-autobuild", 1)[-1]) + "rootfs/" + entry.linkname.split("/", 1)[-1]) target_tarball.addfile(entry, fileobj=fileptr) finally: === modified file 'lpbuildd/target/tests/test_chroot.py' --- lpbuildd/target/tests/test_chroot.py 2017-11-01 23:04:53 +0000 +++ lpbuildd/target/tests/test_chroot.py 2018-04-07 23:23:06 +0000 @@ -39,6 +39,7 @@ expected_args = [ ["sudo", "tar", "-C", "/expected/home/build-1", + "--transform", "s,[^/]*,chroot-autobuild,", "-xf", "/path/to/tarball"], ] self.assertEqual(
_______________________________________________ Mailing list: https://launchpad.net/~launchpad-reviewers Post to : [email protected] Unsubscribe : https://launchpad.net/~launchpad-reviewers More help : https://help.launchpad.net/ListHelp

