155 lines
4.0 KiB
Bash
Executable File
155 lines
4.0 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eufx
|
|
|
|
FEATURE_SET=min
|
|
ARCH=amd64
|
|
|
|
# See apt.conf(5)
|
|
DEBUG_OPTS=
|
|
#DEBUG_OPTS="$DEBUG_OPTS -oDebug::pkgProblemResolver=1"
|
|
|
|
# Given a list of i386 packages, this call makes sure the amd64 variants
|
|
# of the development libraries are not installed
|
|
remove_64bit_libdev_packages()
|
|
{
|
|
flags=$-
|
|
set +x ;# Disable tracing for this func
|
|
rlist=""
|
|
for p in $PACKAGES; do
|
|
# Identify packages starting with 'lib' and ending with '-dev:i386'
|
|
if [ "${p#lib}" != "$p" -a "${p%-dev:i386}" != "$p" ]; then
|
|
p64=${p%i386}amd64
|
|
if dpkg -s $p64 >/dev/null 2>&1 ; then
|
|
rlist="$rlist ${p%i386}amd64"
|
|
fi
|
|
fi
|
|
done
|
|
if [ -n "$rlist" ]; then
|
|
echo "** Some 64-bit development packages appear to clash with i386 packages"
|
|
echo "**$rlist"
|
|
apt-get remove $rlist || :
|
|
fi
|
|
# Restore tracing, if enabled on entry
|
|
set -$flags
|
|
}
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# M A I N
|
|
# ----------------------------------------------------------------------------
|
|
|
|
if [ $# -ge 1 ]; then
|
|
FEATURE_SET="$1"
|
|
shift
|
|
fi
|
|
if [ $# -ge 1 ]; then
|
|
ARCH="$1"
|
|
shift
|
|
fi
|
|
APT_EXTRA_ARGS="$@"
|
|
|
|
# common build tools for all architectures and feature sets
|
|
PACKAGES=" \
|
|
autoconf \
|
|
automake \
|
|
clang \
|
|
gcc \
|
|
g++ \
|
|
libtool \
|
|
make \
|
|
nasm \
|
|
pkg-config \
|
|
check \
|
|
libcmocka-dev
|
|
"
|
|
|
|
# libfreetype-dev package was renamed from libfreetype6-dev in older
|
|
# versions
|
|
case `lsb_release -si`/`lsb_release -sr` in
|
|
Debian/10) LIBFREETYPE_DEV=libfreetype6-dev ;;
|
|
Ubuntu/18.*) LIBFREETYPE_DEV=libfreetype6-dev ;;
|
|
*) LIBFREETYPE_DEV=libfreetype-dev
|
|
esac
|
|
|
|
case "$ARCH"
|
|
in
|
|
amd64)
|
|
PACKAGES_AMD64_MIN=" \
|
|
libpam0g-dev \
|
|
libssl-dev \
|
|
libx11-dev \
|
|
libxrandr-dev \
|
|
libxfixes-dev"
|
|
|
|
case "$FEATURE_SET"
|
|
in
|
|
min)
|
|
PACKAGES="$PACKAGES $PACKAGES_AMD64_MIN"
|
|
;;
|
|
max)
|
|
PACKAGES="$PACKAGES \
|
|
$PACKAGES_AMD64_MIN \
|
|
$LIBFREETYPE_DEV \
|
|
libfuse-dev \
|
|
libjpeg-dev \
|
|
libmp3lame-dev \
|
|
libfdk-aac-dev \
|
|
libimlib2-dev \
|
|
libopus-dev \
|
|
libpixman-1-dev"
|
|
;;
|
|
*)
|
|
echo "unsupported feature set: $FEATURE_SET"
|
|
exit 1;
|
|
;;
|
|
esac
|
|
apt-get update
|
|
apt-get upgrade
|
|
;;
|
|
|
|
i386)
|
|
# This list is not as complete as the amd64 list. It currently
|
|
# supports 32-bit CI building only, rather than being a generic
|
|
# build support tool.
|
|
# - Ubuntu 18.04 -> 20.04
|
|
# Removed fdk-aac-dev:i386 and libfuse-dev:i386
|
|
PACKAGES="$PACKAGES \
|
|
g++-multilib \
|
|
gcc-multilib \
|
|
$LIBFREETYPE_DEV:i386 \
|
|
libgl1-mesa-dev:i386 \
|
|
libglu1-mesa-dev:i386 \
|
|
libjpeg-dev:i386 \
|
|
libimlib2-dev:i386 \
|
|
libmp3lame-dev:i386 \
|
|
libopus-dev:i386 \
|
|
libpam0g-dev:i386 \
|
|
libssl-dev:i386 \
|
|
libx11-dev:i386 \
|
|
libxext-dev:i386 \
|
|
libxfixes-dev:i386 \
|
|
libxrandr-dev:i386 \
|
|
libxrender-dev:i386 \
|
|
libsubunit-dev:i386 \
|
|
check:i386 \
|
|
libcmocka-dev:i386"
|
|
|
|
dpkg --add-architecture i386
|
|
dpkg --print-architecture
|
|
dpkg --print-foreign-architectures
|
|
apt-get update
|
|
remove_64bit_libdev_packages $PACKAGES
|
|
apt-get install libc6:i386 libgcc-s1:i386 libstdc++6:i386 libatomic1:i386
|
|
;;
|
|
*)
|
|
echo "unsupported architecture: $ARCH"
|
|
exit 1;
|
|
;;
|
|
esac
|
|
|
|
apt-get -yq \
|
|
--no-install-suggests \
|
|
--no-install-recommends \
|
|
$DEBUG_OPTS \
|
|
$APT_EXTRA_ARGS \
|
|
install $PACKAGES
|