-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathbuild-macos.sh
More file actions
executable file
·67 lines (57 loc) · 1.71 KB
/
build-macos.sh
File metadata and controls
executable file
·67 lines (57 loc) · 1.71 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
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env bash
set -eu
PROJECT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
SPEC_FILE="$PROJECT_DIR/packaging/pyinstaller/ContExt.spec"
RELEASE_DIR="$PROJECT_DIR/release"
WORK_DIR="$RELEASE_DIR/macos-universal2"
DIST_DIR="$WORK_DIR/dist"
BUILD_DIR="$WORK_DIR/build"
CONFIG_DIR="$WORK_DIR/config"
VENV_PYTHON="$PROJECT_DIR/.venv/bin/python"
if [ "$(uname -s)" != "Darwin" ]; then
echo "build-macos.sh must be run on macOS." >&2
exit 1
fi
if [ -x "$VENV_PYTHON" ]; then
PYTHON_BIN="$VENV_PYTHON"
elif command -v python3 >/dev/null 2>&1; then
PYTHON_BIN="python3"
else
echo "Python 3 not found. Create the project .venv or install python3." >&2
exit 1
fi
TARGET_ARCH="${CONTEXT_TARGET_ARCH:-$(uname -m)}"
case "$TARGET_ARCH" in
arm64)
ARTIFACT_SUFFIX="arm64"
;;
x86_64)
ARTIFACT_SUFFIX="x64"
;;
universal2)
ARTIFACT_SUFFIX="universal2"
;;
*)
echo "Unsupported CONTEXT_TARGET_ARCH: $TARGET_ARCH" >&2
exit 1
;;
esac
WORK_DIR="$RELEASE_DIR/macos-$ARTIFACT_SUFFIX"
DIST_DIR="$WORK_DIR/dist"
BUILD_DIR="$WORK_DIR/build"
CONFIG_DIR="$WORK_DIR/config"
ARTIFACT_DIR="$RELEASE_DIR/ContExt-macos-$ARTIFACT_SUFFIX"
ARTIFACT_FILE="$RELEASE_DIR/ContExt-macos-$ARTIFACT_SUFFIX.app.zip"
rm -rf "$WORK_DIR" "$ARTIFACT_DIR" "$ARTIFACT_FILE"
mkdir -p "$DIST_DIR" "$BUILD_DIR" "$CONFIG_DIR" "$ARTIFACT_DIR"
export PYINSTALLER_CONFIG_DIR="$CONFIG_DIR"
export CONTEXT_TARGET_ARCH="$TARGET_ARCH"
"$PYTHON_BIN" -m PyInstaller \
--noconfirm \
--clean \
--distpath "$DIST_DIR" \
--workpath "$BUILD_DIR" \
"$SPEC_FILE"
cp -R "$DIST_DIR/ContExt.app" "$ARTIFACT_DIR/ContExt.app"
ditto -c -k --sequesterRsrc --keepParent "$ARTIFACT_DIR/ContExt.app" "$ARTIFACT_FILE"
echo "Created $ARTIFACT_FILE"