We may want to consider our own binpkg cache for future to speed things up, in addition to the ones provided by Gentoo's own binhost. Signed-off-by: Sam James <sam@gentoo.org> Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>pull/12830/head
parent
87ba248404
commit
fe8123b484
7 changed files with 167 additions and 2 deletions
@ -0,0 +1,8 @@ |
|||||||
|
{ |
||||||
|
"base_image": "gentoo/stage3:desktop", |
||||||
|
"env": { |
||||||
|
"CI": "1", |
||||||
|
"MESON_CI_JOBNAME": "linux-gentoo-gcc", |
||||||
|
"SKIP_STATIC_BOOST": "1" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,151 @@ |
|||||||
|
#!/bin/bash |
||||||
|
set -e |
||||||
|
|
||||||
|
source /ci/common.sh |
||||||
|
|
||||||
|
# We divide the package list into 'pkgs_stable' and 'pkgs_latest'. The trade-off |
||||||
|
# is that latest stuff may not have a binpkg available, but of course we get |
||||||
|
# better test coverage with the bleeding edge then. |
||||||
|
pkgs_stable=( |
||||||
|
app-portage/portage-utils |
||||||
|
dev-build/cmake |
||||||
|
dev-vcs/git |
||||||
|
|
||||||
|
# language support |
||||||
|
dev-python/cython |
||||||
|
dev-python/lxml |
||||||
|
dev-python/pip |
||||||
|
virtual/fortran |
||||||
|
dev-lang/nasm |
||||||
|
dev-lang/vala |
||||||
|
dev-lang/python:2.7 |
||||||
|
dev-java/openjdk-bin |
||||||
|
# requires rustfmt, bin rebuild (TODO: file bug) |
||||||
|
#dev-util/bindgen |
||||||
|
|
||||||
|
dev-libs/elfutils |
||||||
|
dev-libs/gobject-introspection |
||||||
|
dev-util/itstool |
||||||
|
dev-libs/protobuf |
||||||
|
|
||||||
|
# custom deps |
||||||
|
net-libs/libpcap |
||||||
|
dev-util/gtk-doc |
||||||
|
media-libs/libwmf |
||||||
|
sys-cluster/openmpi |
||||||
|
sci-libs/netcdf |
||||||
|
media-libs/libsdl2 |
||||||
|
dev-cpp/gtest |
||||||
|
sci-libs/hdf5 |
||||||
|
dev-qt/linguist-tools |
||||||
|
sys-devel/llvm |
||||||
|
# qt6 unstable |
||||||
|
#dev-qt/qttools |
||||||
|
|
||||||
|
# misc |
||||||
|
app-admin/sudo |
||||||
|
app-text/doxygen |
||||||
|
sys-apps/fakeroot |
||||||
|
sys-devel/bison |
||||||
|
sys-devel/gettext |
||||||
|
|
||||||
|
# TODO: vulkan-validation-layers |
||||||
|
# TODO: cuda |
||||||
|
#dev-cpp/gtkmm:3.0 |
||||||
|
#dev-java/openjdk-bin:8 |
||||||
|
#dev-lang/go |
||||||
|
#dev-lang/mono |
||||||
|
#dev-lang/python |
||||||
|
#dev-lang/rust-bin |
||||||
|
#dev-libs/wayland |
||||||
|
#dev-libs/wayland-protocols |
||||||
|
#dev-python/pypy3 |
||||||
|
#dev-qt/qtbase:6 |
||||||
|
#dev-qt/qtcore:5 |
||||||
|
#dev-qt/qttools:6 |
||||||
|
#dev-vcs/mercurial |
||||||
|
#gnustep-base/gnustep-base |
||||||
|
#media-gfx/graphviz |
||||||
|
#sci-libs/netcdf-fortran |
||||||
|
#sys-devel/clang |
||||||
|
#x11-libs/gtk+:3 |
||||||
|
) |
||||||
|
pkgs_latest=( |
||||||
|
# ~arch boost needed for py3.12 for now (needs 1.84) |
||||||
|
dev-build/b2 |
||||||
|
dev-libs/boost |
||||||
|
|
||||||
|
dev-build/autoconf |
||||||
|
dev-build/automake |
||||||
|
|
||||||
|
# ~arch only |
||||||
|
sci-libs/scalapack |
||||||
|
) |
||||||
|
pkgs=( "${pkgs_stable[@]}" "${pkgs_latest[@]}" ) |
||||||
|
|
||||||
|
emerge-webrsync --quiet |
||||||
|
|
||||||
|
# This means we can't really take advantage of the binhost but a lot of the |
||||||
|
# advantages of using Gentoo in CI come from the bleeding edge side. |
||||||
|
# With full ~arch, we don't get binpkgs for much at all. Instead, let's just |
||||||
|
# do ~arch for the test deps we have. |
||||||
|
#echo 'ACCEPT_KEYWORDS="~amd64"' >> /etc/portage/make.conf |
||||||
|
|
||||||
|
printf "%s\n" ${pkgs[@]} >> /var/lib/portage/world |
||||||
|
printf "%s\n" ${pkgs_latest[@]} >> /etc/portage/package.accept_keywords/meson |
||||||
|
cat /etc/portage/package.accept_keywords/meson |
||||||
|
|
||||||
|
cat <<-EOF > /etc/portage/package.accept_keywords/misc |
||||||
|
dev-lang/python-exec |
||||||
|
dev-lang/python |
||||||
|
EOF |
||||||
|
|
||||||
|
mkdir /etc/portage/binrepos.conf || true |
||||||
|
mkdir /etc/portage/profile || true |
||||||
|
cat <<-EOF > /etc/portage/package.use/ci |
||||||
|
dev-cpp/gtkmm X |
||||||
|
|
||||||
|
dev-libs/boost python |
||||||
|
sys-libs/zlib static-libs |
||||||
|
EOF |
||||||
|
|
||||||
|
cat <<-EOF >> /etc/portage/make.conf |
||||||
|
EMERGE_DEFAULT_OPTS="--complete-graph --quiet=y --quiet-build=y --jobs=$(nproc) --load-average=$(nproc)" |
||||||
|
EMERGE_DEFAULT_OPTS="\${EMERGE_DEFAULT_OPTS} --autounmask-write --autounmask-continue --autounmask-keep-keywords=y --autounmask-use=y" |
||||||
|
EMERGE_DEFAULT_OPTS="\${EMERGE_DEFAULT_OPTS} --binpkg-respect-use=y" |
||||||
|
|
||||||
|
FEATURES="\${FEATURES} parallel-fetch parallel-install -merge-sync" |
||||||
|
FEATURES="\${FEATURES} getbinpkg binpkg-request-signature" |
||||||
|
|
||||||
|
# These don't work in Docker, so reduce noise in logs |
||||||
|
FEATURES="\${FEATURES} -ipc-sandbox -network-sandbox -pid-sandbox" |
||||||
|
EOF |
||||||
|
|
||||||
|
# TODO: Enable all Pythons / add multiple jobs with diff. Python impls? |
||||||
|
#echo '*/* PYTHON_TARGETS: python3_10 python3_11 python3_12' >> /etc/portage/package.use/python |
||||||
|
echo '*/* PYTHON_TARGETS: python3_12' >> /etc/portage/package.use/python |
||||||
|
cat <<-EOF >> /etc/portage/profile/use.mask |
||||||
|
-python_targets_python3_12 |
||||||
|
-python_single_target_python3_12 |
||||||
|
EOF |
||||||
|
cat <<-EOF >> /etc/portage/profile/use.stable.mask |
||||||
|
-python_targets_python3_12 |
||||||
|
-python_single_target_python3_12 |
||||||
|
EOF |
||||||
|
|
||||||
|
echo 'dev-lang/python ensurepip' >> /etc/portage/package.use/python |
||||||
|
|
||||||
|
# Silly mono circular dep |
||||||
|
#USE=minimal emerge --oneshot dev-lang/mono |
||||||
|
|
||||||
|
# If we don't want to do this, we could use the 'portage' container instead |
||||||
|
# so the stage3/repo match. |
||||||
|
emerge --update --deep --changed-use @world |
||||||
|
qlop -d 'yesterday' |
||||||
|
|
||||||
|
env-update && . /etc/profile |
||||||
|
|
||||||
|
rm /usr/lib/python/EXTERNALLY-MANAGED |
||||||
|
python3 -m ensurepip |
||||||
|
install_python_packages |
||||||
|
python3 -m pip install "${base_python_pkgs[@]}" |
Loading…
Reference in new issue