Add Quick Start docs and branch-specific Docker builds
- README.md: Add Quick Start section with full build sequence - docker/README.md: Document branch-specific builds with git worktrees - docker/build.sh: Use branch name for COMPOSE_PROJECT_NAME - docker/docker-compose.yml: Remove hardcoded container_name Each branch now gets isolated Docker containers/volumes, enabling parallel development across git worktrees. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
38a01cac4d
commit
2b96d4ba21
4 changed files with 65 additions and 1 deletions
32
README.md
32
README.md
|
|
@ -2,6 +2,38 @@
|
||||||
|
|
||||||
Run KiCad PCBnew in the browser using WebAssembly.
|
Run KiCad PCBnew in the browser using WebAssembly.
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
### Full Build (KiCad + All Tests)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Initialize submodules
|
||||||
|
git submodule update --init --recursive
|
||||||
|
|
||||||
|
# 2. Build KiCad WASM (Docker, ~10 min incremental, ~1-2 hours full)
|
||||||
|
./docker/build.sh
|
||||||
|
|
||||||
|
# 3. Build wxWidgets for local testing
|
||||||
|
./scripts/build-wxuniversal-wasm.sh
|
||||||
|
|
||||||
|
# 4. Build wxWidgets test apps
|
||||||
|
./scripts/build-wasm-test.sh
|
||||||
|
|
||||||
|
# 5. Run all tests
|
||||||
|
cd tests && npm install
|
||||||
|
npm test # wxWidgets tests (256 tests)
|
||||||
|
npm run test:kicad # KiCad tests (2 tests)
|
||||||
|
```
|
||||||
|
|
||||||
|
### wxWidgets Only (No Docker)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Requires: Emscripten SDK 4.0+, Node.js 18+
|
||||||
|
./scripts/build-wxuniversal-wasm.sh
|
||||||
|
./scripts/build-wasm-test.sh
|
||||||
|
cd tests && npm install && npm test
|
||||||
|
```
|
||||||
|
|
||||||
## Project Structure
|
## Project Structure
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,33 @@ This directory contains Docker configuration for building KiCad for WebAssembly
|
||||||
./docker/shell.sh
|
./docker/shell.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Branch-Specific Builds
|
||||||
|
|
||||||
|
Each git branch gets isolated Docker containers and volumes, enabling parallel development:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# On branch 'main' → containers/volumes prefixed with 'kicad-wasm-main'
|
||||||
|
# On branch 'feature-x' → containers/volumes prefixed with 'kicad-wasm-feature-x'
|
||||||
|
```
|
||||||
|
|
||||||
|
This allows you to:
|
||||||
|
- Work on multiple branches simultaneously using git worktrees
|
||||||
|
- Each worktree has its own build cache (no conflicts)
|
||||||
|
- Switch branches without rebuilding from scratch
|
||||||
|
|
||||||
|
**Using git worktrees for parallel development:**
|
||||||
|
```bash
|
||||||
|
# Create a worktree for a new branch
|
||||||
|
git worktree add ../kicad-wasm-feature path/to/branch
|
||||||
|
|
||||||
|
# Build in the worktree (uses isolated Docker volumes)
|
||||||
|
cd ../kicad-wasm-feature
|
||||||
|
./docker/build.sh
|
||||||
|
|
||||||
|
# List all worktrees
|
||||||
|
git worktree list
|
||||||
|
```
|
||||||
|
|
||||||
## What Gets Built
|
## What Gets Built
|
||||||
|
|
||||||
The build process includes:
|
The build process includes:
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,11 @@ set -e
|
||||||
|
|
||||||
cd "$(dirname "$0")/.."
|
cd "$(dirname "$0")/.."
|
||||||
|
|
||||||
|
# Use branch name as Docker Compose project name for isolated containers/volumes
|
||||||
|
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD | tr '/' '-' | tr '[:upper:]' '[:lower:]')
|
||||||
|
export COMPOSE_PROJECT_NAME="kicad-wasm-${BRANCH_NAME}"
|
||||||
|
echo "Using Docker project: ${COMPOSE_PROJECT_NAME}"
|
||||||
|
|
||||||
# Add -j 10 by default if no -j flag is given
|
# Add -j 10 by default if no -j flag is given
|
||||||
ARGS=("$@")
|
ARGS=("$@")
|
||||||
if [[ ! " ${ARGS[*]} " =~ " -j " ]]; then
|
if [[ ! " ${ARGS[*]} " =~ " -j " ]]; then
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ services:
|
||||||
build:
|
build:
|
||||||
context: ..
|
context: ..
|
||||||
dockerfile: docker/Dockerfile
|
dockerfile: docker/Dockerfile
|
||||||
container_name: kicad-wasm-builder
|
# Container name is auto-generated with project prefix (set in build.sh)
|
||||||
|
|
||||||
# Resource limits (adjust based on your machine)
|
# Resource limits (adjust based on your machine)
|
||||||
deploy:
|
deploy:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue