From: Markus Lehtonen Date: Thu, 12 Jan 2012 13:45:06 +0000 (+0200) Subject: rpm: add 'vendor' config option X-Git-Tag: release/20120807~72 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d18286eb2e562fc740154b628fe394f73cb63708;p=tools%2Fgit-buildpackage.git rpm: add 'vendor' config option Intended to represent the distribution vendor (e.g. 'Debian'). This can be used in tag and branch name formatting. --- diff --git a/gbp-rpm.conf b/gbp-rpm.conf index 7fce2c22..7a431770 100644 --- a/gbp-rpm.conf +++ b/gbp-rpm.conf @@ -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: diff --git a/gbp/config.py b/gbp/config.py index 084f19a8..b2d55457 100644 --- a/gbp/config.py +++ b/gbp/config.py @@ -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': diff --git a/gbp/rpm/git.py b/gbp/rpm/git.py index 1de1c943..bbb35aec 100644 --- a/gbp/rpm/git.py +++ b/gbp/rpm/git.py @@ -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): diff --git a/gbp/scripts/buildpackage_rpm.py b/gbp/scripts/buildpackage_rpm.py index 9936c2e5..ccf7d551 100755 --- a/gbp/scripts/buildpackage_rpm.py +++ b/gbp/scripts/buildpackage_rpm.py @@ -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) diff --git a/gbp/scripts/import_orig_rpm.py b/gbp/scripts/import_orig_rpm.py index 13755406..8afb5345 100755 --- a/gbp/scripts/import_orig_rpm.py +++ b/gbp/scripts/import_orig_rpm.py @@ -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, diff --git a/gbp/scripts/import_srpm.py b/gbp/scripts/import_srpm.py index 07754636..61ed9b6f 100755 --- a/gbp/scripts/import_srpm.py +++ b/gbp/scripts/import_srpm.py @@ -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 = []