[virt-tools-list] [virt-bootstrap][PATCH v2 5/6] Prepare setup.py for release
Cédric Bosdonnat
cbosdonnat at suse.com
Thu Sep 7 11:45:15 UTC 2017
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 at redhat.com
+
+The individual contributors are
+
+ at 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 at suse.com>
+# Authors: Radostin Stoyanov <rstoyanov1 at gmail.com>
+#
+# 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 at suse.com',
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
More information about the virt-tools-list
mailing list