dep-protobuf/csharp/build_tools.sh
Peter Pokojný c2b40409ed Include also ARM build of protoc in nuget package (#21568)
Closes #21568

COPYBARA_INTEGRATE_REVIEW=https://github.com/protocolbuffers/protobuf/pull/21568 from FooRider:nuget-include-linuxaarch64 c6d5853600
PiperOrigin-RevId: 755009744
2025-05-05 11:29:46 -07:00

52 lines
1.3 KiB
Bash
Executable file

#!/bin/bash
if [ $# -ne 1 ]; then
cat <<EOF
Usage: $0 <VERSION_NUMBER>
Example:
$ $0 3.0.0
This script will download pre-built protoc binaries from maven repository and
create the Google.Protobuf.Tools package. Well-known type .proto files will also
be included.
EOF
exit 1
fi
VERSION_NUMBER=$1
# <directory name> <binary file name> pairs.
declare -a FILE_NAMES=( \
windows_x86 windows-x86_32.exe \
windows_x64 windows-x86_64.exe \
macosx_x64 osx-x86_64.exe \
linux_x86 linux-x86_32.exe \
linux_x64 linux-x86_64.exe \
linux_aarch64 linux-aaarch_64.exe \
)
set -e
mkdir -p protoc
# Create a zip file for each binary.
for((i=0;i<${#FILE_NAMES[@]};i+=2));do
DIR_NAME=${FILE_NAMES[$i]}
mkdir -p protoc/$DIR_NAME
if [ ${DIR_NAME:0:3} = "win" ]; then
TARGET_BINARY="protoc.exe"
else
TARGET_BINARY="protoc"
fi
BINARY_NAME=${FILE_NAMES[$(($i+1))]}
BINARY_URL=http://repo1.maven.org/maven2/com/google/protobuf/protoc/${VERSION_NUMBER}/protoc-${VERSION_NUMBER}-${BINARY_NAME}
if ! wget ${BINARY_URL} -O protoc/$DIR_NAME/$TARGET_BINARY &> /dev/null; then
echo "[ERROR] Failed to download ${BINARY_URL}" >&2
echo "[ERROR] Skipped $protoc-${VERSION_NAME}-${DIR_NAME}" >&2
continue
fi
done
nuget pack Google.Protobuf.Tools.nuspec