64 lines
2.2 KiB
Bash
64 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
|||
|
|
|
||
|
|
set -Eeuo pipefail
|
||
|
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
|
||
|
|
# shellcheck source=lib.sh
|
||
|
|
. "${SCRIPT_DIR}/lib.sh"
|
||
|
|
|
||
|
|
MODE=check
|
||
|
|
case "${1:---check}" in
|
||
|
|
--check) MODE=check ;;
|
||
|
|
--install) MODE=install ;;
|
||
|
|
-h|--help)
|
||
|
|
printf 'Usage: install-build-deps.sh [--check|--install]\n'
|
||
|
|
exit 0
|
||
|
|
;;
|
||
|
|
*) die "unknown argument: $1" ;;
|
||
|
|
esac
|
||
|
|
|
||
|
|
require_arm64_trixie
|
||
|
|
need_command dpkg-query
|
||
|
|
|
||
|
|
packages=(
|
||
|
|
adduser autoconf automake autopoint autotools-dev build-essential ca-certificates
|
||
|
|
cmake default-jre devscripts dpkg-dev file gawk gcc g++ gdc gettext git gperf
|
||
|
|
hwdata jq libasound2-dev libass-dev libavahi-client-dev libavahi-common-dev
|
||
|
|
libbluetooth-dev libbluray-dev libbz2-dev libcdio++-dev libcdio-dev libcec-dev
|
||
|
|
libcrossguid-dev libcwiid-dev libcurl4-openssl-dev libdbus-1-dev libdrm-dev
|
||
|
|
libegl1-mesa-dev libenca-dev libexiv2-dev libflac-dev libfmt-dev
|
||
|
|
libfontconfig-dev libfreetype6-dev libfribidi-dev libfstrcmp-dev libgbm-dev
|
||
|
|
libgcrypt20-dev libgif-dev libgl1-mesa-dev libgles2-mesa-dev libglu1-mesa-dev
|
||
|
|
libgnutls28-dev libgpg-error-dev libgtest-dev libinput-dev libiso9660-dev
|
||
|
|
libjpeg-dev liblcms2-dev liblirc-dev libltdl-dev liblzo2-dev libmariadb-dev
|
||
|
|
libmicrohttpd-dev libnfs-dev libogg-dev libp8-platform-dev libpcre2-dev
|
||
|
|
libplist-dev libpng-dev libpulse-dev libshairplay-dev libsmbclient-dev
|
||
|
|
libspdlog-dev libsqlite3-dev libssl-dev libtag1-dev libtiff-dev
|
||
|
|
libtinyxml2-dev libtinyxml-dev libtool libudev-dev libunistring-dev
|
||
|
|
libvorbis-dev libxkbcommon-dev libxslt1-dev libxt-dev lsb-release meson nasm
|
||
|
|
ninja-build nlohmann-json3-dev patch pkg-config python3-dev python3-pil
|
||
|
|
python3-pip rapidjson-dev swig unzip uuid-dev zip zlib1g-dev
|
||
|
|
)
|
||
|
|
|
||
|
|
missing=()
|
||
|
|
for package in "${packages[@]}"; do
|
||
|
|
if ! dpkg-query -W -f='${db:Status-Abbrev}' "${package}" 2>/dev/null | grep -q '^ii '; then
|
||
|
|
missing+=("${package}")
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
|
||
|
|
if ((${#missing[@]} == 0)); then
|
||
|
|
log "all build dependencies are installed"
|
||
|
|
exit 0
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [[ "${MODE}" == "check" ]]; then
|
||
|
|
printf 'Missing build packages:\n'
|
||
|
|
printf ' %s\n' "${missing[@]}"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
[[ "${EUID}" -eq 0 ]] || die "--install must run as root (use sudo)"
|
||
|
|
export DEBIAN_FRONTEND=noninteractive
|
||
|
|
apt-get update
|
||
|
|
apt-get install -y --no-install-recommends "${missing[@]}"
|