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