github.com/dolthub/dolt/go@v0.40.5-0.20240520175717-68db7794bea6/utils/publishrelease/buildpgobinaries.sh (about) 1 #!/bin/bash 2 3 set -e 4 set -o pipefail 5 6 script_dir=$(dirname "$0") 7 cd $script_dir/../.. 8 9 [ ! -z "$GO_BUILD_VERSION" ] || (echo "Must supply GO_BUILD_VERSION"; exit 1) 10 [ ! -z "$PROFILE" ] || (echo "Must supply PROFILE"; exit 1) 11 12 docker run --rm -v `pwd`:/src -v "$PROFILE":/cpu.pprof golang:"$GO_BUILD_VERSION"-bookworm /bin/bash -c ' 13 set -e 14 set -o pipefail 15 apt-get update && apt-get install -y p7zip-full pigz curl xz-utils mingw-w64 clang-15 16 17 cd / 18 curl -o optcross.tar.xz https://dolthub-tools.s3.us-west-2.amazonaws.com/optcross/"$(uname -m)"-linux_20240425_0.0.1.tar.xz 19 tar Jxf optcross.tar.xz 20 export PATH=/opt/cross/bin:"$PATH" 21 22 cd /src 23 24 BINS="dolt" 25 OS_ARCH_TUPLES="darwin-amd64 darwin-arm64 windows-amd64 linux-amd64 linux-arm64" 26 27 declare -A platform_cc 28 platform_cc["linux-arm64"]="aarch64-linux-musl-gcc" 29 platform_cc["linux-amd64"]="x86_64-linux-musl-gcc" 30 platform_cc["darwin-arm64"]="clang-15 --target=aarch64-darwin --sysroot=/opt/cross/darwin-sysroot -mmacosx-version-min=12.0" 31 platform_cc["darwin-amd64"]="clang-15 --target=x86_64-darwin --sysroot=/opt/cross/darwin-sysroot -mmacosx-version-min=12.0" 32 platform_cc["windows-amd64"]="x86_64-w64-mingw32-gcc" 33 34 declare -A platform_as 35 platform_as["linux-arm64"]="aarch64-linux-musl-as" 36 platform_as["linux-amd64"]="x86_64-linux-musl-as" 37 platform_as["darwin-arm64"]="clang-15 --target=aarch64-darwin --sysroot=/opt/cross/darwin-sysroot -mmacosx-version-min=12.0" 38 platform_as["darwin-amd64"]="clang-15 --target=x86_64-darwin --sysroot=/opt/cross/darwin-sysroot -mmacosx-version-min=12.0" 39 platform_as["windows-amd64"]="x86_64-w64-mingw32-as" 40 41 declare -A platform_go_ldflags 42 platform_go_ldflags["linux-arm64"]="-s -w" 43 platform_go_ldflags["linux-amd64"]="-s -w" 44 platform_go_ldflags["darwin-arm64"]="-s -w -compressdwarf=false" 45 platform_go_ldflags["darwin-amd64"]="-s -w -compressdwarf=false" 46 platform_go_ldflags["windows-amd64"]="-s -w" 47 48 declare -A platform_cgo_ldflags 49 platform_cgo_ldflags["linux-arm64"]="-static -s" 50 platform_cgo_ldflags["linux-amd64"]="-static -s" 51 platform_cgo_ldflags["darwin-arm64"]="" 52 platform_cgo_ldflags["darwin-amd64"]="" 53 platform_cgo_ldflags["windows-amd64"]="" 54 55 for tuple in $OS_ARCH_TUPLES; do 56 os=`echo $tuple | sed 's/-.*//'` 57 arch=`echo $tuple | sed 's/.*-//'` 58 o="out/dolt-$os-$arch" 59 mkdir -p "$o/bin" 60 cp Godeps/LICENSES "$o/" 61 for bin in $BINS; do 62 echo Building "$o/$bin" 63 obin="$bin" 64 if [ "$os" = windows ]; then 65 obin="$bin.exe" 66 fi 67 CGO_ENABLED=1 \ 68 GOOS="$os" \ 69 GOARCH="$arch" \ 70 CC="${platform_cc[${tuple}]}" \ 71 AS="${platform_as[${tuple}]}" \ 72 CGO_LDFLAGS="${platform_cgo_ldflags[${tuple}]}" \ 73 go build \ 74 -pgo=/cpu.pprof \ 75 -ldflags="${platform_go_ldflags[${tuple}]}" \ 76 -trimpath \ 77 -o "$o/bin/$obin" "./cmd/$bin/" 78 done 79 if [ "$os" = windows ]; then 80 (cd out && 7z a "dolt-$os-$arch.zip" "dolt-$os-$arch" && 7z a "dolt-$os-$arch.7z" "dolt-$os-$arch") 81 else 82 tar cf - -C out "dolt-$os-$arch" | pigz -9 > "out/dolt-$os-$arch.tar.gz" 83 fi 84 done 85 86 render_install_sh() { 87 local parsed=(`grep "Version = " ./cmd/dolt/doltversion/version.go`) 88 local DOLT_VERSION=`eval echo ${parsed[2]}` 89 sed '\''s|__DOLT_VERSION__|'\''"$DOLT_VERSION"'\''|'\'' utils/publishrelease/install.sh 90 } 91 92 render_install_sh > out/install.sh 93 chmod 755 out/install.sh 94 '