From 84d02a174a4398b1f8ee62e08db5483a9859650f Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Wed, 28 Jun 2023 07:37:05 +0200 Subject: [PATCH] [CI] backward compatible executable compilation Add a new static-executable target to use in Dockerfiles and restore the $(EXECUTABLE) target to what it was before to for backward compatibility. The release process now builds static executables instead of dynamically linked ones which makes them more portable. It changes the requirements at compile time and is not backward compatible. In particular it may break packaging that rely on the target that currently creates a dynamically linked executable. --- Dockerfile | 2 +- Dockerfile.rootless | 2 +- Makefile | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5a87a6de92..470ded4da1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,7 +36,7 @@ WORKDIR ${GOPATH}/src/code.gitea.io/gitea RUN make clean-all RUN make frontend RUN go build contrib/environment-to-ini/environment-to-ini.go && xx-verify environment-to-ini -RUN make backend && xx-verify gitea +RUN make go-check generate-backend static-executable && xx-verify gitea FROM docker.io/library/alpine:3.18 LABEL maintainer="contact@forgejo.org" diff --git a/Dockerfile.rootless b/Dockerfile.rootless index 9bcac34411..78ee81b4f4 100644 --- a/Dockerfile.rootless +++ b/Dockerfile.rootless @@ -36,7 +36,7 @@ WORKDIR ${GOPATH}/src/code.gitea.io/gitea RUN make clean-all RUN make frontend RUN go build contrib/environment-to-ini/environment-to-ini.go && xx-verify environment-to-ini -RUN make backend && xx-verify gitea +RUN make go-check generate-backend static-executable && xx-verify gitea FROM docker.io/library/alpine:3.18 LABEL maintainer="contact@forgejo.org" diff --git a/Makefile b/Makefile index 9d7b001266..9a0e87b192 100644 --- a/Makefile +++ b/Makefile @@ -808,7 +808,10 @@ security-check: go run $(GOVULNCHECK_PACKAGE) ./... $(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ) - CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -o $@ + CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@ + +static-executable: $(GO_SOURCES) $(TAGS_PREREQ) + CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -o $(EXECUTABLE) .PHONY: release release: frontend generate release-linux release-copy release-compress vendor release-sources release-check