summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README2
-rw-r--r--__pkginfo__.py16
-rw-r--r--debian.py3k/control28
-rwxr-xr-xdebian.py3k/rules72
-rw-r--r--debian.py3k/source/format1
-rw-r--r--setup.py146
6 files changed, 146 insertions, 119 deletions
diff --git a/README b/README
index 14fe8b7..843ead9 100644
--- a/README
+++ b/README
@@ -47,5 +47,3 @@ python-project@lists.logilab.org mailing list for support. See
http://lists.logilab.org/mailman/listinfo/python-projects for
subscription information and archives.
-Sylvain Thénault
-Oct 21, 2005, updated on Aug 26 2009.
diff --git a/__pkginfo__.py b/__pkginfo__.py
index d9961e1..7fe7c16 100644
--- a/__pkginfo__.py
+++ b/__pkginfo__.py
@@ -29,8 +29,6 @@ version = '.'.join([str(num) for num in numversion])
install_requires = ['logilab-common >= 0.52.1']
-pyversions = ["2.3", "2.4", "2.5", '2.6', '2.7']
-
license = 'LGPL'
author = 'Logilab'
@@ -39,19 +37,7 @@ mailinglist = "mailto://%s" % author_email
web = "http://www.logilab.org/project/%s" % distname
ftp = "ftp://ftp.logilab.org/pub/%s" % modname
-short_desc = "rebuild a new abstract syntax tree from Python's ast"
-
-long_desc = """The aim of this module is to provide a common base \
-representation of python source code for projects such as pychecker, pyreverse,
-pylint... Well, actually the development of this library is essentially
-governed by pylint's needs.
-
-It rebuilds the tree generated by the compiler.ast [1] module (python <= 2.4)
-or by the builtin _ast module (python >= 2.5) by recursively walking down the
-AST and building an extended ast (let's call it astng ;). The new node classes
-have additional methods and attributes for different usages.
-Furthermore, astng builds partial trees by inspecting living objects."""
-
+description = "rebuild a new abstract syntax tree from Python's ast"
from os.path import join
include_dirs = [join('test', 'regrtest_data'),
diff --git a/debian.py3k/control b/debian.py3k/control
new file mode 100644
index 0000000..99fef0a
--- /dev/null
+++ b/debian.py3k/control
@@ -0,0 +1,28 @@
+Source: logilab-astng
+Section: python
+Priority: optional
+Maintainer: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org>
+Uploaders: Sylvain Thénault <sylvain.thenault@logilab.fr>, Alexandre Fayolle <afayolle@debian.org>, Sandro Tosi <morph@debian.org>
+Build-Depends: debhelper (>= 5.0.37.2), python3
+Build-Depends-Indep: python-support
+XS-Python-Version: all
+Standards-Version: 3.8.2
+Homepage: http://www.logilab.org/project/logilab-astng
+Vcs-Svn: svn://svn.debian.org/svn/python-modules/packages/logilab-astng/trunk/
+Vcs-Browser: http://svn.debian.org/viewsvn/python-modules/packages/logilab-astng/trunk/
+
+Package: python3-logilab-astng
+Architecture: all
+Depends: ${python:Depends}, ${misc:Depends}, python3-logilab-common (>= 0.52.1-1)
+XB-Python-Version: ${python:Versions}
+Description: rebuild a new abstract syntax tree from Python's ast
+ The aim of this module is to provide a common base representation of
+ Python source code for projects such as pyreverse or pylint.
+ .
+ It rebuilds the tree generated by the compiler.ast [1] module (python <= 2.4)
+ or by the builtin _ast module (python >= 2.5) by recursively walking down the
+ AST and building an extended ast (let's call it astng ;). The new node classes
+ have additional methods and attributes for different usages.
+ Furthermore, astng builds partial trees by inspecting living objects.
+
+
diff --git a/debian.py3k/rules b/debian.py3k/rules
new file mode 100755
index 0000000..0e4279a
--- /dev/null
+++ b/debian.py3k/rules
@@ -0,0 +1,72 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+#
+# adapted by Logilab for automatic generation by debianize
+# (part of the devtools project, http://www.logilab.org/projects/devtools)
+#
+# Copyright (c) 2003-2008 LOGILAB S.A. (Paris, FRANCE).
+# http://www.logilab.fr/ -- mailto:contact@logilab.fr
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+PACKAGE:=$(shell grep Package debian/control | cut -d ' ' -f2)
+
+
+include /usr/share/python/python.mk
+
+build: build-stamp
+
+build-stamp:
+ dh_testdir
+ touch build-stamp
+
+
+clean:
+ dh_testdir
+ dh_testroot
+
+ NO_SETUPTOOLS=1 python setup.py clean
+ [ ! -d build ] || rm -rf build
+ find . -name "*.pyc" -delete
+ dh_clean build-stamp
+
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ NO_SETUPTOOLS=1 python3 setup.py -q install --no-compile \
+ --root=$(CURDIR)/debian/$(PACKAGE)/ \
+ ${py_setup_install_args}
+ find $(CURDIR)/debian/$(PACKAGE)/usr/lib/python*/*-packages/ ! -path "*/test/*py" -name "*py" -exec 2to3-3.1 -wn {} \;
+
+ # remove test directory
+ rm -rf debian/$(PACKAGE)/usr/lib/python*/*-packages/logilab/astng/test
+ rm -rf debian/$(PACKAGE)/usr/lib/python*/*-packages/logilab/__init__.py
+
+# Build architecture-independent files here.
+binary-indep: build install
+ dh_testdir
+ dh_testroot
+ dh_install -i
+ dh_pysupport -i
+ dh_installchangelogs -i ChangeLog
+ dh_installexamples -i
+ dh_installdocs -i README
+ dh_installman -i
+ dh_link -i
+ dh_compress -i -X.py -X.ini -X.xml -Xtest/
+ dh_fixperms -i
+ dh_installdeb -i
+ dh_gencontrol -i
+ dh_md5sums -i
+ dh_builddeb -i
+
+binary-arch:
+
+binary: binary-indep
+.PHONY: build clean binary binary-indep binary-arch
diff --git a/debian.py3k/source/format b/debian.py3k/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian.py3k/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/setup.py b/setup.py
index 2220510..7adbf56 100644
--- a/setup.py
+++ b/setup.py
@@ -1,33 +1,31 @@
#!/usr/bin/env python
-# pylint: disable-msg=W0404,W0622,W0704,W0613,W0152
+# -*- coding: utf-8 -*-
+# pylint: disable=W0404,W0622,W0704,W0613
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
-# copyright 2003-2010 Sylvain Thenault, all rights reserved.
-# contact mailto:thenault@gmail.com
#
# This file is part of logilab-astng.
#
-# logilab-astng is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by the
-# Free Software Foundation, either version 2.1 of the License, or (at your
-# option) any later version.
+# logilab-astng is free software: you can redistribute it and/or modify it under
+# the terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation, either version 2.1 of the License, or (at your option) any
+# later version.
#
-# logilab-astng 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 Lesser General Public License
-# for more details.
+# logilab-astng 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 Lesser General Public License for more
+# details.
#
# You should have received a copy of the GNU Lesser General Public License along
-# with logilab-astng. If not, see <http://www.gnu.org/licenses/>.
+# with logilab-astng. If not, see <http://www.gnu.org/licenses/>.
"""Generic Setup script, takes package info from __pkginfo__.py file.
-
"""
__docformat__ = "restructuredtext en"
import os
import sys
import shutil
-from os.path import isdir, exists, join, walk
+from os.path import isdir, exists, join
try:
if os.environ.get('NO_SETUPTOOLS'):
@@ -35,54 +33,38 @@ try:
from setuptools import setup
from setuptools.command import install_lib
USE_SETUPTOOLS = 1
-except ImportError:
+except ImportError:
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, short_desc, long_desc, \
+from __pkginfo__ import modname, version, license, description, \
web, author, author_email
# 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 subpackage_of
-except ImportError:
- subpackage_of = None
-try:
- from __pkginfo__ import include_dirs
-except ImportError:
- include_dirs = []
-try:
- from __pkginfo__ import ext_modules
-except ImportError:
- ext_modules = None
-try:
- from __pkginfo__ import install_requires
-except ImportError:
- install_requires = None
+import __pkginfo__
+distname = getattr(__pkginfo__, 'distname', modname)
+scripts = getattr(__pkginfo__, 'scripts', [])
+data_files = getattr(__pkginfo__, 'data_files', None)
+subpackage_of = getattr(__pkginfo__, 'subpackage_of', None)
+include_dirs = getattr(__pkginfo__, 'include_dirs', [])
+ext_modules = getattr(__pkginfo__, 'ext_modules', None)
+install_requires = getattr(__pkginfo__, 'install_requires', None)
+dependency_links = getattr(__pkginfo__, 'dependency_links', [])
STD_BLACKLIST = ('CVS', '.svn', '.hg', 'debian', 'dist', 'build')
IGNORED_EXTENSIONS = ('.pyc', '.pyo', '.elc', '~')
-
+if exists('README'):
+ long_description = open('README').read()
+else:
+ long_description = ''
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
@@ -92,10 +74,8 @@ def ensure_scripts(linux_scripts):
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)
@@ -109,48 +89,7 @@ def get_packages(directory, prefix):
result += get_packages(absfile, result[-1])
return result
-def export(from_dir, to_dir,
- blacklist=STD_BLACKLIST,
- ignore_ext=IGNORED_EXTENSIONS,
- verbose=True):
- """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
- src = join(directory, filename)
- dest = to_dir + src[len(from_dir):]
- if verbose:
- 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)
-
-
-EMPTY_FILE = '''"""generated file, don\'t modify or your data will be lost"""
+EMPTY_FILE = '''"""generated file, don't modify or your data will be lost"""
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
@@ -180,15 +119,17 @@ class MyInstallLib(install_lib.install_lib):
base = modname
for directory in include_dirs:
dest = join(self.install_dir, base, directory)
- export(directory, dest, verbose=False)
-
+ shutil.rmtree(dest, ignore_errors=True)
+ shutil.copytree(directory, dest)
+
def install(**kwargs):
"""setup entry point"""
- try:
- if USE_SETUPTOOLS:
+ if USE_SETUPTOOLS:
+ if '--force-manifest' in sys.argv:
sys.argv.remove('--force-manifest')
- except:
- pass
+ # install-layout option was introduced in 2.5.3-1~exp1
+ elif sys.version_info < (2, 5, 4) and '--install-layout=deb' in sys.argv:
+ sys.argv.remove('--install-layout=deb')
if subpackage_of:
package = subpackage_of + '.' + modname
kwargs['package_dir'] = {package : '.'}
@@ -200,12 +141,13 @@ def install(**kwargs):
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,
- description = short_desc,
- long_description = long_desc,
+ description = description,
+ long_description = long_description,
author = author,
author_email = author_email,
url = web,
@@ -215,6 +157,6 @@ def install(**kwargs):
cmdclass = {'install_lib': MyInstallLib},
**kwargs
)
-
+
if __name__ == '__main__' :
install()