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,
       )

_______________________________________________
Mailing list: https://launchpad.net/~cloud-init-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~cloud-init-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to