64 lines
1.8 KiB
Bash
Executable File
64 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
PROVENANCE_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd -- "${PROVENANCE_ROOT}/../.." && pwd)"
|
|
SOURCE_ARCHIVE_DIRECTORY="${1:-${PROJECT_ROOT}/.artifacts/native/gamescope/sources}"
|
|
OUTPUT_DIRECTORY="${2:-${PROJECT_ROOT}/.artifacts/native/gamescope}"
|
|
ARTIFACT_NAME="gamescope-3.16.20-ubuntu26.04-amd64"
|
|
SHIPPED_ARTIFACT="${PROJECT_ROOT}/src/ptlinux/native/${ARTIFACT_NAME}"
|
|
|
|
if [[ ! -d "$SOURCE_ARCHIVE_DIRECTORY" ]]
|
|
then
|
|
printf 'Gamescope source-archive directory does not exist: %s\n' \
|
|
"$SOURCE_ARCHIVE_DIRECTORY" >&2
|
|
exit 2
|
|
fi
|
|
mkdir -p -- "$OUTPUT_DIRECTORY"
|
|
SOURCE_ARCHIVE_DIRECTORY="$(cd -- "$SOURCE_ARCHIVE_DIRECTORY" && pwd)"
|
|
OUTPUT_DIRECTORY="$(cd -- "$OUTPUT_DIRECTORY" && pwd)"
|
|
if [[ "${OUTPUT_DIRECTORY}/${ARTIFACT_NAME}" == "$SHIPPED_ARTIFACT" ]]
|
|
then
|
|
printf '%s\n' "Refusing to overwrite the shipped Gamescope executable." >&2
|
|
exit 2
|
|
fi
|
|
|
|
(
|
|
cd "$SOURCE_ARCHIVE_DIRECTORY"
|
|
sha256sum --check "${PROVENANCE_ROOT}/source.sha256"
|
|
)
|
|
|
|
if [[ -n "${CONTAINER_ENGINE:-}" ]]
|
|
then
|
|
ENGINE="$CONTAINER_ENGINE"
|
|
elif command -v podman >/dev/null 2>&1
|
|
then
|
|
ENGINE="podman"
|
|
elif command -v docker >/dev/null 2>&1
|
|
then
|
|
ENGINE="docker"
|
|
else
|
|
printf '%s\n' "Docker or Podman is required to rebuild Gamescope." >&2
|
|
exit 1
|
|
fi
|
|
if ! command -v "$ENGINE" >/dev/null 2>&1
|
|
then
|
|
printf 'Container engine was not found: %s\n' "$ENGINE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
rm -f -- "${OUTPUT_DIRECTORY}/${ARTIFACT_NAME}"
|
|
"$ENGINE" run --rm --platform linux/amd64 \
|
|
--env "HOST_UID=$(id -u)" \
|
|
--env "HOST_GID=$(id -g)" \
|
|
--volume "${PROJECT_ROOT}:/workspace:ro" \
|
|
--volume "${SOURCE_ARCHIVE_DIRECTORY}:/sources:ro" \
|
|
--volume "${OUTPUT_DIRECTORY}:/output" \
|
|
ubuntu:26.04 \
|
|
bash /workspace/native/gamescope/build-in-container.sh
|
|
(
|
|
cd "$OUTPUT_DIRECTORY"
|
|
sha256sum --check "${PROVENANCE_ROOT}/binary.sha256"
|
|
)
|