@@ -8,8 +8,28 @@ BUILD_ROOT="$DIST_DIR/deb-build"
88
99PKG_NAME=" sky130-flow-gui"
1010VERSION=" ${1:- 0.1.0} "
11- ARCH=" ${2:- all } "
11+ ARCH=" ${2:- $(dpkg --print-architecture) } "
1212PKG_DIR=" $BUILD_ROOT /${PKG_NAME} _${VERSION} _${ARCH} "
13+ PACKAGE_VENV=" $PKG_DIR /opt/$PKG_NAME /.venv"
14+ SOURCE_VENV=" $REPO_ROOT /.venv"
15+
16+ REQUIRED_GUI_PACKAGES=(
17+ libxcb-cursor0
18+ libxkbcommon-x11-0
19+ libxcb-xkb1
20+ libxcb-xfixes0
21+ libgl1
22+ )
23+
24+ RECOMMENDED_GUI_PACKAGES=(
25+ libxcb-xinerama0
26+ libxcb-icccm4
27+ libxcb-image0
28+ libxcb-keysyms1
29+ libxcb-render-util0
30+ libxcb-randr0
31+ libxcb-shape0
32+ )
1333
1434rm -rf " $PKG_DIR "
1535mkdir -p \
@@ -27,6 +47,14 @@ cp -R \
2747
2848cp -R " $REPO_ROOT /scripts" " $PKG_DIR /opt/$PKG_NAME /"
2949
50+ if [ -x " $SOURCE_VENV /bin/python" ]; then
51+ cp -a " $SOURCE_VENV " " $PACKAGE_VENV "
52+ else
53+ python3 -m venv " $PACKAGE_VENV "
54+ " $PACKAGE_VENV /bin/python" -m pip install --upgrade pip
55+ " $PACKAGE_VENV /bin/python" -m pip install -r " $REPO_ROOT /requirements.txt"
56+ fi
57+
3058find " $PKG_DIR /opt/$PKG_NAME " -type d -name " __pycache__" -prune -exec rm -rf {} +
3159find " $PKG_DIR /opt/$PKG_NAME " -type f \( -name " *.pyc" -o -name " *.pyo" \) -delete
3260
@@ -35,12 +63,26 @@ cat > "$PKG_DIR/usr/bin/$PKG_NAME" <<'EOF'
3563set -euo pipefail
3664
3765APP_ROOT="/opt/sky130-flow-gui"
66+ LOG_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/sky130-flow-gui"
67+ LOG_FILE="$LOG_DIR/launcher.log"
68+
69+ mkdir -p "$LOG_DIR"
70+ exec >>"$LOG_FILE" 2>&1
71+
72+ echo
73+ echo "[$(date -Is)] launching sky130-flow-gui"
74+
3875cd "$APP_ROOT"
3976
4077if [ -x "$APP_ROOT/.venv/bin/python" ]; then
4178 exec "$APP_ROOT/.venv/bin/python" -m app.main "$@"
4279fi
4380
81+ if python3 -c "import PySide6, pyqtgraph" >/dev/null 2>&1; then
82+ exec python3 -m app.main "$@"
83+ fi
84+
85+ echo "Missing packaged or system Python dependencies for SKY130 Flow GUI."
4486exec python3 -m app.main "$@"
4587EOF
4688chmod 755 " $PKG_DIR /usr/bin/$PKG_NAME "
@@ -52,14 +94,26 @@ cp "$REPO_ROOT/app/resources/sky130-flow-gui.svg" \
5294
5395INSTALLED_SIZE=" $( du -sk " $PKG_DIR " | awk ' {print $1}' ) "
5496
97+ REQUIRED_DEPENDS=" python3"
98+ for pkg in " ${REQUIRED_GUI_PACKAGES[@]} " ; do
99+ REQUIRED_DEPENDS+=" , ${pkg} "
100+ done
101+
102+ RECOMMENDS_FIELD=" "
103+ if [ " ${# RECOMMENDED_GUI_PACKAGES[@]} " -gt 0 ]; then
104+ RECOMMENDS_JOINED=" $( IFS=, ; echo " ${RECOMMENDED_GUI_PACKAGES[*]} " ) "
105+ RECOMMENDS_FIELD=" Recommends: ${RECOMMENDS_JOINED} "
106+ fi
107+
55108cat > " $PKG_DIR /DEBIAN/control" << EOF
56109Package: $PKG_NAME
57110Version: $VERSION
58111Section: electronics
59112Priority: optional
60113Architecture: $ARCH
61114Maintainer: ROMERUU-dev
62- Depends: python3, python3-venv, python3-pip
115+ Depends: $REQUIRED_DEPENDS
116+ $RECOMMENDS_FIELD
63117Installed-Size: $INSTALLED_SIZE
64118Description: SKY130 workflow manager with setup assistant
65119 A desktop app for coordinating simulation, extraction, LVS,
@@ -75,14 +129,11 @@ APP_ROOT="/opt/sky130-flow-gui"
75129cat <<MSG
76130SKY130 Flow GUI was installed under $APP_ROOT.
77131
78- This package intentionally does not create $APP_ROOT/.venv during post-install.
79- Prepare the Python environment later as the normal desktop user if needed:
80- cd "$APP_ROOT"
81- python3 -m venv .venv
82- .venv/bin/python -m pip install --upgrade pip
83- .venv/bin/python -m pip install -r requirements.txt
132+ This package includes its own Python runtime under:
133+ $APP_ROOT/.venv
84134
85- Do not create or repair .venv under /opt with sudo/pkexec.
135+ If the desktop launcher fails, check:
136+ ~/.local/state/sky130-flow-gui/launcher.log
86137MSG
87138
88139update-desktop-database /usr/share/applications >/dev/null 2>&1 || true
0 commit comments