1
Build System
Virgil edited this page 2026-03-11 12:03:21 +00:00
Table of Contents
Build System
Module: forge.lthn.ai/core/go-build/pkg/build
Project Type Detection
Discover() scans for marker files in priority order:
| Marker | Type | Priority |
|---|---|---|
wails.json |
ProjectTypeWails |
1 (most specific) |
go.mod |
ProjectTypeGo |
2 |
package.json |
ProjectTypeNode |
3 |
composer.json |
ProjectTypePHP |
4 |
Helper functions: IsGoProject(), IsWailsProject(), IsNodeProject(), IsPHPProject(), IsCPPProject().
Builders
All implement Builder interface: Name() string, Detect(fs, dir) (bool, error), Build(ctx, cfg, targets) ([]Artifact, error).
| Builder | Constructor | Description |
|---|---|---|
| Go | NewGoBuilder() |
Cross-compiles Go binaries |
| Wails | NewWailsBuilder() |
Wails desktop apps |
| Docker | NewDockerBuilder() |
Docker image builds |
| LinuxKit | NewLinuxKitBuilder() |
LinuxKit VM images |
| CPP | NewCppBuilder() |
C++ with CMake |
| Taskfile | NewTaskfileBuilder() |
Taskfile-based builds |
Configuration
.core/build.yaml structure:
version: 1
project:
name: my-app
main: ./cmd/app
binary: my-app
build:
cgo: false
flags: ["-trimpath"]
ldflags: ["-s", "-w"]
targets:
- os: linux
arch: amd64
- os: darwin
arch: arm64
sign:
enabled: false
LoadConfig() reads this file; DefaultConfig() provides sensible defaults (4 targets: linux/amd64, linux/arm64, darwin/arm64, windows/amd64).
Post-Build
ArchiveAll()— Creates.tar.gz(unix) or.zip(windows) archivesChecksumAll()— Computes SHA-256 checksumsWriteChecksumFile()— WritesCHECKSUMS.txt
Code Signing
pkg/build/signing/ provides:
Signerinterface —Sign(file) error,Verify(file) (bool, error)- Implementations:
CodesignSigner(macOS),GPGSigner,SigntoolSigner(Windows)