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, 8 May 2012 08:48:27 +0000 (11:48 +0300)
Intended to represent the distribution vendor (e.g. 'Debian'). This can
be used in tag and branch name formatting.

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

index 7fce2c2256a1dc7a9bfe56f6027f4b72d86faa49..7a4317706516845da42d99af497ce527e733fa4c 100644 (file)
@@ -9,9 +9,11 @@
 #upstream-branch = upstream
 # the default branch for the packaging files:
 #packaging-branch = master
+# name of the distribution vendor
+#vendor=myvendor
 # the default tag formats used:
 #upstream-tag = upstream/%(version)s
-#packaging-tag = packaging/%(version)s
+#packaging-tag = %(vendor)s/%(version)s
 # use pristine-tar:
 #pristine-tar = True
 # don't check if packaging-branch == current branch:
index 084f19a888e0e469d34c3fbc3a85262a2f67a83a..b2d55457bf9b7c077359f2561a5532edb40fc821 100644 (file)
@@ -407,10 +407,11 @@ class GbpOptionParserRpm(GbpOptionParser):
     """
     defaults = dict(GbpOptionParser.defaults)
     defaults.update( {
+                       'vendor'                 : 'vendor',
                        'builder'                : 'rpmbuild -ba',
                        'cleaner'                : 'git clean -d',
                        'packaging-dir'          : '',
-                       'packaging-tag'          : 'packaging/%(version)s',
+                       'packaging-tag'          : '%(vendor)s/%(version)s',
                        'export-dir'             : 'rpmbuild',
                        'rpmbuild-builddir'      : 'BUILD',
                        'rpmbuild-rpmdir'        : 'RPMS',
@@ -424,6 +425,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 1de1c9433f79a718c66056604ed331769d210f13..bbb35aecea2e59c6a0b780416365e43594be9894 100644 (file)
@@ -26,7 +26,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
@@ -38,20 +38,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 9936c2e5731a72470ba82cd38ebae257bf0667bd..ccf7d5515dabb54b8a65ba3f318d8d7d491b1dae 100755 (executable)
@@ -354,6 +354,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,
@@ -562,7 +563,7 @@ def main(argv):
             tag = repo.version_to_tag(options.packaging_tag, spec.version)
             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 13755406d6e54763fd37e7f7f0d4e29624a74dd0..8afb5345ded3d49460c32b377ac4c92aa79967c9 100755 (executable)
@@ -139,6 +139,8 @@ def parse_args(argv):
     for group in [import_group, branch_group, tag_group, cmd_group ]:
         parser.add_option_group(group)
 
+    parser.add_config_file_option(option_name="vendor", action="store", dest="vendor")
+
     branch_group.add_option("-u", "--upstream-version", dest="version",
                       help="Upstream Version")
     branch_group.add_config_file_option(option_name="packaging-branch",
@@ -263,7 +265,7 @@ def main(argv):
                 else:
                     gbp.log.warn("'%s' not an archive, skipping pristine-tar" % source.path)
 
-            tag = repo.version_to_tag(options.upstream_tag, version)
+            tag = repo.version_to_tag(options.upstream_tag, version, options.vendor)
             repo.create_tag(name=tag,
                             msg="Upstream version %s" % version,
                             commit=commit,
index 0775463694ab0068a92b41a9694be8516fcbb302..61ed9b6f91529ffc76bdb10fbdd0e6fa269c6adb 100755 (executable)
@@ -68,11 +68,11 @@ def download_source(pkg, dirs):
     return srpm
 
 
-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)
 
 
@@ -107,6 +107,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",
@@ -201,14 +202,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], src.upstream_version)
+            format = [(options.upstream_tag, "Upstream"), (options.packaging_tag, options.vendor)][options.native]
+            tag = repo.version_to_tag(format[0], src.upstream_version, options.vendor)
 
-            if repo.find_version(options.packaging_tag, src.version):
+            if repo.find_version(options.packaging_tag, src.version, options.vendor):
                  gbp.log.warn("Version %s already imported." % src.version)
                  if options.allow_same_version:
                     gbp.log.info("Moving tag of version '%s' since import forced" % src.version)
-                    move_tag_stamp(repo, options.packaging_tag, src.version)
+                    move_tag_stamp(repo, options.packaging_tag, src.version, options.vendor)
                  else:
                     raise SkipImport
 
@@ -217,7 +218,7 @@ def main(argv):
 
             # Import upstream sources
             if upstream:
-                upstream_commit = repo.find_version(format[0], src.upstream_version)
+                upstream_commit = repo.find_version(format[0], src.upstream_version, options.vendor)
                 if not upstream_commit:
                     gbp.log.info("Tag %s not found, importing %s tarball" % (tag, format[1]))
 
@@ -260,8 +261,8 @@ def main(argv):
                                     "\nAlso check the --create-missing-branches option.")
                         raise GbpError
 
-                tag = repo.version_to_tag(options.packaging_tag, src.version)
-                msg = "Distribution release %s" % src.version
+                tag = repo.version_to_tag(options.packaging_tag, src.version, options.vendor)
+                msg = "%s release %s" % (options.vendor, src.version)
 
                 if options.orphan_packaging or not upstream:
                     parents = []