# HG changeset patch # User Bjoern Ricks # Date 1275301225 0 # Node ID fb92f3c1b238845ee8580d5c6e65081f3100ecde # Parent fee68f1a35e87d70d0c65f2dbb63843143919452 treepkg is now able to handle debian source format 1.0 and source format 3.0 (quilt) diff -r fee68f1a35e8 -r fb92f3c1b238 test/test_packager.py --- a/test/test_packager.py Mon May 31 09:54:31 2010 +0000 +++ b/test/test_packager.py Mon May 31 10:20:25 2010 +0000 @@ -263,6 +263,114 @@ [("702432", "2"), ("704195", "0")]) +class TestSourcePackager(unittest.TestCase, FileTestMixin): + + def test_debian_source_format_3_0_1(self): + trackdir = self.create_files("track", + [("debian", + [("source", + [("format", ("3.0 (quilt)"))] + )] + ), + ("pkg", + [("704195-0", + [("status", + ("TreePackagerStatus 0.0\n" + "status: binary_package_created\n" + "start: 2007-09-10 17:16:48\n" + "stop: 2007-09-11 00:07:36\n")), + ("src", []), + ("binary", []) + ] + )] + )] + ) + track = PackageTrack("testtrack", trackdir, "", "", "", "", "") + revpkg = RevisionPackager(track, 704195, 0) + srcpkg = SourcePackager(revpkg) + + pkgbasedir = trackdir + format = srcpkg.get_debian_source_format(pkgbasedir) + self.assertEqual("3.0 (quilt)", format) + + def test_debian_source_format_3_0_2(self): + trackdir = self.create_files("track", + [("debian", + [("source", + [("format", ("3.0 (quilt)\nabc"))] + )] + ), + ("pkg", + [("704195-0", + [("status", + ("TreePackagerStatus 0.0\n" + "status: binary_package_created\n" + "start: 2007-09-10 17:16:48\n" + "stop: 2007-09-11 00:07:36\n")), + ("src", []), + ("binary", []) + ] + )] + )] + ) + track = PackageTrack("testtrack", trackdir, "", "", "", "", "") + revpkg = RevisionPackager(track, 704195, 0) + srcpkg = SourcePackager(revpkg) + + pkgbasedir = trackdir + format = srcpkg.get_debian_source_format(pkgbasedir) + self.assertEqual("3.0 (quilt)", format) + + def test_debian_source_format_1_0_1(self): + trackdir = self.create_files("track", + [("debian", + [("source","")] + ), + ("pkg", + [("704195-0", + [("status", + ("TreePackagerStatus 0.0\n" + "status: binary_package_created\n" + "start: 2007-09-10 17:16:48\n" + "stop: 2007-09-11 00:07:36\n")), + ("src", []), + ("binary", []) + ] + )] + )] + ) + track = PackageTrack("testtrack", trackdir, "", "", "", "", "") + revpkg = RevisionPackager(track, 704195, 0) + srcpkg = SourcePackager(revpkg) + + pkgbasedir = trackdir + format = srcpkg.get_debian_source_format(pkgbasedir) + self.assertEqual("1.0", format) + + def test_debian_source_format_1_0_2(self): + trackdir = self.create_files("track", + [("debian", ""), + ("pkg", + [("704195-0", + [("status", + ("TreePackagerStatus 0.0\n" + "status: binary_package_created\n" + "start: 2007-09-10 17:16:48\n" + "stop: 2007-09-11 00:07:36\n")), + ("src", []), + ("binary", []) + ] + )] + )] + ) + track = PackageTrack("testtrack", trackdir, "", "", "", "", "") + revpkg = RevisionPackager(track, 704195, 0) + srcpkg = SourcePackager(revpkg) + + pkgbasedir = trackdir + format = srcpkg.get_debian_source_format(pkgbasedir) + self.assertEqual("1.0", format) + class TestRevisionPackager(unittest.TestCase, FileTestMixin): def test_list_source_files(self): diff -r fee68f1a35e8 -r fb92f3c1b238 treepkg/packager.py --- a/treepkg/packager.py Mon May 31 09:54:31 2010 +0000 +++ b/treepkg/packager.py Mon May 31 10:20:25 2010 +0000 @@ -153,12 +153,33 @@ dpkg_source_log = os.path.join(self.log_dir, "dpkg_source.txt") logging.info("Creating new source package; logging to %s", dpkg_source_log) - run.call(cmdexpand("dpkg-source -b $directory $tarball", + + format = self.get_debian_source_format(pkgbasedir) + if format == "1.0": + run.call(cmdexpand("dpkg-source -b $directory $tarball", directory=os.path.basename(pkgbasedir), tarball=os.path.basename(origtargz)), cwd=os.path.dirname(pkgbasedir), logfile=dpkg_source_log, env=self.track.debian_environment()) + elif format == "3.0 (quilt)": + run.call(cmdexpand("dpkg-source -b $directory", + directory=os.path.basename(pkgbasedir)), + cwd=os.path.dirname(pkgbasedir), + logfile=dpkg_source_log, + env=self.track.debian_environment()) + else: + raise RuntimeError("debian source format %s is not supported by treepkg" % format) + + def get_debian_source_format(self, pkgbasedir): + formatfile = os.path.join(pkgbasedir, "debian", "source", "format") + if not os.path.exists(formatfile): + return "1.0" + else: + file = open(formatfile, "r") + line = file.readline() + file.close() + return line.strip() def move_source_package(self, pkgbasename): """Moves the new source package from the work_dir to the src_dir"""