Clean up the file, tell the world we are now stable enough, generate ChangeLog and AUTHORS files and add license header. Add the test files to the distribution. --- AUTHORS.in | 12 ++++++ MANIFEST.in | 3 +- setup.py | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 113 insertions(+), 21 deletions(-) create mode 100644 AUTHORS.in diff --git a/AUTHORS.in b/AUTHORS.in new file mode 100644 index 0000000..9a57532 --- /dev/null +++ b/AUTHORS.in @@ -0,0 +1,12 @@ + virt-boostrap Authors + ============================== + +The virt-bootstrap tool is maintained by the +virt-manager development team, who can be contacted +at + + virt-tools-list@xxxxxxxxxx + +The individual contributors are + +@AUTHORS@ diff --git a/MANIFEST.in b/MANIFEST.in index 61bb7fb..f99fa9d 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,4 @@ -include README.md LICENSE +include README.md LICENSE ChangeLog AUTHORS recursive-include src *.py +recursive-include tests *.py recursive-include man * diff --git a/setup.py b/setup.py index bca9955..9fa2c9b 100755 --- a/setup.py +++ b/setup.py @@ -1,5 +1,23 @@ #!/usr/bin/env python # -*- coding: utf-8; -*- +# Authors: Cedric Bosdonnat <cbosdonnat@xxxxxxxx> +# Authors: Radostin Stoyanov <rstoyanov1@xxxxxxxxx> +# +# Copyright (C) 2017 SUSE, Inc. +# Copyright (C) 2017 Radostin Stoyanov +# +# 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 3 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/>. """ Setup script used for building, testing, and installing modules @@ -8,10 +26,13 @@ based on setuptools. import codecs import os +import re import sys import subprocess +import time import setuptools from setuptools.command.install import install +from setuptools.command.sdist import sdist # pylint: disable=import-error, wrong-import-position sys.path.insert(0, 'src') # noqa: E402 @@ -94,16 +115,86 @@ class CheckPylint(setuptools.Command): sys.exit(res) +# SdistCommand is reused from the libvirt python binding (GPLv2+) +class SdistCommand(sdist): + """ + Custom sdist command, generating a few files. + """ + user_options = sdist.user_options + + description = "Update AUTHORS and ChangeLog; build sdist-tarball." + + def gen_authors(self): + """ + Generate AUTHOS file out of git log + """ + fdlog = os.popen("git log --pretty=format:'%aN <%aE>'") + authors = [] + for line in fdlog: + line = " " + line.strip() + if line not in authors: + authors.append(line) + + authors.sort(key=str.lower) + + with open('AUTHORS.in', 'r') as fd1, open('AUTHORS', 'w') as fd2: + for line in fd1: + fd2.write(line.replace('@AUTHORS@', "\n".join(authors))) + + def gen_changelog(self): + """ + Generate ChangeLog file out of git log + """ + cmd = "git log '--pretty=format:%H:%ct %an <%ae>%n%n%s%n%b%n'" + fd1 = os.popen(cmd) + fd2 = open("ChangeLog", 'w') + + for line in fd1: + match = re.match(r'([a-f0-9]+):(\d+)\s(.*)', line) + if match: + timestamp = time.gmtime(int(match.group(2))) + fd2.write("%04d-%02d-%02d %s\n" % (timestamp.tm_year, + timestamp.tm_mon, + timestamp.tm_mday, + match.group(3))) + else: + if re.match(r'Signed-off-by', line): + continue + fd2.write(" " + line.strip() + "\n") + + fd1.close() + fd2.close() + + def run(self): + if not os.path.exists("build"): + os.mkdir("build") + + if os.path.exists(".git"): + try: + self.gen_authors() + self.gen_changelog() + + sdist.run(self) + + finally: + files = ["AUTHORS", + "ChangeLog"] + for file in files: + if os.path.exists(file): + os.unlink(file) + else: + sdist.run(self) + + setuptools.setup( name='virt-bootstrap', version=virtBootstrap.__version__, author='Cedric Bosdonnat', author_email='cbosdonnat@xxxxxxxx', description='Container bootstrapping tool', - license="GPLv3", + license="GPLv3+", long_description=read('README.md'), url='https://github.com/virt-manager/virt-bootstrap', - # What does your project relate to? keywords='virtualization container rootfs', package_dir={"": "src"}, packages=setuptools.find_packages('src'), @@ -114,30 +205,18 @@ setuptools.setup( ] }, classifiers=[ - # How mature is this project? Common values are - # 3 - Alpha - # 4 - Beta - # 5 - Production/Stable - 'Development Status :: 3 - Alpha', - - # Indicate who your project is intended for + 'Development Status :: 5 - Production/Stable', 'Intended Audience :: System Administrators', 'Intended Audience :: Developers', - - # Pick your license as you wish (should match "license" above) - 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', - - # Specify the Python versions you support here. In particular, ensure - # that you indicate whether you support Python 2, Python 3 or both. - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6' + 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)', # noqa: 501 + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 3', ], cmdclass={ 'install': PostInstallCommand, - 'pylint': CheckPylint + 'pylint': CheckPylint, + 'sdist': SdistCommand }, data_files=[ -- 2.13.2 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list