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=( python2_7 python3_6 )
8 EGIT_REPO_URI="https://github.com/buildbot/${PN}.git"
10 [[ ${PV} == *9999 ]] && inherit git-r3
11 inherit readme.gentoo-r1 user systemd distutils-r1
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"
22 if [[ ${PV} == *9999 ]]; then
28 IUSE="crypt examples irc test"
29 RESTRICT="!test? ( test )"
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}]
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}]
50 dev-python/txrequests[${PYTHON_USEDEP}]
54 >=dev-python/setuptools-21.2.1[${PYTHON_USEDEP}]
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}]
71 [[ ${PV} == *9999 ]] && S=${S}/master
74 "${FILESDIR}/Remove-distro-version-test.patch"
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."
87 distutils-r1_src_install
92 insinto /usr/share/doc/${PF}
93 doins -r docs/examples
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"
102 readme.gentoo_create_doc
106 distutils_install_for_testing
108 esetup.py test || die "Tests failed under ${EPYTHON}"
112 readme.gentoo_print_elog
114 if [[ -n ${REPLACING_VERSIONS} ]]; then
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"
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."
137 elog "In order to create a new instance of buildmaster, execute:"
138 elog " emerge --config =${CATEGORY}/${PF}"
142 local buildmaster_path="/var/lib/buildmaster"
143 local log_path="/var/log/buildmaster"
145 einfo "This will prepare a new buildmaster instance in ${buildmaster_path}."
146 einfo "Press Control-C to abort."
148 einfo "Enter the name for the new instance: "
150 [[ -z "${instance_name}" ]] && die "Invalid instance name"
152 local instance_path="${buildmaster_path}/${instance_name}"
153 local instance_log_path="${log_path}/${instance_name}"
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"
161 local buildbot="/usr/bin/buildbot"
162 if [[ ! -d "${buildmaster_path}" ]]; then
163 mkdir --parents "${buildmaster_path}" || die "Unable to create directory ${buildmaster_path}"
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"
172 if [[ ! -d "${instance_log_path}" ]]; then
173 mkdir --parents "${instance_log_path}" || die "Unable to create directory ${instance_log_path}"
175 ln --symbolic --relative "${instance_log_path}/twistd.log" "${instance_path}/twistd.log" \
176 || die "Unable to create link to log file"
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."