[virt-tools-list] [virt-bootstrap][PATCH 6/7] Prepare setup.py for release
Cédric Bosdonnat
cbosdonnat at suse.com
Tue Sep 5 16:41:23 UTC 2017
Clean up the file, tell the world we are now stable enough, generate
ChangeLog and AUTHORS files and add license header.
---
AUTHORS.in | 12 +++++++
setup.py | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++-----------
2 files changed, 111 insertions(+), 20 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/setup.py b/setup.py
index 1ed852f..d2a0c8b 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,8 +26,10 @@ 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
@@ -91,6 +111,78 @@ 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)
+
+ fd1 = open('AUTHORS.in', 'r')
+ fd2 = open('AUTHORS', 'w')
+ for line in fd1:
+ fd2.write(line.replace('@AUTHORS@', "\n".join(authors)))
+ fd1.close()
+ fd2.close()
+
+
+ def gen_changelog(self):
+ """
+ Generate ChangeLog file out of git log
+ """
+ fd1 = os.popen("git log '--pretty=format:%H:%ct %an <%ae>%n%n%s%n%b%n'")
+ 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',
@@ -98,10 +190,9 @@ setuptools.setup(
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',
packages=setuptools.find_packages(),
test_suite='tests',
@@ -111,30 +202,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+)',
+ '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