pq-rpm: implement --new-packaging-dir cmdline option
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Tue, 11 Feb 2014 08:18:47 +0000 (10:18 +0200)
committerMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Tue, 3 Mar 2015 08:07:48 +0000 (10:07 +0200)
Used for setting the packaging directory to be used in the new orphan
packaging branch. Defaults to --packaging-dir so that the gbp.conf files
are more likely to work without modification.

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
gbp/scripts/pq_rpm.py
tests/component/rpm/test_pq_rpm.py

index 3b3f61c4a0062a286c187d6704ae9027faa3bd0b..c2311592c85fc116195ce97d09475d322e382e91 100755 (executable)
@@ -541,7 +541,8 @@ def convert_package(repo, options):
                  (old_packaging, new_branch))
     packaging_tree = '%s:%s' % (old_packaging, options.packaging_dir)
     packaging_tmp = tempfile.mkdtemp(prefix='pack_')
-    dump_tree(repo, packaging_tmp, packaging_tree, with_submodules=False,
+    dump_packaging_dir = os.path.join(packaging_tmp, options.new_packaging_dir)
+    dump_tree(repo, dump_packaging_dir, packaging_tree, with_submodules=False,
               recursive=False)
 
     msg = "Auto-import packaging files from branch '%s'" % old_packaging
@@ -549,9 +550,10 @@ def convert_package(repo, options):
     repo.set_branch(new_branch)
 
     # Generate patches
-    spec = SpecFile(spec.specfile)
+    spec = SpecFile(os.path.join(options.new_packaging_dir, spec.specfile))
     patches = update_patch_series(repo, spec, upstream_commit, old_packaging,
                                   options)
+    patches = [os.path.join(options.new_packaging_dir, pat) for pat in patches]
 
     # Commit paches and spec
     if patches:
@@ -623,6 +625,10 @@ switch         Switch to patch-queue branch and vice versa.""")
                                   dest="patch_compress")
     parser.add_config_file_option("patch-squash", dest="patch_squash")
     parser.add_config_file_option("patch-ignore-path", dest="patch_ignore_path")
+    parser.add_option("--new-packaging-dir",
+            help="Packaging directory in the new packaging branch. Only "
+                 "relevant for the 'convert' action. If not defined, defaults "
+                 "to '--packaging-dir'")
 
     return parser
 
@@ -635,6 +641,8 @@ def parse_args(argv):
 
     options, args = parser.parse_args(argv)
     options.patch_compress = string_to_int(options.patch_compress)
+    if options.new_packaging_dir is None:
+        options.new_packaging_dir = options.packaging_dir
     return options, args
 
 
index 4415a5f7b1aed331b5d3e1a886fd6ca8a6e8aca5..8972760089e71015eaf794944a742b2efa1006b0 100644 (file)
@@ -260,15 +260,16 @@ class TestPqRpm(RpmRepoTestBase):
         """Basic test for convert action"""
         repo = self.init_test_repo('gbp-test2')
         branches = repo.get_local_branches() + ['master-orphan']
-        files = ['bar.tar.gz', 'foo.txt', 'gbp-test2.spec',
-                 'gbp-test2-alt.spec', 'my.patch', '0001-My-addition.patch']
-
+        files = ['packaging/bar.tar.gz', 'packaging/foo.txt',
+                 'packaging/gbp-test2.spec', 'packaging/gbp-test2-alt.spec',
+                 'packaging/my.patch', 'packaging/0001-My-addition.patch',
+                 '.gbp.conf']
         # First should fail because 'master-orphan' branch already exists
         eq_(mock_pq(['convert']), 1)
         self._check_log(-1, "gbp:error: Branch 'master-orphan' already exists")
 
         # Re-try with force
-        eq_(mock_pq(['convert', '--import-files=', '--force']), 0)
+        eq_(mock_pq(['convert', '--force']), 0)
         self._check_repo_state(repo, 'master-orphan', branches, files)
 
     def test_convert_fail(self):
@@ -514,6 +515,20 @@ class TestPqRpm(RpmRepoTestBase):
         ok_('debian/gbp.conf' not in repo.list_files())
         ok_('.gbp.conf' not in repo.list_files())
 
+    def test_option_new_packaging_dir(self):
+        """Test the --new-packaging-dir cmdline option"""
+        repo = self.init_test_repo('gbp-test2')
+        branches = repo.get_local_branches() + ['master-orphan']
+        files = ['rpm/bar.tar.gz', 'rpm/foo.txt', 'rpm/gbp-test2.spec',
+                 'rpm/gbp-test2-alt.spec', 'rpm/my.patch',
+                 'rpm/0001-My-addition.patch']
+        # Drop already-existing master-orphan branch
+        repo.delete_branch('master-orphan')
+        # Try convert
+        eq_(mock_pq(['convert', '--import-files=',
+                     '--new-packaging-dir=rpm']), 0)
+        self._check_repo_state(repo, 'master-orphan', branches, files)
+
     def test_import_unapplicable_patch(self):
         """Test import when a patch does not apply"""
         repo = self.init_test_repo('gbp-test')