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-11-14 14:46:23 +0200
commit64f0ddd250d786aae8aca1aa3a0aca2bed5faefd (patch)
treecc81cdc5f419cc989c8cc8e1d8c81e9c4c9fe30b
parent0caaee0239b7345f367cefae045795e40306a486 (diff)
downloadgit-buildpackage-64f0ddd250d786aae8aca1aa3a0aca2bed5faefd.tar.gz
git-buildpackage-64f0ddd250d786aae8aca1aa3a0aca2bed5faefd.tar.bz2
git-buildpackage-64f0ddd250d786aae8aca1aa3a0aca2bed5faefd.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.py4
-rwxr-xr-xgbp/scripts/buildpackage_rpm.py19
2 files changed, 23 insertions, 0 deletions
diff --git a/gbp/config.py b/gbp/config.py
index 55093969..fdfc66c7 100644
--- a/gbp/config.py
+++ b/gbp/config.py
@@ -613,6 +613,7 @@ class GbpOptionParserRpm(GbpOptionParser):
'patch-export-compress' : '0',
'patch-export-ignore-path' : '',
'patch-export-squash-until' : '',
+ 'spec-vcs-tag' : '',
'merge' : 'False',
'pristine-tarball-name' : 'auto',
'orig-prefix' : 'auto',
@@ -659,6 +660,9 @@ class GbpOptionParserRpm(GbpOptionParser):
"Squash commits (from upstream) until given tree-ish into one "
"big diff, format is '<commit_ish>[:<filename_base>]'. "
"Default is '%(patch-export-squash-until)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'",
'pristine-tarball-name':
"Filename to record to pristine-tar, set to 'auto' to not "
"mangle the file name, default is '%(pristine-tarball-name)s'",
diff --git a/gbp/scripts/buildpackage_rpm.py b/gbp/scripts/buildpackage_rpm.py
index f1b31f77..187e6b28 100755
--- a/gbp/scripts/buildpackage_rpm.py
+++ b/gbp/scripts/buildpackage_rpm.py
@@ -418,6 +418,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)
@@ -590,12 +591,30 @@ def main(argv):
repo.delete_tag(tag)
create_packaging_tag(repo, tag, commit=tree, version=spec.version,
options=options)
+ tree_name = tag
+ commit_sha1 = repo.rev_parse('%s^0' % 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: