3f911ab7a6
Fixes the postinst failure when replacing stock caddy on hosts where caddy.service was masked. The unit file could be missing after dpkg removes the old caddy package, causing systemctl enable to fail. Changes: - postinst: unmask caddy.service before enable, recreate unit file from embedded copy if missing after unmasking, stop caddy-api.service with guard - preinst (new): stop caddy.service and caddy-api.service with || true guards before install/upgrade - Makefile: include preinst in deb build Handles three scenarios: 1. Fresh install (no prior caddy) 2. Upgrade from stock caddy with masked service 3. Upgrade from previous madcat-caddy Closes #1
67 lines
1.9 KiB
Makefile
67 lines
1.9 KiB
Makefile
VERSION := 2.11.2
|
|
REVISION := 1
|
|
CADDY_PLUGINS := github.com/caddy-dns/cloudflare@v0.2.4&p=github.com/greenpau/caddy-security@v1.1.62
|
|
|
|
ARCH := $(shell dpkg --print-architecture 2>/dev/null || uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/')
|
|
OS := linux
|
|
PACKAGE_NAME := madcat-caddy
|
|
DEB_NAME := $(PACKAGE_NAME)_$(VERSION)-$(REVISION)_$(ARCH).deb
|
|
|
|
BUILD_DIR := build
|
|
STAGING_DIR := $(BUILD_DIR)/staging
|
|
|
|
.PHONY: all clean build deb install
|
|
|
|
all: deb
|
|
|
|
clean:
|
|
rm -rf $(BUILD_DIR)
|
|
|
|
# Download pre-built Caddy with plugins from official API
|
|
$(BUILD_DIR)/caddy:
|
|
@mkdir -p $(BUILD_DIR)
|
|
@echo "Downloading Caddy $(VERSION) for $(OS)/$(ARCH) with plugins..."
|
|
curl -sL "https://caddyserver.com/api/download?os=$(OS)&arch=$(ARCH)&p=$(CADDY_PLUGINS)" -o $@
|
|
chmod +x $@
|
|
@echo "Verifying binary..."
|
|
@file $@
|
|
|
|
build: $(BUILD_DIR)/caddy
|
|
|
|
# Build .deb package
|
|
deb: $(BUILD_DIR)/caddy
|
|
@echo "Building .deb package..."
|
|
@mkdir -p $(STAGING_DIR)/DEBIAN
|
|
@mkdir -p $(STAGING_DIR)/usr/bin
|
|
@mkdir -p $(STAGING_DIR)/usr/lib/systemd/system
|
|
@mkdir -p $(STAGING_DIR)/etc/caddy
|
|
|
|
@# Binary
|
|
cp $(BUILD_DIR)/caddy $(STAGING_DIR)/usr/bin/caddy
|
|
|
|
@# Systemd service
|
|
cp debian/caddy.service $(STAGING_DIR)/usr/lib/systemd/system/
|
|
|
|
@# Default Caddyfile
|
|
cp debian/Caddyfile $(STAGING_DIR)/etc/caddy/
|
|
|
|
@# Control file
|
|
sed 's/{{VERSION}}/$(VERSION)-$(REVISION)/g; s/{{ARCH}}/$(ARCH)/g' debian/control > $(STAGING_DIR)/DEBIAN/control
|
|
|
|
@# Scripts
|
|
cp debian/preinst $(STAGING_DIR)/DEBIAN/
|
|
cp debian/postinst $(STAGING_DIR)/DEBIAN/
|
|
cp debian/prerm $(STAGING_DIR)/DEBIAN/
|
|
cp debian/postrm $(STAGING_DIR)/DEBIAN/
|
|
chmod 755 $(STAGING_DIR)/DEBIAN/preinst $(STAGING_DIR)/DEBIAN/postinst $(STAGING_DIR)/DEBIAN/prerm $(STAGING_DIR)/DEBIAN/postrm
|
|
|
|
@# Conffiles
|
|
cp debian/conffiles $(STAGING_DIR)/DEBIAN/
|
|
|
|
@# Build package
|
|
dpkg-deb --build $(STAGING_DIR) $(BUILD_DIR)/$(DEB_NAME)
|
|
@echo "Built: $(BUILD_DIR)/$(DEB_NAME)"
|
|
|
|
install: deb
|
|
sudo dpkg -i $(BUILD_DIR)/$(DEB_NAME)
|