|
@@ -0,0 +1,62 @@
|
|
|
|
+#!/bin/bash
|
|
|
|
+
|
|
|
|
+set -ex
|
|
|
|
+
|
|
|
|
+# Change to repo root.
|
|
|
|
+cd $(dirname $0)/../..
|
|
|
|
+
|
|
|
|
+# Initialize any submodules.
|
|
|
|
+git submodule update --init --recursive
|
|
|
|
+
|
|
|
|
+# The directory with all resulting artifacts
|
|
|
|
+mkdir -p artifacts
|
|
|
|
+
|
|
|
|
+# Artifacts from all predecessor jobs get copied to this directory by kokoro
|
|
|
|
+INPUT_ARTIFACTS_DIR="${KOKORO_GFILE_DIR}/github/protobuf"
|
|
|
|
+
|
|
|
|
+# TODO(jtattermusch): remove listing the files, but for now it make it easier
|
|
|
|
+# to iterate on the script.
|
|
|
|
+ls -R ${INPUT_ARTIFACTS_DIR}
|
|
|
|
+
|
|
|
|
+# ====================================
|
|
|
|
+# Copy to expose all the artifacts from the predecessor jobs to the output
|
|
|
|
+# TODO(jtattermusch): the directory layout of the artifact builds is pretty messy,
|
|
|
|
+# so will be the output artifacts of this job.
|
|
|
|
+cp -r ${INPUT_ARTIFACTS_DIR}/* artifacts
|
|
|
|
+
|
|
|
|
+# ====================================
|
|
|
|
+# Build Google.Protobuf.Tools C# nuget
|
|
|
|
+# The reason it's being done in this script is that we need access to protoc binaries
|
|
|
|
+# built on multiple platform (the build is performed by the "build artifact" step)
|
|
|
|
+# and adding and extra chained build just for building the Google.Protobuf.Tools
|
|
|
|
+# nuget seems like an overkill.
|
|
|
|
+cd csharp
|
|
|
|
+mkdir -p protoc/windows_x86
|
|
|
|
+mkdir -p protoc/windows_x64
|
|
|
|
+cp ${INPUT_ARTIFACTS_DIR}/build32/Release/protoc.exe protoc/windows_x86/protoc.exe
|
|
|
|
+cp ${INPUT_ARTIFACTS_DIR}/build64/Release/protoc.exe protoc/windows_x64/protoc.exe
|
|
|
|
+
|
|
|
|
+mkdir -p protoc/linux_x86
|
|
|
|
+mkdir -p protoc/linux_x64
|
|
|
|
+# Because of maven unrelated reasonse the linux protoc binaries have a dummy .exe extension.
|
|
|
|
+# For the Google.Protobuf.Tools nuget, we don't want that expection, so we just remove it.
|
|
|
|
+cp ${INPUT_ARTIFACTS_DIR}/protoc-artifacts/target/linux/x86_32/protoc.exe protoc/linux_x86/protoc
|
|
|
|
+cp ${INPUT_ARTIFACTS_DIR}/protoc-artifacts/target/linux/x86_64/protoc.exe protoc/linux_x64/protoc
|
|
|
|
+
|
|
|
|
+mkdir -p protoc/macosx_x86
|
|
|
|
+mkdir -p protoc/macosx_x64
|
|
|
|
+cp ${INPUT_ARTIFACTS_DIR}/build32/src/protoc protoc/macosx_x86/protoc
|
|
|
|
+cp ${INPUT_ARTIFACTS_DIR}/build64/src/protoc protoc/macosx_x64/protoc
|
|
|
|
+
|
|
|
|
+# Install nuget (will also install mono)
|
|
|
|
+# TODO(jtattermusch): use "mono:5.14" docker image instead so we don't have to apt-get install
|
|
|
|
+sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
|
|
|
|
+sudo apt install apt-transport-https
|
|
|
|
+echo "deb https://download.mono-project.com/repo/ubuntu stable-trusty main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
|
|
|
|
+sudo apt update
|
|
|
|
+sudo apt-get install -y nuget
|
|
|
|
+
|
|
|
|
+nuget pack Google.Protobuf.Tools.nuspec
|
|
|
|
+
|
|
|
|
+# Copy the nupkg to the output artifacts
|
|
|
|
+cp Google.Protobuf.Tools.*.nupkg ../artifacts
|