From: W. Trevor King Date: Wed, 5 Jun 2013 17:13:43 +0000 (-0400) Subject: setup.py: Add disutils-based packaging X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=46b261e967904262245c42322a96f0d7f2322a27;p=catalyst.git setup.py: Add disutils-based packaging Package catalyst in the usual manner for Python projects. Now it is ready for PyPI :). I also expose the version string in catalyst.__version__ and the maintainer string in catalyst.__maintainer__, since those are more traditional locations. I dropped official Python 2.6 support following: 19:31 <@jmbsvicetto> I don't see a need to make catalyst incompatible with 2.6, but I think it's time we drop it as a "requirement". So feel free to do any changes that improve the code, even if they drop 2.6 compatibility I kept the explicit indexes in the string formatting, since Python 2.6 doesn't support: '{}'.format(value) --- diff --git a/.gitignore b/.gitignore index 539da741..d52b2974 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ *.py[co] +dist +build +files +MANIFEST diff --git a/AUTHORS b/AUTHORS index 3c43706a..a379d42d 100644 --- a/AUTHORS +++ b/AUTHORS @@ -36,6 +36,7 @@ Lars Weiler Gustavo Zacarias Raúl Porcel Jorge Manuel B. S. Vicetto +W. Trevor King Maintainers: diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 00000000..4274094a --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,6 @@ +include AUTHORS +include ChangeLog +include COPYING +include Makefile +recursive-include doc *.conf *.py HOWTO.txt catalyst*.txt +recursive-include examples README *.example *.spec diff --git a/bin/catalyst b/bin/catalyst index ace43fc7..19f5289f 100755 --- a/bin/catalyst +++ b/bin/catalyst @@ -12,10 +12,6 @@ from __future__ import print_function import sys -__maintainer__="Catalyst " -__version__="2.0.12.2" - - # This block ensures that ^C interrupts are handled quietly. try: import signal @@ -36,6 +32,8 @@ except KeyboardInterrupt: from catalyst.main import main +from catalyst import __maintainer__ +from catalyst import __version__ try: main() diff --git a/catalyst/__init__.py b/catalyst/__init__.py index e69de29b..43a75d6e 100644 --- a/catalyst/__init__.py +++ b/catalyst/__init__.py @@ -0,0 +1,4 @@ +"Catalyst is the release building tool used by Gentoo Linux" + +__version__ = '2.0.16' +__maintainer__ = 'Catalyst ' diff --git a/catalyst/main.py b/catalyst/main.py index cb30bd77..6b909898 100644 --- a/catalyst/main.py +++ b/catalyst/main.py @@ -18,13 +18,12 @@ __selfpath__ = os.path.abspath(os.path.dirname(__file__)) sys.path.append(__selfpath__ + "/modules") +from . import __version__ import catalyst.config import catalyst.util from catalyst.support import (required_build_targets, valid_build_targets, CatalystError, hash_map, find_binary, LockInUse) -__maintainer__="Catalyst " -__version__="2.0.15" conf_values={} diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..fb49cd6c --- /dev/null +++ b/setup.py @@ -0,0 +1,81 @@ +"Catalyst is the release building tool used by Gentoo Linux" + +import codecs as _codecs +from distutils.core import setup as _setup +from email.utils import parseaddr as _parseaddr +import itertools as _itertools +import os as _os + +from catalyst import __version__, __maintainer__ + + +_this_dir = _os.path.dirname(__file__) +_package_name = 'catalyst' +_maintainer_name, _maintainer_email = _parseaddr(__maintainer__) + + +def _posix_path(path): + """Convert a native path to a POSIX path + + Distutils wants all paths to be written in the Unix convention + (i.e. slash-separated) [1], so that's what we'll do here. + + [1]: http://docs.python.org/2/distutils/setupscript.html#writing-the-setup-script + """ + if _os.path.sep != '/': + return path.replace(_os.path.sep, '/') + return path + + +def _files(prefix, root): + """Iterate through all the file paths under `root` + + Yielding `(target_dir, (file_source_paths, ...))` tuples. + """ + for dirpath, dirnames, filenames in _os.walk(root): + reldir = _os.path.relpath(dirpath, root) + install_directory = _posix_path( + _os.path.join(prefix, reldir)) + file_source_paths = [ + _posix_path(_os.path.join(dirpath, filename)) + for filename in filenames] + yield (install_directory, file_source_paths) + + +_setup( + name=_package_name, + version=__version__, + maintainer=_maintainer_name, + maintainer_email=_maintainer_email, + url='http://www.gentoo.org/proj/en/releng/{0}/'.format(_package_name), + download_url='http://distfiles.gentoo.org/distfiles/{0}-{1}.tar.bz2'.format( + _package_name, __version__), + license='GNU General Public License (GPL)', + platforms=['all'], + description=__doc__, + long_description=_codecs.open( + _os.path.join(_this_dir, 'README'), 'r', 'utf-8').read(), + classifiers=[ + 'Development Status :: 5 - Production/Stable', + 'License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)', + 'Intended Audience :: System Administrators', + 'Operating System :: POSIX', + 'Topic :: System :: Archiving :: Packaging', + 'Topic :: System :: Installation/Setup', + 'Topic :: System :: Software Distribution', + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.7', + ], + scripts=['bin/{0}'.format(_package_name)], + packages=[ + _package_name, + '{0}.arch'.format(_package_name), + '{0}.targets'.format(_package_name), + ], + data_files=list(_itertools.chain( + _files(prefix='/etc/catalyst', root='etc'), + _files(prefix='lib/catalyst/livecd', root='livecd'), + _files(prefix='lib/catalyst/targets', root='targets'), + )), + provides=[_package_name], + )