1
0
Fork 0
php-sqlcipher/scripts/package.sh
2025-10-14 17:40:53 +11:00

84 lines
2.3 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
# Space-separated list of PHP major.minor versions to build
PHPS="${PHPS:-"7.4 8.0 8.1 8.2 8.3 8.4"}"
# Matrix of base images with their distro codenames (image|codename)
BASE_MATRIX=(
"debian:13|trixie"
"debian:12|bookworm"
"ubuntu:24.04|noble"
"ubuntu:22.04|jammy"
)
# Where to put artifacts on the host
OUT_DIR="${OUT_DIR:-"$(cd "$(dirname "$0")/.."; pwd)/build"}"
# Docker binary
DOCKER_BIN="${DOCKER_BIN:-docker}"
# Pass extra args to `docker build` if needed
EXTRA_BUILD_ARGS=${EXTRA_BUILD_ARGS:-}
export DOCKER_BUILDKIT=1
# Always run from scripts/ so relative paths work the same
cd "$(dirname "$0")"
# Dockerfile is in parent; use repo root as build context
DOCKERFILE="../Dockerfile"
CONTEXT=".."
mkdir -p "$OUT_DIR"
echo "==> Output directory: $OUT_DIR"
echo "==> Dockerfile: $DOCKERFILE (context: $CONTEXT)"
echo "==> PHP versions: $PHPS"
echo "==> Base matrix:"
printf ' - %s\n' "${BASE_MATRIX[@]}"
for entry in "${BASE_MATRIX[@]}"; do
IFS='|' read -r BASE_IMAGE CODENAME <<<"$entry"
for PHP_VER in $PHPS; do
TAG="pkg-php${PHP_VER}-${CODENAME}"
DEST_DIR="${OUT_DIR}/${CODENAME}/php${PHP_VER}"
echo
echo "==== Building: base=${BASE_IMAGE} (${CODENAME}), php=${PHP_VER} -> tag=${TAG}"
echo " Artifacts -> ${DEST_DIR}"
mkdir -p "${DEST_DIR}"
# Build the image.
$DOCKER_BIN build \
-f "${DOCKERFILE}" \
--build-arg "BASE_IMAGE=${BASE_IMAGE}" \
--build-arg "PHP_VER=${PHP_VER}" \
--progress=plain \
-t "${TAG}" \
${EXTRA_BUILD_ARGS} \
"${CONTEXT}"
# Export /dist/ from the image to the host
CID="$($DOCKER_BIN create "${TAG}" sh -c 'exit 0')"
# Copy artifacts
if ! $DOCKER_BIN cp "${CID}:/dist/." "${DEST_DIR}/"; then
echo "!! No /dist found in image ${TAG}."
else
#find "${DEST_DIR}" -type f ! -name "*.deb" -delete || true
# Sanity check
if compgen -G "${DEST_DIR}/*.deb" >/dev/null; then
echo "==> Collected $(ls -1 "${DEST_DIR}"/*.deb | wc -l | tr -d ' ') .deb files"
else
echo "!! No .deb files found for ${TAG} after copy."
fi
fi
done
done
echo
echo " Done. All artifacts are under: ${OUT_DIR}"
echo " Structure: build/<codename>/php<version>/*.deb"