Install this version:
emerge -a =dev-build/buildstream-2.7.0
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =dev-build/buildstream-2.7.0
Or alternatively:
emerge --autounmask-write -a =dev-build/buildstream-2.7.0
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 2.7.0 | 8 | ~amd64 | 2 |
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{12..14} )
inherit distutils-r1 linux-info optfeature shell-completion
DESCRIPTION="The software integration tool"
HOMEPAGE="https://buildstream.build/"
# zsh completion & docs not packaged in pypi tarball
SRC_URI="
https://github.com/apache/buildstream/archive/refs/tags/${PV}.tar.gz
-> ${P}.tar.gz
doc? ( https://github.com/apache/buildstream/releases/download/${PV}/docs.tgz
-> ${P}-docs.tgz )
"
LICENSE="Apache-2.0"
SLOT="2"
KEYWORDS="~amd64"
IUSE="doc test"
# https://docs.buildstream.build/master/main_install.html#runtime-requirements
# pyproject.toml, requiremnts/*.txt
RDEPEND="
dev-util/buildbox[casd,fuse,recc]
dev-vcs/git
app-alternatives/tar
sys-devel/patch
dev-python/click[${PYTHON_USEDEP}]
dev-python/grpcio[${PYTHON_USEDEP}]
dev-python/jinja2[${PYTHON_USEDEP}]
dev-python/pluginbase[${PYTHON_USEDEP}]
dev-python/protobuf[${PYTHON_USEDEP}]
dev-python/psutil[${PYTHON_USEDEP}]
dev-python/ruamel-yaml[${PYTHON_USEDEP}]
dev-python/ruamel-yaml-clib[${PYTHON_USEDEP}]
dev-python/pyroaring[${PYTHON_USEDEP}]
dev-python/ujson[${PYTHON_USEDEP}]
"
BDEPEND="
dev-python/cython[${PYTHON_USEDEP}]
dev-python/packaging[${PYTHON_USEDEP}]
test? (
app-alternatives/lzip
dev-build/buildstream-plugins:2[${PYTHON_USEDEP}]
dev-python/astroid[${PYTHON_USEDEP}]
dev-python/coverage[${PYTHON_USEDEP}]
dev-python/dill[${PYTHON_USEDEP}]
dev-python/exceptiongroup[${PYTHON_USEDEP}]
dev-python/execnet[${PYTHON_USEDEP}]
dev-python/iniconfig[${PYTHON_USEDEP}]
dev-python/isort[${PYTHON_USEDEP}]
dev-python/markupsafe[${PYTHON_USEDEP}]
dev-python/mccabe[${PYTHON_USEDEP}]
dev-python/pexpect[${PYTHON_USEDEP}]
dev-python/platformdirs[${PYTHON_USEDEP}]
dev-python/ptyprocess[${PYTHON_USEDEP}]
dev-python/pylint[${PYTHON_USEDEP}]
dev-python/pyftpdlib[${PYTHON_USEDEP}]
dev-python/pytest-cov[${PYTHON_USEDEP}]
dev-python/pytest-datafiles[${PYTHON_USEDEP}]
dev-python/pytest-env[${PYTHON_USEDEP}]
dev-python/pytest-expect[${PYTHON_USEDEP}]
dev-python/pytest-timeout[${PYTHON_USEDEP}]
dev-python/pytest-xdist[${PYTHON_USEDEP}]
dev-python/six[${PYTHON_USEDEP}]
dev-python/tomli[${PYTHON_USEDEP}]
dev-python/tomlkit[${PYTHON_USEDEP}]
dev-python/typing-extensions[${PYTHON_USEDEP}]
dev-util/ostree
)
"
RESTRICT="!test? ( test )"
PATCHES=(
"${FILESDIR}"/${P}-rename-the-destination-of-the-plugins-option.patch
)
EPYTEST_PLUGINS=( pytest-{timeout,datafiles,env} )
distutils_enable_tests pytest
src_unpack() {
if use doc; then
# docs don't contain a parent directory, just spills into ${WORKDIR}
unpack ${P}-docs.tgz
mkdir "${T}"/docs || die
mv ./* "${T}"/docs || die
fi
unpack ${P}.tar.gz
}
pkg_setup() {
CONFIG_CHECK="~FUSE_FS"
linux-info_pkg_setup
}
python_test() {
# https://projects.gentoo.org/python/guide/test.html#installing-extra-dependencies-in-test-environment-pep-517-mode
cp -a "${BUILD_DIR}"/{install,test} || die
local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH}
# install the samples plugins or else tests using it get skipped
pushd tests/plugins/sample-plugins >/dev/null || die
distutils_pep517_install "${BUILD_DIR}"/test
popd >/dev/null || die
# tox.ini
export BST_TEST_HOME=${HOME}
export BST_TEST_XDG_CACHE_HOME=${HOME}/cache
export BST_TEST_XDG_CONFIG_HOME=${HOME}/config
export BST_TEST_XDG_DATA_HOME=${HOME}/share
# fuse: failed to open /dev/fuse: Permission denied
addwrite "/dev/fuse"
# still fails inside a bubblewrap container :/
# fusermount3: mount failed: Operation not permitted
local EPYTEST_DESELECT=(
# the git_tag and zip tests fail
# `no sample plugin available for {zip,git_tag}`
tests/frontend/workspace.py::test_build[project-no-guess-strict-git_tag]
tests/frontend/workspace.py::test_build[project-no-guess-strict-zip]
tests/frontend/workspace.py::test_build[project-no-guess-non-strict-git_tag]
tests/frontend/workspace.py::test_build[project-no-guess-non-strict-zip]
tests/frontend/workspace.py::test_build[workspace-guess-strict-git_tag]
tests/frontend/workspace.py::test_build[workspace-guess-strict-zip]
tests/frontend/workspace.py::test_build[workspace-guess-non-strict-git_tag]
tests/frontend/workspace.py::test_build[workspace-guess-non-strict-zip]
tests/frontend/workspace.py::test_build[workspace-no-guess-strict-git_tag]
tests/frontend/workspace.py::test_build[workspace-no-guess-strict-zip]
tests/frontend/workspace.py::test_build[workspace-no-guess-non-strict-git_tag]
tests/frontend/workspace.py::test_build[workspace-no-guess-non-strict-zip]
)
# to not pollute the source directory and make grepping hard.
# can't just use ${T} as the --basetemp option removes the directory
# if it exists
epytest --basetemp "${T}"/test_dir
}
src_install() {
distutils-r1_src_install
dobashcomp src/${PN}/data/bst
dozshcomp src/${PN}/data/zsh/_bst
if use doc; then
HTML_DOCS=( "${T}"/docs/* )
einstalldocs
fi
}
pkg_postinst() {
for i in dev-build/buildstream-plugins{,-community}; do
if ! has_version ${i}; then
elog "Please install ${i} for additional functionality via plugins."
fi
done
! has_version app-arch/lzip && \
optfeature "extraction of .tar.lz sources" app-alternatives/lzip
! has_version dev-util/ostree && \
optfeature "ostree based source integration" dev-util/ostree
}
Manage flags for this package:
euse -i <flag> -p dev-build/buildstream |
euse -E <flag> -p dev-build/buildstream |
euse -D <flag> -p dev-build/buildstream
dev-util/buildbox[casd,fuse,recc] dev-vcs/git app-alternatives/tar sys-devel/patch dev-python/click[] dev-python/grpcio[] dev-python/jinja2[] dev-python/pluginbase[] dev-python/protobuf[] dev-python/psutil[] dev-python/ruamel-yaml[] dev-python/ruamel-yaml-clib[] dev-python/pyroaring[] dev-python/ujson[]
dev-python/cython[] dev-python/packaging[] test? ( app-alternatives/lzip dev-build/buildstream-plugins:2[] dev-python/astroid[] dev-python/coverage[] dev-python/dill[] dev-python/exceptiongroup[] dev-python/execnet[] dev-python/iniconfig[] dev-python/isort[] dev-python/markupsafe[] dev-python/mccabe[] dev-python/pexpect[] dev-python/platformdirs[] dev-python/ptyprocess[] dev-python/pylint[] dev-python/pyftpdlib[] dev-python/pytest-cov[] dev-python/pytest-datafiles[] dev-python/pytest-env[] dev-python/pytest-expect[] dev-python/pytest-timeout[] dev-python/pytest-xdist[] dev-python/six[] dev-python/tomli[] dev-python/tomlkit[] dev-python/typing-extensions[] dev-util/ostree )
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | buildstream-2.7.0-docs.tgz | 8981333 bytes | https://github.com/apache/buildstream/releases/download/2.7.0/docs.tgz |
| DIST | buildstream-2.7.0.tar.gz | 1663951 bytes | https://github.com/apache/buildstream/archive/refs/tags/2.7.0.tar.gz |