#!/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
  dev-util/bindgen

  dev-libs/elfutils
  dev-libs/protobuf

  # modules
  dev-util/gdbus-codegen
  dev-util/glib-utils
  dev-libs/gobject-introspection
  dev-util/itstool
  dev-util/wayland-scanner
  dev-libs/wayland-protocols
  dev-libs/wayland

  # custom deps
  dev-libs/boost
  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
  dev-qt/qtwidgets:5
  llvm-core/llvm
  dev-qt/qtdeclarative:6
  dev-qt/qttools
  net-print/cups
  dev-util/vulkan-headers
  media-libs/vulkan-loader

  # misc
  app-admin/sudo
  app-text/doxygen
  sys-devel/bison
  sys-devel/reflex
  sys-devel/gettext
  # needed by vala
  x11-libs/gtk+

  # 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-vcs/mercurial
  #gnustep-base/gnustep-base
  #media-gfx/graphviz
  #sci-libs/netcdf-fortran
  #llvm-core/clang
  #x11-libs/gtk+:3
)
pkgs_latest=(
  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
EOF

mkdir /etc/portage/binrepos.conf || true
mkdir /etc/portage/profile || true
cat <<-EOF > /etc/portage/package.use/ci
	dev-cpp/gtkmm X
	media-libs/libglvnd X
	media-libs/freetype harfbuzz
	x11-libs/cairo X
	x11-libs/libxkbcommon X
	dev-lang/rust clippy rustfmt
	dev-lang/rust-bin clippy rustfmt
	dev-libs/boost python
	sci-libs/hdf5 cxx

	# slimmed binpkg, nomesa
	media-libs/libsdl2 -opengl -wayland -alsa -dbus -gles2 -udev -vulkan

	# Some of these settings are needed just to get the binpkg but
	# aren't negative to have anyway
	sys-devel/gcc ada d jit
	>=sys-devel/gcc-13 ada objc objc++
	sys-devel/gcc pgo lto

	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

# Maybe we could enable all Pythons / add multiple jobs with diff. Python impls?
#echo '*/* PYTHON_TARGETS: python3_10 python3_11 python3_12' >> /etc/portage/package.use/python

# The below is for cases where we want non-default Python (either to get
# better coverage from something older, or something newer)
#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

# For inexplicable reasons, Gentoo only packages valac as valac-$(version) so
# no software can locate it. Parse the installed version out of portage and
# export it to meson.
VALA_VER=$(portageq best_version / dev-lang/vala)
VALA_VER=${VALA_VER#dev-lang/vala-}
VALA_VER=${VALA_VER%.*}
echo "export VALAC=/usr/bin/valac-${VALA_VER}" >> /ci/env_vars.sh
echo "export VAPIGEN=/usr/bin/vapigen-${VALA_VER}" >> /ci/env_vars.sh

# Cleanup to avoid including large contents in the docker image.
# We don't need cache files that are side artifacts of installing packages.
# We also don't need the gentoo tree -- the official docker image doesn't
# either, and expects you to use emerge-webrsync once you need it.
rm -rf /var/cache/binpkgs
rm -rf /var/cache/distfiles
rm -rf /var/db/repos/gentoo
