[setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
This should be done once during the first import of the cubicweb module.
This is an ugly hack because setuptools lake proper post install hooks.
--- a/__init__.py Fri Oct 15 11:39:10 2010 +0200
+++ b/__init__.py Fri Oct 15 11:39:54 2010 +0200
@@ -146,3 +146,4 @@
CW_EVENT_MANAGER.bind(event, func, *args, **kwargs)
return func
return _decorator
+import cubicweb.__setuptools_hack__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/__setuptools_hack__.py Fri Oct 15 11:39:54 2010 +0200
@@ -0,0 +1,30 @@
+from os import path as osp
+import sys
+import os
+
+def in_egg(path):
+ head, tail = osp.split(path)
+ while tail:
+ if tail.endswith('.egg'):
+ return True
+ head, tail = osp.split(head)
+ return False
+
+if in_egg(__file__):
+ from cubicweb.cwconfig import _find_prefix
+ INSTALL_PREFIX = _find_prefix()
+ if not osp.exists(osp.join(INSTALL_PREFIX, 'share', 'cubicweb', 'migration')):
+ print >> sys.stderr, 'copying cubicweb content to the expected location'
+ from shutil import copytree
+ import tarfile
+ import tempfile
+ from pkg_resources import Requirement, resource_filename
+ from functools import partial
+ file_path = partial(resource_filename, Requirement.parse("cubicweb"))
+ for df in ('share', 'lib'):
+ # Tar are used to merge with destination directory
+ tmp_file = tempfile.NamedTemporaryFile(suffix='.tar')
+ tmp_tar = tarfile.TarFile(tmp_file.name, mode='w')
+ tmp_tar.add(file_path(df), arcname=df)
+ tmp_tar = tarfile.TarFile(tmp_file.name, mode='r')
+ tmp_tar.extractall(path=INSTALL_PREFIX)