Modernise packaging, and allow multiple init system installation (based on smoser pastebins).

This commit is contained in:
Dimitri John Ledkov 2014-07-23 15:47:16 +01:00
parent aeca294990
commit 2b2f57d9d8
6 changed files with 34 additions and 26 deletions

View File

@ -76,7 +76,7 @@ def write_debian_folder(root, version, revno, append_requires=[]):
params={'requires': requires}) params={'requires': requires})
# Just copy the following directly # Just copy the following directly
for base_fn in ['dirs', 'copyright', 'compat', 'pycompat', 'rules']: for base_fn in ['dirs', 'copyright', 'compat', 'rules']:
shutil.copy(util.abs_join(find_root(), shutil.copy(util.abs_join(find_root(),
'packages', 'debian', base_fn), 'packages', 'debian', base_fn),
util.abs_join(deb_dir, base_fn)) util.abs_join(deb_dir, base_fn))

View File

@ -1 +1 @@
5 9

View File

@ -1,10 +1,11 @@
## This is a cheetah template ## This is a cheetah template
Source: cloud-init Source: cloud-init
Section: admin Section: admin
Priority: extra Priority: optional
Maintainer: Scott Moser <smoser@ubuntu.com> Maintainer: Scott Moser <smoser@ubuntu.com>
Build-Depends: cdbs, Build-Depends: debhelper (>= 9),
debhelper (>= 5.0.38), dh-python,
dh-systemd,
python (>= 2.6.6-3~), python (>= 2.6.6-3~),
python-nose, python-nose,
pyflakes, pyflakes,
@ -12,7 +13,11 @@ Build-Depends: cdbs,
python-setuptools, python-setuptools,
python-cheetah, python-cheetah,
python-mocker, python-mocker,
python-setuptools python-setuptools,
python-httpretty,
#for $r in $requires
${r},
#end for
XS-Python-Version: all XS-Python-Version: all
Standards-Version: 3.9.3 Standards-Version: 3.9.3

View File

@ -1 +0,0 @@
2

View File

@ -1,18 +1,12 @@
#!/usr/bin/make -f #!/usr/bin/make -f
DEB_PYTHON2_MODULE_PACKAGES = cloud-init DEB_PYTHON2_MODULE_PACKAGES = cloud-init
INIT_SYSTEM ?= upstart INIT_SYSTEM ?= upstart,systemd
binary-install/cloud-init::cloud-init-fixups %:
dh $@ --with python2,systemd --build-system pybuild
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/python-distutils.mk
DEB_PYTHON_INSTALL_ARGS_ALL += --init-system=$(INIT_SYSTEM)
DEB_DH_INSTALL_SOURCEDIR := debian/tmp
cloud-init-fixups:
install -d $(DEB_DESTDIR)/etc/rsyslog.d
cp tools/21-cloudinit.conf $(DEB_DESTDIR)/etc/rsyslog.d/21-cloudinit.conf
override_dh_install:
dh_install
install -d debian/cloud-init/etc/rsyslog.d
cp tools/21-cloudinit.conf debian/cloud-init/etc/rsyslog.d/21-cloudinit.conf

View File

@ -86,7 +86,7 @@ class InitsysInstallData(install):
user_options = install.user_options + [ user_options = install.user_options + [
# This will magically show up in member variable 'init_sys' # This will magically show up in member variable 'init_sys'
('init-system=', None, ('init-system=', None,
('init system to configure (%s) [default: None]') % ('init system(s) to configure (%s) [default: None]') %
(", ".join(INITSYS_TYPES)) (", ".join(INITSYS_TYPES))
), ),
] ]
@ -97,13 +97,23 @@ class InitsysInstallData(install):
def finalize_options(self): def finalize_options(self):
install.finalize_options(self) install.finalize_options(self)
if self.init_system and self.init_system not in INITSYS_TYPES:
if self.init_systems and isinstance(self.init_systems, str):
self.init_systems = self.init_systems.split(",")
if len(self.init_system) == 0:
raise DistutilsArgError(("You must specify one of (%s) when" raise DistutilsArgError(("You must specify one of (%s) when"
" specifying a init system!") % (", ".join(INITSYS_TYPES))) " specifying init system(s)!") % (", ".join(INITSYS_TYPES)))
bad = [f for f in self.init_system if f not in INITSYS_TYPES]
if len(bad) != 0:
raise DistutilsArgError(
"Invalid --init-system: %s" % (','.join(bad)))
elif self.init_system: elif self.init_system:
for sys in self.init_systems:
print("adding %s: %s" % (sys, str(INITSYS_ROOTS[sys])))
self.distribution.data_files.append( self.distribution.data_files.append(
(INITSYS_ROOTS[self.init_system], (INITSYS_ROOTS[sys], INITSYS_FILES[sys]))
INITSYS_FILES[self.init_system]))
# Force that command to reinitalize (with new file list) # Force that command to reinitalize (with new file list)
self.distribution.reinitialize_command('install_data', True) self.distribution.reinitialize_command('install_data', True)