catalyst/targets/generic_target.py: Pass TERM through to the chroot
[catalyst.git] / setup.py
1 "Catalyst is the release building tool used by Gentoo Linux"
2
3 import codecs as _codecs
4 from distutils.core import setup as _setup
5 from email.utils import parseaddr as _parseaddr
6 import itertools as _itertools
7 import os as _os
8
9 from catalyst import __version__, __maintainer__
10
11
12 _this_dir = _os.path.dirname(__file__)
13 _package_name = 'catalyst'
14 _maintainer_name, _maintainer_email = _parseaddr(__maintainer__)
15
16
17 def _posix_path(path):
18         """Convert a native path to a POSIX path
19
20         Distutils wants all paths to be written in the Unix convention
21         (i.e. slash-separated) [1], so that's what we'll do here.
22
23         [1]: http://docs.python.org/2/distutils/setupscript.html#writing-the-setup-script
24         """
25         if _os.path.sep != '/':
26                 return path.replace(_os.path.sep, '/')
27         return path
28
29
30 def _files(prefix, root):
31         """Iterate through all the file paths under `root`
32
33         Yielding `(target_dir, (file_source_paths, ...))` tuples.
34         """
35         for dirpath, dirnames, filenames in _os.walk(root):
36                 reldir = _os.path.relpath(dirpath, root)
37                 install_directory = _posix_path(
38                         _os.path.join(prefix, reldir))
39                 file_source_paths = [
40                         _posix_path(_os.path.join(dirpath, filename))
41                         for filename in filenames]
42                 yield (install_directory, file_source_paths)
43
44
45 _setup(
46         name=_package_name,
47         version=__version__,
48         maintainer=_maintainer_name,
49         maintainer_email=_maintainer_email,
50         url='http://www.gentoo.org/proj/en/releng/{0}/'.format(_package_name),
51         download_url='http://distfiles.gentoo.org/distfiles/{0}-{1}.tar.bz2'.format(
52                 _package_name, __version__),
53         license='GNU General Public License (GPL)',
54         platforms=['all'],
55         description=__doc__,
56         long_description=_codecs.open(
57                 _os.path.join(_this_dir, 'README'), 'r', 'utf-8').read(),
58         classifiers=[
59                 'Development Status :: 5 - Production/Stable',
60                 'License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)',
61                 'Intended Audience :: System Administrators',
62                 'Operating System :: POSIX',
63                 'Topic :: System :: Archiving :: Packaging',
64                 'Topic :: System :: Installation/Setup',
65                 'Topic :: System :: Software Distribution',
66                 'Programming Language :: Python :: 2',
67                 'Programming Language :: Python :: 2.7',
68                 ],
69         scripts=['bin/{0}'.format(_package_name)],
70         packages=[
71                 _package_name,
72                 '{0}.arch'.format(_package_name),
73                 '{0}.targets'.format(_package_name),
74                 ],
75         data_files=list(_itertools.chain(
76                 _files(prefix='/etc/catalyst', root='etc'),
77                 _files(prefix='lib/catalyst/livecd', root='livecd'),
78                 _files(prefix='lib/catalyst/targets', root='targets'),
79                 )),
80         provides=[_package_name],
81         )