Only use datafiles and initsys addon outside virtualenvs

To make it so that cloud-init is installable in a virtualenv
where it can be tested in an isolated scenario we need to avoid
using and including datafiles (which won't be written into the
virtualenv) and also avoid using our initsys helper class which
also adds on its own files when we are being ran from a virtualenv.
This commit is contained in:
Joshua Harlow 2014-10-29 17:12:31 -07:00
parent cf33f2bbc0
commit 8034c6cf4f

View File

@ -23,6 +23,7 @@
from glob import glob
import os
import sys
import setuptools
from setuptools.command.install import install
@ -86,6 +87,17 @@ if os.uname()[0] == 'FreeBSD':
ETC = "/usr/local/etc"
# Avoid having datafiles installed in a virtualenv...
def in_virtualenv():
try:
if sys.real_prefix == sys.prefix:
return False
else:
return True
except AttributeError:
return False
def get_version():
cmd = ['tools/read-version']
(ver, _e) = tiny_p(cmd)
@ -135,6 +147,29 @@ class InitsysInstallData(install):
self.distribution.reinitialize_command('install_data', True)
if in_virtualenv():
data_files = []
cmdclass = {}
else:
data_files = [
(ETC + '/cloud', glob('config/*.cfg')),
(ETC + '/cloud/cloud.cfg.d', glob('config/cloud.cfg.d/*')),
(ETC + '/cloud/templates', glob('templates/*')),
(USR + '/lib/cloud-init', ['tools/uncloud-init',
'tools/write-ssh-key-fingerprints']),
(USR + '/share/doc/cloud-init', [f for f in glob('doc/*') if is_f(f)]),
(USR + '/share/doc/cloud-init/examples',
[f for f in glob('doc/examples/*') if is_f(f)]),
(USR + '/share/doc/cloud-init/examples/seed',
[f for f in glob('doc/examples/seed/*') if is_f(f)]),
]
# Use a subclass for install that handles
# adding on the right init system configuration files
cmdclass = {
'install': InitsysInstallData,
}
setuptools.setup(name='cloud-init',
version=get_version(),
description='EC2 initialisation magic',
@ -146,23 +181,7 @@ setuptools.setup(name='cloud-init',
'tools/cloud-init-per',
],
license='GPLv3',
data_files=[(ETC + '/cloud', glob('config/*.cfg')),
(ETC + '/cloud/cloud.cfg.d', glob('config/cloud.cfg.d/*')),
(ETC + '/cloud/templates', glob('templates/*')),
(USR + '/lib/cloud-init',
['tools/uncloud-init',
'tools/write-ssh-key-fingerprints']),
(USR + '/share/doc/cloud-init',
[f for f in glob('doc/*') if is_f(f)]),
(USR + '/share/doc/cloud-init/examples',
[f for f in glob('doc/examples/*') if is_f(f)]),
(USR + '/share/doc/cloud-init/examples/seed',
[f for f in glob('doc/examples/seed/*') if is_f(f)]),
],
data_files=data_files,
install_requires=read_requires(),
cmdclass={
# Use a subclass for install that handles
# adding on the right init system configuration files
'install': InitsysInstallData,
},
cmdclass=cmdclass,
)