wxWidgets/build/tools/before_install.sh
Vadim Zeitlin 467d96c03d Add a Fedora CI build using Circle CI
This is a backport of the following commits from master:

934aa20d69 Build and run tests on Circle CI too
9f1bf3982d Install RPM required for Shift-JIS support in Fedora
64aefb5f4e Install locales used by the tests under Fedora
84120664ca Make Circe CI script more consistent with Cirrus CI
bf3951866c Install Git before checking out the sources
3eb78a328e Use ccache in Circle CI job
e63fe497ab Install more optional libraries under Fedora
a527b2714d Allow installing extra packages in before_install.sh
b430a6104c Add a minimal Fedora build using Circle CI
382db6439b Install required packages on RedHat-like systems
2022-08-14 17:17:50 +02:00

127 lines
5.2 KiB
Bash
Executable File

#!/bin/sh
#
# This script is used by CI jobs to install the dependencies
# before building wxWidgets but can also be run by hand if necessary (but
# currently it only works for the OS versions used by the CI builds).
#
# WX_EXTRA_PACKAGES environment variable may be predefined to contain extra
# packages to install (in an OS-specific way) in addition to the required ones.
set -e
SUDO=sudo
case $(uname -s) in
Linux)
# Debian/Ubuntu
if [ -f /etc/apt/sources.list ]; then
# Show information about the repositories and priorities used.
echo 'APT sources used:'
$SUDO grep --no-messages '^[^#]' /etc/apt/sources.list /etc/apt/sources.list.d/* || true
echo '--- End of APT files dump ---'
run_apt() {
echo "-> Running apt-get $@"
# Disable some (but not all) output.
$SUDO apt-get -q -o=Dpkg::Use-Pty=0 "$@"
rc=$?
echo "-> Done with $rc"
return $rc
}
codename=$(lsb_release --codename --short)
if [ "$wxUSE_ASAN" = 1 ]; then
# Enable the `-dbgsym` repositories.
echo "deb http://ddebs.ubuntu.com ${codename} main restricted universe multiverse
deb http://ddebs.ubuntu.com ${codename}-updates main restricted universe multiverse" | \
$SUDO tee --append /etc/apt/sources.list.d/ddebs.list >/dev/null
# Import the debug symbol archive signing key from the Ubuntu server.
# Note that this command works only on Ubuntu 18.04 LTS and newer.
run_apt install -y ubuntu-dbgsym-keyring
# Install the symbols to allow LSAN suppression list to work.
dbgsym_pkgs='libfontconfig1-dbgsym libglib2.0-0-dbgsym libgtk-3-0-dbgsym libatk-bridge2.0-0-dbgsym'
fi
run_apt update || echo 'Failed to update packages, but continuing nevertheless.'
case "$wxCONFIGURE_FLAGS" in
*--with-directfb*) libtoolkit_dev='libdirectfb-dev' ;;
*--with-motif*) libtoolkit_dev='libmotif-dev libxmu-dev' ;;
*--with-qt*) libtoolkit_dev='qtdeclarative5-dev libqt5opengl5-dev';;
*--with-x11*) extra_deps='libpango1.0-dev' ;;
*--disable-gui*) ;;
*)
case "$wxGTK_VERSION" in
3) libtoolkit_dev=libgtk-3-dev
extra_deps='libwebkit2gtk-4.0-dev libgspell-1-dev'
;;
2) libtoolkit_dev=libgtk2.0-dev
extra_deps='libwebkitgtk-dev'
;;
*) echo 'Please specify wxGTK_VERSION explicitly.' >&2
exit 1
;;
esac
case "$codename" in
jammy)
# Under Ubuntu 22.04 installing libgstreamer1.0-dev
# fails because it depends on libunwind-dev which
# is not going to be installed because it conflicts
# with the pre-installed (in GitHub Actions
# environment) libc++-dev, so we need to install it
# directly to avoid errors later.
extra_deps="$extra_deps libunwind-dev"
;;
esac
extra_deps="$extra_deps \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libglu1-mesa-dev"
esac
pkg_install="$pkg_install $libtoolkit_dev gdb ${WX_EXTRA_PACKAGES}"
extra_deps="$extra_deps libcurl4-openssl-dev libsecret-1-dev libnotify-dev"
for pkg in $extra_deps; do
if $(apt-cache pkgnames | grep -q $pkg) ; then
pkg_install="$pkg_install $pkg"
else
echo "Not installing non-existent package $pkg"
fi
done
if ! run_apt install -y $pkg_install $dbgsym_pkgs; then
if [ -z "$dbgsym_pkgs" ]; then
exit 1
fi
# Retry without dbgsym packages that currently fail to install
# under Ubuntu Focal (20.04).
echo 'Installing with dbgsym packages failed, retrying without...'
if ! run_apt install -y $pkg_install; then
exit 1
fi
else
touch wx_dbgsym_available
fi
fi
if [ -f /etc/redhat-release ]; then
dnf install -y ${WX_EXTRA_PACKAGES} expat-devel findutils g++ git-core gspell-devel gstreamer1-plugins-base-devel gtk3-devel make libcurl-devel libGLU-devel libjpeg-devel libnotify-devel libpng-devel libSM-devel libsecret-devel libtiff-devel SDL-devel webkit2gtk3-devel zlib-devel
fi
;;
FreeBSD)
pkg install -q -y ${WX_EXTRA_PACKAGES} gspell gstreamer1 gtk3 jpeg-turbo libnotify libsecret mesa-libs pkgconf png tiff webkit2-gtk3
;;
Darwin)
;;
esac