a2fb95e57b
build / build (push) Successful in 3m5s
issues on vboxsf-mounted checkouts New `make dist-win`/`package-win` targets (folded into `dist`/`package` alongside the renamed `dist-linux`/`package-linux`) cross-compile systemshock.exe via MinGW, using prebuilt SDL2/SDL2_mixer/GLEW/ fluidsynth-lite baked into the build-image - no Windows machine or Wine needed to build it, confirmed working and playable on a real Windows machine. dist-win/ ships DLLs flat alongside the exe plus a new res/run.bat launcher, packaged into a .zip the same way dist/ becomes a .tar.gz. Also fixes three build-image bugs hit while testing on a VirtualBox vboxsf-mounted checkout: build-engine.sh/docker-entrypoint.sh losing their execute bit (chmod +x on restrictive source perms), the container user missing access to /workspace's supplementary vboxsf group, and cp -a failing on symlink/hard-link creation (vboxsf doesn't support either) - now falls back to dereferencing copies when detected. Also adds Docker/zip/etc. prerequisites to the README for both the desktop and Quest builds.
28 lines
1.2 KiB
Bash
Executable File
28 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Drops from root (needed to read the prebuilt toolchain under /opt) to a
|
|
# user matching the host's UID/GID, so anything written into the
|
|
# bind-mounted repo (engine/build_ext, engine/.build-output, ...) is owned
|
|
# by the host user instead of root.
|
|
set -euo pipefail
|
|
|
|
USER_UID="${HOST_UID:-1000}"
|
|
USER_GID="${HOST_GID:-1000}"
|
|
|
|
groupadd -g "$USER_GID" builder 2>/dev/null || true
|
|
useradd -u "$USER_UID" -g "$USER_GID" -m -s /bin/bash builder 2>/dev/null || true
|
|
|
|
# /workspace (the bind-mounted repo) may actually be owned by a group the
|
|
# host user only has via *supplementary* membership rather than their
|
|
# primary GID above - e.g. a VirtualBox vboxsf shared folder, which shows
|
|
# up as root:vboxsf on the host and would otherwise be inaccessible to
|
|
# `builder` here (falls through to "other", which vboxsf's default mode
|
|
# leaves with no permissions at all). Join whatever group actually owns
|
|
# /workspace too, if it differs.
|
|
WORKSPACE_GID="$(stat -c %g /workspace 2>/dev/null || true)"
|
|
if [ -n "$WORKSPACE_GID" ] && [ "$WORKSPACE_GID" != "$USER_GID" ]; then
|
|
groupadd -g "$WORKSPACE_GID" workspace 2>/dev/null || true
|
|
usermod -aG "$WORKSPACE_GID" builder 2>/dev/null || true
|
|
fi
|
|
|
|
exec gosu builder "$@"
|