cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #00559
[Merge] lp:~harlowja/cloud-init/setup-virtualenv-installable into lp:cloud-init
Joshua Harlow has proposed merging lp:~harlowja/cloud-init/setup-virtualenv-installable into lp:cloud-init.
Requested reviews:
cloud init development team (cloud-init-dev)
For more details, see:
https://code.launchpad.net/~harlowja/cloud-init/setup-virtualenv-installable/+merge/240069
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.
--
https://code.launchpad.net/~harlowja/cloud-init/setup-virtualenv-installable/+merge/240069
Your team cloud init development team is requested to review the proposed merge of lp:~harlowja/cloud-init/setup-virtualenv-installable into lp:cloud-init.
=== modified file 'setup.py'
--- setup.py 2014-09-02 16:18:21 +0000
+++ setup.py 2014-10-30 00:24:52 +0000
@@ -23,6 +23,7 @@
from glob import glob
import os
+import sys
import setuptools
from setuptools.command.install import install
@@ -86,6 +87,17 @@
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 @@
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 @@
'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,
)
Follow ups