rpm: add 'vendor' config option
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Thu, 12 Jan 2012 13:45:06 +0000 (15:45 +0200)
committerMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Tue, 7 Jan 2014 14:21:28 +0000 (16:21 +0200)
Intended to represent the distribution vendor (e.g. 'Debian'). This can
be used in tag and branch name formatting.

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
gbp-rpm.conf
gbp/config.py
gbp/rpm/git.py
gbp/scripts/buildpackage_rpm.py
gbp/scripts/import_orig_rpm.py
gbp/scripts/import_srpm.py
gbp/scripts/pq_rpm.py

index 927b6ecd4d37d02e6a09e32092e7013ae24f574e..99eac63215c60e32600e2ed46c0df8951311239c 100644 (file)
@@ -9,6 +9,8 @@
 #upstream-branch = upstream
 # Default branch for the packaging files
 #packaging-branch = master
+# Name of the distribution vendor
+#vendor=myvendor
 # Default tag formats to be used
 #upstream-tag = upstream/%(version)s
 #packaging-tag = packaging/%(version)s
index 4d78fc9697af5566d5208dd4941ac67e15d64b7e..ead640e72698e4f762585a00bf7018496a3d41cc 100644 (file)
@@ -533,10 +533,11 @@ class GbpOptionParserRpm(GbpOptionParser):
     """
     defaults = dict(GbpOptionParser.defaults)
     defaults.update( {
+                       'vendor'                 : 'vendor',
                        'builder'                : 'rpmbuild',
                        'cleaner'                : '/bin/true',
                        'packaging-dir'          : '',
-                       'packaging-tag'          : 'packaging/%(version)s',
+                       'packaging-tag'          : '%(vendor)s/%(version)s',
                        'pq-branch'              : 'development/%(branch)s',
                        'spec-file'              : 'auto',
                        'export-dir'             : 'rpmbuild',
@@ -552,6 +553,8 @@ class GbpOptionParserRpm(GbpOptionParser):
 
     help = dict(GbpOptionParser.help)
     help.update( {
+                   'vendor':
+                        "Distribution vendor name",
                    'packaging-dir':
                         "subdir where packaging files are stored, default is '%(packaging-dir)s'",
                    'packaging-tag':
index ca1a241b412811ac09169c10665b33db28ce9aae..dac555cff05056794b7ed0f32239d105c4dfb007 100644 (file)
@@ -27,7 +27,7 @@ class RpmGitRepository(GitRepository):
         super(RpmGitRepository, self).__init__(path)
         self.pristine_tar = PristineTar(self)
 
-    def find_version(self, format, version):
+    def find_version(self, format, version, vendor="vendor"):
         """
         Check if a certain version is stored in this repo and return the SHA1
         of the related commit. That is, an annotated tag is dereferenced to the
@@ -39,20 +39,23 @@ class RpmGitRepository(GitRepository):
         @type version: C{str}
         @return: sha1 of the commit the tag references to
         """
-        tag = self.version_to_tag(format, version)
+        tag = self.version_to_tag(format, version, vendor)
         if self.has_tag(tag): # new tags are injective
             # dereference to a commit object
             return self.rev_parse("%s^0" % tag)
         return None
 
     @staticmethod
-    def version_to_tag(format, version):
+    def version_to_tag(format, version, vendor="vendor"):
         """Generate a tag from a given format and a version
 
         >>> RpmGitRepository.version_to_tag("packaging/%(version)s", "0:0~0")
         'packaging/0%0_0'
