debian: add rules for open-vault

Largely inherited from the open-consul build, however Vault's build
requires separate steps for the UI component, and a more complex
ldflags.
This commit is contained in:
Paul Stemmet 2024-04-20 13:18:59 +00:00
parent 1c47ea6618
commit 565491f8b3
Signed by: Paul Stemmet
GPG Key ID: EDEA539F594E7E75
2 changed files with 103 additions and 0 deletions

86
debian/rules vendored Executable file
View File

@ -0,0 +1,86 @@
#!/usr/bin/make -f
# Defines:
# DEB_SOURCE
# DEB_VERSION
# DEB_VERSION_EPOCH_UPSTREAM
# DEB_VERSION_UPSTREAM_REVISION
# DEB_VERSION_UPSTREAM
# DEB_DISTRIBUTION
# SOURCE_DATE_EPOCH
include /usr/share/dpkg/pkg-info.mk
#export DH_VERBOSE := 1
PKGNAME := open-vault
PKGALIAS := vault
PKGDIR := debian/$(PKGNAME)
SRCDIR := debian
BUILDDIR := dist
BUILDDATE := $(shell date -u '+%Y-%m-%dT%H:%M:%SZ' -d @$(SOURCE_DATE_EPOCH))
export DH_OPTIONS
export DEB_BUILD_OPTIONS ?= terse
export DEB_BUILD_MAINT_OPTIONS := hardening=+all
export YARNCACHE := /tmp/yarncache
export GO111MODULE := on
export GOFLAGS := -buildmode=pie -trimpath -mod=readonly -modcacherw
export GOCACHE := /tmp/gocache
export GOPATH := /tmp/gopath
export GOPROXY := https://proxy.golang.org,direct
export CGO_LDFLAGS = $(LDFLAGS)
export CGO_CFLAGS = $(CFLAGS)
export CGO_CPPFLAGS = $(CPPFLAGS)
export CGO_CXXFLAGS = $(CXXFLAGS)
# dh_golang doesn't do this for you
ifeq ($(DEB_HOST_ARCH), i386)
export GOARCH := 386
else ifeq ($(DEB_HOST_ARCH), amd64)
export GOARCH := amd64
else ifeq ($(DEB_HOST_ARCH), armhf)
export GOARCH := arm
else ifeq ($(DEB_HOST_ARCH), arm64)
export GOARCH := arm64
endif
%:
dh $@ --builddirectory=$(BUILDDIR) --buildsystem=golang --with=golang
override_dh_clean:
rm -f debian/debhelper.log
dh_clean
override_dh_auto_configure:
mkdir -p $(BUILDDIR) $(GOCACHE) $(GOPATH) $(YARNCACHE) /tmp/builder
setfacl -m "default:group::rwx" $(GOCACHE) $(GOPATH) $(YARNCACHE) /tmp/builder
mv $(SRCDIR)/$(PKGNAME).service $(SRCDIR)/$(PKGNAME).$(PKGALIAS).service
mv $(SRCDIR)/$(PKGNAME).default $(SRCDIR)/$(PKGNAME).$(PKGALIAS).default
mv $(SRCDIR)/$(PKGNAME).sysusers $(SRCDIR)/$(PKGNAME).$(PKGALIAS).sysusers
yarnpkg config set cacheFolder $(YARNCACHE)
( cd "ui" && yarnpkg install )
go mod download
$(SRCDIR)/vault-ldflags.sh \
"v$(DEB_VERSION_UPSTREAM)" "$(DEB_VERSION)" "$(BUILDDATE)" \
> $(BUILDDIR)/.ldflags
override_dh_auto_build:
( cd "ui" ; npm rebuild node-sass ; yarnpkg run build )
go build -tags ui -ldflags "$$(< $(BUILDDIR)/.ldflags)" -o $(BUILDDIR) .
override_dh_auto_install:
dh_installsysusers --name=$(PKGALIAS)
install -D -m755 $(BUILDDIR)/vault $(PKGDIR)/usr/bin/$(PKGALIAS)
override_dh_auto_test:
# Check vault runs and is the correct version
$(BUILDDIR)/vault --version | head -1 | grep -qF -- "v$(DEB_VERSION_UPSTREAM)"
override_dh_installsystemd:
dh_installsystemd --name=$(PKGALIAS)
override_dh_installinit:
dh_installinit --name=$(PKGALIAS)
override_dh_golang:
@echo "Skipping! dh_golang does not support external GOPATH build depends..."

17
debian/vault-ldflags.sh vendored Executable file
View File

@ -0,0 +1,17 @@
#!/bin/sh
# Small shim to properly generate the ldflags
# Vault expects for its buildconf
xpath=github.com/hashicorp/vault/sdk/version
version=$1 commit=$2 builddate=$3
printf -- '%s ' \
"-linkmode=external" \
"-compressdwarf=false" \
$(
printf -- "-X ${xpath}.%s " \
"Version=${version}" \
"GitCommit=${commit}" \
"BuildDate=${builddate}"
)