__setuptools_hack__.py
author Pierre-Yves David <pierre-yves.david@logilab.fr>
Fri, 15 Oct 2010 11:39:54 +0200
branchstable
changeset 6504 88b3172eb7c7
permissions -rw-r--r--
[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.

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)