Adding support for building deb archives

main
Drew Bednar 5 days ago
parent dae59eda95
commit 6cfbcfe460

@ -1,5 +1,8 @@
# This file tells Gitea to process variable substitution in the following files.
go.mod
README.md
cmd/${REPO_NAME}/main.go
cmd/${REPO_NAME}/root.go
main.go
Makefile
changelog

4
.gitignore vendored

@ -21,3 +21,7 @@
# Go workspace file
go.work
# Build and distribution directories
build/
dist/

@ -0,0 +1,96 @@
# Variables
BINARY_NAME := ${REPO_NAME}
BUILD_DIR := ./build
DIST_DIR := ./dist
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
BUILD_TIME := $(shell date -u '+%Y-%m-%d_%H:%M:%S')
GIT_COMMIT := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown")
DEB_PACKAGE_NAME := $(BINARY_NAME)_$(VERSION)_amd64.deb
# Default target
.PHONY: all
all: build
# Build the binary
.PHONY: build
build:
@echo "Building $(BINARY_NAME) version $(VERSION)..."
@mkdir -p $(BUILD_DIR)
@go build -ldflags "-X main.Version=$(VERSION) -X main.BuildTime=$(BUILD_TIME) -X main.GitCommit=$(GIT_COMMIT)" \
-o $(BUILD_DIR)/$(BINARY_NAME) .
# Clean build artifacts
.PHONY: clean
clean:
@echo "Cleaning build artifacts..."
@rm -rf $(BUILD_DIR)
@rm -rf $(DIST_DIR)
# Build Debian package
.PHONY: deb
deb: build
@echo "Building Debian package..."
@mkdir -p $(DIST_DIR)
@mkdir -p $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)
@mkdir -p $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/DEBIAN
@mkdir -p $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/opt/$(BINARY_NAME)
# Copy binary
@cp $(BUILD_DIR)/$(BINARY_NAME) $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/opt/$(BINARY_NAME)/
@chmod +x $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/opt/$(BINARY_NAME)/$(BINARY_NAME)
# Create control file
@echo "Package: $(BINARY_NAME)" > $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/DEBIAN/control
@echo "Version: $(VERSION)" >> $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/DEBIAN/control
@echo "Architecture: amd64" >> $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/DEBIAN/control
@echo "Maintainer: Bishop Maintainer <maintainer@example.com>" >> $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/DEBIAN/control
@echo "Description: Bishop - A Go application" >> $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/DEBIAN/control
@echo " Bishop is a Go application that provides various functionalities." >> $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/DEBIAN/control
# Copy changelog if it exists
@if [ -f changelog ]; then \
cp changelog $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/DEBIAN/; \
fi
# Build the .deb package
@cd $(DIST_DIR) && dpkg-deb --build $(BINARY_NAME)_$(VERSION)
@mv $(DIST_DIR)/$(BINARY_NAME)_$(VERSION).deb $(DIST_DIR)/$(DEB_PACKAGE_NAME)
@echo "Debian package created: $(DIST_DIR)/$(DEB_PACKAGE_NAME)"
# Install dependencies
.PHONY: deps
deps:
@echo "Installing dependencies..."
@go mod download
# Run tests
.PHONY: test
test:
@echo "Running tests..."
@go test ./...
# Format code
.PHONY: fmt
fmt:
@echo "Formatting code..."
@go fmt ./...
# Lint code
.PHONY: lint
lint:
@echo "Linting code..."
@go vet ./...
# Show help
.PHONY: help
help:
@echo "Available targets:"
@echo " build - Build the binary in ./build directory"
@echo " deb - Build Debian package in ./dist directory"
@echo " clean - Clean build and dist directories"
@echo " deps - Install dependencies"
@echo " test - Run tests"
@echo " fmt - Format code"
@echo " lint - Lint code"
@echo " help - Show this help message"

@ -15,4 +15,5 @@ ${REPO_DESCRIPTION}
### Installation
```sh
go install [github.com/<span class="math-inline">\]\(https\://github\.com/</span>){REPO_OWNER}/${REPO_NAME}@latest
go install git.runcible.io/${REPO_OWNER}/${REPO_NAME}@latest
```

@ -0,0 +1,7 @@
${REPO_NAME} (1.0.0-1) unstable; urgency=medium
* Initial release
* Basic Go application with version information
* Debian package support
-- ${REPO_NAME} Maintainer <maintainer@example.com> $(date -R)
Loading…
Cancel
Save