summaryrefslogtreecommitdiff
path: root/dev-util/buildbot
diff options
context:
space:
mode:
authorPalica <palica+gitlab@liguros.net>2020-06-23 22:35:08 +0200
committerPalica <palica+gitlab@liguros.net>2020-06-23 22:35:08 +0200
commitecdac123787b96ce6649f0f91da12ea6458cc2b1 (patch)
treeb89c74d9e6fe6e8aebc4c77bcbeb4ab73214127d /dev-util/buildbot
parent1be72aa41cf41dedadeecf59dca9f01de6381f5e (diff)
downloadsrcux-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.gz
srcux-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.xz
srcux-ecdac123787b96ce6649f0f91da12ea6458cc2b1.zip
Updating liguros repo
Diffstat (limited to 'dev-util/buildbot')
-rw-r--r--dev-util/buildbot/Manifest3
-rw-r--r--dev-util/buildbot/buildbot-2.7.0.ebuild192
-rw-r--r--dev-util/buildbot/buildbot-2.8.0.ebuild211
-rw-r--r--dev-util/buildbot/buildbot-9999.ebuild207
-rw-r--r--dev-util/buildbot/files/Add-gentoo-to-the-VERSION_ID-check-exclusion.patch26
-rw-r--r--dev-util/buildbot/files/buildbot-2.8.0.fakedb.patch10
-rw-r--r--dev-util/buildbot/files/buildmaster.confd15
-rw-r--r--dev-util/buildbot/files/buildmaster.initd64
-rw-r--r--dev-util/buildbot/files/buildmaster.target5
-rw-r--r--dev-util/buildbot/files/buildmaster_at.service16
-rw-r--r--dev-util/buildbot/files/buildmaster_at.service.conf5
-rw-r--r--dev-util/buildbot/files/pypugjs-2.8.0.patch83
-rw-r--r--dev-util/buildbot/files/pypugjs.patch84
-rw-r--r--dev-util/buildbot/metadata.xml35
14 files changed, 956 insertions, 0 deletions
diff --git a/dev-util/buildbot/Manifest b/dev-util/buildbot/Manifest
new file mode 100644
index 000000000000..0b13398de217
--- /dev/null
+++ b/dev-util/buildbot/Manifest
@@ -0,0 +1,3 @@
+DIST buildbot-2.7.0.tar.gz 3175050 BLAKE2B 0a41eccaa4ca8df6396455049e8c09a1b2fe6cde3072da7fd3715f2769015944e8880f41dbe6750dd7b26bd863fb82f8e8d8c6540f9e1bf3ea4378f11adc973d SHA512 9946fe0b1591d51e5136d9458526918e872174afee79b5f1c333823ef1d2ddae66f017e9b57e26a2451da7ca7672720f32544c606ce5652d0825fae563779669
+DIST buildbot-2.8.0-fakedb.tar.xz 16204 BLAKE2B 741676e2c9117b1ab174ce49747bdfcd07766ad3e471e308398dff476f167fd231b7772c2f02002cbafb27e2ef535242d84d5aa84f4bc8942d4d216b2d5bf1f6 SHA512 c2b00d8621b3a1e521f6c17e902ae331b606dda3d319187895f26629dbdaf50caefc5d49fb150fb780e682ae431515c7ded4950d62448e8a73b8efba821c0fa1
+DIST buildbot-2.8.0.tar.gz 3162882 BLAKE2B 19789f1fe9f572c978a1843a98cd01d752a614d89eb29f2de9db750808d1f96d7893b39d703f37cc0e81e022267c08603c86d59a5902d65194e236f7170d6b30 SHA512 18af8fe1bda6f7014f514bfd112ccf9837194c0e42cbdabaaa6c6202660670964421feff3e92e9dca4cf960f69a4bde9b3666287b54ef7e912284a0471dcc2b6
diff --git a/dev-util/buildbot/buildbot-2.7.0.ebuild b/dev-util/buildbot/buildbot-2.7.0.ebuild
new file mode 100644
index 000000000000..01fd9b609492
--- /dev/null
+++ b/dev-util/buildbot/buildbot-2.7.0.ebuild
@@ -0,0 +1,192 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+PYTHON_REQ_USE="sqlite"
+PYTHON_COMPAT=( python3_{6,7,8} )
+
+EGIT_REPO_URI="https://github.com/buildbot/${PN}.git"
+
+DISTUTILS_USE_SETUPTOOLS="rdepend"
+
+[[ ${PV} == *9999 ]] && inherit git-r3
+inherit readme.gentoo-r1 systemd distutils-r1
+
+MY_PV="${PV/_p/.post}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="BuildBot build automation system"
+HOMEPAGE="https://buildbot.net/ https://github.com/buildbot/buildbot https://pypi.org/project/buildbot/"
+[[ ${PV} == *9999 ]] || SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+if [[ ${PV} == *9999 ]]; then
+ KEYWORDS=""
+else
+ KEYWORDS="~amd64 ~amd64-linux ~x86-linux"
+fi
+
+IUSE="crypt docker examples irc test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ acct-user/buildbot
+ >=dev-python/jinja-2.1[${PYTHON_USEDEP}]
+ >=dev-python/twisted-17.9.0[${PYTHON_USEDEP}]
+ >=dev-python/autobahn-0.16.0[${PYTHON_USEDEP}]
+ >=dev-python/sqlalchemy-0.8[${PYTHON_USEDEP}]
+ >=dev-python/sqlalchemy-migrate-0.9[${PYTHON_USEDEP}]
+ dev-python/future[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-1.5[${PYTHON_USEDEP}]
+ >=dev-python/txaio-2.2.2[${PYTHON_USEDEP}]
+ dev-python/pyjwt[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ >=dev-python/zope-interface-4.1.1[${PYTHON_USEDEP}]
+ ~dev-util/buildbot-worker-${PV}[${PYTHON_USEDEP}]
+ crypt? (
+ >=dev-python/twisted-17.9.0[${PYTHON_USEDEP},crypt]
+ >=dev-python/pyopenssl-16.0.0[${PYTHON_USEDEP}]
+ <dev-python/idna-2.9[${PYTHON_USEDEP}]
+ dev-python/service_identity[${PYTHON_USEDEP}]
+ )
+ irc? (
+ dev-python/txrequests[${PYTHON_USEDEP}]
+ )
+ docker? (
+ >=dev-python/docker-py-2.2.0[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ )
+"
+DEPEND="${RDEPEND}
+ test? (
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ dev-python/moto[${PYTHON_USEDEP}]
+ >=dev-python/boto3-1.12.48[${PYTHON_USEDEP}]
+ dev-python/parameterized[${PYTHON_USEDEP}]
+ dev-python/pypugjs[${PYTHON_USEDEP}]
+ dev-python/txrequests[${PYTHON_USEDEP}]
+ dev-python/lz4[${PYTHON_USEDEP}]
+ dev-python/treq[${PYTHON_USEDEP}]
+ dev-python/setuptools_trial[${PYTHON_USEDEP}]
+ ~dev-util/buildbot-pkg-${PV}[${PYTHON_USEDEP}]
+ ~dev-util/buildbot-worker-${PV}[${PYTHON_USEDEP}]
+ ~dev-util/buildbot-www-${PV}[${PYTHON_USEDEP}]
+ crypt? (
+ >=dev-python/twisted-17.9.0[${PYTHON_USEDEP},crypt]
+ >=dev-python/pyopenssl-16.0.0[${PYTHON_USEDEP}]
+ <dev-python/idna-2.9[${PYTHON_USEDEP}]
+ dev-python/service_identity[${PYTHON_USEDEP}]
+ )
+ )"
+
+S=${WORKDIR}/${MY_P}
+[[ ${PV} == *9999 ]] && S=${S}/master
+
+if [[ ${PV} != *9999 ]]; then
+ PATCHES=(
+ "${FILESDIR}/Add-gentoo-to-the-VERSION_ID-check-exclusion.patch"
+ "${FILESDIR}/pypugjs.patch"
+ )
+fi
+
+distutils_enable_tests setup.py
+
+pkg_setup() {
+ DOC_CONTENTS="The \"buildbot\" user and the \"buildmaster\" init script has been added
+ to support starting buildbot through Gentoo's init system. To use this,
+ execute \"emerge --config =${CATEGORY}/${PF}\" to create a new instance.
+ The scripts can run as a different user if desired."
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ doman docs/buildbot.1
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r docs/examples
+ fi
+
+ newconfd "${FILESDIR}/buildmaster.confd" buildmaster
+ newinitd "${FILESDIR}/buildmaster.initd" buildmaster
+ systemd_dounit "${FILESDIR}/buildmaster.target"
+ systemd_newunit "${FILESDIR}/buildmaster_at.service" "buildmaster@.service"
+ systemd_install_serviced "${FILESDIR}/buildmaster_at.service.conf" "buildmaster@.service"
+
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ readme.gentoo_print_elog
+
+ if [[ -n ${REPLACING_VERSIONS} ]]; then
+ ewarn
+ ewarn "Starting with buildbot-0.8.12-r2, more than one instance of buildmaster"
+ ewarn "can be run simultaneously. Note that \"BASEDIR\" in the buildbot configuration file"
+ ewarn "is now the common base directory for all instances. If you are migrating from an older"
+ ewarn "version, make sure that you copy the current contents of \"BASEDIR\" to a subdirectory."
+ ewarn "The name of the subdirectory corresponds to the name of the buildmaster instance."
+ ewarn "In order to start the service running OpenRC-based systems need to link to the init file:"
+ ewarn " ln --symbolic --relative /etc/init.d/buildmaster /etc/init.d/buildmaster.myinstance"
+ ewarn " rc-update add buildmaster.myinstance default"
+ ewarn " /etc/init.d/buildmaster.myinstance start"
+ ewarn "Systems using systemd can do the following:"
+ ewarn " systemctl enable buildmaster@myinstance.service"
+ ewarn " systemctl enable buildmaster.target"
+ ewarn " systemctl start buildmaster.target"
+ elog
+ elog "Upstream recommends the following when upgrading:"
+ elog "Each time you install a new version of Buildbot, you should run the"
+ elog "\"buildbot upgrade-master\" command on each of your pre-existing build masters."
+ elog "This will add files and fix (or at least detect) incompatibilities between"
+ elog "your old config and the new code."
+ fi
+ elog
+ elog "In order to create a new instance of buildmaster, execute:"
+ elog " emerge --config =${CATEGORY}/${PF}"
+}
+
+pkg_config() {
+ local buildmaster_path="/var/lib/buildmaster"
+ local log_path="/var/log/buildmaster"
+
+ einfo "This will prepare a new buildmaster instance in ${buildmaster_path}."
+ einfo "Press Control-C to abort."
+
+ einfo "Enter the name for the new instance: "
+ read instance_name
+ [[ -z "${instance_name}" ]] && die "Invalid instance name"
+
+ local instance_path="${buildmaster_path}/${instance_name}"
+ local instance_log_path="${log_path}/${instance_name}"
+
+ if [[ -e "${instance_path}" ]]; then
+ eerror "The instance with the specified name already exists:"
+ eerror "${instance_path}"
+ die "Instance already exists"
+ fi
+
+ local buildbot="/usr/bin/buildbot"
+ if [[ ! -d "${buildmaster_path}" ]]; then
+ mkdir --parents "${buildmaster_path}" || die "Unable to create directory ${buildmaster_path}"
+ fi
+ "${buildbot}" create-master "${instance_path}" &>/dev/null || die "Creating instance failed"
+ chown --recursive buildbot:buildbot "${instance_path}" || die "Setting permissions for instance failed"
+ mv "${instance_path}/master.cfg.sample" "${instance_path}/master.cfg" \
+ || die "Moving sample configuration failed"
+ ln --symbolic --relative "/etc/init.d/buildmaster" "/etc/init.d/buildmaster.${instance_name}" \
+ || die "Unable to create link to init file"
+
+ if [[ ! -d "${instance_log_path}" ]]; then
+ mkdir --parents "${instance_log_path}" || die "Unable to create directory ${instance_log_path}"
+ chown --recursive buildbot:buildbot "${instance_log_path}" \
+ || die "Setting permissions for instance failed"
+ fi
+ ln --symbolic --relative "${instance_log_path}/twistd.log" "${instance_path}/twistd.log" \
+ || die "Unable to create link to log file"
+
+ einfo "Successfully created a buildmaster instance at ${instance_path}."
+ einfo "To change the default settings edit the master.cfg file in this directory."
+}
diff --git a/dev-util/buildbot/buildbot-2.8.0.ebuild b/dev-util/buildbot/buildbot-2.8.0.ebuild
new file mode 100644
index 000000000000..1de7b0513a29
--- /dev/null
+++ b/dev-util/buildbot/buildbot-2.8.0.ebuild
@@ -0,0 +1,211 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+PYTHON_REQ_USE="sqlite"
+PYTHON_COMPAT=( python3_{6,7,8} )
+
+DISTUTILS_USE_SETUPTOOLS="rdepend"
+
+inherit readme.gentoo-r1 systemd distutils-r1
+
+MY_PV="${PV/_p/.post}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="BuildBot build automation system"
+HOMEPAGE="https://buildbot.net/ https://github.com/buildbot/buildbot https://pypi.org/project/buildbot/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz
+ https://dev.gentoo.org/~dolsen/distfiles/buildbot-2.8.0-fakedb.tar.xz
+"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~amd64-linux ~x86-linux"
+
+IUSE="crypt doc docker examples irc test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ acct-user/buildbot
+ >=dev-python/jinja-2.1[${PYTHON_USEDEP}]
+ >=dev-python/twisted-17.9.0[${PYTHON_USEDEP}]
+ >=dev-python/autobahn-0.16.0[${PYTHON_USEDEP}]
+ >=dev-python/sqlalchemy-0.8[${PYTHON_USEDEP}]
+ >=dev-python/sqlalchemy-migrate-0.9[${PYTHON_USEDEP}]
+ dev-python/future[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-1.5[${PYTHON_USEDEP}]
+ >=dev-python/txaio-2.2.2[${PYTHON_USEDEP}]
+ dev-python/pyjwt[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ >=dev-python/zope-interface-4.1.1[${PYTHON_USEDEP}]
+ ~dev-util/buildbot-worker-${PV}[${PYTHON_USEDEP}]
+ crypt? (
+ >=dev-python/twisted-17.9.0[${PYTHON_USEDEP},crypt]
+ >=dev-python/pyopenssl-16.0.0[${PYTHON_USEDEP}]
+ <dev-python/idna-2.9[${PYTHON_USEDEP}]
+ dev-python/service_identity[${PYTHON_USEDEP}]
+ )
+ irc? (
+ dev-python/txrequests[${PYTHON_USEDEP}]
+ )
+ docker? (
+ >=dev-python/docker-py-2.2.0[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ )
+"
+DEPEND="${RDEPEND}
+ doc? (
+ >=dev-python/sphinx-1.4.3[${PYTHON_USEDEP}]
+ <dev-python/sphinx-2.1.0[${PYTHON_USEDEP}]
+ dev-python/sphinxcontrib-blockdiag[${PYTHON_USEDEP}]
+ dev-python/sphinxcontrib-spelling[${PYTHON_USEDEP}]
+ dev-python/pyenchant[${PYTHON_USEDEP}]
+ dev-python/docutils[${PYTHON_USEDEP}]
+ dev-python/sphinx-jinja[${PYTHON_USEDEP}]
+ dev-python/sphinx_rtd_theme[${PYTHON_USEDEP}]
+ )
+ test? (
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ dev-python/moto[${PYTHON_USEDEP}]
+ >=dev-python/boto3-1.12.48[${PYTHON_USEDEP}]
+ dev-python/parameterized[${PYTHON_USEDEP}]
+ dev-python/pypugjs[${PYTHON_USEDEP}]
+ dev-python/txrequests[${PYTHON_USEDEP}]
+ dev-python/lz4[${PYTHON_USEDEP}]
+ dev-python/treq[${PYTHON_USEDEP}]
+ dev-python/setuptools_trial[${PYTHON_USEDEP}]
+ ~dev-util/buildbot-pkg-${PV}[${PYTHON_USEDEP}]
+ ~dev-util/buildbot-worker-${PV}[${PYTHON_USEDEP}]
+ ~dev-util/buildbot-www-${PV}[${PYTHON_USEDEP}]
+ crypt? (
+ >=dev-python/twisted-17.9.0[${PYTHON_USEDEP},crypt]
+ >=dev-python/pyopenssl-16.0.0[${PYTHON_USEDEP}]
+ <dev-python/idna-2.9[${PYTHON_USEDEP}]
+ dev-python/service_identity[${PYTHON_USEDEP}]
+ )
+ )"
+
+S=${WORKDIR}/${MY_P}
+
+PATCHES=(
+ "${FILESDIR}/pypugjs-2.8.0.patch"
+ "${FILESDIR}/buildbot-2.8.0.fakedb.patch"
+)
+
+distutils_enable_tests setup.py
+
+pkg_setup() {
+ DOC_CONTENTS="The \"buildbot\" user and the \"buildmaster\" init script has been added
+ to support starting buildbot through Gentoo's init system. To use this,
+ execute \"emerge --config =${CATEGORY}/${PF}\" to create a new instance.
+ The scripts can run as a different user if desired."
+}
+
+src_compile() {
+ distutils-r1_src_compile
+
+ if use doc; then
+ einfo "Generation of documentation"
+ pushd docs > /dev/null
+ #'man' target is currently broken
+ emake html
+ popd > /dev/null
+ fi
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ doman docs/buildbot.1
+
+ if use doc; then
+ HTML_DOCS=( docs/_build/html/ )
+ # TODO: install man pages
+ fi
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r docs/examples
+ fi
+
+ newconfd "${FILESDIR}/buildmaster.confd" buildmaster
+ newinitd "${FILESDIR}/buildmaster.initd" buildmaster
+ systemd_dounit "${FILESDIR}/buildmaster.target"
+ systemd_newunit "${FILESDIR}/buildmaster_at.service" "buildmaster@.service"
+ systemd_install_serviced "${FILESDIR}/buildmaster_at.service.conf" "buildmaster@.service"
+
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ readme.gentoo_print_elog
+
+ if [[ -n ${REPLACING_VERSIONS} ]]; then
+ ewarn
+ ewarn "Starting with buildbot-0.8.12-r2, more than one instance of buildmaster"
+ ewarn "can be run simultaneously. Note that \"BASEDIR\" in the buildbot configuration file"
+ ewarn "is now the common base directory for all instances. If you are migrating from an older"
+ ewarn "version, make sure that you copy the current contents of \"BASEDIR\" to a subdirectory."
+ ewarn "The name of the subdirectory corresponds to the name of the buildmaster instance."
+ ewarn "In order to start the service running OpenRC-based systems need to link to the init file:"
+ ewarn " ln --symbolic --relative /etc/init.d/buildmaster /etc/init.d/buildmaster.myinstance"
+ ewarn " rc-update add buildmaster.myinstance default"
+ ewarn " /etc/init.d/buildmaster.myinstance start"
+ ewarn "Systems using systemd can do the following:"
+ ewarn " systemctl enable buildmaster@myinstance.service"
+ ewarn " systemctl enable buildmaster.target"
+ ewarn " systemctl start buildmaster.target"
+ elog
+ elog "Upstream recommends the following when upgrading:"
+ elog "Each time you install a new version of Buildbot, you should run the"
+ elog "\"buildbot upgrade-master\" command on each of your pre-existing build masters."
+ elog "This will add files and fix (or at least detect) incompatibilities between"
+ elog "your old config and the new code."
+ fi
+ elog
+ elog "In order to create a new instance of buildmaster, execute:"
+ elog " emerge --config =${CATEGORY}/${PF}"
+}
+
+pkg_config() {
+ local buildmaster_path="/var/lib/buildmaster"
+ local log_path="/var/log/buildmaster"
+
+ einfo "This will prepare a new buildmaster instance in ${buildmaster_path}."
+ einfo "Press Control-C to abort."
+
+ einfo "Enter the name for the new instance: "
+ read instance_name
+ [[ -z "${instance_name}" ]] && die "Invalid instance name"
+
+ local instance_path="${buildmaster_path}/${instance_name}"
+ local instance_log_path="${log_path}/${instance_name}"
+
+ if [[ -e "${instance_path}" ]]; then
+ eerror "The instance with the specified name already exists:"
+ eerror "${instance_path}"
+ die "Instance already exists"
+ fi
+
+ local buildbot="/usr/bin/buildbot"
+ if [[ ! -d "${buildmaster_path}" ]]; then
+ mkdir --parents "${buildmaster_path}" || die "Unable to create directory ${buildmaster_path}"
+ fi
+ "${buildbot}" create-master "${instance_path}" &>/dev/null || die "Creating instance failed"
+ chown --recursive buildbot:buildbot "${instance_path}" || die "Setting permissions for instance failed"
+ mv "${instance_path}/master.cfg.sample" "${instance_path}/master.cfg" \
+ || die "Moving sample configuration failed"
+ ln --symbolic --relative "/etc/init.d/buildmaster" "/etc/init.d/buildmaster.${instance_name}" \
+ || die "Unable to create link to init file"
+
+ if [[ ! -d "${instance_log_path}" ]]; then
+ mkdir --parents "${instance_log_path}" || die "Unable to create directory ${instance_log_path}"
+ chown --recursive buildbot:buildbot "${instance_log_path}" \
+ || die "Setting permissions for instance failed"
+ fi
+ ln --symbolic --relative "${instance_log_path}/twistd.log" "${instance_path}/twistd.log" \
+ || die "Unable to create link to log file"
+
+ einfo "Successfully created a buildmaster instance at ${instance_path}."
+ einfo "To change the default settings edit the master.cfg file in this directory."
+}
diff --git a/dev-util/buildbot/buildbot-9999.ebuild b/dev-util/buildbot/buildbot-9999.ebuild
new file mode 100644
index 000000000000..25ce6693e4eb
--- /dev/null
+++ b/dev-util/buildbot/buildbot-9999.ebuild
@@ -0,0 +1,207 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+PYTHON_REQ_USE="sqlite"
+PYTHON_COMPAT=( python3_{6,7,8} )
+
+EGIT_REPO_URI="https://github.com/buildbot/${PN}.git"
+
+DISTUTILS_USE_SETUPTOOLS="rdepend"
+
+inherit git-r3
+inherit readme.gentoo-r1 systemd distutils-r1
+
+MY_PV="${PV/_p/.post}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="BuildBot build automation system"
+HOMEPAGE="https://buildbot.net/ https://github.com/buildbot/buildbot https://pypi.org/project/buildbot/"
+[[ ${PV} == *9999 ]] || SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS=""
+
+IUSE="crypt doc docker examples irc test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ acct-user/buildbot
+ >=dev-python/jinja-2.1[${PYTHON_USEDEP}]
+ >=dev-python/twisted-17.9.0[${PYTHON_USEDEP}]
+ >=dev-python/autobahn-0.16.0[${PYTHON_USEDEP}]
+ >=dev-python/sqlalchemy-0.8[${PYTHON_USEDEP}]
+ >=dev-python/sqlalchemy-migrate-0.9[${PYTHON_USEDEP}]
+ dev-python/future[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-1.5[${PYTHON_USEDEP}]
+ >=dev-python/txaio-2.2.2[${PYTHON_USEDEP}]
+ dev-python/pyjwt[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ >=dev-python/zope-interface-4.1.1[${PYTHON_USEDEP}]
+ ~dev-util/buildbot-worker-${PV}[${PYTHON_USEDEP}]
+ crypt? (
+ >=dev-python/twisted-17.9.0[${PYTHON_USEDEP},crypt]
+ >=dev-python/pyopenssl-16.0.0[${PYTHON_USEDEP}]
+ <dev-python/idna-2.9[${PYTHON_USEDEP}]
+ dev-python/service_identity[${PYTHON_USEDEP}]
+ )
+ irc? (
+ dev-python/txrequests[${PYTHON_USEDEP}]
+ )
+ docker? (
+ >=dev-python/docker-py-2.2.0[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ )
+"
+DEPEND="${RDEPEND}
+ doc? (
+ >=dev-python/sphinx-1.4.3[${PYTHON_USEDEP}]
+ <dev-python/sphinx-2.1.0[${PYTHON_USEDEP}]
+ dev-python/sphinxcontrib-blockdiag[${PYTHON_USEDEP}]
+ dev-python/sphinxcontrib-spelling[${PYTHON_USEDEP}]
+ dev-python/pyenchant[${PYTHON_USEDEP}]
+ dev-python/docutils[${PYTHON_USEDEP}]
+ dev-python/sphinx-jinja[${PYTHON_USEDEP}]
+ dev-python/sphinx_rtd_theme[${PYTHON_USEDEP}]
+ )
+ test? (
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ dev-python/moto[${PYTHON_USEDEP}]
+ >=dev-python/boto3-1.12.48[${PYTHON_USEDEP}]
+ dev-python/parameterized[${PYTHON_USEDEP}]
+ dev-python/pypugjs[${PYTHON_USEDEP}]
+ dev-python/txrequests[${PYTHON_USEDEP}]
+ dev-python/lz4[${PYTHON_USEDEP}]
+ dev-python/treq[${PYTHON_USEDEP}]
+ dev-python/setuptools_trial[${PYTHON_USEDEP}]
+ dev-util/buildbot-pkg[${PYTHON_USEDEP}]
+ dev-util/buildbot-worker[${PYTHON_USEDEP}]
+ dev-util/buildbot-www[${PYTHON_USEDEP}]
+ crypt? (
+ >=dev-python/twisted-17.9.0[${PYTHON_USEDEP},crypt]
+ >=dev-python/pyopenssl-16.0.0[${PYTHON_USEDEP}]
+ <dev-python/idna-2.9[${PYTHON_USEDEP}]
+ dev-python/service_identity[${PYTHON_USEDEP}]
+ )
+ )"
+
+S=${S}/master
+
+distutils_enable_tests setup.py
+
+pkg_setup() {
+ DOC_CONTENTS="The \"buildbot\" user and the \"buildmaster\" init script has been added
+ to support starting buildbot through Gentoo's init system. To use this,
+ execute \"emerge --config =${CATEGORY}/${PF}\" to create a new instance.
+ The scripts can run as a different user if desired."
+}
+
+src_compile() {
+ distutils-r1_src_compile
+
+ if use doc; then
+ einfo "Generation of documentation"
+ pushd docs > /dev/null
+ #'man' target is currently broken
+ emake html
+ popd > /dev/null
+ fi
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ doman docs/buildbot.1
+
+ if use doc; then
+ HTML_DOCS=( docs/_build/html/ )
+ # TODO: install man pages
+ fi
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r docs/examples
+ fi
+
+ newconfd "${FILESDIR}/buildmaster.confd" buildmaster
+ newinitd "${FILESDIR}/buildmaster.initd" buildmaster
+ systemd_dounit "${FILESDIR}/buildmaster.target"
+ systemd_newunit "${FILESDIR}/buildmaster_at.service" "buildmaster@.service"
+ systemd_install_serviced "${FILESDIR}/buildmaster_at.service.conf" "buildmaster@.service"
+
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ readme.gentoo_print_elog
+
+ if [[ -n ${REPLACING_VERSIONS} ]]; then
+ ewarn
+ ewarn "Starting with buildbot-0.8.12-r2, more than one instance of buildmaster"
+ ewarn "can be run simultaneously. Note that \"BASEDIR\" in the buildbot configuration file"
+ ewarn "is now the common base directory for all instances. If you are migrating from an older"
+ ewarn "version, make sure that you copy the current contents of \"BASEDIR\" to a subdirectory."
+ ewarn "The name of the subdirectory corresponds to the name of the buildmaster instance."
+ ewarn "In order to start the service running OpenRC-based systems need to link to the init file:"
+ ewarn " ln --symbolic --relative /etc/init.d/buildmaster /etc/init.d/buildmaster.myinstance"
+ ewarn " rc-update add buildmaster.myinstance default"
+ ewarn " /etc/init.d/buildmaster.myinstance start"
+ ewarn "Systems using systemd can do the following:"
+ ewarn " systemctl enable buildmaster@myinstance.service"
+ ewarn " systemctl enable buildmaster.target"
+ ewarn " systemctl start buildmaster.target"
+ elog
+ elog "Upstream recommends the following when upgrading:"
+ elog "Each time you install a new version of Buildbot, you should run the"
+ elog "\"buildbot upgrade-master\" command on each of your pre-existing build masters."
+ elog "This will add files and fix (or at least detect) incompatibilities between"
+ elog "your old config and the new code."
+ fi
+ elog
+ elog "In order to create a new instance of buildmaster, execute:"
+ elog " emerge --config =${CATEGORY}/${PF}"
+}
+
+pkg_config() {
+ local buildmaster_path="/var/lib/buildmaster"
+ local log_path="/var/log/buildmaster"
+
+ einfo "This will prepare a new buildmaster instance in ${buildmaster_path}."
+ einfo "Press Control-C to abort."
+
+ einfo "Enter the name for the new instance: "
+ read instance_name
+ [[ -z "${instance_name}" ]] && die "Invalid instance name"
+
+ local instance_path="${buildmaster_path}/${instance_name}"
+ local instance_log_path="${log_path}/${instance_name}"
+
+ if [[ -e "${instance_path}" ]]; then
+ eerror "The instance with the specified name already exists:"
+ eerror "${instance_path}"
+ die "Instance already exists"
+ fi
+
+ local buildbot="/usr/bin/buildbot"
+ if [[ ! -d "${buildmaster_path}" ]]; then
+ mkdir --parents "${buildmaster_path}" || die "Unable to create directory ${buildmaster_path}"
+ fi
+ "${buildbot}" create-master "${instance_path}" &>/dev/null || die "Creating instance failed"
+ chown --recursive buildbot:buildbot "${instance_path}" || die "Setting permissions for instance failed"
+ mv "${instance_path}/master.cfg.sample" "${instance_path}/master.cfg" \
+ || die "Moving sample configuration failed"
+ ln --symbolic --relative "/etc/init.d/buildmaster" "/etc/init.d/buildmaster.${instance_name}" \
+ || die "Unable to create link to init file"
+
+ if [[ ! -d "${instance_log_path}" ]]; then
+ mkdir --parents "${instance_log_path}" || die "Unable to create directory ${instance_log_path}"
+ chown --recursive buildbot:buildbot "${instance_log_path}" \
+ || die "Setting permissions for instance failed"
+ fi
+ ln --symbolic --relative "${instance_log_path}/twistd.log" "${instance_path}/twistd.log" \
+ || die "Unable to create link to log file"
+
+ einfo "Successfully created a buildmaster instance at ${instance_path}."
+ einfo "To change the default settings edit the master.cfg file in this directory."
+}
diff --git a/dev-util/buildbot/files/Add-gentoo-to-the-VERSION_ID-check-exclusion.patch b/dev-util/buildbot/files/Add-gentoo-to-the-VERSION_ID-check-exclusion.patch
new file mode 100644
index 000000000000..16fc0a133e10
--- /dev/null
+++ b/dev-util/buildbot/files/Add-gentoo-to-the-VERSION_ID-check-exclusion.patch
@@ -0,0 +1,26 @@
+From f8d6fe39570a698d80d821a440219f5cd79d8314 Mon Sep 17 00:00:00 2001
+From: Brian Dolbec <dolsen@gentoo.org>
+Date: Tue, 5 Mar 2019 11:21:14 -0800
+Subject: [PATCH] test_buildbot_net_usage.py: Add "gentoo" to the VERSION_ID check exclusion
+
+Make the exclusions test into a list (slight speed improvement, easier to extend) and add "gentoo".
+
+Signed-off-by: Brian Dolbec <dolsen@gentoo.org>
+---
+ buildbot/test/unit/test_buildbot_net_usage_data.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/buildbot/test/unit/test_buildbot_net_usage_data.py b/buildbot/test/unit/test_buildbot_net_usage_data.py
+index c347956..e422c55 100644
+--- a/buildbot/test/unit/test_buildbot_net_usage_data.py
++++ b/buildbot/test/unit/test_buildbot_net_usage_data.py
+@@ -150,5 +150,5 @@ class Tests(unittest.TestCase):
+ self.assertEqual(len(distro), 2)
+ self.assertNotIn("unknown", distro[0])
+ # Rolling distributions like Arch Linux (arch) does not have VERSION_ID
+- if distro[0] != "arch":
++ if distro[0] not in ["arch", "gentoo"]:
+ self.assertNotIn("unknown", distro[1])
+--
+libgit2 0.99.0
+
diff --git a/dev-util/buildbot/files/buildbot-2.8.0.fakedb.patch b/dev-util/buildbot/files/buildbot-2.8.0.fakedb.patch
new file mode 100644
index 000000000000..2ce217b0d2e4
--- /dev/null
+++ b/dev-util/buildbot/files/buildbot-2.8.0.fakedb.patch
@@ -0,0 +1,10 @@
+--- a/setup.py 2020-06-01 15:14:03.169026527 -0700
++++ b/setup.py 2020-06-01 15:17:38.619177059 -0700
+@@ -194,6 +194,7 @@
+ "buildbot.test",
+ "buildbot.test.util",
+ "buildbot.test.fake",
++ "buildbot.test.fakedb",
+ "buildbot.test.fuzz",
+ "buildbot.test.integration",
+ "buildbot.test.integration.interop",
diff --git a/dev-util/buildbot/files/buildmaster.confd b/dev-util/buildbot/files/buildmaster.confd
new file mode 100644
index 000000000000..eb3185aef358
--- /dev/null
+++ b/dev-util/buildbot/files/buildmaster.confd
@@ -0,0 +1,15 @@
+
+# Path to the build master's basedir.
+BASEDIR=/var/lib/buildmaster
+
+# User account for the buildmaster.
+# The basedir should be owned by this user.
+USERNAME=buildbot
+
+# Extra options to pass to twistd.
+TWISTD_OPTS=""
+
+# Optional specific python version to run in
+# (if not the system default version)
+# ie: RUNTIME_PYTHON="/usr/bin/python2.7"
+RUNTIME_PYTHON=""
diff --git a/dev-util/buildbot/files/buildmaster.initd b/dev-util/buildbot/files/buildmaster.initd
new file mode 100644
index 000000000000..b75ae34830d4
--- /dev/null
+++ b/dev-util/buildbot/files/buildmaster.initd
@@ -0,0 +1,64 @@
+#!/sbin/openrc-run
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+extra_started_commands="reload"
+
+BUILDMASTER_NAME=${RC_SVCNAME:12}
+BUILDMASTER_PATH="${BASEDIR}/${BUILDMASTER_NAME}"
+
+depend() {
+ need net
+}
+
+checkconfig() {
+ if [ -z "${BUILDMASTER_NAME}" ]; then
+ eerror "Buildmaster name not defined. Please link buildmaster.foo to this file to start the buildmaster with the name \"foo\"."
+ return 1
+ fi
+ if [ -z "${BASEDIR}" ]; then
+ eerror "BASEDIR not set"
+ return 1
+ fi
+ if [ -z "${USERNAME}" ]; then
+ eerror "USERNAME not set"
+ return 1
+ fi
+ if [ ! -d "${BUILDMASTER_PATH}" ]; then
+ eerror "${BUILDMASTER_PATH} is not a directory"
+ return 1
+ fi
+ if [ ! -e "${BUILDMASTER_PATH}/buildbot.tac" ]; then
+ eerror "${BUILDMASTER_PATH} does not contain buildbot.tac"
+ return 1
+ fi
+ if [ ! -e "${RUNTIME_PYTHON}" ]; then
+ RUNTIME_PYTHON="/usr/bin/python"
+ fi
+}
+
+start() {
+ checkconfig || return 1
+ ebegin "Starting buildmaster in ${BUILDMASTER_PATH}"
+ start-stop-daemon --start -u "${USERNAME}" \
+ --pidfile "${BUILDMASTER_PATH}/buildmaster.pid" \
+ --exec "${RUNTIME_PYTHON}" -- /usr/bin/twistd \
+ --no_save \
+ --logfile="${BUILDMASTER_PATH}/twistd.log" \
+ --pidfile="${BUILDMASTER_PATH}/buildmaster.pid" \
+ --python="${BUILDMASTER_PATH}/buildbot.tac"
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping buildmaster in ${BUILDMASTER_PATH}"
+ start-stop-daemon --stop --pidfile "${BUILDMASTER_PATH}/buildmaster.pid"
+ eend $?
+}
+
+reload() {
+ ebegin "Reconfiguring buildmaster in ${BUILDMASTER_PATH}"
+ start-stop-daemon --signal HUP --pidfile \
+ "${BUILDMASTER_PATH}"/buildmaster.pid
+ eend $?
+}
diff --git a/dev-util/buildbot/files/buildmaster.target b/dev-util/buildbot/files/buildmaster.target
new file mode 100644
index 000000000000..2bf1a361e6b0
--- /dev/null
+++ b/dev-util/buildbot/files/buildmaster.target
@@ -0,0 +1,5 @@
+[Unit]
+Description=Buildbot target that allows to start or stop all buildmaster@*.service instances
+
+[Install]
+WantedBy=multi-user.target
diff --git a/dev-util/buildbot/files/buildmaster_at.service b/dev-util/buildbot/files/buildmaster_at.service
new file mode 100644
index 000000000000..88f9f5712002
--- /dev/null
+++ b/dev-util/buildbot/files/buildmaster_at.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=buildbot master daemon
+After=local-fs.target network.target
+PartOf=buildmaster.target
+
+[Service]
+Environment=BASEDIR=/var/lib/buildmaster
+Type=forking
+User=buildbot
+ExecStartPre=/usr/bin/buildbot checkconfig ${BASEDIR}/%i
+ExecStart=/usr/bin/buildbot start ${BASEDIR}/%i
+ExecStop=/usr/bin/buildbot stop ${BASEDIR}/%i
+
+[Install]
+WantedBy=buildmaster.target
+
diff --git a/dev-util/buildbot/files/buildmaster_at.service.conf b/dev-util/buildbot/files/buildmaster_at.service.conf
new file mode 100644
index 000000000000..baf1ae74ec08
--- /dev/null
+++ b/dev-util/buildbot/files/buildmaster_at.service.conf
@@ -0,0 +1,5 @@
+# Uncomment the following lines to configure the base directory for all buildmaster instances.
+
+#[Service]
+#Environment=BASEDIR=/var/lib/buildmaster
+
diff --git a/dev-util/buildbot/files/pypugjs-2.8.0.patch b/dev-util/buildbot/files/pypugjs-2.8.0.patch
new file mode 100644
index 000000000000..d34c6fac1af8
--- /dev/null
+++ b/dev-util/buildbot/files/pypugjs-2.8.0.patch
@@ -0,0 +1,83 @@
+From 26fefa8f8fa7b347e1c86723194de3a4094dc012 Mon Sep 17 00:00:00 2001
+From: Brian Dolbec <dolsen@gentoo.org>
+Date: Sat, 25 Apr 2020 11:53:06 -0700
+Subject: [PATCH] Initial pyjade port to pypugjs
+
+---
+ common/code_spelling_ignore_words.txt | 1 +
+ master/buildbot/test/unit/test_www_config.py | 8 ++++----
+ master/buildbot/www/config.py | 10 +++++-----
+ master/docs/manual/configuration/www.rst | 10 ++++++----
+ master/docs/spelling_wordlist.txt | 2 +-
+ master/setup.py | 4 ++--
+ requirements-ci.txt | 2 +-
+ 7 files changed, 20 insertions(+), 17 deletions(-)
+
+diff --git a/buildbot/test/unit/test_www_config.py b/buildbot/test/unit/test_www_config.py
+index 23a108e..a8c24ec 100644
+--- a/buildbot/test/unit/test_www_config.py
++++ b/buildbot/test/unit/test_www_config.py
+@@ -107,10 +107,10 @@ class IndexResource(TestReactorMixin, www.WwwTestMixin, unittest.TestCase):
+ def test_parseCustomTemplateDir(self):
+ exp = {'views/builds.html': '<div>\n</div>'}
+ try:
+- # we make the test work if pyjade is present or note
+- # It is better than just skip if pyjade is not there
+- import pyjade # pylint: disable=import-outside-toplevel
+- [pyjade]
++ # we make the test work if pypugjs is present or note
++ # It is better than just skip if pypugjs is not there
++ import pypugjs # pylint: disable=import-outside-toplevel
++ [pypugjs]
+ exp.update({'plugin/views/plugin.html':
+ '<div class="myclass"><pre>this is customized</pre></div>'})
+ except ImportError:
+diff --git a/buildbot/www/config.py b/buildbot/www/config.py
+index a021299..50bae4d 100644
+--- config.py 2020-02-27 13:34:10.000000000 -0800
++++ config2.py 2020-05-11 17:26:44.587026761 -0700
+@@ -61,11 +61,11 @@
+ res = {}
+ allowed_ext = [".html"]
+ try:
+- import pyjade # pylint: disable=import-outside-toplevel
++ import pypugjs # pylint: disable=import-outside-toplevel
+ allowed_ext.append(".jade")
+ except ImportError: # pragma: no cover
+- log.msg("pyjade not installed. Ignoring .jade files from {}".format(template_dir))
++ log.msg("pypugjs not installed. Ignoring .jade files from {}".format(template_dir))
+- pyjade = None
++ pypugjs = None
+ for root, dirs, files in os.walk(template_dir):
+ if root == template_dir:
+ template_name = posixpath.join("views", "%s.html")
+@@ -86,9 +86,9 @@
+ elif ext == ".jade":
+ with open(fn) as f:
+ jade = f.read()
+- parser = pyjade.parser.Parser(jade)
++ parser = pypugjs.parser.Parser(jade)
+ block = parser.parse()
+- compiler = pyjade.ext.html.Compiler(
++ compiler = pypugjs.ext.html.Compiler(
+ block, pretty=False)
+ html = compiler.compile()
+ res[template_name % (basename,)] = html
+diff --git a/setup.py b/master/setup.py
+index 8fca506..1f32a74 100755
+--- a/setup.py
++++ b/setup.py
+@@ -490,8 +490,8 @@ test_deps = [
+ # http client libraries
+ 'treq',
+ 'txrequests',
+- # pyjade required for custom templates tests
+- 'pyjade',
++ # pypugjs required for custom templates tests
++ 'pypugjs',
+ # boto3 and moto required for running EC2 tests
+ 'boto3',
+ 'moto',
+--
+libgit2 0.99.0
+
diff --git a/dev-util/buildbot/files/pypugjs.patch b/dev-util/buildbot/files/pypugjs.patch
new file mode 100644
index 000000000000..3ac99502b5d5
--- /dev/null
+++ b/dev-util/buildbot/files/pypugjs.patch
@@ -0,0 +1,84 @@
+From 26fefa8f8fa7b347e1c86723194de3a4094dc012 Mon Sep 17 00:00:00 2001
+From: Brian Dolbec <dolsen@gentoo.org>
+Date: Sat, 25 Apr 2020 11:53:06 -0700
+Subject: [PATCH] Initial pyjade port to pypugjs
+
+---
+ common/code_spelling_ignore_words.txt | 1 +
+ master/buildbot/test/unit/test_www_config.py | 8 ++++----
+ master/buildbot/www/config.py | 10 +++++-----
+ master/docs/manual/configuration/www.rst | 10 ++++++----
+ master/docs/spelling_wordlist.txt | 2 +-
+ master/setup.py | 4 ++--
+ requirements-ci.txt | 2 +-
+ 7 files changed, 20 insertions(+), 17 deletions(-)
+
+diff --git a/buildbot/test/unit/test_www_config.py b/buildbot/test/unit/test_www_config.py
+index 23a108e..a8c24ec 100644
+--- a/buildbot/test/unit/test_www_config.py
++++ b/buildbot/test/unit/test_www_config.py
+@@ -107,10 +107,10 @@ class IndexResource(TestReactorMixin, www.WwwTestMixin, unittest.TestCase):
+ def test_parseCustomTemplateDir(self):
+ exp = {'views/builds.html': '<div>\n</div>'}
+ try:
+- # we make the test work if pyjade is present or note
+- # It is better than just skip if pyjade is not there
+- import pyjade # pylint: disable=import-outside-toplevel
+- [pyjade]
++ # we make the test work if pypugjs is present or note
++ # It is better than just skip if pypugjs is not there
++ import pypugjs # pylint: disable=import-outside-toplevel
++ [pypugjs]
+ exp.update({'plugin/views/plugin.html':
+ '<div class="myclass"><pre>this is customized</pre></div>'})
+ except ImportError:
+diff --git a/buildbot/www/config.py b/buildbot/www/config.py
+index a021299..50bae4d 100644
+--- config.py 2020-02-27 13:34:10.000000000 -0800
++++ config2.py 2020-05-11 17:26:44.587026761 -0700
+@@ -61,12 +61,12 @@
+ res = {}
+ allowed_ext = [".html"]
+ try:
+- import pyjade # pylint: disable=import-outside-toplevel
++ import pypugjs # pylint: disable=import-outside-toplevel
+ allowed_ext.append(".jade")
+ except ImportError: # pragma: no cover
+- log.msg("pyjade not installed. Ignoring .jade files from %s" %
++ log.msg("pypugjs not installed. Ignoring .jade files from %s" %
+ (template_dir,))
+- pyjade = None
++ pypugjs = None
+ for root, dirs, files in os.walk(template_dir):
+ if root == template_dir:
+ template_name = posixpath.join("views", "%s.html")
+@@ -86,9 +86,9 @@
+ elif ext == ".jade":
+ with open(fn) as f:
+ jade = f.read()
+- parser = pyjade.parser.Parser(jade)
++ parser = pypugjs.parser.Parser(jade)
+ block = parser.parse()
+- compiler = pyjade.ext.html.Compiler(
++ compiler = pypugjs.ext.html.Compiler(
+ block, pretty=False)
+ html = compiler.compile()
+ res[template_name % (basename,)] = html
+diff --git a/setup.py b/master/setup.py
+index 8fca506..1f32a74 100755
+--- a/setup.py
++++ b/setup.py
+@@ -490,8 +490,8 @@ test_deps = [
+ # http client libraries
+ 'treq',
+ 'txrequests',
+- # pyjade required for custom templates tests
+- 'pyjade',
++ # pypugjs required for custom templates tests
++ 'pypugjs',
+ # boto3 and moto required for running EC2 tests
+ 'boto3',
+ 'moto',
+--
+libgit2 0.99.0
+
diff --git a/dev-util/buildbot/metadata.xml b/dev-util/buildbot/metadata.xml
new file mode 100644
index 000000000000..93dd8fa8280b
--- /dev/null
+++ b/dev-util/buildbot/metadata.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>dolsen@gentoo.org</email>
+ <name>Brian Dolbec</name>
+ </maintainer>
+ <longdescription lang="en">
+ BuildBot is a system to automate the compile/test cycle required
+ by most software projects to validate code changes.
+ Features:
+ * run builds on a variety of slave platforms
+ * arbitrary build process: handles projects using C, Python, whatever
+ * minimal host requirements: python and Twisted
+ * slaves can be behind a firewall if they can still do checkout
+ * status delivery through web page, email, IRC, other protocols
+ * track builds in progress, provide estimated completion time
+ * flexible configuration by subclassing generic build process classes
+ * debug tools to force a new build, submit fake Changes, query slave status
+ * released under the GPL
+ </longdescription>
+ <use>
+ <flag name="docker">Add support for worker docker command steps</flag>
+ <flag name="irc">Add support for status delivery through an ircbot.</flag>
+ </use>
+ <upstream>
+ <maintainer>
+ <email>devel@buildbot.net</email>
+ <name>Developers List</name>
+ </maintainer>
+ <remote-id type="pypi">buildbot</remote-id>
+ <remote-id type="github">buildbot/buildbot</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>