third_party.pylibs.pylint.src/setup.py

154 lines
4.5 KiB
Python
Raw Normal View History

2006-04-26 10:48:09 +00:00
#!/usr/bin/env python
# pylint: disable=W0404,W0622,W0704,W0613
2009-01-21 09:03:41 +00:00
"""Generic Setup script, takes package info from __pkginfo__.py file.
2006-04-26 10:48:09 +00:00
2010-03-23 10:39:48 +00:00
:copyright: 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2009-01-21 09:03:41 +00:00
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
:license: General Public License version 2 - http://www.gnu.org/licenses
"""
__docformat__ = "restructuredtext en"
2006-04-26 10:48:09 +00:00
import os
import sys
import shutil
from os.path import isdir, exists, join, walk
2009-03-19 16:14:52 +00:00
# FIXME : setup.py doesn't work with setuptools so we use distutils
2009-03-24 14:15:18 +00:00
try:
if os.environ.get('NO_SETUPTOOLS'):
raise ImportError()
from setuptools import setup
USE_SETUPTOOLS = 1
2009-06-11 13:29:43 +00:00
except ImportError:
2009-03-24 14:15:18 +00:00
from distutils.core import setup
USE_SETUPTOOLS = 0
2009-03-19 16:14:52 +00:00
#assert USE_SETUPTOOLS
2009-01-21 09:03:41 +00:00
2009-03-24 14:15:18 +00:00
sys.modules.pop('__pkginfo__', None)
2006-04-26 10:48:09 +00:00
# import required features
from __pkginfo__ import modname, version, license, short_desc, long_desc, \
web, author, author_email, classifiers
# import optional features
try:
from __pkginfo__ import distname
except ImportError:
distname = modname
try:
from __pkginfo__ import scripts
except ImportError:
scripts = []
try:
from __pkginfo__ import data_files
except ImportError:
data_files = None
try:
from __pkginfo__ import ext_modules
except ImportError:
ext_modules = None
2009-01-21 09:03:41 +00:00
try:
from __pkginfo__ import install_requires
except ImportError:
install_requires = None
STD_BLACKLIST = ('CVS', '.svn', '.hg', 'debian', 'dist', 'build')
IGNORED_EXTENSIONS = ('.pyc', '.pyo', '.elc', '~')
2006-04-26 10:48:09 +00:00
def ensure_scripts(linux_scripts):
"""
Creates the proper script names required for each platform
(taken from 4Suite)
"""
from distutils import util
if util.get_platform()[:3] == 'win':
2010-03-23 11:33:59 +00:00
scripts_ = linux_scripts + [script + '.bat'
for script in linux_scripts]
2006-04-26 10:48:09 +00:00
else:
scripts_ = linux_scripts
return scripts_
def get_packages(directory, prefix):
"""return a list of subpackages for the given directory
"""
result = []
for package in os.listdir(directory):
absfile = join(directory, package)
if isdir(absfile):
if exists(join(absfile, '__init__.py')):
2006-04-26 10:48:09 +00:00
if prefix:
result.append('%s.%s' % (prefix, package))
else:
result.append(package)
result += get_packages(absfile, result[-1])
return result
def export(from_dir, to_dir,
2009-01-21 09:03:41 +00:00
blacklist=STD_BLACKLIST,
2006-04-26 10:48:09 +00:00
ignore_ext=IGNORED_EXTENSIONS):
"""make a mirror of from_dir in to_dir, omitting directories and files
listed in the black list
"""
def make_mirror(arg, directory, fnames):
"""walk handler"""
for norecurs in blacklist:
try:
fnames.remove(norecurs)
except ValueError:
pass
for filename in fnames:
# don't include binary files
if filename[-4:] in ignore_ext:
continue
if filename[-1] == '~':
continue
2009-01-28 07:56:38 +00:00
src = join(directory, filename)
2006-04-26 10:48:09 +00:00
dest = to_dir + src[len(from_dir):]
print >> sys.stderr, src, '->', dest
if os.path.isdir(src):
if not exists(dest):
os.mkdir(dest)
else:
if exists(dest):
os.remove(dest)
shutil.copy2(src, dest)
try:
os.mkdir(to_dir)
except OSError, ex:
# file exists ?
import errno
if ex.errno != errno.EEXIST:
raise
walk(from_dir, make_mirror, None)
def install(**kwargs):
"""setup entry point"""
kwargs['package_dir'] = {modname : '.'}
packages = [modname] + get_packages(os.getcwd(), modname)
if USE_SETUPTOOLS:
if install_requires:
kwargs['install_requires'] = install_requires
if '--force-manifest' in sys.argv:
sys.argv.remove('--force-manifest')
2006-04-26 10:48:09 +00:00
kwargs['packages'] = packages
return setup(name = distname,
version = version,
2009-01-21 09:03:41 +00:00
license = license,
2006-04-26 10:48:09 +00:00
description = short_desc,
long_description = long_desc,
author = author,
author_email = author_email,
url = web,
classifiers = classifiers,
scripts = ensure_scripts(scripts),
2009-01-21 09:03:41 +00:00
data_files = data_files,
ext_modules = ext_modules,
2006-04-26 10:48:09 +00:00
**kwargs
)
if __name__ == '__main__' :
install()