-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild_macos_app.sh
More file actions
executable file
·55 lines (45 loc) · 1.59 KB
/
Copy pathbuild_macos_app.sh
File metadata and controls
executable file
·55 lines (45 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/bash
set -euo pipefail
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV_PATH="$PROJECT_ROOT/.venv-macos-app"
APP_BUNDLE="$PROJECT_ROOT/dist/Bed Level Editor Pro.app"
RESOURCES_PATH="$APP_BUNDLE/Contents/Resources"
PYTHON_BIN="${PYTHON_BIN:-}"
if [[ -z "$PYTHON_BIN" ]]; then
if command -v python3.12 >/dev/null 2>&1; then
PYTHON_BIN="$(command -v python3.12)"
else
PYTHON_BIN="$(command -v python3)"
fi
fi
echo "Using Python interpreter: $PYTHON_BIN"
echo "==> Creating virtual environment at $VENV_PATH"
"$PYTHON_BIN" -m venv "$VENV_PATH"
source "$VENV_PATH/bin/activate"
echo "==> Upgrading pip"
"$VENV_PATH/bin/pip" install --upgrade pip
echo "==> Installing dependencies"
"$VENV_PATH/bin/pip" install -r "$PROJECT_ROOT/requirements.txt"
"$VENV_PATH/bin/pip" install py2app
PYTHON_TAG=$("$VENV_PATH/bin/python" - <<'PY'
import sys
print(f"python{sys.version_info.major}.{sys.version_info.minor}")
PY
)
PYTHON_LIB_DIR="$RESOURCES_PATH/lib/${PYTHON_TAG}"
SITE_PACKAGES_DIR="$VENV_PATH/lib/${PYTHON_TAG}/site-packages"
echo "==> Building Bed Level Editor Pro macOS app"
pushd "$PROJECT_ROOT" >/dev/null
"$VENV_PATH/bin/python" macos_app/setup.py py2app
popd >/dev/null
echo "==> Copying namespace packages"
if [ -d "$SITE_PACKAGES_DIR/mpl_toolkits" ]; then
mkdir -p "$PYTHON_LIB_DIR"
rsync -a --delete "$SITE_PACKAGES_DIR/mpl_toolkits" "$PYTHON_LIB_DIR/"
fi
APP_PATH="$PROJECT_ROOT/dist/Bed Level Editor Pro.app"
echo "Build complete. App bundle located at:"
echo " $APP_PATH"
echo ""
echo "Open the app by double-clicking it in Finder, or run:"
echo " open \"$APP_PATH\""