--- a/skeleton/setup.py Mon Apr 19 15:31:24 2010 +0200
+++ b/skeleton/setup.py Tue Apr 20 09:11:34 2010 +0200
@@ -1,25 +1,12 @@
#!/usr/bin/env python
-"""Generic Setup script, takes package info from __pkginfo__.py file
+# pylint: disable-msg=W0404,W0622,W0704,W0613,W0152
+"""Generic Setup script, takes package info from __pkginfo__.py file.
-:organization: Logilab
-:copyright: 2001-2010 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
+:copyright: 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
"""
-# pylint: disable-msg=W0142,W0403,W0404,W0613,W0622,W0622,W0704,R0904,C0103,E0611
-#
-# This program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc.,
-# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+__docformat__ = "restructuredtext en"
import os
import sys
@@ -27,27 +14,38 @@
from os.path import isdir, exists, join, walk
try:
- if os.environ.get('NO_SETUPTOOLS'):
- raise ImportError() # do as there is no setuptools
- from setuptools import setup
- from setuptools.command import install_lib
- USE_SETUPTOOLS = True
+ if os.environ.get('NO_SETUPTOOLS'):
+ raise ImportError()
+ from setuptools import setup
+ from setuptools.command import install_lib
+ USE_SETUPTOOLS = 1
except ImportError:
- from distutils.core import setup
- from distutils.command import install_lib
- USE_SETUPTOOLS = False
+ from distutils.core import setup
+ from distutils.command import install_lib
+ USE_SETUPTOOLS = 0
+
+sys.modules.pop('__pkginfo__', None)
# import required features
-from __pkginfo__ import modname, version, license, description, web, \
- author, author_email
+from __pkginfo__ import modname, version, license, short_desc, \
+ web, author, author_email
+# import optional features
+import __pkginfo__
+distname = getattr(__pkginfo__, 'distname', modname)
+scripts = getattr(__pkginfo__, 'scripts', [])
+data_files = getattr(__pkginfo__, 'data_files', None)
+include_dirs = getattr(__pkginfo__, 'include_dirs', [])
+ext_modules = getattr(__pkginfo__, 'ext_modules', None)
+dependency_links = getattr(__pkginfo__, 'dependency_links', None)
+
+STD_BLACKLIST = ('CVS', '.svn', '.hg', 'debian', 'dist', 'build')
+
+IGNORED_EXTENSIONS = ('.pyc', '.pyo', '.elc', '~')
if exists('README'):
- long_description = file('README').read()
+ long_description = file('README').read()
else:
- long_description = ''
-
-# import optional features
-import __pkginfo__
+ long_description = ''
if USE_SETUPTOOLS:
requires = {}
for entry in ("__depends__", "__recommends__"):
@@ -57,21 +55,9 @@
else:
install_requires = []
-distname = getattr(__pkginfo__, 'distname', modname)
-scripts = getattr(__pkginfo__, 'scripts', ())
-include_dirs = getattr(__pkginfo__, 'include_dirs', ())
-data_files = getattr(__pkginfo__, 'data_files', None)
-subpackage_of = getattr(__pkginfo__, 'subpackage_of', None)
-ext_modules = getattr(__pkginfo__, 'ext_modules', None)
-
-
-BASE_BLACKLIST = ('CVS', 'debian', 'dist', 'build', '__buildlog')
-IGNORED_EXTENSIONS = ('.pyc', '.pyo', '.elc')
-
def ensure_scripts(linux_scripts):
- """
- Creates the proper script names required for each platform
+ """Creates the proper script names required for each platform
(taken from 4Suite)
"""
from distutils import util
@@ -81,10 +67,8 @@
scripts_ = linux_scripts
return scripts_
-
def get_packages(directory, prefix):
- """return a list of subpackages for the given directory
- """
+ """return a list of subpackages for the given directory"""
result = []
for package in os.listdir(directory):
absfile = join(directory, package)
@@ -99,7 +83,7 @@
return result
def export(from_dir, to_dir,
- blacklist=BASE_BLACKLIST,
+ blacklist=STD_BLACKLIST,
ignore_ext=IGNORED_EXTENSIONS,
verbose=True):
"""make a mirror of from_dir in to_dir, omitting directories and files
@@ -118,10 +102,10 @@
continue
if filename[-1] == '~':
continue
- src = '%s/%s' % (directory, filename)
+ src = join(directory, filename)
dest = to_dir + src[len(from_dir):]
if verbose:
- print >> sys.stderr, src, '->', dest
+ print >> sys.stderr, src, '->', dest
if os.path.isdir(src):
if not exists(dest):
os.mkdir(dest)
@@ -139,8 +123,6 @@
walk(from_dir, make_mirror, None)
-EMPTY_FILE = '"""generated file, don\'t modify or your data will be lost"""\n'
-
class MyInstallLib(install_lib.install_lib):
"""extend install_lib command to handle package __init__.py and
include_dirs variable if necessary
@@ -148,48 +130,46 @@
def run(self):
"""overridden from install_lib class"""
install_lib.install_lib.run(self)
- # create Products.__init__.py if needed
- if subpackage_of:
- product_init = join(self.install_dir, subpackage_of, '__init__.py')
- if not exists(product_init):
- self.announce('creating %s' % product_init)
- stream = open(product_init, 'w')
- stream.write(EMPTY_FILE)
- stream.close()
# manually install included directories if any
if include_dirs:
- if subpackage_of:
- base = join(subpackage_of, modname)
- else:
- base = modname
+ base = modname
for directory in include_dirs:
dest = join(self.install_dir, base, directory)
export(directory, dest, verbose=False)
def install(**kwargs):
"""setup entry point"""
- if not USE_SETUPTOOLS and '--install-layout=deb' in sys.argv and \
- sys.versioninfo < (2, 5, 4):
- sys.argv.remove('--install-layout=deb')
- print "W: remove '--install-layout=deb' option"
- if subpackage_of:
- package = subpackage_of + '.' + modname
- kwargs['package_dir'] = {package : '.'}
- packages = [package] + get_packages(os.getcwd(), package)
+ try:
if USE_SETUPTOOLS:
- kwargs['namespace_packages'] = [subpackage_of]
- else:
- kwargs['package_dir'] = {modname : '.'}
- packages = [modname] + get_packages(os.getcwd(), modname)
+ sys.argv.remove('--force-manifest')
+ except:
+ pass
+ try:
+ if not USE_SETUPTOOLS:
+ # install-layout option was introduced in 2.5.3-1~exp1
+ if sys.versioninfo < (2, 5, 4):
+ sys.argv.remove('--install-layout=deb')
+ print "W: remove '--install-layout=deb' option"
+ except:
+ pass
+ kwargs['package_dir'] = {modname : '.'}
+ packages = [modname] + get_packages(os.getcwd(), modname)
+ if USE_SETUPTOOLS and install_requires:
+ kwargs['install_requires'] = install_requires
+ kwargs['dependency_links'] = dependency_links
kwargs['packages'] = packages
- return setup(name=distname, version=version, license=license, url=web,
- description=description, long_description=long_description,
- author=author, author_email=author_email,
- scripts=ensure_scripts(scripts), data_files=data_files,
- ext_modules=ext_modules,
- install_requires=install_requires,
- #dependency_links=["http://alain:alain@intranet.logilab.fr/~alain/"],
- cmdclass={'install_lib': MyInstallLib},
+ return setup(name = distname,
+ version = version,
+ license = license,
+ description = short_desc,
+ long_description = long_description,
+ author = author,
+ author_email = author_email,
+ url = web,
+ scripts = ensure_scripts(scripts),
+ data_files = data_files,
+ ext_modules = ext_modules,
+ cmdclass = {'install_lib': MyInstallLib},
**kwargs
)