[virt-tools-list] [virt-bootstrap][PATCH v2 5/6] Prepare setup.py for release
Radostin Stoyanov
rstoyanov1 at gmail.com
Thu Sep 7 13:08:48 UTC 2017
On 07/09/17 12:45, Cédric Bosdonnat wrote:
> 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)
Here we can rename the variable "file" to "fle" or "_file" or something
similar to avoid
the pylint warning "Redefining built-in 'file' (redefined-builtin)"
> + 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=[
ACK with this change
More information about the virt-tools-list
mailing list