From 979d6b51304d11eeeb61b879263d369d21eb8c70 Mon Sep 17 00:00:00 2001 From: Paul Meyer <49727155+katexochen@users.noreply.github.com> Date: Tue, 12 Sep 2023 15:15:09 +0200 Subject: [PATCH 1/3] release binaries for ppc64le Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com> --- .github/workflows/release-ghcr.yml | 2 +- .goreleaser.yml | 1 + Makefile | 14 +++++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release-ghcr.yml b/.github/workflows/release-ghcr.yml index e39ae4ae4..b6904c68a 100644 --- a/.github/workflows/release-ghcr.yml +++ b/.github/workflows/release-ghcr.yml @@ -45,7 +45,7 @@ jobs: - name: docker build run: | docker buildx create --use - docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7,linux/s390x -t ${{ steps.prepare.outputs.ref }} --push . + docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7,linux/s390x,linux/ppc64le -t ${{ steps.prepare.outputs.ref }} --push . - name: clear if: always() run: | diff --git a/.goreleaser.yml b/.goreleaser.yml index f2a4ee94b..8dce90e2b 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -28,6 +28,7 @@ builds: - arm64 - arm - s390x + - ppc64le goarm: - '7' ignore: diff --git a/Makefile b/Makefile index ffd8d526c..44f18fe29 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ GIT_TAG = $(shell git describe --tags --abbrev=0 --exact-match 2>/dev/null) GIT_DIRTY = $(shell test -n "`git status --porcelain`" && echo "dirty" || echo "clean") GO_EXE = go -TARGET_OBJS ?= checksums.txt darwin_amd64.tar.gz darwin_arm64.tar.gz linux_amd64.tar.gz linux_arm64.tar.gz linux_armv7.tar.gz linux_s390x.tar.gz windows_amd64.zip +TARGET_OBJS ?= checksums.txt darwin_amd64.tar.gz darwin_arm64.tar.gz linux_amd64.tar.gz linux_arm64.tar.gz linux_armv7.tar.gz linux_s390x.tar.gz linux_ppc64le.tar.gz windows_amd64.zip LDFLAGS = -w ifdef VERSION @@ -50,8 +50,11 @@ clean: ## clean up build .PHONY: build build: build-linux build-mac build-windows ## build for all targets +.PHONY: build-linux-all +build-linux-all: build-linux-amd64 build-linux-arm64 build-linux-arm-v7 build-linux-s390x build-linux-ppc64le ## build all linux architectures + .PHONY: build-linux -build-linux: build-linux-amd64 build-linux-arm64 build-linux-arm-v7 build-linux-s390x ## build all linux architectures +build-linux: build-linux-amd64 build-linux-arm64 .PHONY: build-linux-amd64 build-linux-amd64: ## build for linux amd64 @@ -73,6 +76,11 @@ build-linux-s390x: ## build for linux s390x GOARCH=s390x CGO_ENABLED=0 GOOS=linux $(GO_EXE) build -v --ldflags="$(LDFLAGS)" \ -o bin/linux/s390x/$(CLI_EXE) $(CLI_PKG) +.PHONY: build-linux-ppc64le +build-linux-ppc64le: ## build for linux ppc64le + GOARCH=ppc64le CGO_ENABLED=0 GOOS=linux $(GO_EXE) build -v --ldflags="$(LDFLAGS)" \ + -o bin/linux/ppc64le/$(CLI_EXE) $(CLI_PKG) + .PHONY: build-mac build-mac: build-mac-arm64 build-mac-amd64 ## build all mac architectures @@ -138,4 +146,4 @@ teste2e-covdata: ## test e2e coverage .PHONY: help help: ## Display this help - @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[%\/0-9A-Za-z_-]+:.*?##/ { printf " \033[36m%-45s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) \ No newline at end of file + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[%\/0-9A-Za-z_-]+:.*?##/ { printf " \033[36m%-45s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) From 9992bf036a9e814cbfd6c069cb6355821ac55b18 Mon Sep 17 00:00:00 2001 From: Paul Meyer <49727155+katexochen@users.noreply.github.com> Date: Tue, 12 Sep 2023 15:30:53 +0200 Subject: [PATCH 2/3] release binaries for riscv64 Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com> --- .goreleaser.yml | 1 + Makefile | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index 8dce90e2b..cdc238a6b 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -29,6 +29,7 @@ builds: - arm - s390x - ppc64le + - riscv64 goarm: - '7' ignore: diff --git a/Makefile b/Makefile index 44f18fe29..057ef9aaf 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ GIT_TAG = $(shell git describe --tags --abbrev=0 --exact-match 2>/dev/null) GIT_DIRTY = $(shell test -n "`git status --porcelain`" && echo "dirty" || echo "clean") GO_EXE = go -TARGET_OBJS ?= checksums.txt darwin_amd64.tar.gz darwin_arm64.tar.gz linux_amd64.tar.gz linux_arm64.tar.gz linux_armv7.tar.gz linux_s390x.tar.gz linux_ppc64le.tar.gz windows_amd64.zip +TARGET_OBJS ?= checksums.txt darwin_amd64.tar.gz darwin_arm64.tar.gz linux_amd64.tar.gz linux_arm64.tar.gz linux_armv7.tar.gz linux_s390x.tar.gz linux_ppc64le.tar.gz linux_riscv64.tar.gz windows_amd64.zip LDFLAGS = -w ifdef VERSION @@ -51,7 +51,7 @@ clean: ## clean up build build: build-linux build-mac build-windows ## build for all targets .PHONY: build-linux-all -build-linux-all: build-linux-amd64 build-linux-arm64 build-linux-arm-v7 build-linux-s390x build-linux-ppc64le ## build all linux architectures +build-linux-all: build-linux-amd64 build-linux-arm64 build-linux-arm-v7 build-linux-s390x build-linux-ppc64le build-linux-riscv64 ## build all linux architectures .PHONY: build-linux build-linux: build-linux-amd64 build-linux-arm64 @@ -81,6 +81,11 @@ build-linux-ppc64le: ## build for linux ppc64le GOARCH=ppc64le CGO_ENABLED=0 GOOS=linux $(GO_EXE) build -v --ldflags="$(LDFLAGS)" \ -o bin/linux/ppc64le/$(CLI_EXE) $(CLI_PKG) +.PHONY: build-linux-riscv64 +build-linux-riscv64: ## build for linux riscv64 + GOARCH=riscv64 CGO_ENABLED=0 GOOS=linux $(GO_EXE) build -v --ldflags="$(LDFLAGS)" \ + -o bin/linux/riscv64/$(CLI_EXE) $(CLI_PKG) + .PHONY: build-mac build-mac: build-mac-arm64 build-mac-amd64 ## build all mac architectures From ad7a18c6c0897316ec7a2d725bfea41c2cb0436f Mon Sep 17 00:00:00 2001 From: Paul Meyer <49727155+katexochen@users.noreply.github.com> Date: Tue, 12 Sep 2023 15:30:28 +0200 Subject: [PATCH 3/3] improve release reproducibility - trim paths - set build ID to empty string - set binary timestamp to commit timestamp - strip binary (reduces size from 9.2MB to 8.5MB) Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com> --- .goreleaser.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index cdc238a6b..3bb03d4bd 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -19,6 +19,8 @@ builds: binary: ./oras env: - CGO_ENABLED=0 + flags: + - -trimpath goos: - darwin - linux @@ -42,7 +44,8 @@ builds: ldflags: # one-line ldflags to bypass the goreleaser bugs # the git tree state is guaranteed to be clean by goreleaser - - -w -X oras.land/oras/internal/version.Version={{.Version}} -X oras.land/oras/internal/version.GitCommit={{.FullCommit}} -X oras.land/oras/internal/version.BuildMetadata= -X oras.land/oras/internal/version.GitTreeState=clean + - -w -s -buildid= -X oras.land/oras/internal/version.Version={{.Version}} -X oras.land/oras/internal/version.GitCommit={{.FullCommit}} -X oras.land/oras/internal/version.BuildMetadata= -X oras.land/oras/internal/version.GitTreeState=clean + mod_timestamp: "{{ .CommitTimestamp }}" archives: - format: tar.gz