+        >>> RpmGitRepository.version_to_tag("%(vendor)s/v%(version)s", "1.0", "myvendor")
+        'myvendor/v1.0'
         """
-        return format % dict(version=RpmGitRepository._sanitize_version(version))
+        return format % dict(version=RpmGitRepository._sanitize_version(version),
+                             vendor=vendor)
 
     @staticmethod
     def _sanitize_version(version):
index 1394160bf2af09bd34808a471ce83f4a53f058dc..4ce85956acb6387df47ae539e7e37b0b5f109d9d 100755 (executable)
@@ -147,7 +147,7 @@ def pristine_tar_build_orig(repo, orig_file, output_dir, options):
 def get_upstream_tree(repo, spec, options):
     """Determine the upstream tree from the given options"""
     if options.upstream_tree.upper() == 'TAG':
-        upstream_tree = repo.version_to_tag(options.upstream_tag, spec.version)
+        upstream_tree = repo.version_to_tag(options.upstream_tag, spec.version, vendor="Upstream")
     elif options.upstream_tree.upper() == 'BRANCH':
         if not repo.has_branch(options.upstream_branch):
             raise GbpError("%s is not a valid branch" % options.upstream_branch)
@@ -250,6 +250,7 @@ def parse_args(argv, prefix):
                       help="verbose command execution")
     parser.add_config_file_option(option_name="color", dest="color", type='tristate')
     parser.add_config_file_option(option_name="notify", dest="notify", type='tristate')
+    parser.add_config_file_option(option_name="vendor", action="store", dest="vendor")
     tag_group.add_option("--git-tag", action="store_true", dest="tag", default=False,
                       help="create a tag after a successful build")
     tag_group.add_option("--git-tag-only", action="store_true", dest="tag_only", default=False,
@@ -470,10 +471,10 @@ def main(argv):
         # Tag (note: tags the exported version)
         if options.tag or options.tag_only:
             gbp.log.info("Tagging %s" % spec.version)
-            tag = repo.version_to_tag(options.packaging_tag, spec.version)
+            tag = repo.version_to_tag(options.packaging_tag, spec.version, vendor=options.vendor)
             if options.retag and repo.has_tag(tag):
                 repo.delete_tag(tag)
-            repo.create_tag(name=tag, msg="Distribution release %s" % spec.version,
+            repo.create_tag(name=tag, msg="%s release %s" % (options.vendor, spec.version),
                             sign=options.sign_tags, keyid=options.keyid, commit=tree)
             if options.posttag:
                 sha = repo.rev_parse("%s^{}" % tag)
index db788ee8ff53ae48448719750b8de0500388a1fb..7dad3bc80cef5a0e9f90c03909a6579bb7c0d46a 100755 (executable)
@@ -266,7 +266,7 @@ def main(argv):
                 gbp.log.info("Pristine-tar: commiting %s" % pristine_orig)
                 repo.pristine_tar.commit(pristine_orig, options.upstream_branch)
 
-            tag = repo.version_to_tag(options.upstream_tag, version)
+            tag = repo.version_to_tag(options.upstream_tag, version, vendor="Upstream")
             repo.create_tag(name=tag,
                             msg="Upstream version %s" % version,
                             commit=commit,
index 872b7832e9fafca0cf4369fc4c5b1bbef3af9f53..50a04d042b27d42aab8b6c2a470bfbfef0d2fe1c 100755 (executable)
@@ -84,11 +84,11 @@ def committer_from_author(author, options):
     return committer
 
 
-def move_tag_stamp(repo, format, version):
+def move_tag_stamp(repo, format, version, vendor):
     "Move tag out of the way appending the current timestamp"
-    old = repo.version_to_tag(format, version)
+    old = repo.version_to_tag(format, version, vendor)
     timestamped = "%s~%s" % (version, int(time.time()))
-    new = repo.version_to_tag(format, timestamped)
+    new = repo.version_to_tag(format, timestamped, vendor)
     repo.move_tag(old, new)
 
 
@@ -123,6 +123,7 @@ def parse_args(argv):
     parser.add_config_file_option(option_name="color", dest="color", type='tristate')
     parser.add_option("--download", action="store_true", dest="download", default=False,
                       help="download source package")
+    parser.add_config_file_option(option_name="vendor", action="store", dest="vendor")
     branch_group.add_config_file_option(option_name="packaging-branch",
                       dest="packaging_branch")
     branch_group.add_config_file_option(option_name="upstream-branch",
@@ -266,14 +267,14 @@ def main(argv):
             else:
                 upstream = None
 
-            format = [(options.upstream_tag, "Upstream"), (options.packaging_tag, "Distribution")][options.native]
-            tag = repo.version_to_tag(format[0], upstream_version)
+            format = [(options.upstream_tag, "Upstream"), (options.packaging_tag, options.vendor)][options.native]
+            tag = repo.version_to_tag(format[0], upstream_version, options.vendor)
 
-            if repo.find_version(options.packaging_tag, pkgver):
+            if repo.find_version(options.packaging_tag, pkgver, options.vendor):
                 gbp.log.warn("Version %s already imported." % pkgver)
                 if options.allow_same_version:
                     gbp.log.info("Moving tag of version '%s' since import forced" % pkgver)
-                    move_tag_stamp(repo, options.packaging_tag, pkgver)
+                    move_tag_stamp(repo, options.packaging_tag, pkgver, options.vendor)
                 else:
                     raise SkipImport
 
@@ -294,7 +295,7 @@ def main(argv):
 
             # Import upstream sources
             if upstream:
-                upstream_commit = repo.find_version(format[0], upstream_version)
+                upstream_commit = repo.find_version(format[0], upstream_version, options.vendor)
                 if not upstream_commit:
                     gbp.log.info("Tag %s not found, importing %s tarball" % (tag, format[1]))
 
@@ -340,8 +341,8 @@ def main(argv):
                                     "\nAlso check the --create-missing-branches option.")
                         raise GbpError
 
-                tag = repo.version_to_tag(options.packaging_tag, pkgver)
-                msg = "Distribution release %s" % pkgver
+                tag = repo.version_to_tag(options.packaging_tag, pkgver, options.vendor)
+                msg = "%s release %s" % (options.vendor, pkgver)
 
                 if options.orphan_packaging or not upstream:
                     parents = []
index aeca2822794da10558a4bd5564d62bbc971b83f1..9077ea96de4f28123b04f46dd81d2afc04621d9c 100755 (executable)
@@ -142,7 +142,7 @@ def export_patches(repo, branch, options):
         raise GbpError, "Can't parse spec"
 
     # Find upstream version
-    upstream_commit = repo.find_version(options.upstream_tag, spec.version)
+    upstream_commit = repo.find_version(options.upstream_tag, spec.version, vendor="Upstream")
     if not upstream_commit:
         raise GbpError, ("Couldn't find upstream version %s. Don't know on what base to import." % spec.version)
 
@@ -233,7 +233,7 @@ def import_spec_patches(repo, branch, options):
         raise GbpError, "Can't parse spec"
 
     # Find upstream version
-    commit = repo.find_version(options.upstream_tag, spec.version)
+    commit = repo.find_version(options.upstream_tag, spec.version, vendor="Upstream")
     if commit:
         commits=[commit]
     else:
@@ -295,7 +295,7 @@ def rebase_pq(repo, branch, options):
         raise GbpError, "Can't parse spec"
 
     # Find upstream version
-    upstream_commit = repo.find_version(options.upstream_tag, spec.version)
+    upstream_commit = repo.find_version(options.upstream_tag, spec.version, vendor="Upstream")
     if not upstream_commit:
         raise GbpError, ("Couldn't find upstream version %s. Don't know on what base to import." % spec.version)
 
@@ -334,6 +334,7 @@ def main(argv):
                       help="Verbose command execution")
     parser.add_option("--force", dest="force", action="store_true", default=False,
                       help="In case of import even import if the branch already exists")
+    parser.add_config_file_option(option_name="vendor", action="store", dest="vendor")
     parser.add_config_file_option(option_name="color", dest="color", type='tristate')
     parser.add_config_file_option(option_name="upstream-tag", dest="upstream_tag")
     parser.add_config_file_option(option_name="spec-file", dest="spec_file")