summaryrefslogtreecommitdiff
path: root/packages/brpm
diff options
context:
space:
mode:
authorScott Moser <smoser@brickies.net>2016-08-05 11:56:48 -0400
committerScott Moser <smoser@brickies.net>2016-08-05 15:00:12 -0400
commit10f82bd474c5bc91b330beccd883da06b0014a99 (patch)
tree2d7e815950bac66d905f5481b54b732a0458d1ef /packages/brpm
parent72d6adcb2e4cb5911f7809b89835965d4bf04476 (diff)
downloadvyos-cloud-init-10f82bd474c5bc91b330beccd883da06b0014a99.tar.gz
vyos-cloud-init-10f82bd474c5bc91b330beccd883da06b0014a99.zip
adjust tools and version information.
upstream snapshots are versioned in the format 'X.Y.Z+<distance>.g<commit>' where X.Y.Z are major, minor, and micro. Distance is number of commits since last annotated tag, and commit is the git commit. bddeb and brpm will now create and use the "upstream version" like above. Things changed here: - tools/make-tarball update cloudinit/version.py to contain the full version support --output support '--long' to always create the long format version string. - bddeb: - use quilt debian source format - use read-version and long version in changelog. - brpm: - change to use read-version and upstream long version in the spec. - flake8 changes - tools/read-version - read version from git or from cloudinit/version. - provide --json output with more nicely formed data.
Diffstat (limited to 'packages/brpm')
-rwxr-xr-xpackages/brpm85
1 files changed, 31 insertions, 54 deletions
diff --git a/packages/brpm b/packages/brpm
index 5d16eb71..14d75f2b 100755
--- a/packages/brpm
+++ b/packages/brpm
@@ -2,11 +2,11 @@
import argparse
import glob
+import json
import os
import shutil
import sys
import tempfile
-import time
def find_root():
@@ -21,11 +21,11 @@ def find_root():
" set CLOUD_INIT_TOP_D?"))
-# Use the util functions from cloudinit
-sys.path.insert(0, find_root())
-
-from cloudinit import templater
-from cloudinit import util
+if "avoid-pep8-E402-import-not-top-of-file":
+ # Use the util functions from cloudinit
+ sys.path.insert(0, find_root())
+ from cloudinit import templater
+ from cloudinit import util
# Map python requirements to package names. If a match isn't found
# here, we assume 'python-<pypi_name>'.
@@ -43,15 +43,24 @@ PACKAGE_MAP = {
RPM_BUILD_SUBDIRS = ['BUILD', 'RPMS', 'SOURCES', 'SPECS', 'SRPMS']
+def run_helper(helper, args=None, strip=True):
+ if args is None:
+ args = []
+ cmd = [util.abs_join(find_root(), 'tools', helper)] + args
+ (stdout, _stderr) = util.subp(cmd)
+ if strip:
+ stdout = stdout.strip()
+ return stdout
+
+
def read_dependencies():
'''Returns the Python depedencies from requirements.txt. This explicitly
removes 'argparse' from the list of requirements for python >= 2.7,
because with 2.7 argparse became part of the standard library.'''
- cmd = [util.abs_join(find_root(), 'tools', 'read-dependencies')]
- (stdout, _stderr) = util.subp(cmd)
+ stdout = run_helper('read-dependencies')
return [p.lower().strip() for p in stdout.splitlines()
- if p != 'argparse' or (p == 'argparse'
- and sys.version_info[0:2] < (2, 7))]
+ if p != 'argparse' or (p == 'argparse' and
+ sys.version_info[0:2] < (2, 7))]
def translate_dependencies(deps, distro):
@@ -64,53 +73,22 @@ def translate_dependencies(deps, distro):
def read_version():
- '''Read version information. We parse the version itself from
- the changelog, and then ask git for the commit id and distance
- from the last tag.'''
- # Figure out the version and revno
- cmd = [util.abs_join(find_root(), 'tools', 'read-version')]
- (stdout, _stderr) = util.subp(cmd)
- version = stdout.strip()
+ return json.loads(run_helper('read-version', ['--json']))
- cmd = ['git', 'describe', '--tags']
- (stdout, _stderr) = util.subp(cmd)
- git_version = stdout.strip()
- try:
- _version, distance, revno = git_version.split('-')
- except ValueError:
- distance = None
- revno = None
-
- return (version, distance, revno)
-
-
-def generate_spec_contents(args, tmpl_fn, top_dir, arc_fn):
-
- # This will get us something like ('0.7.6', None, None) for a
- # tagged commit, and something like ('0.7.6', '1026', 'gd1d5796')
- # for an untagged commited.
- version, distance, revno = read_version()
+def generate_spec_contents(args, version_data, tmpl_fn, top_dir, arc_fn):
# Tmpl params
subs = {}
- subs['version'] = version
- subs['revno'] = revno
- subs['distance'] = distance
-
- if distance is not None:
- now = time.strftime('%Y%m%d', time.localtime())
- release = '.%sgit%s' % (now, revno)
- else:
- release = ''
if args.sub_release is not None:
- subs['subrelease'] = release + "." + str(args.sub_release)
+ subs['subrelease'] = str(args.sub_release)
else:
- subs['subrelease'] = release
+ subs['subrelease'] = ""
subs['archive_name'] = arc_fn
subs['source_name'] = os.path.basename(arc_fn).replace('.tar.gz', '')
+ subs.update(version_data)
# Map to known packages
python_deps = read_dependencies()
@@ -176,20 +154,19 @@ def main():
for dir in RPM_BUILD_SUBDIRS]
util.ensure_dirs(build_dirs)
+ version_data = read_version()
+
# Archive the code
- cmd = [util.abs_join(find_root(), 'tools', 'make-tarball')]
- (stdout, _stderr) = util.subp(cmd)
- archive_fn = stdout.strip()
- print "Archived source as %s" % archive_fn
- real_archive_fn = os.path.join(topdir, 'SOURCES',
- os.path.basename(archive_fn))
- shutil.move(archive_fn, real_archive_fn)
+ archive_fn = "cloud-init-%s.tar.gz" % version_data['version_long']
+ real_archive_fn = os.path.join(topdir, 'SOURCES', archive_fn)
+ archive_fn = run_helper(
+ 'make-tarball', ['--long', '--output=' + real_archive_fn])
print("Archived the code in %r" % (real_archive_fn))
# Form the spec file to be used
tmpl_fn = util.abs_join(find_root(), 'packages',
args.distro, 'cloud-init.spec.in')
- contents = generate_spec_contents(args, tmpl_fn, topdir,
+ contents = generate_spec_contents(args, version_data, tmpl_fn, topdir,
os.path.basename(archive_fn))
spec_fn = util.abs_join(topdir, 'SPECS', 'cloud-init.spec')
util.write_file(spec_fn, contents)