Files
baby-nas/Makefile
T
darroyo 63e0b5146a fix: tolerate duplicate column errors in migration runner
The previous SAVEPOINT approach failed because Go's tx.Exec() stops at
the first error and never reaches the ROLLBACK TO statements. This caused
every subsequent startup to re-run migration 0002, fail on the first
ALTER (column already exists from a prior partial run), and crash.

Fix runMigration() to:
- Execute migrations without a wrapping transaction (DDL in SQLite is
  auto-commit anyway)
- Treat "duplicate column name" / "already exists" errors as success
  and record the migration anyway, covering cases where a previous
  failed attempt already partially modified the schema

Also simplify 0002_nfs_structured.sql back to plain ALTER TABLE
statements (no SAVEPOINT needed with the new Go-level tolerance).

Bump VERSION 0.1.9 -> 0.1.10
2026-07-06 00:05:02 -04:00

47 lines
1.9 KiB
Makefile

BINARY=nasctl
VERSION?=0.1.10
GO?=go
LDFLAGS=-s -w -X github.com/darroyo/nasctl/internal/web.Version=$(VERSION) -X github.com/darroyo/nasctl/internal/web.Commit=$(shell git rev-parse --short HEAD 2>/dev/null || echo unknown)
BUILD_FLAGS=CGO_ENABLED=0
.PHONY: build build-all frontend run package clean tidy test
frontend:
cd web && npm install && npm run build
build: frontend
$(BUILD_FLAGS) $(GO) build -ldflags "$(LDFLAGS)" -o bin/$(BINARY) ./cmd/nasctl
# build-go builds the binary without rebuilding the frontend (dist must exist).
build-go:
$(BUILD_FLAGS) $(GO) build -ldflags "$(LDFLAGS)" -o bin/$(BINARY) ./cmd/nasctl
build-all: frontend
$(BUILD_FLAGS) GOOS=linux GOARCH=amd64 $(GO) build -ldflags "$(LDFLAGS)" -o bin/$(BINARY)-linux-amd64 ./cmd/nasctl
$(BUILD_FLAGS) GOOS=linux GOARCH=arm64 $(GO) build -ldflags "$(LDFLAGS)" -o bin/$(BINARY)-linux-arm64 ./cmd/nasctl
run: build
NASCTL_DB=$${NASCTL_DB:-./.data/nasctl.db} \
NASCTL_SMB_CONF=$${NASCTL_SMB_CONF:-./.data/smb.conf} \
NASCTL_EXPORTS=$${NASCTL_EXPORTS:-./.data/exports} \
NASCTL_EXEC_SYSTEM=false \
./bin/$(BINARY) --addr :8080
package: build-all
@mkdir -p dist/deb/usr/local/bin dist/deb/etc/systemd/system dist/deb/DEBIAN
cp bin/$(BINARY)-linux-amd64 dist/deb/usr/local/bin/$(BINARY)
cp systemd/nasctl.service dist/deb/etc/systemd/system/$(BINARY).service
printf 'Package: nasctl\nVersion: $(VERSION)\nSection: utils\nPriority: optional\nArchitecture: amd64\nMaintainer: nasctl\nDescription: Monolithic NAS control plane\n' > dist/deb/DEBIAN/control
printf '#!/bin/sh\nset -e\ninstall -d /var/lib/nasctl\nsystemctl daemon-reload\nsystemctl enable nasctl.service || true\nsystemctl try-restart nasctl.service\n' > dist/deb/DEBIAN/postinst
chmod 0755 dist/deb/DEBIAN/postinst
dpkg-deb --build dist/deb dist/nasctl_$(VERSION)_amd64.deb
clean:
rm -rf bin dist .data web/node_modules web/.tsbuild
tidy:
$(GO) mod tidy
test:
$(GO) test ./...