chore: add Makefile and Debian packaging
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
BINARY := ezcoo-usb-control
|
||||
VERSION ?= 0.1.0
|
||||
CMD := ./cmd/$(BINARY)
|
||||
|
||||
BUILD_DIR := build
|
||||
DIST_DIR := dist
|
||||
|
||||
DEB_TARGETS := arm64 armhf amd64
|
||||
|
||||
.PHONY: build deb-all $(addprefix deb-,$(DEB_TARGETS)) clean deps prepare lint
|
||||
|
||||
deps:
|
||||
go mod tidy
|
||||
|
||||
prepare: deps
|
||||
go mod download
|
||||
go generate ./...
|
||||
|
||||
lint: prepare
|
||||
gofmt -w -s .
|
||||
goimports -w .
|
||||
go vet ./...
|
||||
golangci-lint run --color always
|
||||
|
||||
build: prepare
|
||||
mkdir -p $(BUILD_DIR)
|
||||
go build -o $(BUILD_DIR)/$(BINARY) $(CMD)
|
||||
|
||||
# ── Per-architecture .deb builder ─────────────────────────────────────────────
|
||||
# $(1) = Debian arch (arm64 / armhf / amd64)
|
||||
# $(2) = GOARCH (arm64 / arm / amd64)
|
||||
# $(3) = GOARM (7 for armhf, empty otherwise)
|
||||
define make_deb
|
||||
$(eval BIN := $(BUILD_DIR)/$(BINARY)-$(1))
|
||||
$(eval PKG_DIR := $(BUILD_DIR)/pkg-$(1))
|
||||
$(eval DEB_OUT := $(DIST_DIR)/$(BINARY)_$(VERSION)_$(1).deb)
|
||||
$(eval GO_ENV := GOOS=linux GOARCH=$(2)$(if $(3), GOARM=$(3),))
|
||||
|
||||
mkdir -p $(BUILD_DIR) $(DIST_DIR)
|
||||
$(GO_ENV) go build -o $(BIN) $(CMD)
|
||||
|
||||
rm -rf $(PKG_DIR)
|
||||
|
||||
install -D -m 0755 $(BIN) $(PKG_DIR)/usr/bin/$(BINARY)
|
||||
install -D -m 0640 cmd/ezcoo-usb-control/config.example.yaml $(PKG_DIR)/etc/$(BINARY)/config.yaml
|
||||
install -D -m 0644 packaging/systemd/$(BINARY).service $(PKG_DIR)/lib/systemd/system/$(BINARY).service
|
||||
|
||||
install -d $(PKG_DIR)/DEBIAN
|
||||
sed -e 's/VERSION_PLACEHOLDER/$(VERSION)/' \
|
||||
-e 's/ARCH_PLACEHOLDER/$(1)/' \
|
||||
packaging/DEBIAN/control > $(PKG_DIR)/DEBIAN/control
|
||||
install -m 0644 packaging/DEBIAN/conffiles $(PKG_DIR)/DEBIAN/conffiles
|
||||
install -m 0755 packaging/DEBIAN/postinst $(PKG_DIR)/DEBIAN/postinst
|
||||
install -m 0755 packaging/DEBIAN/prerm $(PKG_DIR)/DEBIAN/prerm
|
||||
install -m 0755 packaging/DEBIAN/postrm $(PKG_DIR)/DEBIAN/postrm
|
||||
|
||||
dpkg-deb --build --root-owner-group $(PKG_DIR) $(DEB_OUT)
|
||||
rm -rf $(PKG_DIR)
|
||||
@echo "→ $(DEB_OUT)"
|
||||
endef
|
||||
|
||||
deb-arm64:
|
||||
$(call make_deb,arm64,arm64,)
|
||||
|
||||
deb-armhf:
|
||||
$(call make_deb,armhf,arm,7)
|
||||
|
||||
deb-amd64:
|
||||
$(call make_deb,amd64,amd64,)
|
||||
|
||||
deb-all: $(addprefix deb-,$(DEB_TARGETS))
|
||||
@echo ""
|
||||
@echo "Built packages:"
|
||||
@ls -lh $(DIST_DIR)/$(BINARY)_$(VERSION)_*.deb
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR) $(DIST_DIR)
|
||||
Reference in New Issue
Block a user