The golden-image Dockerfile + catalog pipeline replaces the entire
manual rootfs-build stack. With that shipped, the per-distro shell
flows are dead code.
Removed:
- scripts/customize.sh, scripts/interactive.sh, scripts/verify.sh
- scripts/make-rootfs{,-void,-alpine}.sh
- scripts/register-{void,alpine}-image.sh
- scripts/make-{void,alpine}-kernel.sh
- internal/imagepreset/ (only consumer was `banger internal packages`,
which fed customize.sh)
- examples/{void,alpine}.config.toml
- Makefile targets: rootfs, rootfs-void, rootfs-alpine, void-kernel,
alpine-kernel, void-register, alpine-register, void-vm, alpine-vm,
verify-void, verify-alpine, plus the ALPINE_RELEASE / *_IMAGE_NAME
/ *_VM_NAME variables
The void-6.12 kernel catalog entry is also gone — golden image pairs
with generic-6.12 and nothing else in the catalog depended on it.
Consolidated: imagemgr now holds the small DebianBasePackages list +
package-hash helper inline, so the `image build --from-image` flow
(still supported) no longer pulls from a separate imagepreset package.
Net: 3,815 lines deleted, 59 added. No runtime functionality removed
beyond the `banger internal packages` subcommand (hidden, used only
by the deleted customize.sh).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
93 lines
3.3 KiB
Makefile
93 lines
3.3 KiB
Makefile
SHELL := /usr/bin/env bash
|
|
|
|
GO ?= go
|
|
GOFMT ?= gofmt
|
|
INSTALL ?= install
|
|
PREFIX ?= $(HOME)/.local
|
|
BINDIR ?= $(PREFIX)/bin
|
|
LIBDIR ?= $(PREFIX)/lib
|
|
DESTDIR ?=
|
|
BUILD_DIR ?= build
|
|
BUILD_BIN_DIR ?= $(BUILD_DIR)/bin
|
|
BUILD_MANUAL_DIR ?= $(BUILD_DIR)/manual
|
|
BANGER_BIN ?= $(BUILD_BIN_DIR)/banger
|
|
BANGERD_BIN ?= $(BUILD_BIN_DIR)/bangerd
|
|
VSOCK_AGENT_BIN ?= $(BUILD_BIN_DIR)/banger-vsock-agent
|
|
BINARIES := $(BANGER_BIN) $(BANGERD_BIN) $(VSOCK_AGENT_BIN)
|
|
GO_SOURCES := $(shell find cmd internal -type f -name '*.go' | sort)
|
|
# BUILD_INPUTS is everything that can change a binary's bytes: Go sources
|
|
# plus embedded assets (catalog.json, future static files). Listing
|
|
# everything is cheaper than missing a rebuild — go's own cache absorbs
|
|
# any redundant invocations.
|
|
BUILD_INPUTS := $(shell find cmd internal -type f | sort)
|
|
SHELL_SOURCES := $(shell find scripts -type f -name '*.sh' | sort)
|
|
VERSION ?= $(shell git describe --tags --exact-match 2>/dev/null || echo dev)
|
|
COMMIT ?= $(shell git rev-parse --verify HEAD 2>/dev/null || echo unknown)
|
|
BUILT_AT ?= $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
GO_LDFLAGS := -X banger/internal/buildinfo.Version=$(VERSION) -X banger/internal/buildinfo.Commit=$(COMMIT) -X banger/internal/buildinfo.BuiltAt=$(BUILT_AT)
|
|
|
|
.DEFAULT_GOAL := help
|
|
|
|
.PHONY: help build banger bangerd test fmt tidy clean install bench-create lint lint-go lint-shell
|
|
|
|
help:
|
|
@printf '%s\n' \
|
|
'Targets:' \
|
|
' make build Build ./build/bin/banger, ./build/bin/bangerd, and ./build/bin/banger-vsock-agent' \
|
|
' make install Build and install banger, bangerd, and the companion vsock helper' \
|
|
' make test Run go test ./...' \
|
|
' make lint Run gofmt + go vet + shellcheck (errors)' \
|
|
' make fmt Format Go sources under cmd/ and internal/' \
|
|
' make tidy Run go mod tidy' \
|
|
' make clean Remove built Go binaries' \
|
|
' make bench-create Benchmark vm create and SSH readiness with scripts/bench-create.sh'
|
|
|
|
build: $(BINARIES)
|
|
|
|
$(BANGER_BIN): $(BUILD_INPUTS) go.mod go.sum
|
|
mkdir -p "$(BUILD_BIN_DIR)"
|
|
$(GO) build -ldflags '$(GO_LDFLAGS)' -o "$(BANGER_BIN)" ./cmd/banger
|
|
|
|
$(BANGERD_BIN): $(BUILD_INPUTS) go.mod go.sum
|
|
mkdir -p "$(BUILD_BIN_DIR)"
|
|
$(GO) build -ldflags '$(GO_LDFLAGS)' -o "$(BANGERD_BIN)" ./cmd/bangerd
|
|
|
|
$(VSOCK_AGENT_BIN): $(BUILD_INPUTS) go.mod go.sum
|
|
mkdir -p "$(BUILD_BIN_DIR)"
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GO) build -ldflags '$(GO_LDFLAGS)' -o "$(VSOCK_AGENT_BIN)" ./cmd/banger-vsock-agent
|
|
|
|
test:
|
|
$(GO) test ./...
|
|
|
|
lint: lint-go lint-shell
|
|
|
|
lint-go:
|
|
@unformatted="$$($(GOFMT) -l $(GO_SOURCES))"; \
|
|
if [ -n "$$unformatted" ]; then \
|
|
printf 'gofmt: the following files are not formatted:\n%s\n' "$$unformatted" >&2; \
|
|
exit 1; \
|
|
fi
|
|
$(GO) vet ./...
|
|
|
|
lint-shell:
|
|
@command -v shellcheck >/dev/null 2>&1 || { echo 'shellcheck is required for make lint-shell' >&2; exit 1; }
|
|
shellcheck --severity=error $(SHELL_SOURCES)
|
|
|
|
fmt:
|
|
$(GOFMT) -w $(GO_SOURCES)
|
|
|
|
tidy:
|
|
$(GO) mod tidy
|
|
|
|
clean:
|
|
rm -rf "$(BUILD_BIN_DIR)"
|
|
|
|
bench-create: build
|
|
BANGER_BIN="$(abspath $(BANGER_BIN))" bash ./scripts/bench-create.sh $(ARGS)
|
|
|
|
install: build
|
|
mkdir -p "$(DESTDIR)$(BINDIR)"
|
|
mkdir -p "$(DESTDIR)$(LIBDIR)/banger"
|
|
$(INSTALL) -m 0755 "$(BANGER_BIN)" "$(DESTDIR)$(BINDIR)/banger"
|
|
$(INSTALL) -m 0755 "$(BANGERD_BIN)" "$(DESTDIR)$(BINDIR)/bangerd"
|
|
$(INSTALL) -m 0755 "$(VSOCK_AGENT_BIN)" "$(DESTDIR)$(LIBDIR)/banger/banger-vsock-agent"
|