ac640762d7
build / build (push) Successful in 2m13s
- patchelf gl4es's embedded SONAME to libGL.so so AGP's jniLibs packaging (which drops any file not literally named "*.so") and the dynamic linker's NEEDED-entry resolution (by embedded SONAME, not filename) finally agree - fixes the "library \"libGL.so.1\" not found" crash seen on real Quest hardware. - QuestShockActivity now checks that res/data and res/sound exist before starting the native engine, showing an explanatory dialog instead of crashing on init_popups' unchecked NULL resource load when a fresh install has no game data copied in yet. - dist/questshock-<version>-android-arm64.apk is now versioned from the same git-tag-or-dev-placeholder scheme as the desktop tarball (build-image/version.sh, shared by both via the Makefile and build-apk.sh). - build-image/prepare-android-project.sh (prep logic extracted out of build-apk.sh) can now stage android/ for a native build directly in Android Studio (--host-paths), exporting the prebuilt SDL2/SDL2_mixer/ fluidsynth-lite/gl4es libraries and writing host-resolvable paths, instead of only ever building inside the Docker image. - Corrected GET_ASSETS.txt/GET_ASSETS_QUEST.txt, which wrongly described merging res/pc/hd and res/pc/cdrom trees out of the raw installer's sshock.kpf - an already-installed copy's res/data res/sound can just be copied directly, with extract_assets.sh only needed from the raw installer.
62 lines
2.0 KiB
Bash
Executable File
62 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Runs the build-image against the repo to compile engine/ (the vendored
|
|
# Shockolate snapshot), entirely offline - every dependency it needs
|
|
# (SDL2, SDL2_mixer, fluidsynth-lite, a MIDI soundfont) was already built
|
|
# into the image by ./build-image.sh.
|
|
#
|
|
# Output lands in engine/.build-output/ - run `make dist` afterwards to
|
|
# assemble it (together with the game assets from res/assets/ss_ee/) into
|
|
# dist/.
|
|
#
|
|
# Usage: ./run-image.sh [command...]
|
|
# With no arguments, runs the engine build. Pass a command (e.g. `bash`)
|
|
# to get a shell in the build environment instead, useful for debugging
|
|
# a failed build.
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "${BASH_SOURCE[0]}")"
|
|
ROOT="$(pwd)"
|
|
|
|
fail() { echo "PREFLIGHT FAIL: $*" >&2; exit 1; }
|
|
|
|
command -v docker >/dev/null 2>&1 \
|
|
|| fail "docker not found in PATH"
|
|
|
|
IMAGE="${REGISTRY_IMAGE:-questshock/builder}"
|
|
if [ -f "$ROOT/registry.env" ]; then
|
|
# shellcheck disable=SC1091
|
|
source "$ROOT/registry.env"
|
|
IMAGE="${REGISTRY_IMAGE:-$IMAGE}"
|
|
fi
|
|
|
|
IMAGE_TAG="$(<"$ROOT/build-image/VERSION")"
|
|
[ -n "$IMAGE_TAG" ] || fail "build-image/VERSION is empty"
|
|
IMAGE="$IMAGE:$IMAGE_TAG"
|
|
|
|
docker image inspect "$IMAGE" >/dev/null 2>&1 \
|
|
|| fail "$IMAGE not found locally - run ./build-image.sh first"
|
|
|
|
TTY_FLAGS="-i"
|
|
[ -t 1 ] && TTY_FLAGS="-it"
|
|
|
|
# HOST_REPO_ROOT: lets scripts running in the container (e.g.
|
|
# build-image/prepare-android-project.sh --host-paths) write paths that
|
|
# resolve on the HOST filesystem instead of this container's own
|
|
# /workspace - needed so a gradlew/Android Studio running natively on the
|
|
# host afterwards can find them.
|
|
# shellcheck disable=SC2086
|
|
docker run --rm $TTY_FLAGS \
|
|
-v "$ROOT:/workspace" \
|
|
-e HOST_UID="$(id -u)" \
|
|
-e HOST_GID="$(id -g)" \
|
|
-e HOST_REPO_ROOT="$ROOT" \
|
|
"$IMAGE" \
|
|
"$@"
|
|
|
|
if [ "$#" -eq 0 ]; then
|
|
echo
|
|
echo "This only compiled the engine (engine/.build-output/) - it does not"
|
|
echo "create dist/ by itself. Run 'make dist' next to assemble a runnable"
|
|
echo "copy (or 'make package' for a redistributable tarball)."
|
|
fi
|