-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.py
More file actions
129 lines (112 loc) · 4.07 KB
/
setup.py
File metadata and controls
129 lines (112 loc) · 4.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
"""Automatically install security and other system updates
This package provides a script to call zypper to install security and
other system updates. It also provides systemd unit files to
automatically call that script regularly.
"""
import setuptools
from setuptools import setup
import distutils.command.sdist
import distutils.dist
from distutils import log
from pathlib import Path
import string
try:
import distutils_pytest
cmdclass = distutils_pytest.cmdclass
except (ImportError, AttributeError):
cmdclass = dict()
try:
import gitprops
release = gitprops.get_last_release()
release = release and str(release)
version = str(gitprops.get_version())
except (ImportError, LookupError):
try:
from _meta import release, version
except ImportError:
log.warn("warning: cannot determine version number")
release = version = "UNKNOWN"
docstring = __doc__
# Enforcing of PEP 625 has been added in setuptools 69.3.0. We don't
# want this, we want to keep control on the name of the sdist
# ourselves. Disable it.
def _fixed_get_fullname(self):
return "%s-%s" % (self.get_name(), self.get_version())
distutils.dist.DistributionMetadata.get_fullname = _fixed_get_fullname
class meta(setuptools.Command):
description = "generate meta files"
user_options = []
meta_template = '''
release = %(release)r
version = %(version)r
'''
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
version = self.distribution.get_version()
log.info("version: %s", version)
values = {
'release': release,
'version': version,
}
with Path("_meta.py").open("wt") as f:
print(self.meta_template % values, file=f)
# Note: Do not use setuptools for making the source distribution,
# rather use the good old distutils instead.
# Rationale: https://rhodesmill.org/brandon/2009/eby-magic/
class sdist(distutils.command.sdist.sdist):
def run(self):
self.run_command('meta')
super().run()
subst = {
"version": self.distribution.get_version(),
"url": self.distribution.get_url(),
"description": docstring.split("\n")[0],
"long_description": docstring.split("\n", maxsplit=2)[2].strip(),
}
for spec in Path().glob("*.spec"):
with spec.open('rt') as inf:
with Path(self.dist_dir, spec).open('wt') as outf:
outf.write(string.Template(inf.read()).substitute(subst))
with Path("README.rst").open("rt", encoding="utf8") as f:
readme = f.read()
setup(
name = "auto-patch",
version = version,
description = docstring.split("\n")[0],
long_description = readme,
long_description_content_type = "text/x-rst",
url = "https://github.com/RKrahl/auto-patch",
author = "Rolf Krahl",
author_email = "rolf@rotkraut.de",
license = "Apache-2.0",
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: Apache Software License",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: System :: Systems Administration",
],
project_urls = dict(
Source="https://github.com/RKrahl/auto-patch",
Download=("https://github.com/RKrahl/auto-patch/releases/%s/" % release),
),
python_requires = ">=3.6",
install_requires = ["setuptools", "systemd-python"],
packages = [],
py_modules = [],
scripts = ["scripts/auto-patch.py"],
cmdclass = dict(cmdclass, sdist=sdist, meta=meta),
)