*/*: Clean PYTHON_COMPAT of obsolete impls
[gentoo.git] / dev-util / buildbot / buildbot-0.9.12-r1.ebuild
1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI="6"
5 PYTHON_REQ_USE="sqlite"
6 PYTHON_COMPAT=( python2_7 python3_6 )
7
8 EGIT_REPO_URI="https://github.com/buildbot/${PN}.git"
9
10 [[ ${PV} == *9999 ]] && inherit git-r3
11 inherit readme.gentoo-r1 user systemd distutils-r1
12
13 MY_PV="${PV/_p/p}"
14 MY_P="${PN}-${MY_PV}"
15
16 DESCRIPTION="BuildBot build automation system"
17 HOMEPAGE="https://buildbot.net/ https://github.com/buildbot/buildbot https://pypi.org/project/buildbot/"
18 [[ ${PV} == *9999 ]] || SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
19
20 LICENSE="GPL-2"
21 SLOT="0"
22 if [[ ${PV} == *9999 ]]; then
23         KEYWORDS=""
24 else
25         KEYWORDS="~amd64"
26 fi
27
28 IUSE="crypt examples irc test"
29 RESTRICT="!test? ( test )"
30
31 RDEPEND="
32         >=dev-python/jinja-2.1[${PYTHON_USEDEP}]
33         >=dev-python/twisted-17.9.0[${PYTHON_USEDEP}]
34         >=dev-python/autobahn-0.16.0[${PYTHON_USEDEP}]
35         >=dev-python/sqlalchemy-0.8[${PYTHON_USEDEP}]
36         >=dev-python/sqlalchemy-migrate-0.9[${PYTHON_USEDEP}]
37         dev-python/future[${PYTHON_USEDEP}]
38         >=dev-python/python-dateutil-1.5[${PYTHON_USEDEP}]
39         >=dev-python/txaio-2.2.2[${PYTHON_USEDEP}]
40         dev-python/pyjwt[${PYTHON_USEDEP}]
41         >=dev-python/zope-interface-4.1.1[${PYTHON_USEDEP}]
42         ~dev-util/buildbot-worker-${PV}[${PYTHON_USEDEP}]
43         crypt? (
44                 >=dev-python/twisted-17.9.0[${PYTHON_USEDEP},crypt]
45                 >=dev-python/pyopenssl-16.0.0[${PYTHON_USEDEP}]
46                 dev-python/idna[${PYTHON_USEDEP}]
47                 dev-python/service_identity[${PYTHON_USEDEP}]
48         )
49         irc? (
50                 dev-python/txrequests[${PYTHON_USEDEP}]
51         )
52 "
53 DEPEND="${RDEPEND}
54         >=dev-python/setuptools-21.2.1[${PYTHON_USEDEP}]
55         test? (
56                 >=dev-python/python-dateutil-1.5[${PYTHON_USEDEP}]
57                 >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
58                 dev-python/moto[${PYTHON_USEDEP}]
59                 dev-python/boto3[${PYTHON_USEDEP}]
60                 dev-python/ramlfications[${PYTHON_USEDEP}]
61                 dev-python/pyjade[${PYTHON_USEDEP}]
62                 dev-python/txgithub[${PYTHON_USEDEP}]
63                 dev-python/txrequests[${PYTHON_USEDEP}]
64                 dev-python/lz4[${PYTHON_USEDEP}]
65                 dev-python/treq[${PYTHON_USEDEP}]
66                 dev-python/setuptools_trial[${PYTHON_USEDEP}]
67                 ~dev-util/buildbot-worker-${PV}[${PYTHON_USEDEP}]
68         )"
69
70 S=${WORKDIR}/${MY_P}
71 [[ ${PV} == *9999 ]] && S=${S}/master
72
73 PATCHES=(
74         "${FILESDIR}/Remove-distro-version-test.patch"
75 )
76
77 pkg_setup() {
78         enewuser buildbot
79
80         DOC_CONTENTS="The \"buildbot\" user and the \"buildmaster\" init script has been added
81                 to support starting buildbot through Gentoo's init system. To use this,
82                 execute \"emerge --config =${CATEGORY}/${PF}\" to create a new instance.
83                 The scripts can run as a different user if desired."
84 }
85
86 src_install() {
87         distutils-r1_src_install
88
89         doman docs/buildbot.1
90
91         if use examples; then
92                 insinto /usr/share/doc/${PF}
93                 doins -r docs/examples
94         fi
95
96         newconfd "${FILESDIR}/buildmaster.confd" buildmaster
97         newinitd "${FILESDIR}/buildmaster.initd" buildmaster
98         systemd_dounit "${FILESDIR}/buildmaster.target"
99         systemd_newunit "${FILESDIR}/buildmaster_at.service" "buildmaster@.service"
100         systemd_install_serviced "${FILESDIR}/buildmaster_at.service.conf" "buildmaster@.service"
101
102         readme.gentoo_create_doc
103 }
104
105 python_test() {
106         distutils_install_for_testing
107
108         esetup.py test || die "Tests failed under ${EPYTHON}"
109 }
110
111 pkg_postinst() {
112         readme.gentoo_print_elog
113
114         if [[ -n ${REPLACING_VERSIONS} ]]; then
115                 ewarn
116                 ewarn "Starting with buildbot-0.8.12-r2, more than one instance of buildmaster"
117                 ewarn "can be run simultaneously. Note that \"BASEDIR\" in the buildbot configuration file"
118                 ewarn "is now the common base directory for all instances. If you are migrating from an older"
119                 ewarn "version, make sure that you copy the current contents of \"BASEDIR\" to a subdirectory."
120                 ewarn "The name of the subdirectory corresponds to the name of the buildmaster instance."
121                 ewarn "In order to start the service running OpenRC-based systems need to link to the init file:"
122                 ewarn "    ln --symbolic --relative /etc/init.d/buildmaster /etc/init.d/buildmaster.myinstance"
123                 ewarn "    rc-update add buildmaster.myinstance default"
124                 ewarn "    /etc/init.d/buildmaster.myinstance start"
125                 ewarn "Systems using systemd can do the following:"
126                 ewarn "    systemctl enable buildmaster@myinstance.service"
127                 ewarn "    systemctl enable buildmaster.target"
128                 ewarn "    systemctl start buildmaster.target"
129                 elog
130                 elog "Upstream recommends the following when upgrading:"
131                 elog "Each time you install a new version of Buildbot, you should run the"
132                 elog "\"buildbot upgrade-master\" command on each of your pre-existing build masters."
133                 elog "This will add files and fix (or at least detect) incompatibilities between"
134                 elog "your old config and the new code."
135         fi
136         elog
137         elog "In order to create a new instance of buildmaster, execute:"
138         elog "    emerge --config =${CATEGORY}/${PF}"
139 }
140
141 pkg_config() {
142         local buildmaster_path="/var/lib/buildmaster"
143         local log_path="/var/log/buildmaster"
144
145         einfo "This will prepare a new buildmaster instance in ${buildmaster_path}."
146         einfo "Press Control-C to abort."
147
148         einfo "Enter the name for the new instance: "
149         read instance_name
150         [[ -z "${instance_name}" ]] && die "Invalid instance name"
151
152         local instance_path="${buildmaster_path}/${instance_name}"
153         local instance_log_path="${log_path}/${instance_name}"
154
155         if [[ -e "${instance_path}" ]]; then
156                 eerror "The instance with the specified name already exists:"
157                 eerror "${instance_path}"
158                 die "Instance already exists"
159         fi
160
161         local buildbot="/usr/bin/buildbot"
162         if [[ ! -d "${buildmaster_path}" ]]; then
163                 mkdir --parents "${buildmaster_path}" || die "Unable to create directory ${buildmaster_path}"
164         fi
165         "${buildbot}" create-master "${instance_path}" &>/dev/null || die "Creating instance failed"
166         chown --recursive buildbot "${instance_path}" || die "Setting permissions for instance failed"
167         mv "${instance_path}/master.cfg.sample" "${instance_path}/master.cfg" \
168                 || die "Moving sample configuration failed"
169         ln --symbolic --relative "/etc/init.d/buildmaster" "/etc/init.d/buildmaster.${instance_name}" \
170                 || die "Unable to create link to init file"
171
172         if [[ ! -d "${instance_log_path}" ]]; then
173                 mkdir --parents "${instance_log_path}" || die "Unable to create directory ${instance_log_path}"
174         fi
175         ln --symbolic --relative "${instance_log_path}/twistd.log" "${instance_path}/twistd.log" \
176                 || die "Unable to create link to log file"
177
178         einfo "Successfully created a buildmaster instance at ${instance_path}."
179         einfo "To change the default settings edit the master.cfg file in this directory."
180 }