mirror of
https://github.com/penpot/penpot.git
synced 2026-09-28 09:32:57 +08:00
Protect shared setup, compilation, artifact copy, and target cleanup with one flock lock per checkout. Route watch builds and frontend cleanup through the protected scripts. Document the lock contract and normalize the frontend and exporter build:wasm commands. Closes #11901 AI-assisted-by: Space Bunny Free
45 lines
987 B
Python
Executable File
45 lines
987 B
Python
Executable File
#!/usr/bin/env bash
|
|
|
|
# Usage: ./build [frontend|export] [extra cargo params...]
|
|
#
|
|
# With no target, builds both. Set BUILD_MODE=release (or NODE_ENV=production)
|
|
# for an optimized build. See `_build_env` for what each target changes.
|
|
|
|
_SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
|
|
_RENDER_TARGET=${1:-}
|
|
|
|
case "$_RENDER_TARGET" in
|
|
frontend|export) ;;
|
|
"")
|
|
# Each target needs its own `_build_env`, so re-enter per target.
|
|
for _target in frontend export; do
|
|
"$_SCRIPT_DIR/build" "$_target" "$@" || exit $?
|
|
done
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "ERROR: unknown render target '$_RENDER_TARGET' (expected 'frontend' or 'export')" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
set -e
|
|
|
|
EMSDK_QUIET=1 . /opt/emsdk/emsdk_env.sh
|
|
|
|
pushd "$_SCRIPT_DIR" > /dev/null
|
|
|
|
export RENDER_TARGET="$_RENDER_TARGET"
|
|
. ./_build_env "$_RENDER_TARGET"
|
|
. ./_build_lock
|
|
|
|
acquire_build_lock
|
|
|
|
set -x
|
|
|
|
setup
|
|
build
|
|
copy_target_artifacts
|
|
|
|
popd > /dev/null
|