chore: import upstream snapshot with attribution
This commit is contained in:
Executable
+95
@@ -0,0 +1,95 @@
|
||||
#!/bin/bash
|
||||
|
||||
# build_binaries.sh
|
||||
#
|
||||
# Builds doltgres binaries with os-arch tuples provided as arguments, e.g. windows-amd64 linux-amd64
|
||||
#
|
||||
# This script is intended to be run in a docker environment via build.sh or
|
||||
# build_all_binaries.sh. You can also use it to build locally, but it needs to run apt-get and other
|
||||
# commands which modify the system.
|
||||
#
|
||||
# To build doltgres for the OS / arch of this machine, use build.sh.
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
apt-get update && apt-get install -y p7zip-full pigz curl xz-utils mingw-w64 clang-19
|
||||
|
||||
mkdir -p /tmp/build-deps
|
||||
pushd /tmp/build-deps
|
||||
curl -o optcross.tar.xz https://dolthub-tools.s3.us-west-2.amazonaws.com/optcross/"$(uname -m)"-linux_20250327_0.0.3_trixie.tar.xz
|
||||
tar Jxf optcross.tar.xz -C /
|
||||
curl -o icustatic.tar.xz https://dolthub-tools.s3.us-west-2.amazonaws.com/icustatic/20250327_0.0.3_trixie.tar.xz
|
||||
tar Jxf icustatic.tar.xz -C /
|
||||
export PATH=/opt/cross/bin:"$PATH"
|
||||
|
||||
popd
|
||||
|
||||
OS_ARCH_TUPLES="$*"
|
||||
|
||||
declare -A platform_cc
|
||||
platform_cc["linux-arm64"]="aarch64-linux-musl-gcc"
|
||||
platform_cc["linux-amd64"]="x86_64-linux-musl-gcc"
|
||||
platform_cc["darwin-arm64"]="clang-19 --target=aarch64-darwin --sysroot=/opt/cross/darwin-sysroot -mmacosx-version-min=12.0"
|
||||
platform_cc["darwin-amd64"]="clang-19 --target=x86_64-darwin --sysroot=/opt/cross/darwin-sysroot -mmacosx-version-min=12.0"
|
||||
platform_cc["windows-amd64"]="x86_64-w64-mingw32-gcc"
|
||||
|
||||
declare -A platform_cxx
|
||||
platform_cxx["linux-arm64"]="aarch64-linux-musl-g++"
|
||||
platform_cxx["linux-amd64"]="x86_64-linux-musl-g++"
|
||||
platform_cxx["darwin-arm64"]="clang++-19 --target=aarch64-darwin --sysroot=/opt/cross/darwin-sysroot -mmacosx-version-min=12.0 --stdlib=libc++"
|
||||
platform_cxx["darwin-amd64"]="clang++-19 --target=x86_64-darwin --sysroot=/opt/cross/darwin-sysroot -mmacosx-version-min=12.0 --stdlib=libc++"
|
||||
platform_cxx["windows-amd64"]="x86_64-w64-mingw32-g++"
|
||||
|
||||
declare -A platform_as
|
||||
platform_as["linux-arm64"]="aarch64-linux-musl-as"
|
||||
platform_as["linux-amd64"]="x86_64-linux-musl-as"
|
||||
platform_as["darwin-arm64"]="clang-19 --target=aarch64-darwin --sysroot=/opt/cross/darwin-sysroot -mmacosx-version-min=12.0"
|
||||
platform_as["darwin-amd64"]="clang-19 --target=x86_64-darwin --sysroot=/opt/cross/darwin-sysroot -mmacosx-version-min=12.0"
|
||||
platform_as["windows-amd64"]="x86_64-w64-mingw32-as"
|
||||
|
||||
declare -A platform_go_ldflags
|
||||
platform_go_ldflags["linux-arm64"]="-linkmode external -s -w"
|
||||
platform_go_ldflags["linux-amd64"]="-linkmode external -s -w"
|
||||
platform_go_ldflags["darwin-arm64"]="-s -w -compressdwarf=false -extldflags -Wl,-platform_version,macos,12.0,14.4"
|
||||
platform_go_ldflags["darwin-amd64"]="-s -w -compressdwarf=false -extldflags -Wl,-platform_version,macos,12.0,14.4"
|
||||
platform_go_ldflags["windows-amd64"]="-s -w"
|
||||
|
||||
declare -A platform_cgo_ldflags
|
||||
platform_cgo_ldflags["linux-arm64"]="-static -s"
|
||||
platform_cgo_ldflags["linux-amd64"]="-static -s"
|
||||
platform_cgo_ldflags["darwin-arm64"]=""
|
||||
platform_cgo_ldflags["darwin-amd64"]=""
|
||||
# Stack smash protection lib is built into clang for unix platforms,
|
||||
# but on Windows we need to pull in the separate ssp library
|
||||
platform_cgo_ldflags["windows-amd64"]="-static-libgcc -static-libstdc++ -Wl,-Bstatic -lssp"
|
||||
|
||||
for tuple in $OS_ARCH_TUPLES; do
|
||||
os=`echo $tuple | sed 's/-.*//'`
|
||||
arch=`echo $tuple | sed 's/.*-//'`
|
||||
o="out/doltgresql-$os-$arch"
|
||||
mkdir -p "$o/bin"
|
||||
mkdir -p "$o/licenses"
|
||||
cp -r ./licenses "$o/licenses"
|
||||
cp LICENSE "$o/licenses"
|
||||
bin="doltgres"
|
||||
if [ "$os" = windows ]; then
|
||||
bin="$bin.exe"
|
||||
fi
|
||||
echo Building "$o/bin/$bin"
|
||||
CGO_ENABLED=1 \
|
||||
GOOS="$os" \
|
||||
GOARCH="$arch" \
|
||||
CC="${platform_cc[${tuple}]}" \
|
||||
CXX="${platform_cxx[${tuple}]}" \
|
||||
AS="${platform_as[${tuple}]}" \
|
||||
CGO_LDFLAGS="${platform_cgo_ldflags[${tuple}]}" \
|
||||
go build -buildvcs=false -trimpath \
|
||||
-ldflags="${platform_go_ldflags[${tuple}]}" \
|
||||
-tags icu_static -o "$o/bin/$bin" \
|
||||
./cmd/doltgres
|
||||
if [ "$os" = windows ]; then
|
||||
(cd out && 7z a "doltgresql-$os-$arch.zip" "doltgresql-$os-$arch" && 7z a "doltgresql-$os-$arch.7z" "doltgresql-$os-$arch")
|
||||
else
|
||||
tar cf - -C out "doltgresql-$os-$arch" | pigz -9 > "out/doltgresql-$os-$arch.tar.gz"
|
||||
fi
|
||||
done
|
||||
Reference in New Issue
Block a user