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 imagepull/23633/head
parent
c2c9d17d71
commit
90d45e8709
|
@ -9,7 +9,7 @@ executors:
|
||||||
docker:
|
docker:
|
||||||
# NOTE: To upgrade the Go version, first push the upgrade to the cross-builder Dockerfile
|
# 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.
|
# 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
|
resource_class: large
|
||||||
linux-amd64:
|
linux-amd64:
|
||||||
machine:
|
machine:
|
||||||
|
@ -655,7 +655,7 @@ jobs:
|
||||||
|
|
||||||
perf-test:
|
perf-test:
|
||||||
docker:
|
docker:
|
||||||
- image: cimg/base:2021.04
|
- image: cimg/base:2022.04
|
||||||
resource_class: small
|
resource_class: small
|
||||||
parameters:
|
parameters:
|
||||||
record_results:
|
record_results:
|
||||||
|
|
|
@ -6,10 +6,10 @@ function build_linux () {
|
||||||
local cc
|
local cc
|
||||||
case $(go env GOARCH) in
|
case $(go env GOARCH) in
|
||||||
amd64)
|
amd64)
|
||||||
cc=musl-gcc
|
cc=$(xcc linux x86_64)
|
||||||
;;
|
;;
|
||||||
arm64)
|
arm64)
|
||||||
cc=aarch64-unknown-linux-musl-gcc
|
cc=$(xcc linux aarch64)
|
||||||
tags="$tags,noasm"
|
tags="$tags,noasm"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -19,17 +19,17 @@ function build_linux () {
|
||||||
esac
|
esac
|
||||||
|
|
||||||
local -r extld="-fno-PIC -static -Wl,-z,stack-size=8388608"
|
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'" ./...
|
-tags "$tags" -o "${1}/" -ldflags "-extldflags '$extld'" ./...
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_mac () {
|
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}/" ./...
|
-tags sqlite_foreign_keys,sqlite_json -o "${1}/" ./...
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_windows () {
|
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}/" ./...
|
-tags sqlite_foreign_keys,sqlite_json,timetzdata -o "${1}/" ./...
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -exo pipefail
|
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 () {
|
function main () {
|
||||||
if [[ $# != 3 ]]; then
|
if [[ $# != 3 ]]; then
|
||||||
|
@ -20,23 +20,26 @@ function main () {
|
||||||
local -r os_arch="$(go env GOOS)_$(go env GOARCH)"
|
local -r os_arch="$(go env GOOS)_$(go env GOARCH)"
|
||||||
case "$os_arch" in
|
case "$os_arch" in
|
||||||
linux_amd64)
|
linux_amd64)
|
||||||
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) CC=$(which xcc.sh) go build \
|
export CC="$(xcc linux x86_64)"
|
||||||
-tags assets,sqlite_foreign_keys,sqlite_json,static_build \
|
CGO_ENABLED=1 PKG_CONFIG=$(which pkg-config) go build \
|
||||||
-buildmode pie \
|
-tags assets,sqlite_foreign_keys,sqlite_json,static_build,noasm \
|
||||||
-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/" \
|
-o "$out_dir/" \
|
||||||
"$pkg"
|
"$pkg"
|
||||||
;;
|
;;
|
||||||
linux_arm64)
|
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 \
|
-tags assets,sqlite_foreign_keys,sqlite_json,static_build,noasm \
|
||||||
-buildmode pie \
|
-buildmode=pie \
|
||||||
-ldflags "-s -w -X main.version=${version} -X main.commit=${commit} -X main.date=${build_date} -extldflags '$LINUX_EXTLD'" \
|
-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/" \
|
-o "$out_dir/" \
|
||||||
"$pkg"
|
"$pkg"
|
||||||
;;
|
;;
|
||||||
darwin_amd64)
|
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 \
|
-tags assets,sqlite_foreign_keys,sqlite_json \
|
||||||
-buildmode pie \
|
-buildmode pie \
|
||||||
-ldflags "-s -w -X main.version=${version} -X main.commit=${commit} -X main.date=${build_date}" \
|
-ldflags "-s -w -X main.version=${version} -X main.commit=${commit} -X main.date=${build_date}" \
|
||||||
|
@ -44,7 +47,8 @@ function main () {
|
||||||
"$pkg"
|
"$pkg"
|
||||||
;;
|
;;
|
||||||
windows_amd64)
|
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 \
|
-tags assets,sqlite_foreign_keys,sqlite_json,timetzdata \
|
||||||
-buildmode exe \
|
-buildmode exe \
|
||||||
-ldflags "-s -w -X main.version=${version} -X main.commit=${commit} -X main.date=${build_date}" \
|
-ldflags "-s -w -X main.version=${version} -X main.commit=${commit} -X main.date=${build_date}" \
|
||||||
|
|
Loading…
Reference in New Issue