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  '