[git-buildpackage] [PATCH] Add --git-packaging-exclude to gbp buildpackage-rpm

Tzafrir Cohen tzafrir at debian.org
Thu Feb 4 18:34:31 CET 2016


Add an option to exclude copying some of the files from the source tree
to the packaging directory (a single regular expression).

This can be handy when running gbp buildpackage-rpm from a complete
source tree in a non-native mode and and some files in the top-level
directory can't or should not be copies to the packaging directory.

Signed-off-by: Tzafrir Cohen <tzafrir at debian.org>
---
 gbp/config.py                                |  1 +
 gbp/scripts/buildpackage_rpm.py              |  7 +++++++
 tests/component/rpm/test_buildpackage_rpm.py | 14 ++++++++++++++
 3 files changed, 22 insertions(+)

diff --git a/gbp/config.py b/gbp/config.py
index 3d254ee..bc43485 100644
--- a/gbp/config.py
+++ b/gbp/config.py
@@ -651,6 +651,7 @@ class GbpOptionParserRpm(GbpOptionParser):
             'vendor'                    : 'Downstream',
             'packaging-branch'          : 'master',
             'packaging-dir'             : '',
+            'packaging-exclude'             : '',
             'packaging-tag-msg'         : ('%(pkg)s (vendor)s release '
                                                          '%(version)s'),
             'packaging-tag'             : 'packaging/%(version)s',
diff --git a/gbp/scripts/buildpackage_rpm.py b/gbp/scripts/buildpackage_rpm.py
index 00582df..340f130 100644
--- a/gbp/scripts/buildpackage_rpm.py
+++ b/gbp/scripts/buildpackage_rpm.py
@@ -21,6 +21,7 @@
 from six.moves import configparser
 import os
 import shutil
+import re
 import sys
 
 import gbp.log
@@ -438,6 +439,10 @@ def build_parser(name, prefix=None, git_treeish=None):
                          "'%(export)s'")
     export_group.add_config_file_option(option_name="packaging-dir",
                     dest="packaging_dir")
+    export_group.add_config_file_option(option_name="packaging-exclude",
+                    dest="packaging_exclude",
+                    help="pattern of files to exclude from exporting from " +
+                    "top-level source directory to packaging directory")
     export_group.add_config_file_option(option_name="spec-file",
                     dest="spec_file")
     return parser
@@ -548,6 +553,8 @@ def main(argv):
                 src = os.path.join(dump_dir, fname)
                 if fname == spec.specfile:
                     dst = os.path.join(spec_dir, fname)
+                elif re.match(options.packaging_exclude, fname):
+                    continue
                 else:
                     dst = os.path.join(source_dir, fname)
                 try:
diff --git a/tests/component/rpm/test_buildpackage_rpm.py b/tests/component/rpm/test_buildpackage_rpm.py
index 4f0c290..6dd5317 100644
--- a/tests/component/rpm/test_buildpackage_rpm.py
+++ b/tests/component/rpm/test_buildpackage_rpm.py
@@ -24,6 +24,7 @@ import re
 import shutil
 import stat
 import subprocess
+import tempfile
 
 from nose import SkipTest
 from nose.tools import assert_raises, eq_, ok_ # pylint: disable=E0611
@@ -369,6 +370,19 @@ class TestGbpRpm(RpmRepoTestBase):
         eq_(mock_gbp(['--git-builder=true']), 1)
         eq_(mock_gbp(['--git-ignore-branch', '--git-builder=true']), 0)
 
+    def test_packaging_exclude_option(self):
+        """Test the --packaging-exclude option"""
+        repo = self.init_test_repo('gbp-test')
+
+        packaging_dir = tempfile.mkdtemp(prefix='gbp_packaging-')
+        eq_(mock_gbp(['--git-no-build', '--git-packaging-exclude=\.patch',
+                      '--git-packaging-dir=' + packaging_dir]), 0)
+
+        # Test building when not on any branch
+        repo.set_branch(repo.rev_parse('HEAD'))
+        eq_(glob.glob("../rpmbuild/SOURCES/*.patch"), [])
+        shutil.rmtree(packaging_dir)
+
     def test_option_submodules(self):
         """Test the --git-submodules option"""
         repo = self.init_test_repo('gbp-test')
-- 
2.7.0


-- 
Tzafrir Cohen         | tzafrir at jabber.org | VIM is
http://tzafrir.org.il |                    | a Mutt's
tzafrir at cohens.org.il |                    |  best
tzafrir at debian.org    |                    | friend


More information about the git-buildpackage mailing list