1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
5 PYTHON_REQ_USE="sqlite"
6 PYTHON_COMPAT=( python3_{6,7,8} )
8 EGIT_REPO_URI="https://github.com/buildbot/${PN}.git"
10 DISTUTILS_USE_SETUPTOOLS="rdepend"
12 [[ ${PV} == *9999 ]] && inherit git-r3
13 inherit readme.gentoo-r1 systemd distutils-r1
15 MY_PV="${PV/_p/.post}"
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"
24 if [[ ${PV} == *9999 ]]; then
27 KEYWORDS="~amd64 ~amd64-linux ~x86-linux"
30 IUSE="crypt doc docker examples irc test"
31 RESTRICT="!test? ( test )"
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}]
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}]
54 dev-python/txrequests[${PYTHON_USEDEP}]
57 >=dev-python/docker-py-2.2.0[${PYTHON_USEDEP}]
58 dev-python/requests[${PYTHON_USEDEP}]
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}]
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}]
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}]
92 # >=dev-python/docker-py-2.2.0[${PYTHON_USEDEP}]
95 [[ ${PV} == *9999 ]] && S=${S}/master
97 if [[ ${PV} != *9999 ]]; then
99 "${FILESDIR}/Add-gentoo-to-the-VERSION_ID-check-exclusion.patch"
100 "${FILESDIR}/pypugjs.patch"
104 distutils_enable_tests setup.py
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."
114 distutils-r1_src_compile
117 einfo "Generation of documentation"
118 pushd docs > /dev/null
119 #'man' target is currently broken
126 distutils-r1_src_install
128 doman docs/buildbot.1
131 HTML_DOCS=( docs/_build/html/ )
132 # TODO: install man pages
135 if use examples; then
136 insinto /usr/share/doc/${PF}
137 doins -r docs/examples
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"
146 readme.gentoo_create_doc
150 readme.gentoo_print_elog
152 if [[ -n ${REPLACING_VERSIONS} ]]; then
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"
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."
175 elog "In order to create a new instance of buildmaster, execute:"
176 elog " emerge --config =${CATEGORY}/${PF}"
180 local buildmaster_path="/var/lib/buildmaster"
181 local log_path="/var/log/buildmaster"
183 einfo "This will prepare a new buildmaster instance in ${buildmaster_path}."
184 einfo "Press Control-C to abort."
186 einfo "Enter the name for the new instance: "
188 [[ -z "${instance_name}" ]] && die "Invalid instance name"
190 local instance_path="${buildmaster_path}/${instance_name}"
191 local instance_log_path="${log_path}/${instance_name}"
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"
199 local buildbot="/usr/bin/buildbot"
200 if [[ ! -d "${buildmaster_path}" ]]; then
201 mkdir --parents "${buildmaster_path}" || die "Unable to create directory ${buildmaster_path}"
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"
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"
215 ln --symbolic --relative "${instance_log_path}/twistd.log" "${instance_path}/twistd.log" \
216 || die "Unable to create link to log file"
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."