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.
152 lines
3.9 KiB
152 lines
3.9 KiB
1 year ago
|
#!/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[@]}"
|