summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>2013-01-17 10:41:18 +0200
committerMarkus Lehtonen <markus.lehtonen@linux.intel.com>2014-01-14 13:48:22 +0200
commit1cf0d5ba70b0d6a7a43144745bed1a0be8f2dcef (patch)
tree28c089acfb75d3a7862d764f8a956e45c916fe61
parent7e38d0be32b6a604323956ae615256e661b56334 (diff)
downloadgit-buildpackage-1cf0d5ba70b0d6a7a43144745bed1a0be8f2dcef.tar.gz
git-buildpackage-1cf0d5ba70b0d6a7a43144745bed1a0be8f2dcef.tar.bz2
git-buildpackage-1cf0d5ba70b0d6a7a43144745bed1a0be8f2dcef.zip
buildpackage-rpm: support setting/updating the 'VCS:' tag
Git-buildpackage-rpm now always updates the 'VCS:' tag in the exported spec file. A new config option 'spec-vcs-tag' controls the format: - if empty, no 'VCS' tag is inserted and possible old 'VCS' tag is removed - otherwise, a 'VCS' tag is inserted or the old 'VCS' tag is updated - '%(tag)s' expands to the long tag name (from git-describe) Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
-rw-r--r--gbp/config.py5
-rwxr-xr-xgbp/scripts/buildpackage_rpm.py18
m---------tests/component/rpm/data0
3 files changed, 23 insertions, 0 deletions
diff --git a/gbp/config.py b/gbp/config.py
index 28a7c44e..607c3c9e 100644
--- a/gbp/config.py
+++ b/gbp/config.py
@@ -556,6 +556,7 @@ class GbpOptionParserRpm(GbpOptionParser):
'pristine-tarball-name' : 'auto',
'orig-prefix' : 'auto',
'patch-import' : 'True',
+ 'spec-vcs-tag' : '',
} )
help = dict(GbpOptionParser.help)
@@ -590,6 +591,10 @@ class GbpOptionParserRpm(GbpOptionParser):
"Prefix (dir) to be used when generating/importing tarballs, default is '%(orig-prefix)s'",
'patch-import':
"Import patches to the packaging branch, default is '%(patch-import)s'",
+ 'spec-vcs-tag':
+ ("Set/update the 'VCS:' tag in the spec file, empty "
+ "value removes the tag entirely, default is "
+ "'%(spec-vcs-tag)s'"),
} )
# vim:et:ts=4:sw=4:et:sts=4:ai:set list listchars=tab\:»·,trail\:·:
diff --git a/gbp/scripts/buildpackage_rpm.py b/gbp/scripts/buildpackage_rpm.py
index b889fdee..f63e9e5d 100755
--- a/gbp/scripts/buildpackage_rpm.py
+++ b/gbp/scripts/buildpackage_rpm.py
@@ -410,6 +410,7 @@ def parse_args(argv, prefix):
export_group.add_config_file_option("patch-export-compress", dest="patch_export_compress")
export_group.add_config_file_option("patch-export-squash-until", dest="patch_export_squash_until")
export_group.add_boolean_config_file_option(option_name="patch-numbers", dest="patch_numbers")
+ export_group.add_config_file_option("spec-vcs-tag", dest="spec_vcs_tag")
options, args = parser.parse_args(args)
options.patch_export_compress = rpm.string_to_int(options.patch_export_compress)
@@ -584,12 +585,29 @@ def main(argv):
repo.create_tag(name=tag, msg="%s release %s" % (options.vendor,
RpmPkgPolicy.compose_full_version(spec.version)),
sign=options.sign_tags, keyid=options.keyid, commit=tree)
+ tree_name = tag
if options.posttag:
sha = repo.rev_parse("%s^{}" % tag)
Command(options.posttag, shell=True,
extra_env={'GBP_TAG': tag,
'GBP_BRANCH': branch,
'GBP_SHA1': sha})()
+ else:
+ try:
+ tree_name = repo.describe(tree, longfmt=True, always=True,
+ abbrev=40)
+ commit_sha1 = repo.rev_parse('%s^0' % tree)
+ except GitRepositoryError:
+ # If tree is not commit-ish, expect it to be from current HEAD
+ tree_name = repo.describe('HEAD', longfmt=True, always=True,
+ abbrev=40) + '-dirty'
+ commit_sha1 = repo.rev_parse('HEAD') + '-dirty'
+ # Put 'VCS:' tag to .spec
+ spec.set_tag('vcs',
+ options.spec_vcs_tag % {'tagname': tree_name,
+ 'commit': commit_sha1})
+ spec.write_spec_file()
+
except CommandExecFailed:
retval = 1
except GitRepositoryError as err:
diff --git a/tests/component/rpm/data b/tests/component/rpm/data
-Subproject 4aa7e2901ab84bd91c1d2289dd4138c531c1937
+Subproject aec4222cbd9e2efbd60c56ee4e9cc4d8eb7265b