Files
logpile/bible-local/08-build-release.md
Michael Chus 78806f9fa0 Add shared bible submodule, rename local bible to bible-local
- Add bible.git as submodule at bible/
- Move docs/bible/ → bible-local/ (project-specific architecture)
- Update CLAUDE.md to reference both bible/ and bible-local/
- Add AGENTS.md for Codex with same structure

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 16:38:57 +03:00

2.2 KiB

08 — Build & Release

CLI flags

Defined in cmd/logpile/main.go:

Flag Default Description
--port 8082 HTTP server port
--file Reserved for archive preload (not active)
--version Print version and exit
--no-browser Do not open browser on start
--hold-on-crash true on Windows Keep console open on fatal crash for debugging

Build

# Local binary (current OS/arch)
make build
# Output: bin/logpile

# Cross-platform binaries
make build-all
# Output:
#   bin/logpile-linux-amd64
#   bin/logpile-linux-arm64
#   bin/logpile-darwin-amd64
#   bin/logpile-darwin-arm64
#   bin/logpile-windows-amd64.exe

Both make build and make build-all run scripts/update-pci-ids.sh --best-effort before compilation to sync pci.ids from the submodule.

To skip PCI IDs update:

SKIP_PCI_IDS_UPDATE=1 make build

Build flags: CGO_ENABLED=0 — fully static binary, no C runtime dependency.

PCI IDs submodule

Source: third_party/pciids (git submodule → github.com/pciutils/pciids) Local copy embedded at build time: internal/parser/vendors/pciids/pci.ids

# Manual update
make update-pci-ids

# Init submodule after fresh clone
git submodule update --init third_party/pciids

Release process

scripts/release.sh

What it does:

  1. Reads version from git describe --tags
  2. Validates clean working tree (override: ALLOW_DIRTY=1)
  3. Sets stable GOPATH / GOCACHE / GOTOOLCHAIN env
  4. Creates releases/{VERSION}/ directory
  5. Generates RELEASE_NOTES.md template if not present
  6. Builds darwin-arm64 and windows-amd64 binaries
  7. Packages all binaries found in bin/ as .tar.gz / .zip
  8. Generates SHA256SUMS.txt
  9. Prints next steps (tag, push, create release manually)

Release notes template is created in releases/{VERSION}/RELEASE_NOTES.md.

Running

./bin/logpile
./bin/logpile --port 9090
./bin/logpile --no-browser
./bin/logpile --version
./bin/logpile --hold-on-crash   # keep console open on crash (default on Windows)

macOS Gatekeeper

After downloading a binary, remove the quarantine attribute:

xattr -d com.apple.quarantine /path/to/logpile-darwin-arm64