|
|
|
@ -5,13 +5,15 @@ DIST_DIR := ./dist
|
|
|
|
|
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "0.1.0-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
|
|
|
|
|
PKG_PATH=git.runcible.io/${REPO_OWNER}/${REPO_NAME}/cmd
|
|
|
|
|
# Attempt to get the latest tag and clean the 'v' prefix.
|
|
|
|
|
# If no tags exist, this command will produce an empty string, and `|| true` prevents make from erroring out.
|
|
|
|
|
CLEAN_TAG := $(shell git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || true)
|
|
|
|
|
# Strict, Debian-compliant version for packaging.
|
|
|
|
|
# It tries to find the latest tag (e.g., v1.2.3) and uses that.
|
|
|
|
|
# It tries to find the latest tag (e.g., v1.2.3) from CLEAN_TAG and uses that.
|
|
|
|
|
# If no tags exist, it defaults to "0.1.0-1", which is a valid starting version for a Debian package.
|
|
|
|
|
DEB_VERSION := $(shell TAG=$$(git describe --tags --abbrev=0 2>/dev/null); if [ -n "$$TAG" ]; then echo $$TAG | sed 's/^v//'; else echo "0.1.0-1"; fi)
|
|
|
|
|
|
|
|
|
|
DEB_VERSION := $(if $(CLEAN_TAG),$(CLEAN_TAG),0.1.0-1)
|
|
|
|
|
DEB_PACKAGE_NAME := $(BINARY_NAME)_$(DEB_VERSION)_amd64.deb
|
|
|
|
|
|
|
|
|
|
# Default target
|
|
|
|
|
.PHONY: all
|
|
|
|
@ -39,28 +41,28 @@ deb: build
|
|
|
|
|
@mkdir -p $(DIST_DIR)
|
|
|
|
|
@mkdir -p $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)
|
|
|
|
|
@mkdir -p $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)/DEBIAN
|
|
|
|
|
@mkdir -p $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)/opt/$(BINARY_NAME)
|
|
|
|
|
@mkdir -p $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)/usr/local/bin
|
|
|
|
|
|
|
|
|
|
# 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)
|
|
|
|
|
@cp $(BUILD_DIR)/$(BINARY_NAME) $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)/usr/local/bin/
|
|
|
|
|
@chmod +x $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)/usr/local/$(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
|
|
|
|
|
@echo "Package: $(BINARY_NAME)" > $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)/DEBIAN/control
|
|
|
|
|
@echo "Version: $(VERSION)" >> $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)/DEBIAN/control
|
|
|
|
|
@echo "Architecture: amd64" >> $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)/DEBIAN/control
|
|
|
|
|
@echo "Maintainer: ${REPO_NAME} Maintainer <maintainer@example.com>" >> $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)/DEBIAN/control
|
|
|
|
|
@echo "Description: ${REPO_NAME} - A Go application" >> $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)/DEBIAN/control
|
|
|
|
|
@echo " ${REPO_NAME} is a Go application that provides various functionalities." >> $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION)/DEBIAN/control
|
|
|
|
|
|
|
|
|
|
# Copy changelog if it exists
|
|
|
|
|
@if [ -f changelog ]; then \
|
|
|
|
|
cp changelog $(DIST_DIR)/$(BINARY_NAME)_$(VERSION)/DEBIAN/; \
|
|
|
|
|
cp changelog $(DIST_DIR)/$(BINARY_NAME)_$(DEB_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)
|
|
|
|
|
@cd $(DIST_DIR) && dpkg-deb --build $(BINARY_NAME)_$(DEB_VERSION)
|
|
|
|
|
@mv $(DIST_DIR)/$(BINARY_NAME)_$(DEB_VERSION).deb $(DIST_DIR)/$(DEB_PACKAGE_NAME)
|
|
|
|
|
@echo "Debian package created: $(DIST_DIR)/$(DEB_PACKAGE_NAME)"
|
|
|
|
|
|
|
|
|
|
# Install dependencies
|
|
|
|
|