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