# HG changeset patch # User Pierre-Yves David # Date 1287135594 -7200 # Node ID 88b3172eb7c74673400d0c7d97160b8d40f5754d # Parent 0fd07972660669fcd612e9341f7961ff0fc88565 [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. diff -r 0fd079726606 -r 88b3172eb7c7 __init__.py --- 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__ diff -r 0fd079726606 -r 88b3172eb7c7 __setuptools_hack__.py --- /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)