--- /dev/null
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: C GLib & Ruby
+
+on:
+ push:
+ paths:
+ - '.github/workflows/ruby.yml'
+ - 'ci/docker/**'
+ - 'ci/scripts/c_glib_*'
+ - 'ci/scripts/cpp_*'
+ - 'ci/scripts/msys2_*'
+ - 'ci/scripts/ruby_*'
+ - 'ci/scripts/util_*'
+ - 'c_glib/**'
+ - 'cpp/**'
+ - 'ruby/**'
+ pull_request:
+ paths:
+ - '.github/workflows/ruby.yml'
+ - 'ci/docker/**'
+ - 'ci/scripts/c_glib_*'
+ - 'ci/scripts/cpp_*'
+ - 'ci/scripts/msys2_*'
+ - 'ci/scripts/ruby_*'
+ - 'ci/scripts/util_*'
+ - 'c_glib/**'
+ - 'cpp/**'
+ - 'ruby/**'
+
+concurrency:
+ group: ${{ github.repository }}-${{ github.ref }}-${{ github.workflow }}
+ cancel-in-progress: true
+
+env:
+ DOCKER_VOLUME_PREFIX: ".docker/"
+ ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
+ ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
+
+jobs:
+
+ ubuntu:
+ name: AMD64 Ubuntu ${{ matrix.ubuntu }} GLib & Ruby
+ runs-on: ubuntu-latest
+ if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
+ timeout-minutes: 40
+ strategy:
+ fail-fast: false
+ matrix:
+ ubuntu:
+ - 20.04
+ env:
+ UBUNTU: ${{ matrix.ubuntu }}
+ steps:
+ - name: Checkout Arrow
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - name: Fetch Submodules and Tags
+ shell: bash
+ run: ci/scripts/util_checkout.sh
+ - name: Free Up Disk Space
+ shell: bash
+ run: ci/scripts/util_cleanup.sh
+ - name: Cache Docker Volumes
+ uses: actions/cache@v2
+ with:
+ path: .docker
+ key: ubuntu-${{ matrix.ubuntu }}-ruby-${{ hashFiles('cpp/**') }}
+ restore-keys: ubuntu-${{ matrix.ubuntu }}-ruby-
+ - name: Setup Python
+ uses: actions/setup-python@v1
+ with:
+ python-version: 3.8
+ - name: Setup Archery
+ run: pip install -e dev/archery[docker]
+ - name: Execute Docker Build
+ run: |
+ sudo sysctl -w kernel.core_pattern="core.%e.%p"
+ ulimit -c unlimited
+ archery docker run \
+ -e ARROW_FLIGHT=ON \
+ -e Protobuf_SOURCE=BUNDLED \
+ -e gRPC_SOURCE=BUNDLED \
+ ubuntu-ruby
+ - name: Docker Push
+ if: success() && github.event_name == 'push' && github.repository == 'apache/arrow'
+ continue-on-error: true
+ shell: bash
+ run: archery docker push ubuntu-ruby
+
+ macos:
+ name: AMD64 MacOS 10.15 GLib & Ruby
+ runs-on: macos-latest
+ if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
+ timeout-minutes: 40
+ strategy:
+ fail-fast: false
+ env:
+ ARROW_BUILD_TESTS: OFF
+ ARROW_FLIGHT: ON
+ ARROW_GANDIVA: ON
+ ARROW_GLIB_DEVELOPMENT_MODE: true
+ ARROW_GLIB_GTK_DOC: true
+ ARROW_HOME: /usr/local
+ ARROW_JEMALLOC: OFF
+ ARROW_ORC: OFF
+ ARROW_PARQUET: ON
+ ARROW_WITH_BROTLI: ON
+ ARROW_WITH_LZ4: ON
+ ARROW_WITH_SNAPPY: ON
+ ARROW_WITH_ZLIB: ON
+ ARROW_WITH_ZSTD: ON
+ XML_CATALOG_FILES: /usr/local/etc/xml/catalog
+ steps:
+ - name: Checkout Arrow
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - name: Fetch Submodules and Tags
+ shell: bash
+ run: ci/scripts/util_checkout.sh
+ - name: Install Homebrew Dependencies
+ shell: bash
+ run: |
+ rm -f /usr/local/bin/2to3
+ brew update --preinstall
+ brew bundle --file=cpp/Brewfile
+ brew bundle --file=c_glib/Brewfile
+ - name: Install Ruby Dependencies
+ run: |
+ export MAKEFLAGS="-j$(sysctl -n hw.ncpu)"
+ bundle install --gemfile c_glib/Gemfile
+ bundle install --gemfile ruby/Gemfile
+ for ruby_package_gemfile in ruby/*/Gemfile; do \
+ bundle install --gemfile ${ruby_package_gemfile}
+ done
+ - name: Setup ccache
+ run: |
+ ci/scripts/ccache_setup.sh
+ - name: ccache info
+ id: ccache-info
+ run: |
+ echo "::set-output name=cache-dir::$(ccache --get-config cache_dir)"
+ - name: Cache ccache
+ uses: actions/cache@v2
+ with:
+ path: ${{ steps.ccache-info.outputs.cache-dir }}
+ key: ruby-ccache-macos-${{ hashFiles('cpp/**') }}
+ restore-keys: ruby-ccache-macos-
+ - name: Build C++
+ run: |
+ ci/scripts/cpp_build.sh $(pwd) $(pwd)/build
+ - name: Build GLib
+ run: |
+ ci/scripts/c_glib_build.sh $(pwd) $(pwd)/build
+ - name: Test GLib
+ shell: bash
+ run: ci/scripts/c_glib_test.sh $(pwd) $(pwd)/build
+ - name: Test Ruby
+ shell: bash
+ run: ci/scripts/ruby_test.sh $(pwd) $(pwd)/build
+
+ windows:
+ name: AMD64 Windows MinGW ${{ matrix.mingw-n-bits }} GLib & Ruby
+ runs-on: windows-latest
+ if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
+ timeout-minutes: 40
+ strategy:
+ fail-fast: false
+ matrix:
+ mingw-n-bits:
+ - 64
+ ruby-version:
+ - "3.0"
+ env:
+ ARROW_BUILD_SHARED: ON
+ ARROW_BUILD_STATIC: OFF
+ ARROW_BUILD_TESTS: OFF
+ ARROW_BUILD_TYPE: release
+ ARROW_FLIGHT: ON
+ ARROW_GANDIVA: ON
+ ARROW_HDFS: OFF
+ ARROW_HOME: /mingw${{ matrix.mingw-n-bits }}
+ ARROW_JEMALLOC: OFF
+ ARROW_PARQUET: ON
+ ARROW_PYTHON: OFF
+ ARROW_S3: ON
+ ARROW_USE_GLOG: OFF
+ ARROW_WITH_BROTLI: ON
+ ARROW_WITH_BZ2: ON
+ ARROW_WITH_LZ4: ON
+ ARROW_WITH_SNAPPY: ON
+ ARROW_WITH_ZLIB: ON
+ ARROW_WITH_ZSTD: ON
+ # Don't use preinstalled Boost by empty BOOST_ROOT and
+ # -DBoost_NO_BOOST_CMAKE=ON
+ BOOST_ROOT: ""
+ CMAKE_ARGS: >-
+ -DARROW_PACKAGE_PREFIX=/mingw${{ matrix.mingw-n-bits }}
+ -DBoost_NO_BOOST_CMAKE=ON
+ CMAKE_UNITY_BUILD: ON
+ steps:
+ - name: Disable Crash Dialogs
+ run: |
+ reg add `
+ "HKCU\SOFTWARE\Microsoft\Windows\Windows Error Reporting" `
+ /v DontShowUI `
+ /t REG_DWORD `
+ /d 1 `
+ /f
+ - name: Checkout Arrow
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - name: Fetch Submodules and Tags
+ shell: bash
+ run: ci/scripts/util_checkout.sh
+ - name: Setup Ruby
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: ${{ matrix.ruby-version }}
+ - name: Upgrade MSYS2
+ run: |
+ ridk exec bash ci\scripts\msys2_system_upgrade.sh
+ taskkill /F /FI "MODULES eq msys-2.0.dll"
+ - name: Clean MSYS2
+ run: |
+ ridk exec bash ci\scripts\msys2_system_clean.sh
+ - name: Setup MSYS2
+ run: |
+ ridk exec bash ci\scripts\msys2_setup.sh ruby
+ - name: Cache ccache
+ uses: actions/cache@v2
+ with:
+ path: ccache
+ key: ruby-ccache-mingw${{ matrix.mingw-n-bits }}-${{ hashFiles('cpp/**') }}
+ restore-keys: ruby-ccache-mingw${{ matrix.mingw-n-bits }}-
+ - name: Build C++
+ run: |
+ $Env:CMAKE_BUILD_PARALLEL_LEVEL = $Env:NUMBER_OF_PROCESSORS
+ $source_dir = "$(ridk exec cygpath --unix "$(Get-Location)")"
+ $build_dir = "$(ridk exec cygpath --unix "$(Get-Location)\build")"
+ $ErrorActionPreference = "Continue"
+ ridk exec bash ci\scripts\cpp_build.sh "${source_dir}" "${build_dir}"
+ - name: Build GLib
+ run: |
+ $Env:CMAKE_BUILD_PARALLEL_LEVEL = $Env:NUMBER_OF_PROCESSORS
+ $source_dir = "$(ridk exec cygpath --unix "$(Get-Location)")"
+ $build_dir = "$(ridk exec cygpath --unix "$(Get-Location)\build")"
+ $ErrorActionPreference = "Continue"
+ ridk exec bash ci\scripts\c_glib_build.sh "${source_dir}" "${build_dir}"
+ - name: RubyGems info
+ id: rubygems-info
+ run: |
+ Write-Output "::set-output name=gem-dir::$(ridk exec gem env gemdir)"
+ - name: Cache RubyGems
+ uses: actions/cache@v2
+ with:
+ path: ${{ steps.rubygems-info.outputs.gem-dir }}
+ key: ruby-rubygems-mingw${{ matrix.mingw-n-bits }}-${{ hashFiles('**/Gemfile', 'ruby/*/*.gemspec') }}
+ restore-keys: ruby-rubygems-mingw${{ matrix.mingw-n-bits }}-
+ - name: Install test dependencies
+ run: |
+ bundle install --gemfile c_glib\Gemfile
+ bundle install --gemfile ruby\Gemfile
+ Get-ChildItem ruby\*\Gemfile | `
+ ForEach-Object {bundle install --gemfile $_}
+ - name: Test GLib
+ run: |
+ $source_dir = "$(ridk exec cygpath --unix "$(Get-Location)")"
+ $build_dir = "$(ridk exec cygpath --unix "$(Get-Location)\build")"
+ $ErrorActionPreference = "Continue"
+ ridk exec bash ci\scripts\c_glib_test.sh "${source_dir}" "${build_dir}"
+ - name: Test Ruby
+ run: |
+ $Env:PKG_CONFIG_PATH = `
+ "$(ridk exec cygpath --absolute --windows "${Env:ARROW_HOME}/lib/pkgconfig")"
+ $Env:GI_TYPELIB_PATH = `
+ "$(ridk exec cygpath --absolute --windows "${Env:ARROW_HOME}/lib/girepository-1.0")"
+ $Env:RUBYOPTS = "-rdevkit"
+ $Env:MAKE = "ridk exec make"
+ $ErrorActionPreference = "Continue"
+ rake -f ruby\Rakefile