nutools/pyulib/setup.py

113 lines
3.3 KiB
Python
Raw Normal View History

2013-08-27 15:14:44 +04:00
#!/usr/bin/env python
# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
NAME = 'pyulib'
VERSION = None
DESCRIPTION = 'Librairies python de utools'
AUTHOR = 'Jephte CLAIN'
EMAIL = 'Jephte.Clain@univ-reunion.fr'
2013-11-15 16:09:25 +04:00
MODULES = ('i_need_py23', 'i_need_py24', 'i_need_py25',
'i_need_py26', 'i_need_py27',
2013-08-27 15:14:44 +04:00
'ULIB_CONFIG',
)
SRCDIR = 'src'
PACKAGE_DIR = {'': SRCDIR}
PACKAGE_DATA = {}
PACKAGES = []
SCRIPTS = []
import os, sys, re, fnmatch
from os import path
RE_VERSION = re.compile(r'(\d+(?:\.\d+)*)(?:-r(\d+/\d+/\d+))?')
def get_version(basedir=None):
if basedir is None:
basedir = path.split(path.abspath(sys.argv[0]))[0]
version_txt = path.join(basedir, 'VERSION.txt')
if not path.isfile(version_txt): return ''
try:
inf = open(version_txt, 'rb')
try: line = inf.readline()
finally: inf.close()
except:
return ''
mo = RE_VERSION.match(line)
if not mo: return ''
return mo.group(1)
def findf(spec, bp):
"""Transformer le package bp en chemin, puis chercher récursivement les
fichiers correspondant à la spécification spec à partir de SRCDIR/bp
"""
files = []
bp = bp.replace(".", "/")
bpdir = path.join(SRCDIR, bp)
bpnames = os.listdir(bpdir)
for specname in fnmatch.filter(bpnames, spec):
specfile = path.join(bpdir, specname)
if path.isfile(specfile):
files.append(specname)
else:
for dirpath, dirnames, filenames in os.walk(specfile):
dirnames.remove('.svn')
dirpath = dirpath[len(bpdir)+1:]
files.extend([path.join(dirpath, filename) for filename in filenames])
return files
def fixp(p, bp):
"""Transformer le package bp en chemin, puis exprimer le chemin relatif p
par rapport au chemin du package, puis ajouter SRCDIR/ devant le chemin
"""
bp = bp.replace(".", "/")
return path.join(SRCDIR, bp, p)
def addp(name, data=()):
"""Ajouter un package, avec ses fichiers de données
"""
global PACKAGES, PACKAGE_DATA
PACKAGES.append(name)
if data:
files = []
for spec in data:
files.extend(findf(spec, name))
PACKAGE_DATA[name] = files
def adds(name, scripts=()):
"""Ajouter des scripts contenus dans un package
"""
global SCRIPTS
if scripts:
SCRIPTS.extend(map(lambda s: fixp(s, name), scripts))
if VERSION is None: VERSION = get_version()
addp('ulib')
addp('ulib.all')
addp('ulib.base')
addp('ulib.ext')
addp('ulib.ext.optik141', ['README.txt'])
addp('ulib.ext.simplejson', ['_speedups.c'])
addp('ulib.ext.tarfile', ['README.txt'])
addp('ulib.ext.web')
addp('ulib.ext.web.wsgiserver', ['LICENSE.txt'])
addp('ulib.ext.web.contrib')
addp('ulib.formats')
addp('ulib.gae')
addp('ulib.json')
addp('ulib.optparse')
addp('ulib.sa')
addp('ulib.tasks')
addp('ulib.templ')
addp('ulib.web')
addp('ulib.p')
addp('ulib.p.templ')
addp('ulib.p.uinc')
addp('ulib.p.vcs')
addp('ulib.p.wop')
if __name__ == '__main__':
from distutils.core import setup
setup(name=NAME, version=VERSION,
description=DESCRIPTION, author=AUTHOR, author_email=EMAIL,
py_modules=MODULES,
package_dir=PACKAGE_DIR, package_data=PACKAGE_DATA, packages=PACKAGES,
scripts=SCRIPTS,
)