The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
4.3 KiB
160 lines
4.3 KiB
#!/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-util/gdbus-codegen |
|
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" |
|
|
|
# prevent painfully verbose Github Actions logs. |
|
FETCHCOMMAND='wget --no-show-progress -t 3 -T 60 --passive-ftp -O "\\\${DISTDIR}/\\\${FILE}" "\\\${URI}"' |
|
|
|
# Fortran is no longer enabled by default in 23.0, but we do need and use it. |
|
USE="\${USE} fortran" |
|
|
|
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[@]}" |
|
|
|
echo "source /etc/profile" >> /ci/env_vars.sh
|
|
|