X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=setup.py;h=1efba94d8d0b76b212bd4e6f427a5e06281056bc;hb=fa3edf538d428c5ce0589dfdc96295f640862f95;hp=062475f48ceb0a98f785157a6bf62e0ba617fad2;hpb=d03c4875f20b77a54021232bc3c7be612706b4a4;p=gentoolkit.git diff --git a/setup.py b/setup.py index 062475f..1efba94 100755 --- a/setup.py +++ b/setup.py @@ -1,12 +1,119 @@ #!/usr/bin/env python -from distutils.core import setup +from __future__ import print_function -VER = '9.9.9.9' -setup( +import re +import sys +import distutils +from distutils import core, log +from glob import glob + +import os +import io + +sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'pym')) + +__version__ = os.getenv('VERSION', default='9999') + +cwd = os.getcwd() + +# Load EPREFIX from Portage, fall back to the empty string if it fails +try: + from portage.const import EPREFIX +except ImportError: + EPREFIX='' + + +# Bash files that need `VERSION=""` subbed, relative to this dir: +bash_scripts = [os.path.join(cwd, path) for path in ( + 'bin/euse', + 'bin/revdep-rebuild.sh' +)] + +# Python files that need `__version__ = ""` subbed, relative to this dir: +python_scripts = [os.path.join(cwd, path) for path in ( + 'bin/eclean', + 'bin/epkginfo', + 'bin/glsa-check', + 'pym/gentoolkit/eclean/cli.py', + 'pym/gentoolkit/enalyze/__init__.py', + 'pym/gentoolkit/equery/__init__.py', + 'pym/gentoolkit/eshowkw/__init__.py', + 'pym/gentoolkit/revdep_rebuild/__init__.py' +)] + + +class set_version(core.Command): + """Set python __version__ and bash VERSION to our __version__.""" + description = "hardcode scripts' version using VERSION from environment" + user_options = [] # [(long_name, short_name, desc),] + + def initialize_options (self): + pass + + def finalize_options (self): + pass + + def run(self): + ver = 'svn' if __version__ == '9999' else __version__ + print("Settings version to %s" % ver) + def sub(files, pattern): + for f in files: + updated_file = [] + with io.open(f, 'r', 1, 'utf_8') as s: + for line in s: + newline = re.sub(pattern, '"%s"' % ver, line, 1) + if newline != line: + log.info("%s: %s" % (f, newline)) + updated_file.append(newline) + with io.open(f, 'w', 1, 'utf_8') as s: + s.writelines(updated_file) + quote = r'[\'"]{1}' + bash_re = r'(?<=VERSION=)' + quote + '[^\'"]*' + quote + sub(bash_scripts, bash_re) + python_re = r'(?<=^__version__ = )' + quote + '[^\'"]*' + quote + sub(python_scripts, python_re) + + +def load_test(): + """Only return the real test class if it's actually being run so that we + don't depend on snakeoil just to install.""" + + desc = "run the test suite" + if 'test' in sys.argv[1:]: + try: + from snakeoil import distutils_extensions + except ImportError: + sys.stderr.write("Error: We depend on dev-python/snakeoil ") + sys.stderr.write("to run tests.\n") + sys.exit(1) + class test(distutils_extensions.test): + description = desc + default_test_namespace = 'gentoolkit.test' + else: + class test(core.Command): + description = desc + + return test + +packages = [ + str('.'.join(root.split(os.sep)[1:])) + for root, dirs, files in os.walk('pym/gentoolkit') + if '__init__.py' in files +] + +test_data = { + 'gentoolkit': [ + 'test/eclean/Packages', + 'test/eclean/testdistfiles.tar.gz', + 'test/eclean/distfiles.exclude' + ] +} + +core.setup( name='gentoolkit', - version=VER, + version=__version__, description='Set of tools that work with and enhance portage.', author='', author_email='', @@ -14,37 +121,21 @@ setup( maintainer_email='tools-portage@gentoo.org', url='http://www.gentoo.org/proj/en/portage/tools/index.xml', download_url='http://distfiles.gentoo.org/distfiles/gentoolkit-%s.tar.gz'\ - % VER, + % __version__, package_dir={'': 'pym'}, - packages=( - 'gentoolkit', - 'gentoolkit.equery', - 'gentoolkit.glsa' - ), - scripts=( - 'bin/eclean', - 'bin/epkginfo', - 'bin/equery', - 'bin/eread', - 'bin/euse', - 'bin/glsa-check', - 'bin/revdep-rebuild' - ), + packages=packages, + package_data = test_data, + scripts=(glob('bin/*')), data_files=( - ('/etc/env.d', ['data/99gentoolkit-env']), - ('/etc/revdep-rebuild', ['data/revdep-rebuild/99revdep-rebuild']), - ('/etc/eclean', [ - 'data/eclean/distfiles.exclude', - 'data/eclean/packages.exclude' - ]), - ('/usr/share/man/man1', [ - 'man/eclean.1', - 'man/epkginfo.1', - 'man/equery.1', - 'man/eread.1', - 'man/euse.1', - 'man/glsa-check.1', - 'man/revdep-rebuild.1' - ]) - ) + (os.path.join(os.sep, EPREFIX.lstrip(os.sep), 'etc/env.d'), ['data/99gentoolkit-env']), + (os.path.join(os.sep, EPREFIX.lstrip(os.sep), 'etc/revdep-rebuild'), ['data/revdep-rebuild/99revdep-rebuild']), + (os.path.join(os.sep, EPREFIX.lstrip(os.sep), 'etc/eclean'), glob('data/eclean/*')), + (os.path.join(os.sep, EPREFIX.lstrip(os.sep), 'usr/share/man/man1'), glob('man/*')), + ), + cmdclass={ + 'test': load_test(), + 'set_version': set_version, + }, ) + +# vim: set ts=4 sw=4 tw=79: