From 12d6cdce560be0b4788ae198f75d783a12b893c2 Mon Sep 17 00:00:00 2001 From: harlowja Date: Tue, 26 Jun 2012 07:48:12 -0700 Subject: Add in the ability to choose which type of boot type the rpm should have and adjust the specfile that is generated to remove the unwanted config files for the types which were not selected. --- packages/brpm | 30 ++++++++++++++++++++++++++++-- packages/redhat/cloud-init.spec | 6 +++++- 2 files changed, 33 insertions(+), 3 deletions(-) (limited to 'packages') diff --git a/packages/brpm b/packages/brpm index 081d092b..b505e6b4 100755 --- a/packages/brpm +++ b/packages/brpm @@ -9,6 +9,8 @@ import sys import tempfile import re +import argparse + import tempita from datetime import datetime @@ -104,7 +106,7 @@ def warn(msg): print("WARNING: %s" % (msg)) -def generate_spec_contents(tmpl_fn, revno, version): +def generate_spec_contents(args, tmpl_fn, revno, version): # Tmpl params subs = {} @@ -172,6 +174,22 @@ def generate_spec_contents(tmpl_fn, revno, version): '%{_bindir}/*', '/usr/lib/cloud-init/*', ] + # Since setup.py installs them + # all, we need to selectively + # knock off the wrong ones and + # ensure the right one is kept + post_remove_keep = { + 'initd': '/etc/init.d/', + 'systemd': '/etc/systemd/', + 'upstart': '/etc/init/', + } + post_remove = [] + for (k, v) in post_remove_keep.iteritems(): + if k != args.boot: + post_remove.append(v) + else: + other_files.append(v) + subs['post_remove'] = post_remove subs['files'] = other_files with open(tmpl_fn, 'r') as fh: @@ -188,6 +206,13 @@ def archive_code(): def main(): + + parser = argparse.ArgumentParser() + parser.add_argument("-b", "--boot", dest="boot", + help="select boot type (default: %(default)s)", + metavar="TYPE", default='initd', + choices=['upstart', 'initd', 'systemd']) + args = parser.parse_args() # Clean out the root dir and make sure the dirs we want are in place root_dir = os.path.expanduser("~/rpmbuild") @@ -207,7 +232,8 @@ def main(): # Form the spec file to be used tmpl_fn = os.path.join(os.getcwd(), 'redhat', 'cloud-init.spec') info("Generated spec file from template %r" % (tmpl_fn)) - (base_name, arc_name, contents) = generate_spec_contents(tmpl_fn, + (base_name, arc_name, contents) = generate_spec_contents(args, + tmpl_fn, revno, version) spec_fn = os.path.join(root_dir, 'cloud-init.spec') with open(spec_fn, 'w') as fh: diff --git a/packages/redhat/cloud-init.spec b/packages/redhat/cloud-init.spec index f0c874ee..ddb6617d 100644 --- a/packages/redhat/cloud-init.spec +++ b/packages/redhat/cloud-init.spec @@ -37,11 +37,15 @@ ssh keys and to let the user run various scripts. %build %{__python} setup.py build - %install rm -rf $RPM_BUILD_ROOT %{__python} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT +# Remove anything after it was installed?? +{{for r in post_remove}} +rm -rfv $RPM_BUILD_ROOT/{{r}} +{{endfor}} + %clean rm -rf $RPM_BUILD_ROOT -- cgit v1.2.3