Skip to content

Commit 04a219a

Browse files
fix smoke test; update README
1 parent d9f010a commit 04a219a

5 files changed

Lines changed: 240 additions & 7 deletions

File tree

.github/workflows/build.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@ name: Build PyQt6 for Pyodide
22

33
on:
44
push:
5-
branches: [main]
6-
tags: ["v*"]
75
pull_request:
8-
branches: [main]
96
workflow_dispatch:
107

118
jobs:

README.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
3031
pixi 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)
3839
pixi 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
4043
pixi 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

pixi.lock

Lines changed: 181 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pixi.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ autoconf = ">=2.72,<3"
2121
automake = ">=1.17,<2"
2222
libtool = ">=2.5.4,<3"
2323
sed = ">=4.9,<5"
24+
unzip = ">=6.0"
25+
nodejs = ">=22"
26+
sip = ">=6.10"
27+
pyqt-builder = ">=1.18"
2428

2529
[tasks]
2630
build = { cmd = "bash build.sh", description = "Full build pipeline" }

0 commit comments

Comments
 (0)