@@ -26,17 +26,20 @@ Qt renders to a `<div>` container element via Emscripten's HTML5 canvas backend.
2626## Quick start
2727
2828``` bash
29- pixi run build # full build (~45 min first time)
29+ pixi run build # full build (~40 min first time)
30+ pixi run test # smoke test (verify PyQt6 imports)
3031pixi run serve # serve on localhost:8080
3132# open http://localhost:8080/test.html
3233```
3334
3435### Individual build phases
3536
3637``` bash
37- pixi run build-qt # Phase 1: Qt6 for WASM (~30 min)
38+ pixi run build-qt # Phase 1: Qt6 for WASM (~25 min)
3839pixi run build-pyqt # Phase 2: SIP + PyQt6 modules (~5 min)
39- pixi run build-pyodide # Phase 3: Link into Pyodide (~2 min)
40+ pixi run build-pyodide # Phase 3: Link into Pyodide (~5 min)
41+ pixi run test # Smoke test (Node.js)
42+ pixi run package # Create distributable zip
4043pixi run clean # Remove all build artifacts
4144```
4245
@@ -117,7 +120,12 @@ Threading classes (QThread, QMutex, etc.) are excluded — WASM is single-thread
117120```
118121├── build.sh # Build pipeline (qt → pyqt → pyodide)
119122├── pixi.toml # Host tool dependencies
120- ├── test.html # Browser test page
123+ ├── test.html # Browser test page (signals/slots demo)
124+ ├── .github/workflows/build.yml # CI: build + test + release
125+ ├── scripts/
126+ │ ├── smoke-test.mjs # Node.js smoke test
127+ │ ├── generate-patches.sh # Generate .patch files from clean sources
128+ │ └── apply-patches.sh # Apply .patch files
121129├── patches/
122130│ ├── apply-wasm-patches.py # WASM patches for PyQt6 + Pyodide
123131│ ├── qt_plugin_import.cpp # Qt static plugin registration
@@ -139,6 +147,10 @@ Threading classes (QThread, QMutex, etc.) are excluded — WASM is single-thread
139147- ** Large binary** — the WASM output is ~ 33 MB (could be reduced with ` -Oz ` and dead code stripping)
140148- ** GPL v3** — PyQt6 is GPL-licensed
141149
150+ ## CI/CD
151+
152+ Builds run on every push and PR via GitHub Actions. Tagged releases (` v* ` ) automatically publish a distributable zip.
153+
142154## Acknowledgments
143155
144156- [ pyodide-with-pyqt5] ( https://github.com/viur-framework/pyodide-with-pyqt5 ) by viur-framework — proved this approach works
0 commit comments