52 lines
2.4 KiB
Bash
52 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)
|
|
VERSION=22.10.1
|
|
PKG="$ROOT/deploys/packages"
|
|
SRC_ARCHIVE="$PKG/asterisk-$VERSION-source.tar.gz"
|
|
SRC_SHA="$PKG/asterisk-$VERSION-source.sha256"
|
|
DEPS="$PKG/asterisk-$VERSION-deps"
|
|
OUT=${OUT_DIR:-"$PKG/asterisk-$VERSION-native"}
|
|
JOBS=${JOBS:-1}
|
|
WORK=${WORK_DIR:-"$ROOT/.local/asterisk-build-$VERSION"}
|
|
NONPROD=${NONPROD:-0}
|
|
OS_ID=$(. /etc/os-release; printf '%s' "$ID")
|
|
OS_VERSION=$(. /etc/os-release; printf '%s' "$VERSION_ID")
|
|
source "$ROOT/deploys/cell/native-platform.sh"
|
|
require_native_platform "$OS_ID" "$OS_VERSION" "$(uname -m)" "debian:$OS_VERSION:x86_64" "$NONPROD"
|
|
|
|
[[ -f "$SRC_ARCHIVE" && -f "$SRC_SHA" ]] || { echo 'Asterisk source archive/checksum missing' >&2; exit 1; }
|
|
[[ -d "$DEPS" ]] || { echo 'Asterisk dependency cache missing' >&2; exit 1; }
|
|
command -v make >/dev/null || { echo 'make is required; install deploys/cell/debian-build-packages.lock' >&2; exit 1; }
|
|
(cd "$PKG" && sha256sum -c "$(basename "$SRC_SHA")")
|
|
rm -rf -- "$WORK" "$OUT"
|
|
mkdir -p "$WORK" "$OUT/cache"
|
|
cp "$DEPS"/*.tar.bz2 "$OUT/cache/"
|
|
tar -xzf "$SRC_ARCHIVE" -C "$WORK"
|
|
SRC="$WORK/asterisk-$VERSION"
|
|
cd "$SRC"
|
|
EXTERNALS_CACHE_DIR="$OUT/cache" ./configure --with-pjproject-bundled --with-jansson-bundled
|
|
# Sound archives are not part of the pinned offline inputs; never fetch
|
|
# unverified downloads during an otherwise reproducible native build.
|
|
EXTERNALS_CACHE_DIR="$OUT/cache" make menuselect.makeopts
|
|
./menuselect/menuselect --disable CORE-SOUNDS-EN-GSM --disable MOH-OPSOUND-WAV menuselect.makeopts
|
|
EXTERNALS_CACHE_DIR="$OUT/cache" make -j"$JOBS"
|
|
STAGE="$WORK/stage"
|
|
rm -rf -- "$STAGE"
|
|
mkdir -p "$STAGE"
|
|
EXTERNALS_CACHE_DIR="$OUT/cache" make install DESTDIR="$STAGE"
|
|
# Cell configuration is management-owned and must not be overwritten by this
|
|
# binary package.
|
|
rm -rf -- "$STAGE/etc/asterisk"
|
|
tar -C "$STAGE" -cpf "$OUT/asterisk-$VERSION-native-stage.tar" .
|
|
cp "$ROOT/deploys/cell/install-asterisk-user.sh" "$OUT/install-asterisk-user.sh"
|
|
cp "$ROOT/deploys/cell/native-platform.sh" "$OUT/native-platform.sh"
|
|
printf 'debian:%s:x86_64\n' "$OS_VERSION" > "$OUT/build-platform"
|
|
chmod 0755 "$OUT/install-asterisk-user.sh"
|
|
(
|
|
cd "$OUT"
|
|
sha256sum "asterisk-$VERSION-native-stage.tar" > "asterisk-$VERSION-native-stage.tar.sha256"
|
|
)
|
|
printf 'native_stage=%s\nservice=%s\n' "$OUT/asterisk-$VERSION-native-stage.tar" "$OUT/asterisk.service"
|