build: name the two delivery folders and stop archiving by default
Delivery had two ambiguously-named outputs and always produced an archive, which made it unclear what actually gets uploaded/copied. - dist/1_cafe24_upload/ -> FTP-upload contents to the Cafe24 web host - dist/2_pi_install/ -> copy folder to the Pi, run ./install_offline.sh Archives are now opt-in: MAKE_ZIP=1 (Cafe24) / MAKE_TARBALL=1 (Pi). Docs and tests updated to the new paths. Tests: 165 pass, 2 skipped.
This commit is contained in:
parent
3f2823a764
commit
a2d2d24793
3 changed files with 26 additions and 12 deletions
|
|
@ -55,16 +55,18 @@ wheel tags may not resolve; if it fails, build natively):
|
||||||
deploy/bundle/build_offline_bundle.sh --cross # target aarch64 / cp311
|
deploy/bundle/build_offline_bundle.sh --cross # target aarch64 / cp311
|
||||||
```
|
```
|
||||||
|
|
||||||
Output: `dist/move-detect-edge-bundle-aarch64-cp311.tar.gz` (+ `MANIFEST.txt`
|
Output: the folder `dist/2_pi_install/` (+ `MANIFEST.txt` listing the bundled
|
||||||
listing the bundled wheels). This single file crosses the air gap.
|
wheels). Copy the WHOLE FOLDER across the air gap as-is — no archive step.
|
||||||
|
Set `MAKE_TARBALL=1` if you would rather transfer one
|
||||||
|
`dist/2_pi_install-aarch64-cp311-hailo8.tar.gz` file.
|
||||||
|
|
||||||
## 2. Transfer + install (on the air-gapped Pi)
|
## 2. Transfer + install (on the air-gapped Pi)
|
||||||
|
|
||||||
Copy the tarball across the gap (USB, one-way transfer, etc.), then:
|
Copy `dist/2_pi_install/` across the gap (USB, one-way transfer, etc.), then:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
tar xzf move-detect-edge-bundle-aarch64-cp311.tar.gz
|
# tarball variant only (MAKE_TARBALL=1): tar xzf 2_pi_install-aarch64-cp311-hailo8.tar.gz
|
||||||
cd move-detect-edge-bundle
|
cd 2_pi_install
|
||||||
sudo ./install_offline.sh
|
sudo ./install_offline.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ set -euo pipefail
|
||||||
|
|
||||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||||
OUT_DIR="${OUT_DIR:-$REPO_ROOT/dist}"
|
OUT_DIR="${OUT_DIR:-$REPO_ROOT/dist}"
|
||||||
STAGE="$OUT_DIR/move-detect-edge-bundle"
|
STAGE="$OUT_DIR/2_pi_install"
|
||||||
WHEELHOUSE="$STAGE/wheelhouse"
|
WHEELHOUSE="$STAGE/wheelhouse"
|
||||||
PYVER="${PYVER:-3.11}" # Pi OS Bookworm ships CPython 3.11
|
PYVER="${PYVER:-3.11}" # Pi OS Bookworm ships CPython 3.11
|
||||||
PYABI="cp${PYVER//./}" # cp311
|
PYABI="cp${PYVER//./}" # cp311
|
||||||
|
|
@ -187,9 +187,17 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ">> [6/6] packaging tarball"
|
echo ">> [6/6] packaging tarball"
|
||||||
|
if [ "${MAKE_TARBALL:-0}" != "1" ]; then
|
||||||
|
# Default: leave $STAGE uncompressed — copy the folder to the Pi (USB/scp) and run
|
||||||
|
# install_offline.sh inside it. Set MAKE_TARBALL=1 for a single transferable file.
|
||||||
|
echo ">> skipped (MAKE_TARBALL=1 to also produce a .tar.gz)"
|
||||||
|
echo ">> DONE: $STAGE"
|
||||||
|
echo ">> copy this folder to the Pi, then run ./install_offline.sh inside it."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
# Embed the Hailo arch in the filename: hailo8 and hailo8l bundles are byte-different but were
|
# Embed the Hailo arch in the filename: hailo8 and hailo8l bundles are byte-different but were
|
||||||
# otherwise identically named, so the wrong one could be shipped to a board and crash-loop.
|
# otherwise identically named, so the wrong one could be shipped to a board and crash-loop.
|
||||||
TARBALL="$OUT_DIR/move-detect-edge-bundle-${TARGET_ARCH}-${PYABI}-${HAILO_ARCH}.tar.gz"
|
TARBALL="$OUT_DIR/2_pi_install-${TARGET_ARCH}-${PYABI}-${HAILO_ARCH}.tar.gz"
|
||||||
tar -C "$OUT_DIR" -czf "$TARBALL" "move-detect-edge-bundle"
|
tar -C "$OUT_DIR" -czf "$TARBALL" "2_pi_install"
|
||||||
echo ">> DONE: $TARBALL"
|
echo ">> DONE: $TARBALL"
|
||||||
echo ">> transfer this single file across the air gap, then run install_offline.sh on the Pi."
|
echo ">> transfer this single file across the air gap, then run install_offline.sh on the Pi."
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,9 @@
|
||||||
# Run on the BUILD machine (needs composer + php — dev-only tools, never on the host):
|
# Run on the BUILD machine (needs composer + php — dev-only tools, never on the host):
|
||||||
# server/deploy/build_cafe24_package.sh
|
# server/deploy/build_cafe24_package.sh
|
||||||
#
|
#
|
||||||
# Output: dist/cafe24/ and dist/move-detect-cafe24.zip
|
# Output: dist/1_cafe24_upload/ and dist/move-detect-cafe24.zip
|
||||||
#
|
#
|
||||||
# dist/cafe24/
|
# dist/1_cafe24_upload/
|
||||||
# ├── move_detect_app/ -> UPLOAD to the FTP root. Not web-reachable.
|
# ├── move_detect_app/ -> UPLOAD to the FTP root. Not web-reachable.
|
||||||
# │ ├── config.php the ONLY file the operator edits
|
# │ ├── config.php the ONLY file the operator edits
|
||||||
# │ ├── src/ vendor/ storage/snapshots/
|
# │ ├── src/ vendor/ storage/snapshots/
|
||||||
|
|
@ -44,7 +44,7 @@ PRIVATE_DIR="${PRIVATE_DIR:-move_detect_app}"
|
||||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||||
SERVER="$REPO_ROOT/server"
|
SERVER="$REPO_ROOT/server"
|
||||||
OUT_DIR="${OUT_DIR:-$REPO_ROOT/dist}"
|
OUT_DIR="${OUT_DIR:-$REPO_ROOT/dist}"
|
||||||
STAGE="$OUT_DIR/cafe24"
|
STAGE="$OUT_DIR/1_cafe24_upload"
|
||||||
ZIP="$OUT_DIR/move-detect-cafe24.zip"
|
ZIP="$OUT_DIR/move-detect-cafe24.zip"
|
||||||
|
|
||||||
command -v composer >/dev/null 2>&1 || { echo "ERROR: composer not found on the build machine." >&2; exit 1; }
|
command -v composer >/dev/null 2>&1 || { echo "ERROR: composer not found on the build machine." >&2; exit 1; }
|
||||||
|
|
@ -223,7 +223,11 @@ echo " -> every staged .php parses"
|
||||||
|
|
||||||
echo ">> [6/6] zipping"
|
echo ">> [6/6] zipping"
|
||||||
rm -f "$ZIP"
|
rm -f "$ZIP"
|
||||||
if command -v zip >/dev/null 2>&1; then
|
if [ "${MAKE_ZIP:-0}" != "1" ]; then
|
||||||
|
# Default: leave the folder uncompressed. The operator uploads $STAGE/ over FTP as-is,
|
||||||
|
# which is also the only path that cannot mangle directory separators (see below).
|
||||||
|
echo " -> skipped (MAKE_ZIP=1 to also produce $ZIP)"
|
||||||
|
elif command -v zip >/dev/null 2>&1; then
|
||||||
( cd "$STAGE" && zip -rq "$ZIP" . )
|
( cd "$STAGE" && zip -rq "$ZIP" . )
|
||||||
elif command -v python3 >/dev/null 2>&1; then
|
elif command -v python3 >/dev/null 2>&1; then
|
||||||
# No `zip` (common on Windows/Git Bash). Use Python's zipfile with POSIX (forward-slash)
|
# No `zip` (common on Windows/Git Bash). Use Python's zipfile with POSIX (forward-slash)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue