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 +++++++ packages/redhat/cloud-init.spec.in | 7 +++++++ 2 files changed, 14 insertions(+) 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)) diff --git a/packages/redhat/cloud-init.spec.in b/packages/redhat/cloud-init.spec.in index 35b27beb..6604b1ac 100644 --- a/packages/redhat/cloud-init.spec.in +++ b/packages/redhat/cloud-init.spec.in @@ -36,6 +36,13 @@ Requires: shadow-utils Requires: ${r} #end for +# Custom patches +#set $size 0 +#for $p in $patches +Patch${size}: $p +#set $size += 1 +#end for + #if $sysvinit Requires(post): chkconfig Requires(postun): initscripts -- 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(-) 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 cdba22dd0fc249124dfb4e578f44898ba044925a Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Tue, 25 Sep 2012 13:29:07 -0700 Subject: Allow package_mirrors to be non-existent. --- cloudinit/distros/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py index 549c1612..6df843ad 100644 --- a/cloudinit/distros/__init__.py +++ b/cloudinit/distros/__init__.py @@ -112,7 +112,7 @@ class Distro(object): return arch def _get_arch_package_mirror_info(self, arch=None): - mirror_info = self.get_option("package_mirrors", None) + mirror_info = self.get_option("package_mirrors") or [] if arch == None: arch = self.get_primary_arch() return _get_arch_package_mirror_info(mirror_info, arch) @@ -122,7 +122,6 @@ class Distro(object): # this resolves the package_mirrors config option # down to a single dict of {mirror_name: mirror_url} arch_info = self._get_arch_package_mirror_info(arch) - return _get_package_mirror_info(availability_zone=availability_zone, mirror_info=arch_info) -- cgit v1.2.3 From ca9251d74a18b47abacff2b63328061b9e484246 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Tue, 25 Sep 2012 13:37:09 -0700 Subject: Fix cheetah syntax error. --- packages/redhat/cloud-init.spec.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/redhat/cloud-init.spec.in b/packages/redhat/cloud-init.spec.in index 6604b1ac..9cfe56f5 100644 --- a/packages/redhat/cloud-init.spec.in +++ b/packages/redhat/cloud-init.spec.in @@ -37,7 +37,7 @@ Requires: ${r} #end for # Custom patches -#set $size 0 +#set $size = 0 #for $p in $patches Patch${size}: $p #set $size += 1 -- 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(-) 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(-) 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 179f48250952501c8ad36ac0ed6389159a25bf82 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Wed, 26 Sep 2012 16:59:28 -0700 Subject: Ensure the patches get activated. --- packages/redhat/cloud-init.spec.in | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/redhat/cloud-init.spec.in b/packages/redhat/cloud-init.spec.in index f5339640..90e85a05 100644 --- a/packages/redhat/cloud-init.spec.in +++ b/packages/redhat/cloud-init.spec.in @@ -69,6 +69,13 @@ ssh keys and to let the user run various scripts. %prep %setup -q -n %{name}-%{version}~${release} +# Custom patches activation +#set $size = 0 +#for $p in $patches +%patch${size} +#set $size += 1 +#end for + %build %{__python} setup.py build -- cgit v1.2.3 From 68114a57d776585865056ad5fb71d41bb741cd06 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Wed, 26 Sep 2012 17:03:07 -0700 Subject: Add a nice '-p1' --- packages/redhat/cloud-init.spec.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/redhat/cloud-init.spec.in b/packages/redhat/cloud-init.spec.in index 90e85a05..12f0b144 100644 --- a/packages/redhat/cloud-init.spec.in +++ b/packages/redhat/cloud-init.spec.in @@ -72,7 +72,7 @@ ssh keys and to let the user run various scripts. # Custom patches activation #set $size = 0 #for $p in $patches -%patch${size} +%patch${size} -p1 #set $size += 1 #end for -- cgit v1.2.3 From 332ef83d77853714b88358de301bda30e82aaf62 Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Fri, 28 Sep 2012 11:06:16 -0700 Subject: Stop the bad habit of using 'or'. --- cloudinit/distros/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py index 6df843ad..55e4b8db 100644 --- a/cloudinit/distros/__init__.py +++ b/cloudinit/distros/__init__.py @@ -112,7 +112,7 @@ class Distro(object): return arch def _get_arch_package_mirror_info(self, arch=None): - mirror_info = self.get_option("package_mirrors") or [] + mirror_info = self.get_option("package_mirrors", []) if arch == None: arch = self.get_primary_arch() return _get_arch_package_mirror_info(mirror_info, arch) -- cgit v1.2.3 From 46be69003044a7d60d9566dbddd1b7fd93054c8f Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Fri, 28 Sep 2012 11:08:46 -0700 Subject: Also ensure that if mirror info is not invalid before we start iterating over it (it could be sent is as none). --- cloudinit/distros/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py index 55e4b8db..55ab1f10 100644 --- a/cloudinit/distros/__init__.py +++ b/cloudinit/distros/__init__.py @@ -386,6 +386,8 @@ def _get_package_mirror_info(mirror_info, availability_zone=None, # given a arch specific 'mirror_info' entry (from package_mirrors) # search through the 'search' entries, and fallback appropriately # return a dict with only {name: mirror} entries. + if not mirror_info: + mirror_info = {} ec2_az_re = ("^[a-z][a-z]-(%s)-[1-9][0-9]*[a-z]$" % "north|northeast|east|southeast|south|southwest|west|northwest") -- cgit v1.2.3