-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild-binary.sh
More file actions
executable file
·40 lines (36 loc) · 1.15 KB
/
Copy pathbuild-binary.sh
File metadata and controls
executable file
·40 lines (36 loc) · 1.15 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
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV_PATH="$SCRIPT_DIR/.venv-build"
DIST_PATH="$SCRIPT_DIR/dist"
BUILD_PATH="$SCRIPT_DIR/build"
ICON_PNG="$SCRIPT_DIR/assets/icons/internet-archive.png"
if [ -n "${BUILD_PYTHON:-}" ]; then
PYTHON_BIN="$BUILD_PYTHON"
elif [ -x "/usr/bin/python3" ] && /usr/bin/python3 -c "import tkinter" >/dev/null 2>&1; then
PYTHON_BIN="/usr/bin/python3"
else
PYTHON_BIN="python3"
fi
if [ -d "$VENV_PATH" ] && ! "$VENV_PATH/bin/python" -c "import tkinter" >/dev/null 2>&1; then
rm -rf "$VENV_PATH"
fi
if [ ! -d "$VENV_PATH" ]; then
"$PYTHON_BIN" -m venv "$VENV_PATH"
fi
if [ ! -f "$ICON_PNG" ]; then
printf 'Missing icon asset: %s\n' "$ICON_PNG" >&2
exit 1
fi
"$VENV_PATH/bin/python" -m pip install --upgrade pip
"$VENV_PATH/bin/python" -m pip install -r "$SCRIPT_DIR/requirements-build.txt"
"$VENV_PATH/bin/pyinstaller" \
--clean \
--onefile \
--icon "$ICON_PNG" \
--name ia-interact \
--distpath "$DIST_PATH" \
--workpath "$BUILD_PATH" \
--specpath "$SCRIPT_DIR" \
"$SCRIPT_DIR/ia-interact.py"
printf 'Binary created at %s\n' "$SCRIPT_DIR/dist/ia-interact"