__setuptools_hack__.py
author Pierre-Yves David <pierre-yves.david@logilab.fr>
Fri, 15 Oct 2010 11:41:10 +0200
branchstable
changeset 6506 c1661ea815dc
parent 6504 88b3172eb7c7
permissions -rw-r--r--
[packaging] add a __init__.py to cubes directory when installing data
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6504
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     1
from os import path as osp
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     2
import sys
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     3
import os
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     4
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     5
def in_egg(path):
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     6
    head, tail = osp.split(path)
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     7
    while tail:
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     8
        if tail.endswith('.egg'):
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
     9
            return True
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    10
        head, tail = osp.split(head)
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    11
    return False
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    12
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    13
if in_egg(__file__):
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    14
    from cubicweb.cwconfig import _find_prefix
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    15
    INSTALL_PREFIX = _find_prefix()
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    16
    if not osp.exists(osp.join(INSTALL_PREFIX, 'share', 'cubicweb', 'migration')):
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    17
        print >> sys.stderr, 'copying cubicweb content to the expected location'
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    18
        from shutil import copytree
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    19
        import tarfile
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    20
        import tempfile
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    21
        from pkg_resources import Requirement, resource_filename
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    22
        from functools import partial
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    23
        file_path = partial(resource_filename, Requirement.parse("cubicweb"))
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    24
        for df in ('share', 'lib'):
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    25
            # Tar are used to merge with destination directory
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    26
            tmp_file = tempfile.NamedTemporaryFile(suffix='.tar')
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    27
            tmp_tar  = tarfile.TarFile(tmp_file.name, mode='w')
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    28
            tmp_tar.add(file_path(df), arcname=df)
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    29
            tmp_tar  = tarfile.TarFile(tmp_file.name, mode='r')
88b3172eb7c7 [setuptools] Automaticly move data content of a cubicweb's egg in the proper location.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff changeset
    30
            tmp_tar.extractall(path=INSTALL_PREFIX)