setup.py: Add disutils-based packaging
authorW. Trevor King <wking@tremily.us>
Wed, 5 Jun 2013 17:13:43 +0000 (13:13 -0400)
committerW. Trevor King <wking@tremily.us>
Tue, 11 Jun 2013 21:23:37 +0000 (17:23 -0400)
Package catalyst in the usual manner for Python projects.  Now it is
ready for PyPI :).

I also expose the version string in catalyst.__version__, since that's
a more traditional location than catalyst.version.__version__.

.gitignore
MANIFEST.in [new file with mode: 0644]
catalyst/__init__.py
setup.py [new file with mode: 0644]

index 711f9e8abe65d79b45086a63f4eaa26bc43cb625..0cf4f2682fa7a60f01aa6a888d60937406c2d8cd 100644 (file)
@@ -1,5 +1,10 @@
 *.py[co]
+
+build
+dist
+files
+MANIFEST
+
 test.*
 *.geany
 Scratch
-
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644 (file)
index 0000000..4274094
--- /dev/null
@@ -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
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c2538aacacc96129058378a64eeb159db5582376 100644 (file)
@@ -0,0 +1,3 @@
+"Catalyst is a release building tool used by Gentoo Linux"
+
+from .version import __version__
diff --git a/setup.py b/setup.py
new file mode 100644 (file)
index 0000000..34eae53
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,89 @@
+# Copyright (C) 2013 W. Trevor King <wking@tremily.us>
+#
+# 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, see <http://www.gnu.org/licenses/>.
+
+"Catalyst is a release building tool used by Gentoo Linux"
+
+import codecs as _codecs
+from distutils.core import setup as _setup
+import itertools as _itertools
+import os as _os
+
+from catalyst import __version__
+
+
+_this_dir = _os.path.dirname(__file__)
+package_name = 'catalyst'
+tag = '{0}-{1}'.format(package_name, __version__)
+
+
+def files(root):
+       """Iterate through all the file paths under `root`
+
+       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
+       """
+       for dirpath, dirnames, filenames in _os.walk(root):
+               for filename in filenames:
+                       path = _os.path.join(dirpath, filename)
+                       if _os.path.sep != '/':
+                               path = path.replace(_os.path.sep, '/')
+                       yield path
+
+
+_setup(
+       name=package_name,
+       version=__version__,
+       maintainer='Gentoo Release Engineering',
+       maintainer_email='releng@gentoo.org',
+       url='http://www.gentoo.org/proj/en/releng/{0}/'.format(package_name),
+       download_url='http://git.overlays.gentoo.org/gitweb/?p=proj/{0}.git;a=snapshot;h={1};sf=tgz'.format(package_name, tag),
+       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.6',
+               'Programming Language :: Python :: 2.7',
+               ],
+       scripts=['bin/{0}'.format(package_name)],
+       packages=[
+               package_name,
+               '{0}.arch'.format(package_name),
+               '{0}.base'.format(package_name),
+               '{0}.targets'.format(package_name),
+               ],
+       data_files=[
+               ('/etc/catalyst', [
+                       'etc/catalyst.conf',
+                       'etc/catalystrc',
+                       ]),
+               ('lib/catalyst/', list(_itertools.chain(
+                       files('livecd'),
+                       files('targets'),
+                       ))),
+               ],
+       provides=[package_name],
+       )