feat: enable static-pie builds (2.x) (#23630)

* chore: fix build commands for new cross-builder

* fix: use xcc to determine compiler

* fix: use correct compiler for darwin tests

* fix: update perftest to 22.04 image
pull/23633/head
Brandon Pfeifer 2022-08-16 11:53:08 -04:00 committed by GitHub
parent c2c9d17d71
commit 90d45e8709
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 17 deletions

View File

@ -9,7 +9,7 @@ executors:
docker:
# NOTE: To upgrade the Go version, first push the upgrade to the cross-builder Dockerfile
# in the edge repo, then update the version here to match.
- image: quay.io/influxdb/cross-builder:go1.18.4-906fbe93f953b47185818364a186604209dc8da0
- image: quay.io/influxdb/cross-builder:go1.18.5-c1ba527d2d7854f003481f0a0aebf55524d4d986
resource_class: large
linux-amd64:
machine:
@ -655,7 +655,7 @@ jobs:
perf-test:
docker:
- image: cimg/base:2021.04
- image: cimg/base:2022.04
resource_class: small
parameters:
record_results:

View File

@ -6,10 +6,10 @@ function build_linux () {
local cc
case $(go env GOARCH) in
amd64)
cc=musl-gcc
cc=$(xcc linux x86_64)
;;
arm64)
cc=aarch64-unknown-linux-musl-gcc
cc=$(xcc linux aarch64)
tags="$tags,noasm"
;;
*)
@ -19,17 +19,17 @@ function build_linux () {
esac
local -r extld="-fno-PIC -static -Wl,-z,stack-size=8388608"
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) CC=${cc} go-test-compile \
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) CC="${cc}" go-test-compile \
-tags "$tags" -o "${1}/" -ldflags "-extldflags '$extld'" ./...
}
function build_mac () {
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) CC=x86_64-apple-darwin18-clang go-test-compile \
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) CC="$(xcc darwin)" go-test-compile \
-tags sqlite_foreign_keys,sqlite_json -o "${1}/" ./...
}
function build_windows () {
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) CC=x86_64-w64-mingw32-gcc go-test-compile \
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) CC="$(xcc windows)" go-test-compile \
-tags sqlite_foreign_keys,sqlite_json,timetzdata -o "${1}/" ./...
}

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash
set -exo pipefail
declare -r LINUX_EXTLD="-fno-PIC -static -Wl,-z,stack-size=8388608"
declare -r LINUX_EXTLD="-fno-PIC -static-pie -Wl,-z,stack-size=8388608"
function main () {
if [[ $# != 3 ]]; then
@ -20,23 +20,26 @@ function main () {
local -r os_arch="$(go env GOOS)_$(go env GOARCH)"
case "$os_arch" in
linux_amd64)
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) CC=$(which xcc.sh) go build \
-tags assets,sqlite_foreign_keys,sqlite_json,static_build \
-buildmode pie \
-ldflags "-s -w -X main.version=${version} -X main.commit=${commit} -X main.date=${build_date} -extldflags '$LINUX_EXTLD'" \
export CC="$(xcc linux x86_64)"
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) go build \
-tags assets,sqlite_foreign_keys,sqlite_json,static_build,noasm \
-buildmode=pie \
-ldflags "-s -w -X main.version=${version} -X main.commit=${commit} -X main.date=${build_date} -linkmode=external -extld=${CC} -extldflags '${LINUX_EXTLD}'" \
-o "$out_dir/" \
"$pkg"
;;
linux_arm64)
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) CC=$(which xcc.sh) go build \
export CC="$(xcc linux aarch64)"
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) go build \
-tags assets,sqlite_foreign_keys,sqlite_json,static_build,noasm \
-buildmode pie \
-ldflags "-s -w -X main.version=${version} -X main.commit=${commit} -X main.date=${build_date} -extldflags '$LINUX_EXTLD'" \
-buildmode=pie \
-ldflags "-s -w -X main.version=${version} -X main.commit=${commit} -X main.date=${build_date} -linkmode=external -extld=${CC} -extldflags '${LINUX_EXTLD}'" \
-o "$out_dir/" \
"$pkg"
;;
darwin_amd64)
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) CC=$(which xcc.sh) go build \
export CC="$(xcc darwin)"
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) go build \
-tags assets,sqlite_foreign_keys,sqlite_json \
-buildmode pie \
-ldflags "-s -w -X main.version=${version} -X main.commit=${commit} -X main.date=${build_date}" \
@ -44,7 +47,8 @@ function main () {
"$pkg"
;;
windows_amd64)
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) CC=$(which xcc.sh) go build \
export CC="$(xcc windows)"
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) go build \
-tags assets,sqlite_foreign_keys,sqlite_json,timetzdata \
-buildmode exe \
-ldflags "-s -w -X main.version=${version} -X main.commit=${commit} -X main.date=${build_date}" \