summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Maw <jonathan.maw@codethink.co.uk>2017-04-24 13:58:02 +0100
committerJonathan Maw <jonathan.maw@codethink.co.uk>2017-04-24 14:47:18 +0100
commit0db54cd8c41f0bb1afa0e7ae325d16a89c311c71 (patch)
treebc0405180efb61d952365bc1b015ab00f7661d7a
parent2d7b77b3aa008dd8d1d5e03f784dac908ce87599 (diff)
downloadybd-jonathan/rpm-export-use-version.tar.gz
rpm: use 'version' metadata field instead of timejonathan/rpm-export-use-version
-rwxr-xr-xybd/__main__.py6
-rw-r--r--ybd/rpm.py19
2 files changed, 10 insertions, 15 deletions
diff --git a/ybd/__main__.py b/ybd/__main__.py
index 2ceef47..614d8f3 100755
--- a/ybd/__main__.py
+++ b/ybd/__main__.py
@@ -29,7 +29,6 @@ from concourse import Pipeline
import cache
from release_note import do_release_note
from rpm import package_rpms
-import time
import sandbox
import sandboxlib
import argparse
@@ -125,7 +124,6 @@ with timer('TOTAL'):
os._exit(1)
if config.get('generate-rpms', False) is not False:
- now = int(time.time())
# The generate-rpms setting can be 'True' to generate
# all rpms, or it can be a list of chunk names for which
@@ -135,11 +133,11 @@ with timer('TOTAL'):
whitelist = None
if target['kind'] == 'system':
- package_rpms(target, now, whitelist)
+ package_rpms(target, whitelist)
elif target['kind'] == 'cluster':
# call package_rpms for each system in the cluster
for system in target['systems']:
- package_rpms(system['path'], now, whitelist)
+ package_rpms(system['path'], whitelist)
else:
log('RPM',
('%s is a %s, cannot package rpms!'
diff --git a/ybd/rpm.py b/ybd/rpm.py
index 1aea768..38852ee 100644
--- a/ybd/rpm.py
+++ b/ybd/rpm.py
@@ -109,9 +109,12 @@ def is_main_package(system, dn, package):
return expand_macro(system, dn, package) == dn['name']
-def generate_spec(dn, stage_dir, metafile, output, name, time, system):
+def generate_spec(dn, stage_dir, metafile, output, name, system):
if 'rpm-metadata' not in dn:
return False
+ if 'version' not in dn['rpm-metadata']:
+ app.log(dn, "Cannot generate spec, no version is defined!")
+ return False
with open(metafile, "r") as metafile_f:
metadata = yaml.safe_load(metafile_f)
@@ -134,7 +137,7 @@ def generate_spec(dn, stage_dir, metafile, output, name, time, system):
# Write out the package header first
output_f.write('Name: %s\n' % name)
output_f.write('Summary: %s\n' % description)
- output_f.write('Version: %s\n' % time)
+ output_f.write('Version: %s\n' % dn['rpm-metadata']['version'])
output_f.write('Release: %s\n' % dn['sha'])
output_f.write('License: %s\n' % 'Undetermined')
output_f.write('Prefix: %s\n' % dn.get('prefix', '/usr'))
@@ -223,7 +226,6 @@ def extract_defines(dn):
def package_one_rpm(dn, userdata):
system = userdata['system']
- time = userdata['time']
kind = dn.get('kind')
name = dn.get('name')
@@ -254,7 +256,7 @@ def package_one_rpm(dn, userdata):
success = True
if generate_spec(dn, fulldir, metafile, specfile,
- name, time, system):
+ name, system):
defines = extract_defines(dn)
# XXX Now we gonna run rpmbuild in the sandbox !!!
@@ -285,7 +287,6 @@ def package_one_rpm(dn, userdata):
# package_rpms
# @system: The system to package rpms for
-# @time: The number of whole seconds since the epoch
# @whitelist: A whitelist of chunk names to package rpms for
#
# This function will first stage the given @system, which
@@ -298,11 +299,7 @@ def package_one_rpm(dn, userdata):
# dependencies, this should allow rpm to infer package dependencies
# correctly
#
-# A package's version is the time when RPM assembly started, passed
-# as the @time argument because package_rpms might be called for
-# multiple systems, if a cluster was specified on the command-line.
-#
-def package_rpms(system, time, whitelist=None):
+def package_rpms(system, whitelist=None):
if type(system) is not dict:
system = app.defs.get(system)
@@ -327,7 +324,7 @@ def package_rpms(system, time, whitelist=None):
# Package each rpm in order of build dependency
package_results = foreach_def(
- system, package_one_rpm, {'system': system, 'time': time},
+ system, package_one_rpm, {'system': system},
whitelist=whitelist)
errors = any(not t[1] for t in package_results)
if errors: