xrdp/scripts/install_xrdp_build_dependen...

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