Add Debian dependency installer and run it from all.sh

This commit is contained in:
2025-12-14 18:32:50 +01:00
parent e352e92c3c
commit 6c00ac8ee6
2 changed files with 105 additions and 0 deletions

View File

@@ -7,6 +7,10 @@ cd "$ROOT"
# Defaults suitable for automation # Defaults suitable for automation
: "${CLEAN:=1}" : "${CLEAN:=1}"
: "${PREFIX:=/usr/local/imap}" : "${PREFIX:=/usr/local/imap}"
: "${DEPS_AUTO:=1}"
# Install deps first (Debian/Ubuntu)
./scripts/deps-debian.sh
./scripts/apply-patches.sh ./scripts/apply-patches.sh
CLEAN="$CLEAN" ./scripts/build.sh CLEAN="$CLEAN" ./scripts/build.sh

101
scripts/deps-debian.sh Executable file
View File

@@ -0,0 +1,101 @@
#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<USAGE
Usage: $0
Installs required build dependencies on Debian/Ubuntu using apt.
Environment:
DEPS_AUTO (default: 1) set to 0 to only print missing packages and exit non-zero
APT_YES (default: 1) set to 0 to run apt without -y
USAGE
}
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
usage
exit 0
fi
DEPS_AUTO="${DEPS_AUTO:-1}"
APT_YES="${APT_YES:-1}"
# Must have apt
if ! command -v apt-get >/dev/null 2>&1; then
echo "ERROR: apt-get not found. This script supports Debian/Ubuntu only." >&2
exit 1
fi
# Basic distro check (soft)
if [[ -r /etc/os-release ]]; then
. /etc/os-release
case "${ID:-}" in
debian|ubuntu|linuxmint|pop) : ;;
*)
echo "WARN: Detected ID=${ID:-unknown}. Proceeding anyway (apt-based system assumed)." >&2
;;
esac
fi
# Packages needed to build UW-IMAP 2007f with modern toolchains
PKGS=(
build-essential
autoconf
automake
libtool
pkg-config
libssl-dev
libpam0g-dev
libc6-dev
libcrypt-dev
bison
flex
patch
ca-certificates
)
missing=()
for p in "${PKGS[@]}"; do
if dpkg -s "$p" >/dev/null 2>&1; then
continue
fi
missing+=( "$p" )
done
if (( ${#missing[@]} == 0 )); then
echo "==> Dependencies already satisfied."
exit 0
fi
echo "==> Missing packages:"
printf ' - %s\n' "${missing[@]}"
if [[ "$DEPS_AUTO" != "1" ]]; then
echo "DEPS_AUTO=0 -> not installing automatically." >&2
exit 2
fi
# Choose privilege escalation
SUDO=""
if [[ "$(id -u)" -ne 0 ]]; then
if command -v sudo >/dev/null 2>&1; then
SUDO="sudo"
else
echo "ERROR: Not running as root and sudo not found." >&2
exit 1
fi
fi
yesflag=()
if [[ "$APT_YES" == "1" ]]; then
yesflag=( -y )
fi
echo "==> Updating apt index"
$SUDO apt-get update
echo "==> Installing dependencies"
$SUDO apt-get install "${yesflag[@]}" "${missing[@]}"
echo "==> Done."