From b0a8220e92ce7eaccb3042efa123e17b4d0719e9 Mon Sep 17 00:00:00 2001 From: Adam Cozzette Date: Thu, 14 Jun 2018 16:48:53 -0700 Subject: Added Kokoro Windows release build config for protoc (#4766) This should make it easy to automatically build 32-bit and 64-bit Windows protoc binaries. --- kokoro/release/protoc/windows/build.bat | 27 +++++++++++++++++++++++++++ kokoro/release/protoc/windows/release.cfg | 8 ++++++++ 2 files changed, 35 insertions(+) create mode 100644 kokoro/release/protoc/windows/build.bat create mode 100644 kokoro/release/protoc/windows/release.cfg (limited to 'kokoro') diff --git a/kokoro/release/protoc/windows/build.bat b/kokoro/release/protoc/windows/build.bat new file mode 100644 index 00000000..ae0fa94a --- /dev/null +++ b/kokoro/release/protoc/windows/build.bat @@ -0,0 +1,27 @@ +set PATH=C:\Program Files (x86)\MSBuild\14.0\bin\;%PATH% +set generator32=Visual Studio 14 +set generator64=Visual Studio 14 Win64 +set vcplatform32=win32 +set vcplatform64=x64 +set configuration=Release + +echo Building protoc +cd github\protobuf + +mkdir build32 +cd build32 +cmake -G "%generator32%" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=OFF -Dprotobuf_UNICODE=ON ../cmake +msbuild protobuf.sln /p:Platform=%vcplatform32% || goto error +cd .. + +mkdir build64 +cd build64 +cmake -G "%generator64%" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=OFF -Dprotobuf_UNICODE=ON ../cmake +msbuild protobuf.sln /p:Platform=%vcplatform64% || goto error +cd .. + +goto :EOF + +:error +echo Failed! +exit /b %ERRORLEVEL% diff --git a/kokoro/release/protoc/windows/release.cfg b/kokoro/release/protoc/windows/release.cfg new file mode 100644 index 00000000..0d0da8f1 --- /dev/null +++ b/kokoro/release/protoc/windows/release.cfg @@ -0,0 +1,8 @@ +# Configuration for Windows protoc release builds +build_file: "protobuf/kokoro/release/protoc/windows/build.bat" + +action { + define_artifacts { + regex: "**/protoc.exe" + } +} -- cgit v1.2.3 From ad85c3b4a2598670de129015fab03a97edea73bc Mon Sep 17 00:00:00 2001 From: Adam Cozzette Date: Mon, 18 Jun 2018 14:34:14 -0700 Subject: Added Kokoro protoc release build for OS X (#4770) This configuration builds both 32-bit and 64-bit binaries for Mac OS X. One thing I had to change was to increase our minimum supported version for 10.7 to 10.9, because 10.9 (Mavericks) appears to be the earliest version supporting C++11. --- kokoro/release/protoc/macos/build.sh | 23 +++++++++++++++++++++++ kokoro/release/protoc/macos/release.cfg | 8 ++++++++ 2 files changed, 31 insertions(+) create mode 100644 kokoro/release/protoc/macos/build.sh create mode 100644 kokoro/release/protoc/macos/release.cfg (limited to 'kokoro') diff --git a/kokoro/release/protoc/macos/build.sh b/kokoro/release/protoc/macos/build.sh new file mode 100644 index 00000000..db9d3140 --- /dev/null +++ b/kokoro/release/protoc/macos/build.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -x +CXXFLAGS_COMMON="-DNDEBUG -mmacosx-version-min=10.9" + +cd github/protobuf +./autogen.sh + +mkdir build32 && cd build32 +export CXXFLAGS="$CXXFLAGS_COMMON -m32" +../configure --disable-shared +make -j4 +file src/protoc +otool -L src/protoc | grep dylib +cd .. + +mkdir build64 && cd build64 +export CXXFLAGS="$CXXFLAGS_COMMON -m64" +../configure --disable-shared +make -j4 +file src/protoc +otool -L src/protoc | grep dylib +cd .. diff --git a/kokoro/release/protoc/macos/release.cfg b/kokoro/release/protoc/macos/release.cfg new file mode 100644 index 00000000..da903d03 --- /dev/null +++ b/kokoro/release/protoc/macos/release.cfg @@ -0,0 +1,8 @@ +# Configuration for Mac OSX protoc release builds +build_file: "protobuf/kokoro/release/protoc/macos/build.sh" + +action { + define_artifacts { + regex: "**/protoc" + } +} -- cgit v1.2.3 From b907a03185a3267a3ce0e4456aabf32dcfc54049 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Fri, 22 Jun 2018 10:26:17 -0700 Subject: Add files to build ruby artifact for mac on kokoro (#4814) * Add files to build ruby artifact for mac on kokoro * Move ruby specific stuff to ruby dir --- kokoro/release/macos/build_artifacts.cfg | 8 ++++ kokoro/release/macos/build_artifacts.sh | 19 ++++++++ kokoro/release/macos/ruby/ruby_build.sh | 15 ++++++ .../release/macos/ruby/ruby_build_environment.sh | 56 ++++++++++++++++++++++ 4 files changed, 98 insertions(+) create mode 100644 kokoro/release/macos/build_artifacts.cfg create mode 100755 kokoro/release/macos/build_artifacts.sh create mode 100755 kokoro/release/macos/ruby/ruby_build.sh create mode 100755 kokoro/release/macos/ruby/ruby_build_environment.sh (limited to 'kokoro') diff --git a/kokoro/release/macos/build_artifacts.cfg b/kokoro/release/macos/build_artifacts.cfg new file mode 100644 index 00000000..35d36dee --- /dev/null +++ b/kokoro/release/macos/build_artifacts.cfg @@ -0,0 +1,8 @@ +# Configuration for Mac OSX release builds +build_file: "protobuf/kokoro/release/macos/build_artifacts.sh" + +action { + define_artifacts { + regex: "github/protobuf/artifacts/**" + } +} diff --git a/kokoro/release/macos/build_artifacts.sh b/kokoro/release/macos/build_artifacts.sh new file mode 100755 index 00000000..23135ca3 --- /dev/null +++ b/kokoro/release/macos/build_artifacts.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -ex + +# change to repo root +cd $(dirname $0)/../../.. + +# all artifacts come here +mkdir artifacts +export ARTIFACT_DIR=$(pwd)/artifacts + +# ruby environment +bash kokoro/release/macos/ruby/ruby_build_environment.sh + +gem install rubygems-update +update_rubygems + +# build artifacts +bash kokoro/release/macos/ruby/ruby_build.sh diff --git a/kokoro/release/macos/ruby/ruby_build.sh b/kokoro/release/macos/ruby/ruby_build.sh new file mode 100755 index 00000000..cf6b433d --- /dev/null +++ b/kokoro/release/macos/ruby/ruby_build.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Build protoc +if test ! -e src/protoc; then + ./autogen.sh + ./configure + make -j4 +fi + +umask 0022 +pushd ruby +bundle install && bundle exec rake gem:native +ls pkg +mv pkg/* $ARTIFACT_DIR +popd diff --git a/kokoro/release/macos/ruby/ruby_build_environment.sh b/kokoro/release/macos/ruby/ruby_build_environment.sh new file mode 100755 index 00000000..cc072e55 --- /dev/null +++ b/kokoro/release/macos/ruby/ruby_build_environment.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +set -ex + +set +ex # rvm script is very verbose and exits with errorcode +source $HOME/.rvm/scripts/rvm +set -e # rvm commands are very verbose +time rvm install 2.5.0 +rvm use 2.5.0 --default +gem install bundler --no-ri --no-doc +rvm osx-ssl-certs status all +rvm osx-ssl-certs update all +set -ex + +rm -rf ~/.rake-compiler + +CROSS_RUBY=$(mktemp tmpfile.XXXXXXXX) + +curl https://raw.githubusercontent.com/rake-compiler/rake-compiler/v1.0.3/tasks/bin/cross-ruby.rake > "$CROSS_RUBY" + +# See https://github.com/grpc/grpc/issues/12161 for verconf.h patch details +patch "$CROSS_RUBY" << EOF +--- cross-ruby.rake 2018-04-10 11:32:16.000000000 -0700 ++++ patched 2018-04-10 11:40:25.000000000 -0700 +@@ -133,8 +133,10 @@ + "--host=#{MINGW_HOST}", + "--target=#{MINGW_TARGET}", + "--build=#{RUBY_BUILD}", +- '--enable-shared', ++ '--enable-static', ++ '--disable-shared', + '--disable-install-doc', ++ '--without-gmp', + '--with-ext=' + ] + +@@ -151,6 +153,7 @@ + # make + file "#{USER_HOME}/builds/#{MINGW_HOST}/#{RUBY_CC_VERSION}/ruby.exe" => ["#{USER_HOME}/builds/#{MINGW_HOST}/#{RUBY_CC_VERSION}/Makefile"] do |t| + chdir File.dirname(t.prerequisites.first) do ++ sh "test -s verconf.h || rm -f verconf.h" # if verconf.h has size 0, make sure it gets re-built by make + sh MAKE + end + end +EOF + +MAKE="make -j8" + +for v in 2.5.0 2.4.0 2.3.0 2.2.2 2.1.6 2.0.0-p645 ; do + ccache -c + rake -f "$CROSS_RUBY" cross-ruby VERSION="$v" HOST=x86_64-darwin11 MAKE="$MAKE" +done + +sed 's/x86_64-darwin-11/universal-darwin/' ~/.rake-compiler/config.yml > "$CROSS_RUBY" +mv "$CROSS_RUBY" ~/.rake-compiler/config.yml + -- cgit v1.2.3 From 56d27530ab573d8c8a9808bff9542ca2e8a9291a Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Fri, 22 Jun 2018 13:00:55 -0700 Subject: Rename build_artifacts.cfg to release.cfg (#4818) --- kokoro/release/macos/build_artifacts.cfg | 8 -------- kokoro/release/macos/release.cfg | 8 ++++++++ 2 files changed, 8 insertions(+), 8 deletions(-) delete mode 100644 kokoro/release/macos/build_artifacts.cfg create mode 100644 kokoro/release/macos/release.cfg (limited to 'kokoro') diff --git a/kokoro/release/macos/build_artifacts.cfg b/kokoro/release/macos/build_artifacts.cfg deleted file mode 100644 index 35d36dee..00000000 --- a/kokoro/release/macos/build_artifacts.cfg +++ /dev/null @@ -1,8 +0,0 @@ -# Configuration for Mac OSX release builds -build_file: "protobuf/kokoro/release/macos/build_artifacts.sh" - -action { - define_artifacts { - regex: "github/protobuf/artifacts/**" - } -} diff --git a/kokoro/release/macos/release.cfg b/kokoro/release/macos/release.cfg new file mode 100644 index 00000000..35d36dee --- /dev/null +++ b/kokoro/release/macos/release.cfg @@ -0,0 +1,8 @@ +# Configuration for Mac OSX release builds +build_file: "protobuf/kokoro/release/macos/build_artifacts.sh" + +action { + define_artifacts { + regex: "github/protobuf/artifacts/**" + } +} -- cgit v1.2.3 From f7ada1280fac4af717d478e6a9765d3f02b418b3 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Mon, 25 Jun 2018 11:14:49 -0700 Subject: Build ruby gem on kokoro (#4819) * Install rake compiler * Add kokoro config to build ruby gem on linux * Rename from linix to linux * Fix prepare_build.sh name * Clean up * Install bundler * Install bundler * Use c99 in order to build gem on mingw-32 on ruby 2.0.0 See https://github.com/rake-compiler/rake-compiler-dock/issues/4 * Move c99 config to extcofig.rb --- kokoro/release/linux/build_artifacts.sh | 14 ++++++++++++++ kokoro/release/linux/prepare_build.sh | 16 ++++++++++++++++ kokoro/release/linux/release.cfg | 8 ++++++++ kokoro/release/linux/ruby/ruby_build.sh | 15 +++++++++++++++ kokoro/release/linux/ruby/ruby_build_environment.sh | 8 ++++++++ kokoro/release/macos/ruby/ruby_build_environment.sh | 1 + ruby/ext/google/protobuf_c/extconf.rb | 4 +++- 7 files changed, 65 insertions(+), 1 deletion(-) create mode 100755 kokoro/release/linux/build_artifacts.sh create mode 100755 kokoro/release/linux/prepare_build.sh create mode 100644 kokoro/release/linux/release.cfg create mode 100755 kokoro/release/linux/ruby/ruby_build.sh create mode 100755 kokoro/release/linux/ruby/ruby_build_environment.sh (limited to 'kokoro') diff --git a/kokoro/release/linux/build_artifacts.sh b/kokoro/release/linux/build_artifacts.sh new file mode 100755 index 00000000..ae7dc813 --- /dev/null +++ b/kokoro/release/linux/build_artifacts.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -ex + +# change to repo root +cd $(dirname $0)/../../.. + +source kokoro/release/linux/prepare_build.sh + +# ruby environment +source kokoro/release/linux/ruby/ruby_build_environment.sh + +# build artifacts +bash kokoro/release/linux/ruby/ruby_build.sh diff --git a/kokoro/release/linux/prepare_build.sh b/kokoro/release/linux/prepare_build.sh new file mode 100755 index 00000000..d3ff8764 --- /dev/null +++ b/kokoro/release/linux/prepare_build.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Move docker's storage location to scratch disk so we don't run out of space. +echo 'DOCKER_OPTS="${DOCKER_OPTS} --graph=/tmpfs/docker"' | sudo tee --append /etc/default/docker +# Use container registry mirror for pulling docker images (should make downloads faster) +# See https://cloud.google.com/container-registry/docs/using-dockerhub-mirroring +echo 'DOCKER_OPTS="${DOCKER_OPTS} --registry-mirror=https://mirror.gcr.io"' | sudo tee --append /etc/default/docker +sudo service docker restart + +# Download Docker images from DockerHub +export DOCKERHUB_ORGANIZATION=grpctesting + +# All artifacts come here +mkdir artifacts +export ARTIFACT_DIR=$(pwd)/artifacts + diff --git a/kokoro/release/linux/release.cfg b/kokoro/release/linux/release.cfg new file mode 100644 index 00000000..5dae7019 --- /dev/null +++ b/kokoro/release/linux/release.cfg @@ -0,0 +1,8 @@ +# Configuration for Linux release builds +build_file: "protobuf/kokoro/release/linux/build_artifacts.sh" + +action { + define_artifacts { + regex: "github/protobuf/artifacts/**" + } +} diff --git a/kokoro/release/linux/ruby/ruby_build.sh b/kokoro/release/linux/ruby/ruby_build.sh new file mode 100755 index 00000000..cf6b433d --- /dev/null +++ b/kokoro/release/linux/ruby/ruby_build.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Build protoc +if test ! -e src/protoc; then + ./autogen.sh + ./configure + make -j4 +fi + +umask 0022 +pushd ruby +bundle install && bundle exec rake gem:native +ls pkg +mv pkg/* $ARTIFACT_DIR +popd diff --git a/kokoro/release/linux/ruby/ruby_build_environment.sh b/kokoro/release/linux/ruby/ruby_build_environment.sh new file mode 100755 index 00000000..ea04f905 --- /dev/null +++ b/kokoro/release/linux/ruby/ruby_build_environment.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set +ex +[[ -s /etc/profile.d/rvm.sh ]] && . /etc/profile.d/rvm.sh +set -e # rvm commands are very verbose +rvm --default use ruby-2.4.1 +gem install bundler --update +set -ex diff --git a/kokoro/release/macos/ruby/ruby_build_environment.sh b/kokoro/release/macos/ruby/ruby_build_environment.sh index cc072e55..e9c619cd 100755 --- a/kokoro/release/macos/ruby/ruby_build_environment.sh +++ b/kokoro/release/macos/ruby/ruby_build_environment.sh @@ -7,6 +7,7 @@ source $HOME/.rvm/scripts/rvm set -e # rvm commands are very verbose time rvm install 2.5.0 rvm use 2.5.0 --default +gem install rake-compiler --no-ri --no-doc gem install bundler --no-ri --no-doc rvm osx-ssl-certs status all rvm osx-ssl-certs update all diff --git a/ruby/ext/google/protobuf_c/extconf.rb b/ruby/ext/google/protobuf_c/extconf.rb index 0886e607..cc097e11 100644 --- a/ruby/ext/google/protobuf_c/extconf.rb +++ b/ruby/ext/google/protobuf_c/extconf.rb @@ -2,7 +2,9 @@ require 'mkmf' -$CFLAGS += " -std=c99 -O3 -DNDEBUG" +unless RUBY_PLATFORM =~ /mswin|mingw/ + $CFLAGS += " -std=c99 -O3 -DNDEBUG" +end if RUBY_PLATFORM =~ /linux/ -- cgit v1.2.3