author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
Fri, 15 Oct 2010 11:41:10 +0200 | |
branch | stable |
changeset 6506 | c1661ea815dc |
parent 6504 | 88b3172eb7c7 |
permissions | -rw-r--r-- |
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) |