From 4e36bf2225d2b6e7a7ac1821e1d00ac72abb5856 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Tue, 25 Sep 2012 13:19:36 -0700 Subject: Add the ability to pass patches to the rpm builder utility. --- packages/brpm | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'packages/brpm') diff --git a/packages/brpm b/packages/brpm index 77de0cf2..616ae021 100755 --- a/packages/brpm +++ b/packages/brpm @@ -149,6 +149,7 @@ def generate_spec_contents(args, tmpl_fn, arc_fn): subs['systemd'] = False subs['init_sys'] = args.boot + subs['patches'] = [os.path.basename(p) for p in args.patches] return templater.render_from_file(tmpl_fn, params=subs) @@ -164,6 +165,10 @@ def main(): " (default: %(default)s)"), default=False, action='store_true') + parser.add_argument("-p", "--patch", dest="patches", + help=("include the following patch when building"), + default=[], + action='append') args = parser.parse_args() capture = True if args.verbose: @@ -197,6 +202,8 @@ def main(): spec_fn = util.abs_join(root_dir, 'cloud-init.spec') util.write_file(spec_fn, contents) print("Created spec file at %r" % (spec_fn)) + for p in args.patches: + util.copy(p, util.abs_join(arc_dir, os.path.basename(p)) # Now build it! print("Running 'rpmbuild' in %r" % (root_dir)) -- cgit v1.2.3 From f74c738fa76db65e45d2bdb19257fe0a78dcd0e0 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Tue, 25 Sep 2012 13:20:33 -0700 Subject: Fix syntax error. --- packages/brpm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/brpm') diff --git a/packages/brpm b/packages/brpm index 616ae021..3870e188 100755 --- a/packages/brpm +++ b/packages/brpm @@ -203,7 +203,7 @@ def main(): util.write_file(spec_fn, contents) print("Created spec file at %r" % (spec_fn)) for p in args.patches: - util.copy(p, util.abs_join(arc_dir, os.path.basename(p)) + util.copy(p, util.abs_join(arc_dir, os.path.basename(p))) # Now build it! print("Running 'rpmbuild' in %r" % (root_dir)) -- cgit v1.2.3 From 018ec6faa0a9d0c8aa584bae2e0798ed7e3e021a Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Tue, 25 Sep 2012 18:12:26 -0700 Subject: Add a top_dir define. --- packages/brpm | 5 +++-- packages/redhat/cloud-init.spec.in | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'packages/brpm') diff --git a/packages/brpm b/packages/brpm index 3870e188..e344926f 100755 --- a/packages/brpm +++ b/packages/brpm @@ -91,7 +91,7 @@ def format_change_line(ds, who, comment=None): return "* %s" % (d) -def generate_spec_contents(args, tmpl_fn, arc_fn): +def generate_spec_contents(args, tmpl_fn, top_dir, arc_fn): # Figure out the version and revno cmd = [util.abs_join(find_root(), 'tools', 'read-version')] @@ -148,6 +148,7 @@ def generate_spec_contents(args, tmpl_fn, arc_fn): else: subs['systemd'] = False + subs['defines'] = ["_topdir %s" % (top_dir)] subs['init_sys'] = args.boot subs['patches'] = [os.path.basename(p) for p in args.patches] return templater.render_from_file(tmpl_fn, params=subs) @@ -197,7 +198,7 @@ def main(): # Form the spec file to be used tmpl_fn = util.abs_join(find_root(), 'packages', 'redhat', 'cloud-init.spec.in') - contents = generate_spec_contents(args, tmpl_fn, + contents = generate_spec_contents(args, tmpl_fn, root_dir, os.path.basename(archive_fn)) spec_fn = util.abs_join(root_dir, 'cloud-init.spec') util.write_file(spec_fn, contents) diff --git a/packages/redhat/cloud-init.spec.in b/packages/redhat/cloud-init.spec.in index 9cfe56f5..f5339640 100644 --- a/packages/redhat/cloud-init.spec.in +++ b/packages/redhat/cloud-init.spec.in @@ -5,6 +5,10 @@ # Or: http://fedoraproject.org/wiki/Packaging:ScriptletSnippets # Or: http://www.rpm.org/max-rpm/ch-rpm-inside.html +#for $d in $defines +%define ${d} +#end for + Name: cloud-init Version: ${version} Release: ${release}%{?dist} -- cgit v1.2.3 From c62675900a96dd645a1ff2ee0c316ef9232f443d Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Tue, 25 Sep 2012 18:28:12 -0700 Subject: Clean doesn't seem needed. --- packages/brpm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'packages/brpm') diff --git a/packages/brpm b/packages/brpm index e344926f..1735f5bb 100755 --- a/packages/brpm +++ b/packages/brpm @@ -208,8 +208,7 @@ def main(): # Now build it! print("Running 'rpmbuild' in %r" % (root_dir)) - cmd = ['rpmbuild', '--clean', - '-ba', spec_fn] + cmd = ['rpmbuild', '-ba', spec_fn] util.subp(cmd, capture=capture) # Copy the items built to our local dir -- cgit v1.2.3 From 130d90cc675db6f33d294bf04e9c74227c07db50 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Fri, 5 Oct 2012 11:22:31 -0700 Subject: Leave off creating fake headers for unknown versions since this causes rpmbuild to croak with errors like 'changelog not in descending chronological order'. --- packages/brpm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'packages/brpm') diff --git a/packages/brpm b/packages/brpm index 1735f5bb..5aecad65 100755 --- a/packages/brpm +++ b/packages/brpm @@ -58,8 +58,7 @@ def get_log_header(version): a_rev = rev break if not a_rev: - return format_change_line(datetime.now(), - '??', version) + return None # Extract who made that tag as the header cmd = ['bzr', 'log', '-r%s' % (a_rev), '--timezone=utc'] @@ -133,7 +132,8 @@ def generate_spec_contents(args, tmpl_fn, top_dir, arc_fn): if re.match(r"^\s*[\d][.][\d][.][\d]:\s*", line): line = line.strip(":") header = get_log_header(line) - changelog_lines.append(header) + if header: + changelog_lines.append(header) else: changelog_lines.append(line) subs['changelog'] = "\n".join(changelog_lines) -- cgit v1.2.3 From 6cfb1d869614e8ceee45c4443ec65603cce72b78 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Fri, 5 Oct 2012 11:30:36 -0700 Subject: Only allow the first missing version to use the datetime.now(), the others get a warning message. --- packages/brpm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'packages/brpm') diff --git a/packages/brpm b/packages/brpm index 5aecad65..28136d74 100755 --- a/packages/brpm +++ b/packages/brpm @@ -126,13 +126,22 @@ def generate_spec_contents(args, tmpl_fn, top_dir, arc_fn): # Format a nice changelog (as best as we can) changelog = util.load_file(util.abs_join(find_root(), 'ChangeLog')) changelog_lines = [] + missing_versions = 0 for line in changelog.splitlines(): if not line.strip(): continue if re.match(r"^\s*[\d][.][\d][.][\d]:\s*", line): line = line.strip(":") header = get_log_header(line) - if header: + if not header: + missing_versions += 1 + if missing_versions == 1: + # Must be using a new 'dev'/'trunk' release + changelog_lines.append(format_change_line(datetime.now(), '??')) + else: + sys.stderr.write(("Changelog version line %s " + "does not have a corresponding tag!") % (line)) + else: changelog_lines.append(header) else: changelog_lines.append(line) -- cgit v1.2.3 From 7a2e678685dbc94e13f6d8ca6a5e92000e1f974f Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Fri, 5 Oct 2012 11:31:56 -0700 Subject: Ensure stderr newline. --- packages/brpm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/brpm') diff --git a/packages/brpm b/packages/brpm index 28136d74..7975e05c 100755 --- a/packages/brpm +++ b/packages/brpm @@ -140,7 +140,7 @@ def generate_spec_contents(args, tmpl_fn, top_dir, arc_fn): changelog_lines.append(format_change_line(datetime.now(), '??')) else: sys.stderr.write(("Changelog version line %s " - "does not have a corresponding tag!") % (line)) + "does not have a corresponding tag!\n") % (line)) else: changelog_lines.append(header) else: -- cgit v1.2.3 From aae71d04bf042ac20f9027a43f5b269a6f7c19fc Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Mon, 8 Oct 2012 16:23:09 -0700 Subject: Add the ability to have a 'private' release number which can be to increment cloud-init while still maintaining the 'major' cloud-init version number from bzr. --- packages/brpm | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'packages/brpm') diff --git a/packages/brpm b/packages/brpm index 7975e05c..fec6acd8 100755 --- a/packages/brpm +++ b/packages/brpm @@ -106,6 +106,8 @@ def generate_spec_contents(args, tmpl_fn, top_dir, arc_fn): subs['version'] = version subs['revno'] = revno subs['release'] = "bzr%s" % (revno) + if args.sub_release is not None: + subs['release'] += ".%s" % (args.sub_release) subs['archive_name'] = arc_fn cmd = [util.abs_join(find_root(), 'tools', 'read-dependencies')] @@ -175,6 +177,13 @@ def main(): " (default: %(default)s)"), default=False, action='store_true') + parser.add_argument('-s', "--sub-release", dest="sub_release", + metavar="RELEASE", + help=("a 'internal' release number to concat" + " with the bzr version number to form" + " the final version number"), + type=int, + default=None) parser.add_argument("-p", "--patch", dest="patches", help=("include the following patch when building"), default=[], -- cgit v1.2.3 From 8b7b89a7aa0e1110ef8eb6ab46160dbc0a646019 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Mon, 8 Oct 2012 16:33:43 -0700 Subject: Make the subrelease a new k/v entry that is handled differently in the rpm spec file template instead of being joined with the release. --- packages/brpm | 4 +++- packages/redhat/cloud-init.spec.in | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'packages/brpm') diff --git a/packages/brpm b/packages/brpm index fec6acd8..e6b03609 100755 --- a/packages/brpm +++ b/packages/brpm @@ -107,7 +107,9 @@ def generate_spec_contents(args, tmpl_fn, top_dir, arc_fn): subs['revno'] = revno subs['release'] = "bzr%s" % (revno) if args.sub_release is not None: - subs['release'] += ".%s" % (args.sub_release) + subs['subrelease'] = "." + str(args.sub_release) + else: + subs['subrelease'] = '' subs['archive_name'] = arc_fn cmd = [util.abs_join(find_root(), 'tools', 'read-dependencies')] diff --git a/packages/redhat/cloud-init.spec.in b/packages/redhat/cloud-init.spec.in index 12f0b144..30bcd050 100644 --- a/packages/redhat/cloud-init.spec.in +++ b/packages/redhat/cloud-init.spec.in @@ -11,7 +11,7 @@ Name: cloud-init Version: ${version} -Release: ${release}%{?dist} +Release: ${release}${subrelease}%{?dist} Summary: Cloud instance init scripts Group: System Environment/Base -- cgit v1.2.3 From f3fb7f7d7c83d277634cfe43b82912801ef67311 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 13 Nov 2012 12:07:03 -0500 Subject: sort PKG_MP entries --- packages/bddeb | 6 +++--- packages/brpm | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'packages/brpm') diff --git a/packages/bddeb b/packages/bddeb index 2cfddb99..bda3170d 100755 --- a/packages/bddeb +++ b/packages/bddeb @@ -28,13 +28,13 @@ import argparse # use in our debian 'control' file, this is a translation of the 'requires' # file pypi package name to a debian/ubuntu package name. PKG_MP = { + 'argparse': 'python-argparse', 'boto': 'python-boto', + 'cheetah': 'python-cheetah', 'configobj': 'python-configobj', 'oauth': 'python-oauth', - 'pyyaml': 'python-yaml', 'prettytable': 'python-prettytable', - 'argparse': 'python-argparse', - 'cheetah': 'python-cheetah', + 'pyyaml': 'python-yaml', } DEBUILD_ARGS = ["-us", "-S", "-uc"] diff --git a/packages/brpm b/packages/brpm index e6b03609..eea2a046 100755 --- a/packages/brpm +++ b/packages/brpm @@ -34,13 +34,13 @@ from cloudinit import util # this is a translation of the 'requires' # file pypi package name to a redhat/fedora package name. PKG_MP = { + 'argparse': 'python-argparse', 'boto': 'python-boto', 'cheetah': 'python-cheetah', - 'prettytable': 'python-prettytable', - 'oauth': 'python-oauth', 'configobj': 'python-configobj', + 'oauth': 'python-oauth', + 'prettytable': 'python-prettytable', 'pyyaml': 'PyYAML', - 'argparse': 'python-argparse', } # Subdirectories of the ~/rpmbuild dir -- cgit v1.2.3 From 517f52af3c7fa39b0303f337681f77e2d2a4ff6f Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 13 Nov 2012 12:08:45 -0500 Subject: add dependency for 'pkg_resources' --- ChangeLog | 2 +- packages/bddeb | 1 + packages/brpm | 1 + packages/debian/control.in | 1 - 4 files changed, 3 insertions(+), 2 deletions(-) (limited to 'packages/brpm') diff --git a/ChangeLog b/ChangeLog index 21584bb7..14efc4b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -40,7 +40,7 @@ dictionary and force it to full expand so that if cloud-init blocks the ec2 metadata port the lazy loaded dictionary will continue working properly instead of trying to make additional url calls which will fail (LP: #1068801) - - Added dependency on distribute's python-pkg-resources + - Added dependency: python-pkg-resources (deb), python-setuptools (rpm) - use a set of helper/parsing classes to perform system configuration for easier test. (/etc/sysconfig, /etc/hostname, resolv.conf, /etc/hosts) 0.7.0: diff --git a/packages/bddeb b/packages/bddeb index bda3170d..a92dad70 100755 --- a/packages/bddeb +++ b/packages/bddeb @@ -33,6 +33,7 @@ PKG_MP = { 'cheetah': 'python-cheetah', 'configobj': 'python-configobj', 'oauth': 'python-oauth', + 'pkg_resources': 'python-pkg-resources', 'prettytable': 'python-prettytable', 'pyyaml': 'python-yaml', } diff --git a/packages/brpm b/packages/brpm index eea2a046..0b1e33cf 100755 --- a/packages/brpm +++ b/packages/brpm @@ -39,6 +39,7 @@ PKG_MP = { 'cheetah': 'python-cheetah', 'configobj': 'python-configobj', 'oauth': 'python-oauth', + 'pkg_resources': 'python-setuptools', 'prettytable': 'python-prettytable', 'pyyaml': 'PyYAML', } diff --git a/packages/debian/control.in b/packages/debian/control.in index dace0356..edb5aff5 100644 --- a/packages/debian/control.in +++ b/packages/debian/control.in @@ -19,7 +19,6 @@ Standards-Version: 3.9.3 Package: cloud-init Architecture: all Depends: cloud-utils, - distribute, procps, python, #for $r in $requires -- cgit v1.2.3