SIGN IN SIGN UP
apache / arrow UNCLAIMED

Apache Arrow is the universal columnar format and multi-language toolbox for fast data interchange and in-memory analytics

0 0 2 C++
ARROW-7101: [CI] Refactor docker-compose setup and use it with GitHub Actions ## Projecting ideas from ursabot ### Parametric docker images The images are better parameterized now, meaning that we can build more variant of the same service. Couple of examples: ```console UBUNTU=16.04 docker-compose build ubuntu-cpp ARCH=arm64v8 UBUNTU=18.04 docker-compose build ubuntu-cpp PYTHON=3.6 docker-compose build conda-python ARCH=arm32v7 PYTHON=3.6 PANDAS=0.25 docker-compose build conda-python-pandas ``` Each variant has it's own docker image following a string naming schema: `{org}/{arch}-{platform}-{platform-version}[[-{variant}-{variant-version}]..]:latest` ### Use *_build.sh and *_test.sh for each job The docker images provide the environment, and each language backend usually should implement two scripts, a `build.sh` and a `test.sh`. This way dependent build like the docker python, r or c glib are able to reuse the build script of the ancestor without running its tests. With small enough scripts, if the environment is properly set up even the non-docker builds should be reproducible locally. GitHub Actions support bash scripts across all three platforms, so we can reuse the same `*_build.sh` and `*_test.sh` scripts to execute the builds either in docker, on the CI or locally. ## Using GitHub Actions for running the builds Regardless of the CI we're going to choose, the isolation constraint of different platforms requires some sort of virtualisation. Currently linux (and windows, but I have not tried it yet) has lightweight containerisation, so we should keep the linux builds isolated in docker containers. The rest of the platforms (windows and macOS) should be executed on the CI system. GitHub Actions support all three major platforms, linux, windows and macOS. I've added cross platform builds for a couple of languages, like Rust, and Go, the rest are work in progress. ### Workflow A workflow should define all builds of a language, mostly because the path filters can be defined on workflow level. For example the python builds should be triggered if either a cpp/** or a python/** file changes which can be covered in the same workflow file. ## Feature parity with the current builds Reaching feature parity with all of the builds below is not a goal for this PR, the difficult ones should at least have a tracking JIRA ticket. ### Travis-CI - [x] **Lint, Release tests**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` - [x] **C++ unit tests w/ conda-forge toolchain, coverage**: without coverage - `C++ / AMD64 Conda C++` - [x] **Python 3.6 unit tests, conda-forge toolchain, coverage**: without coverage - `Python / AMD64 Conda Python 3.6` - [x] **[OS X] C++ w/ Xcode 9.3**: - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - [x] **[OS X] Python w/ Xcode 9.3**: - `Python / AMD64 MacOS 10.14 Python 3`: with Xcode 10.3 - [x] **Java OpenJDK8 and OpenJDK11**: - `Java / AMD64 Debian Java JDK 8 Maven 3.5.2` - `Java / AMD64 Debian Java JDK 11 Maven 3.6.2` - [x] **Protocol / Flight Integration Tests**: - `Dev / Protocol Test` - [x] **NodeJS**: without running lint and coverage - `NodeJS / AMD64 Debian NodeJS 11` - [x] **C++ & GLib & Ruby w/ gcc 5.4**: - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - `C GLib / AMD64 Ubuntu 18.04 C GLib` - `Ruby / AMD64 Ubuntu 18.04 Ruby` - [x] **[OS X] C++ & GLib & Ruby w/ XCode 10.2 & Homebrew** - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - `C GLib / AMD64 MacOS 10.14 C Glib`: with Xcode 10.3 - `Ruby / AMD64 MacOS 10.14 Ruby`: with Xcode 10.3 - [x] **Go**: without coverage - `Go / AMD64 Debian Go 1.12` - [x] **R (with and without libarrow)**: - `R / AMD64 Conda R 3.6`: with libarrow - `R / AMD64 Ubuntu 18.04 R 3.6` with libarrow ### Appveyor - ~JOB=Build, GENERATOR=Ninja, CONFIGURATION=Release, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017~ - ~JOB=Toolchain, GENERATOR=Ninja, CONFIGURATION=Release, ARROW_S3=ON, ARROW_BUILD_FLIGHT=ON, ARROW_BUILD_GANDIVA=ON~ - ~JOB=Build_Debug, GENERATOR=Ninja, CONFIGURATION=Debug~ - ~JOB=MinGW32, MINGW_ARCH=i686, MINGW_PACKAGE_PREFIX=mingw-w64-i686, MINGW_PREFIX=c:\msys64\mingw32, MSYSTEM=MINGW32, USE_CLCACHE=false~ - ~JOB=MinGW64, MINGW_ARCH=x86_64, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64, MINGW_PREFIX=c:\msys64\mingw64, MSYSTEM=MINGW64, USE_CLCACHE=false~ - [x] **JOB=Rust, TARGET=x86_64-pc-windows-msvc, USE_CLCACHE=false**: - `Rust / AMD64 Windows 2019 Rust nightly-2019-09-25` - [x] **JOB=C#, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017, USE_CLCACHE=false** - `C# / AMD64 Windows 2019 C# 2.2.103` - [x] **JOB=Go, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64 ...**: - `Go / AMD64 Windows 2019 Go 1.12` - ~JOB=R with libarrow, USE_CLCACHE=false, TEST_R_WITH_ARROW=TRUE, RWINLIB_LOCAL=%APPVEYOR_BUILD_FOLDER%\libarrow.zip~ ### Github Actions - [x] **Windows MSVC C++ / Build (Visual Studio 16 2019)**: - `C++ / AMD64 Windows 2019 C++`: without tests - [x] **Windows MSVC C++ / Build (Visual Studio 15 2017)**: - `C++ / AMD64 Windows 2016 C++`: without tests - [x] **Linux docker-compose / Test (C++ w/ clang-7 & system packages)**: all have llvm for gandiva but the compiler is set to gcc - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - [x] **Linux docker-compose / Test (Rust)**: without rustfmt - `Rust / AMD64 Debian Rust nightly-2019-09-25` - [x] **Linux docker-compose / Test (Lint, Release tests)**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` ### Nightly Crossbow tests The packaging builds are out of the scope if this PR, but the nightly **dockerized test** task are in. Nightly tests: - [x] docker-r - [x] docker-r-conda - [x] docker-r-sanitizer - [x] docker-rust - [x] docker-cpp - [x] docker-cpp-cmake32 - [x] docker-cpp-release - [x] docker-cpp-static-only - [x] docker-c_glib - [x] docker-go - [x] docker-python-2.7 - [x] docker-python-3.6 - [x] docker-python-3.7 - [x] docker-python-2.7-nopandas - [x] docker-python-3.6-nopandas - [x] docker-java - [x] docker-js - [x] docker-docs - [x] docker-lint - [x] docker-iwyu: included in the lint - [x] docker-clang-format: included in the lint - [x] docker-pandas-master - [x] docker-dask-integration - [x] docker-hdfs-integration - [x] docker-spark-integration - [x] docker-turbodbc-integration # TODOs left: - [x] Fix the Apidoc generation for c_glib - [x] Fix the JNI test for Gandiva and ORC - [x] Test that crossbow tests are passing - ~Optionally restore the travis configuration to incrementally decommission old builds~ ## Follow-up JIRAs: - [Archery] Consider porting the docker tool of ursabot to archery - [Archery] Consider to use archery with or instead of the pre-commit hooks - [Archery] Create a wrapper script in archery for docker compose in order to run the containers with the host's user and group - [C++] GCC 5.4.0 has a compile errors, reproduce with UBUNTU=16.04 docker-compose run ubuntu-cpp - [C++][CI] Test the ported fuzzit integration image - [C++][CI] Turn off unnecessary features in the integration tests (spark/turbodbc/dask/hdfs) - [C++][CI] Revisit ASAN UBSAN settings in every C++ based image - [CI] Consider re-adding the removed debian testing image is removed - [Go][CI] Pre-install the go dependencies in the dockerfile using go get - [JS][CI] Pre-install the JS dependencies in the dockerfile - [Rust][CI] Pre-install the rust dependencies in the dockerfile - [Java][CI] Pre-install the java dependencies in the dockerfile - [Ruby][CI] Pre-install the ruby dependencies in the dockerfile and remove it from the test script - [C#][CI] Pre-install the C# dependencies in the dockerfile - [R][CI] Fix the r-sanitizer build https://issues.apache.org/jira/browse/ARROW-6957 - [GLIB][MacOS] Fail to execute lua examples (fails to load 'lgi.corelgilua51' despite that lgi is installed) - [C++][CMake] Automatically set ARROW_GANDIVA_PC_CXX_FLAGS for conda and OSX sdk (see cpp_build.sh) - [C++][CI] Hiveserver2 instegration test fails to connect to impala container - [CI][Spark] Support specific Spark version in the integration tet including latest - [JS][CI] Move nodejs linting from js_build.sh to archery - [Python][CI] create a docker image for python ASV benchmarks and fix the script - [CI] Find a short but related prefix for the env vars used for the docker-compose file to prevent collisions - [C#] the docker container fails to run because of the ubuntu host versions, see https://github.com/dotnet/core/issues/3509 - [C++][Windows] Enable more features on the windows GHA build - [Doc] document docker-compose usage in the developer sphinx guide - [CI][C++] Add .ccache to the docker-compose mounts - [Archery][CI] Refactor the ci/scripts to a sourceable bash functions or to archery directly - [C++][CI] Use scripts/util_coredump.sh to show automatic backtraces - [C++] Fix the hanging C++ tests in Windows 2019 - [CI] Ask INFRA to set up the DOCKERHUB_* secrets for GitHub actions - [C++][CI] Running Gandiva tests fails on Fedora: Reproduce with: `docker-compose run -e ARROW_GANDIVA=ON fedora-cpp` ``` Running gandiva-internals-test, redirecting output into /build/cpp/build/test-logs/gandiva-internals-test.txt (attempt 1/1) 1364 : CommandLine Error: Option 'x86-experimental-vector-widening-legalization' registered more than once! 1365 LLVM ERROR: inconsistency in registered CommandLine options 1366 /build/cpp/src/gandiva ``` - [JS][CI] NodeJS build fails on Github Actions Windows node ``` > NODE_NO_WARNINGS=1 gulp build # 'NODE_NO_WARNINGS' is not recognized as an internal or external command, # operable program or batch file. # npm ERR! code ELIFECYCLE # npm ERR! errno 1 # npm ERR! apache-arrow@1.0.0-SNAPSHOT build: `NODE_NO_WARNINGS=1 gulp build` # npm ERR! Exit status 1 # npm ERR! # npm ERR! Failed at the apache-arrow@1.0.0-SNAPSHOT build script. # npm ERR! This is probably not a problem with npm. There is likely additional logging output above. ``` Closes #5589 from kszucs/docker-refactor and squashes the following commits: 5105d12e6 <Krisztián Szűcs> Rename pull-request folder to dev_cron e9e9a7eec <Krisztián Szűcs> Use underscores for naming the workflow files a92c99d03 <Krisztián Szűcs> Disable hanging C++ tests on windows f158c89b5 <Krisztián Szűcs> Attempt to push from apache/arrow master; Don't push from crossbow tasks 0e1d470a1 <Krisztián Szűcs> Turn off ORC on macOS C++ test due to link error 258db5cff <Krisztián Szűcs> Only push docker images from apache/arrow repository acdfcf086 <Krisztián Szűcs> Remove ORC from the brewfile 5102b85b1 <Krisztián Szűcs> Fix nodeJS workflow 032d6a388 <Krisztián Szűcs> Turn off 2 python builds 7f15b97a8 <Krisztián Szűcs> Filter branches 48b8d128a <Krisztián Szűcs> Fix workflows 36ad9d297 <Krisztián Szűcs> Disable builds 0f603af0c <Krisztián Szűcs> master only and cron workflows 28cc2d78d <Krisztián Szűcs> Rename Java JNI workflow bcd8af7b7 <Krisztián Szűcs> Port the remaining travis utility scripts ed5688154 <Krisztián Szűcs> Usage comments; recommend installing pandas from the docs because of its removal from conda_env_python 3c8c023ce <Krisztián Szűcs> Use Arch in volumes; some comments; remove conda version 'latest' from the images 771b023a8 <Krisztián Szűcs> Cleanup files; separate JNI builds 97ff8a122 <Krisztián Szűcs> Push docker images only from master dc00b4297 <Krisztián Szűcs> Enable path filters e0e2e1f46 <Krisztián Szűcs> Fix pandas master build 3814e0828 <Krisztián Szűcs> Fix manylinux volumes c18edda70 <Krisztián Szűcs> Add CentOS version to the manylinux image names c8b9dd6b1 <Krisztián Szűcs> Missing --pyargs argument for the python test command 33e646981 <Krisztián Szűcs> Turn off gandiva and flight for the HDFS test b9c547889 <Krisztián Szűcs> Refactor docker-compose file and use it with github actions. Authored-by: Krisztián Szűcs <szucs.krisztian@gmail.com> Signed-off-by: Krisztián Szűcs <szucs.krisztian@gmail.com>
2019-11-12 11:07:48 +01:00
#!/usr/bin/env bash
#
# 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.
set -ex
arrow_dir=${1}
build_dir=${2}
source_dir=${arrow_dir}/python
python_build_dir=${build_dir}/python
ARROW-7101: [CI] Refactor docker-compose setup and use it with GitHub Actions ## Projecting ideas from ursabot ### Parametric docker images The images are better parameterized now, meaning that we can build more variant of the same service. Couple of examples: ```console UBUNTU=16.04 docker-compose build ubuntu-cpp ARCH=arm64v8 UBUNTU=18.04 docker-compose build ubuntu-cpp PYTHON=3.6 docker-compose build conda-python ARCH=arm32v7 PYTHON=3.6 PANDAS=0.25 docker-compose build conda-python-pandas ``` Each variant has it's own docker image following a string naming schema: `{org}/{arch}-{platform}-{platform-version}[[-{variant}-{variant-version}]..]:latest` ### Use *_build.sh and *_test.sh for each job The docker images provide the environment, and each language backend usually should implement two scripts, a `build.sh` and a `test.sh`. This way dependent build like the docker python, r or c glib are able to reuse the build script of the ancestor without running its tests. With small enough scripts, if the environment is properly set up even the non-docker builds should be reproducible locally. GitHub Actions support bash scripts across all three platforms, so we can reuse the same `*_build.sh` and `*_test.sh` scripts to execute the builds either in docker, on the CI or locally. ## Using GitHub Actions for running the builds Regardless of the CI we're going to choose, the isolation constraint of different platforms requires some sort of virtualisation. Currently linux (and windows, but I have not tried it yet) has lightweight containerisation, so we should keep the linux builds isolated in docker containers. The rest of the platforms (windows and macOS) should be executed on the CI system. GitHub Actions support all three major platforms, linux, windows and macOS. I've added cross platform builds for a couple of languages, like Rust, and Go, the rest are work in progress. ### Workflow A workflow should define all builds of a language, mostly because the path filters can be defined on workflow level. For example the python builds should be triggered if either a cpp/** or a python/** file changes which can be covered in the same workflow file. ## Feature parity with the current builds Reaching feature parity with all of the builds below is not a goal for this PR, the difficult ones should at least have a tracking JIRA ticket. ### Travis-CI - [x] **Lint, Release tests**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` - [x] **C++ unit tests w/ conda-forge toolchain, coverage**: without coverage - `C++ / AMD64 Conda C++` - [x] **Python 3.6 unit tests, conda-forge toolchain, coverage**: without coverage - `Python / AMD64 Conda Python 3.6` - [x] **[OS X] C++ w/ Xcode 9.3**: - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - [x] **[OS X] Python w/ Xcode 9.3**: - `Python / AMD64 MacOS 10.14 Python 3`: with Xcode 10.3 - [x] **Java OpenJDK8 and OpenJDK11**: - `Java / AMD64 Debian Java JDK 8 Maven 3.5.2` - `Java / AMD64 Debian Java JDK 11 Maven 3.6.2` - [x] **Protocol / Flight Integration Tests**: - `Dev / Protocol Test` - [x] **NodeJS**: without running lint and coverage - `NodeJS / AMD64 Debian NodeJS 11` - [x] **C++ & GLib & Ruby w/ gcc 5.4**: - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - `C GLib / AMD64 Ubuntu 18.04 C GLib` - `Ruby / AMD64 Ubuntu 18.04 Ruby` - [x] **[OS X] C++ & GLib & Ruby w/ XCode 10.2 & Homebrew** - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - `C GLib / AMD64 MacOS 10.14 C Glib`: with Xcode 10.3 - `Ruby / AMD64 MacOS 10.14 Ruby`: with Xcode 10.3 - [x] **Go**: without coverage - `Go / AMD64 Debian Go 1.12` - [x] **R (with and without libarrow)**: - `R / AMD64 Conda R 3.6`: with libarrow - `R / AMD64 Ubuntu 18.04 R 3.6` with libarrow ### Appveyor - ~JOB=Build, GENERATOR=Ninja, CONFIGURATION=Release, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017~ - ~JOB=Toolchain, GENERATOR=Ninja, CONFIGURATION=Release, ARROW_S3=ON, ARROW_BUILD_FLIGHT=ON, ARROW_BUILD_GANDIVA=ON~ - ~JOB=Build_Debug, GENERATOR=Ninja, CONFIGURATION=Debug~ - ~JOB=MinGW32, MINGW_ARCH=i686, MINGW_PACKAGE_PREFIX=mingw-w64-i686, MINGW_PREFIX=c:\msys64\mingw32, MSYSTEM=MINGW32, USE_CLCACHE=false~ - ~JOB=MinGW64, MINGW_ARCH=x86_64, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64, MINGW_PREFIX=c:\msys64\mingw64, MSYSTEM=MINGW64, USE_CLCACHE=false~ - [x] **JOB=Rust, TARGET=x86_64-pc-windows-msvc, USE_CLCACHE=false**: - `Rust / AMD64 Windows 2019 Rust nightly-2019-09-25` - [x] **JOB=C#, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017, USE_CLCACHE=false** - `C# / AMD64 Windows 2019 C# 2.2.103` - [x] **JOB=Go, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64 ...**: - `Go / AMD64 Windows 2019 Go 1.12` - ~JOB=R with libarrow, USE_CLCACHE=false, TEST_R_WITH_ARROW=TRUE, RWINLIB_LOCAL=%APPVEYOR_BUILD_FOLDER%\libarrow.zip~ ### Github Actions - [x] **Windows MSVC C++ / Build (Visual Studio 16 2019)**: - `C++ / AMD64 Windows 2019 C++`: without tests - [x] **Windows MSVC C++ / Build (Visual Studio 15 2017)**: - `C++ / AMD64 Windows 2016 C++`: without tests - [x] **Linux docker-compose / Test (C++ w/ clang-7 & system packages)**: all have llvm for gandiva but the compiler is set to gcc - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - [x] **Linux docker-compose / Test (Rust)**: without rustfmt - `Rust / AMD64 Debian Rust nightly-2019-09-25` - [x] **Linux docker-compose / Test (Lint, Release tests)**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` ### Nightly Crossbow tests The packaging builds are out of the scope if this PR, but the nightly **dockerized test** task are in. Nightly tests: - [x] docker-r - [x] docker-r-conda - [x] docker-r-sanitizer - [x] docker-rust - [x] docker-cpp - [x] docker-cpp-cmake32 - [x] docker-cpp-release - [x] docker-cpp-static-only - [x] docker-c_glib - [x] docker-go - [x] docker-python-2.7 - [x] docker-python-3.6 - [x] docker-python-3.7 - [x] docker-python-2.7-nopandas - [x] docker-python-3.6-nopandas - [x] docker-java - [x] docker-js - [x] docker-docs - [x] docker-lint - [x] docker-iwyu: included in the lint - [x] docker-clang-format: included in the lint - [x] docker-pandas-master - [x] docker-dask-integration - [x] docker-hdfs-integration - [x] docker-spark-integration - [x] docker-turbodbc-integration # TODOs left: - [x] Fix the Apidoc generation for c_glib - [x] Fix the JNI test for Gandiva and ORC - [x] Test that crossbow tests are passing - ~Optionally restore the travis configuration to incrementally decommission old builds~ ## Follow-up JIRAs: - [Archery] Consider porting the docker tool of ursabot to archery - [Archery] Consider to use archery with or instead of the pre-commit hooks - [Archery] Create a wrapper script in archery for docker compose in order to run the containers with the host's user and group - [C++] GCC 5.4.0 has a compile errors, reproduce with UBUNTU=16.04 docker-compose run ubuntu-cpp - [C++][CI] Test the ported fuzzit integration image - [C++][CI] Turn off unnecessary features in the integration tests (spark/turbodbc/dask/hdfs) - [C++][CI] Revisit ASAN UBSAN settings in every C++ based image - [CI] Consider re-adding the removed debian testing image is removed - [Go][CI] Pre-install the go dependencies in the dockerfile using go get - [JS][CI] Pre-install the JS dependencies in the dockerfile - [Rust][CI] Pre-install the rust dependencies in the dockerfile - [Java][CI] Pre-install the java dependencies in the dockerfile - [Ruby][CI] Pre-install the ruby dependencies in the dockerfile and remove it from the test script - [C#][CI] Pre-install the C# dependencies in the dockerfile - [R][CI] Fix the r-sanitizer build https://issues.apache.org/jira/browse/ARROW-6957 - [GLIB][MacOS] Fail to execute lua examples (fails to load 'lgi.corelgilua51' despite that lgi is installed) - [C++][CMake] Automatically set ARROW_GANDIVA_PC_CXX_FLAGS for conda and OSX sdk (see cpp_build.sh) - [C++][CI] Hiveserver2 instegration test fails to connect to impala container - [CI][Spark] Support specific Spark version in the integration tet including latest - [JS][CI] Move nodejs linting from js_build.sh to archery - [Python][CI] create a docker image for python ASV benchmarks and fix the script - [CI] Find a short but related prefix for the env vars used for the docker-compose file to prevent collisions - [C#] the docker container fails to run because of the ubuntu host versions, see https://github.com/dotnet/core/issues/3509 - [C++][Windows] Enable more features on the windows GHA build - [Doc] document docker-compose usage in the developer sphinx guide - [CI][C++] Add .ccache to the docker-compose mounts - [Archery][CI] Refactor the ci/scripts to a sourceable bash functions or to archery directly - [C++][CI] Use scripts/util_coredump.sh to show automatic backtraces - [C++] Fix the hanging C++ tests in Windows 2019 - [CI] Ask INFRA to set up the DOCKERHUB_* secrets for GitHub actions - [C++][CI] Running Gandiva tests fails on Fedora: Reproduce with: `docker-compose run -e ARROW_GANDIVA=ON fedora-cpp` ``` Running gandiva-internals-test, redirecting output into /build/cpp/build/test-logs/gandiva-internals-test.txt (attempt 1/1) 1364 : CommandLine Error: Option 'x86-experimental-vector-widening-legalization' registered more than once! 1365 LLVM ERROR: inconsistency in registered CommandLine options 1366 /build/cpp/src/gandiva ``` - [JS][CI] NodeJS build fails on Github Actions Windows node ``` > NODE_NO_WARNINGS=1 gulp build # 'NODE_NO_WARNINGS' is not recognized as an internal or external command, # operable program or batch file. # npm ERR! code ELIFECYCLE # npm ERR! errno 1 # npm ERR! apache-arrow@1.0.0-SNAPSHOT build: `NODE_NO_WARNINGS=1 gulp build` # npm ERR! Exit status 1 # npm ERR! # npm ERR! Failed at the apache-arrow@1.0.0-SNAPSHOT build script. # npm ERR! This is probably not a problem with npm. There is likely additional logging output above. ``` Closes #5589 from kszucs/docker-refactor and squashes the following commits: 5105d12e6 <Krisztián Szűcs> Rename pull-request folder to dev_cron e9e9a7eec <Krisztián Szűcs> Use underscores for naming the workflow files a92c99d03 <Krisztián Szűcs> Disable hanging C++ tests on windows f158c89b5 <Krisztián Szűcs> Attempt to push from apache/arrow master; Don't push from crossbow tasks 0e1d470a1 <Krisztián Szűcs> Turn off ORC on macOS C++ test due to link error 258db5cff <Krisztián Szűcs> Only push docker images from apache/arrow repository acdfcf086 <Krisztián Szűcs> Remove ORC from the brewfile 5102b85b1 <Krisztián Szűcs> Fix nodeJS workflow 032d6a388 <Krisztián Szűcs> Turn off 2 python builds 7f15b97a8 <Krisztián Szűcs> Filter branches 48b8d128a <Krisztián Szűcs> Fix workflows 36ad9d297 <Krisztián Szűcs> Disable builds 0f603af0c <Krisztián Szűcs> master only and cron workflows 28cc2d78d <Krisztián Szűcs> Rename Java JNI workflow bcd8af7b7 <Krisztián Szűcs> Port the remaining travis utility scripts ed5688154 <Krisztián Szűcs> Usage comments; recommend installing pandas from the docs because of its removal from conda_env_python 3c8c023ce <Krisztián Szűcs> Use Arch in volumes; some comments; remove conda version 'latest' from the images 771b023a8 <Krisztián Szűcs> Cleanup files; separate JNI builds 97ff8a122 <Krisztián Szűcs> Push docker images only from master dc00b4297 <Krisztián Szűcs> Enable path filters e0e2e1f46 <Krisztián Szűcs> Fix pandas master build 3814e0828 <Krisztián Szűcs> Fix manylinux volumes c18edda70 <Krisztián Szűcs> Add CentOS version to the manylinux image names c8b9dd6b1 <Krisztián Szűcs> Missing --pyargs argument for the python test command 33e646981 <Krisztián Szűcs> Turn off gandiva and flight for the HDFS test b9c547889 <Krisztián Szűcs> Refactor docker-compose file and use it with github actions. Authored-by: Krisztián Szűcs <szucs.krisztian@gmail.com> Signed-off-by: Krisztián Szűcs <szucs.krisztian@gmail.com>
2019-11-12 11:07:48 +01:00
GH-47306: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_build.sh (#47307) ### Rationale for this change This is the sub issue #44748. * SC1091: Not following: ./bin/activate: openBinaryFile: does not exist * SC2034: foo appears unused * SC2086: Double quote to prevent globbing and word splitting * SC2223: This default assignment may cause DoS due to globbing. Quote it. * SC2236: Use `-n` instead of `! -z` ``` shellcheck ci/scripts/python_build.sh In ci/scripts/python_build.sh line 28: : ${BUILD_DOCS_PYTHON:=OFF} ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 31: git config --global --add safe.directory ${arrow_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: git config --global --add safe.directory "${arrow_dir}" In ci/scripts/python_build.sh line 35: . "${ARROW_PYTHON_VENV}/bin/activate" ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory) In ci/scripts/python_build.sh line 53: if [ ! -z "${CONDA_PREFIX}" ]; then ^-- SC2236 (style): Use -n instead of ! -z. In ci/scripts/python_build.sh line 77: : ${CMAKE_PREFIX_PATH:=${ARROW_HOME}} ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 85: rm -rf ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}" In ci/scripts/python_build.sh line 86: cp -aL ${source_dir} ${python_build_dir} ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -aL "${source_dir}" "${python_build_dir}" In ci/scripts/python_build.sh line 87: pushd ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${python_build_dir}" In ci/scripts/python_build.sh line 101: rm -rf ${python_build_dir}/docs/source ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/docs/source In ci/scripts/python_build.sh line 102: mkdir -p ${python_build_dir}/docs ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/docs In ci/scripts/python_build.sh line 103: cp -a ${arrow_dir}/docs/source ${python_build_dir}/docs/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/docs/source "${python_build_dir}"/docs/ In ci/scripts/python_build.sh line 104: rm -rf ${python_build_dir}/format ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/format In ci/scripts/python_build.sh line 105: cp -a ${arrow_dir}/format ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/format "${python_build_dir}"/ In ci/scripts/python_build.sh line 106: rm -rf ${python_build_dir}/cpp/examples ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/cpp/examples In ci/scripts/python_build.sh line 107: mkdir -p ${python_build_dir}/cpp ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/cpp In ci/scripts/python_build.sh line 108: cp -a ${arrow_dir}/cpp/examples ${python_build_dir}/cpp/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/cpp/examples "${python_build_dir}"/cpp/ In ci/scripts/python_build.sh line 109: rm -rf ${python_build_dir}/ci ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/ci In ci/scripts/python_build.sh line 110: cp -a ${arrow_dir}/ci/ ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/ci/ "${python_build_dir}"/ In ci/scripts/python_build.sh line 111: ncpus=$(python -c "import os; print(os.cpu_count())") ^---^ SC2034 (warning): ncpus appears unused. Verify use (or export if used externally). In ci/scripts/python_build.sh line 113: pushd ${build_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${build_dir}" In ci/scripts/python_build.sh line 116: ${python_build_dir}/docs/source \ ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${python_build_dir}"/docs/source \ In ci/scripts/python_build.sh line 117: ${build_dir}/docs ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${build_dir}"/docs For more information: https://www.shellcheck.net/wiki/SC2034 -- ncpus appears unused. Verify use ... https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... ``` ### What changes are included in this PR? * SC1091: Skip file check * SC2034: remove the variable * SC2086: Quote variables * SC2223: Quote variables * SC2236: Use `-n` instead of `! -z` ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * GitHub Issue: #47306 Authored-by: Hiroyuki Sato <hiroysato@gmail.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2025-08-13 06:26:26 +09:00
: "${BUILD_DOCS_PYTHON:=OFF}"
ARROW-16219: [CI] Fix git config to prevent SCM tools failure This PR fixes the CI failures due to the latest git release fixing CVE-2022-24765. I have been able to see the build passing the scm step with the change here: https://app.travis-ci.com/github/raulcd/arrow/builds/249688925 The above build fails due to some tests failing but not related with installation anymore. And this was the failure before the change: https://app.travis-ci.com/github/raulcd/arrow/builds/249683847 I also have been able to reproduce the issue on the `verify-conda-rc` locally. The failure: ``` $ docker-compose run conda-verify-rc .... Preparing transaction: done Verifying transaction: done Executing transaction: done /arrow/python /arrow / Traceback (most recent call last): File "/arrow/python/setup.py", line 607, in <module> setup( File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/__init__.py", line 87, in setup return distutils.core.setup(**attrs) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 109, in setup _setup_distribution = dist = klass(attrs) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/dist.py", line 462, in __init__ _Distribution.__init__( File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 293, in __init__ self.finalize_options() File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/dist.py", line 886, in finalize_options ep(self) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/dist.py", line 907, in _finalize_setup_keywords ep.load()(self, ep.name, value) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools_scm/integration.py", line 75, in version_keyword _assign_version(dist, config) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools_scm/integration.py", line 51, in _assign_version _version_missing(config) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools_scm/__init__.py", line 106, in _version_missing raise LookupError( LookupError: setuptools-scm was unable to detect version for /arrow. Make sure you're either building from a fully intact git repository or PyPI tarballs. Most other sources (such as GitHub's tarballs, a git checkout without the .git folder) don't contain the necessary metadata and will not work. For example, if you're using pip, instead of https://github.com/user/proj/archive/master.zip use git+https://github.com/user/proj.git#egg=proj Failed to verify release candidate. See /tmp/arrow-HEAD.YUVPq for details. ``` Waiting to validate the verify-rc fix at the moment, will update once the local build finishes Closes #12945 from raulcd/ARROW-16219 Authored-by: Raúl Cumplido <raulcumplido@gmail.com> Signed-off-by: Krisztián Szűcs <szucs.krisztian@gmail.com>
2022-04-22 18:23:40 +02:00
if [ -x "$(command -v git)" ]; then
GH-47306: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_build.sh (#47307) ### Rationale for this change This is the sub issue #44748. * SC1091: Not following: ./bin/activate: openBinaryFile: does not exist * SC2034: foo appears unused * SC2086: Double quote to prevent globbing and word splitting * SC2223: This default assignment may cause DoS due to globbing. Quote it. * SC2236: Use `-n` instead of `! -z` ``` shellcheck ci/scripts/python_build.sh In ci/scripts/python_build.sh line 28: : ${BUILD_DOCS_PYTHON:=OFF} ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 31: git config --global --add safe.directory ${arrow_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: git config --global --add safe.directory "${arrow_dir}" In ci/scripts/python_build.sh line 35: . "${ARROW_PYTHON_VENV}/bin/activate" ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory) In ci/scripts/python_build.sh line 53: if [ ! -z "${CONDA_PREFIX}" ]; then ^-- SC2236 (style): Use -n instead of ! -z. In ci/scripts/python_build.sh line 77: : ${CMAKE_PREFIX_PATH:=${ARROW_HOME}} ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 85: rm -rf ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}" In ci/scripts/python_build.sh line 86: cp -aL ${source_dir} ${python_build_dir} ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -aL "${source_dir}" "${python_build_dir}" In ci/scripts/python_build.sh line 87: pushd ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${python_build_dir}" In ci/scripts/python_build.sh line 101: rm -rf ${python_build_dir}/docs/source ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/docs/source In ci/scripts/python_build.sh line 102: mkdir -p ${python_build_dir}/docs ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/docs In ci/scripts/python_build.sh line 103: cp -a ${arrow_dir}/docs/source ${python_build_dir}/docs/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/docs/source "${python_build_dir}"/docs/ In ci/scripts/python_build.sh line 104: rm -rf ${python_build_dir}/format ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/format In ci/scripts/python_build.sh line 105: cp -a ${arrow_dir}/format ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/format "${python_build_dir}"/ In ci/scripts/python_build.sh line 106: rm -rf ${python_build_dir}/cpp/examples ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/cpp/examples In ci/scripts/python_build.sh line 107: mkdir -p ${python_build_dir}/cpp ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/cpp In ci/scripts/python_build.sh line 108: cp -a ${arrow_dir}/cpp/examples ${python_build_dir}/cpp/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/cpp/examples "${python_build_dir}"/cpp/ In ci/scripts/python_build.sh line 109: rm -rf ${python_build_dir}/ci ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/ci In ci/scripts/python_build.sh line 110: cp -a ${arrow_dir}/ci/ ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/ci/ "${python_build_dir}"/ In ci/scripts/python_build.sh line 111: ncpus=$(python -c "import os; print(os.cpu_count())") ^---^ SC2034 (warning): ncpus appears unused. Verify use (or export if used externally). In ci/scripts/python_build.sh line 113: pushd ${build_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${build_dir}" In ci/scripts/python_build.sh line 116: ${python_build_dir}/docs/source \ ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${python_build_dir}"/docs/source \ In ci/scripts/python_build.sh line 117: ${build_dir}/docs ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${build_dir}"/docs For more information: https://www.shellcheck.net/wiki/SC2034 -- ncpus appears unused. Verify use ... https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... ``` ### What changes are included in this PR? * SC1091: Skip file check * SC2034: remove the variable * SC2086: Quote variables * SC2223: Quote variables * SC2236: Use `-n` instead of `! -z` ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * GitHub Issue: #47306 Authored-by: Hiroyuki Sato <hiroysato@gmail.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2025-08-13 06:26:26 +09:00
git config --global --add safe.directory "${arrow_dir}"
ARROW-16219: [CI] Fix git config to prevent SCM tools failure This PR fixes the CI failures due to the latest git release fixing CVE-2022-24765. I have been able to see the build passing the scm step with the change here: https://app.travis-ci.com/github/raulcd/arrow/builds/249688925 The above build fails due to some tests failing but not related with installation anymore. And this was the failure before the change: https://app.travis-ci.com/github/raulcd/arrow/builds/249683847 I also have been able to reproduce the issue on the `verify-conda-rc` locally. The failure: ``` $ docker-compose run conda-verify-rc .... Preparing transaction: done Verifying transaction: done Executing transaction: done /arrow/python /arrow / Traceback (most recent call last): File "/arrow/python/setup.py", line 607, in <module> setup( File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/__init__.py", line 87, in setup return distutils.core.setup(**attrs) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 109, in setup _setup_distribution = dist = klass(attrs) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/dist.py", line 462, in __init__ _Distribution.__init__( File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 293, in __init__ self.finalize_options() File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/dist.py", line 886, in finalize_options ep(self) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools/dist.py", line 907, in _finalize_setup_keywords ep.load()(self, ep.name, value) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools_scm/integration.py", line 75, in version_keyword _assign_version(dist, config) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools_scm/integration.py", line 51, in _assign_version _version_missing(config) File "/tmp/arrow-HEAD.YUVPq/mambaforge/envs/conda-source/lib/python3.10/site-packages/setuptools_scm/__init__.py", line 106, in _version_missing raise LookupError( LookupError: setuptools-scm was unable to detect version for /arrow. Make sure you're either building from a fully intact git repository or PyPI tarballs. Most other sources (such as GitHub's tarballs, a git checkout without the .git folder) don't contain the necessary metadata and will not work. For example, if you're using pip, instead of https://github.com/user/proj/archive/master.zip use git+https://github.com/user/proj.git#egg=proj Failed to verify release candidate. See /tmp/arrow-HEAD.YUVPq for details. ``` Waiting to validate the verify-rc fix at the moment, will update once the local build finishes Closes #12945 from raulcd/ARROW-16219 Authored-by: Raúl Cumplido <raulcumplido@gmail.com> Signed-off-by: Krisztián Szűcs <szucs.krisztian@gmail.com>
2022-04-22 18:23:40 +02:00
fi
if [ -n "${ARROW_PYTHON_VENV:-}" ]; then
GH-47306: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_build.sh (#47307) ### Rationale for this change This is the sub issue #44748. * SC1091: Not following: ./bin/activate: openBinaryFile: does not exist * SC2034: foo appears unused * SC2086: Double quote to prevent globbing and word splitting * SC2223: This default assignment may cause DoS due to globbing. Quote it. * SC2236: Use `-n` instead of `! -z` ``` shellcheck ci/scripts/python_build.sh In ci/scripts/python_build.sh line 28: : ${BUILD_DOCS_PYTHON:=OFF} ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 31: git config --global --add safe.directory ${arrow_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: git config --global --add safe.directory "${arrow_dir}" In ci/scripts/python_build.sh line 35: . "${ARROW_PYTHON_VENV}/bin/activate" ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory) In ci/scripts/python_build.sh line 53: if [ ! -z "${CONDA_PREFIX}" ]; then ^-- SC2236 (style): Use -n instead of ! -z. In ci/scripts/python_build.sh line 77: : ${CMAKE_PREFIX_PATH:=${ARROW_HOME}} ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 85: rm -rf ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}" In ci/scripts/python_build.sh line 86: cp -aL ${source_dir} ${python_build_dir} ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -aL "${source_dir}" "${python_build_dir}" In ci/scripts/python_build.sh line 87: pushd ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${python_build_dir}" In ci/scripts/python_build.sh line 101: rm -rf ${python_build_dir}/docs/source ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/docs/source In ci/scripts/python_build.sh line 102: mkdir -p ${python_build_dir}/docs ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/docs In ci/scripts/python_build.sh line 103: cp -a ${arrow_dir}/docs/source ${python_build_dir}/docs/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/docs/source "${python_build_dir}"/docs/ In ci/scripts/python_build.sh line 104: rm -rf ${python_build_dir}/format ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/format In ci/scripts/python_build.sh line 105: cp -a ${arrow_dir}/format ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/format "${python_build_dir}"/ In ci/scripts/python_build.sh line 106: rm -rf ${python_build_dir}/cpp/examples ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/cpp/examples In ci/scripts/python_build.sh line 107: mkdir -p ${python_build_dir}/cpp ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/cpp In ci/scripts/python_build.sh line 108: cp -a ${arrow_dir}/cpp/examples ${python_build_dir}/cpp/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/cpp/examples "${python_build_dir}"/cpp/ In ci/scripts/python_build.sh line 109: rm -rf ${python_build_dir}/ci ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/ci In ci/scripts/python_build.sh line 110: cp -a ${arrow_dir}/ci/ ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/ci/ "${python_build_dir}"/ In ci/scripts/python_build.sh line 111: ncpus=$(python -c "import os; print(os.cpu_count())") ^---^ SC2034 (warning): ncpus appears unused. Verify use (or export if used externally). In ci/scripts/python_build.sh line 113: pushd ${build_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${build_dir}" In ci/scripts/python_build.sh line 116: ${python_build_dir}/docs/source \ ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${python_build_dir}"/docs/source \ In ci/scripts/python_build.sh line 117: ${build_dir}/docs ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${build_dir}"/docs For more information: https://www.shellcheck.net/wiki/SC2034 -- ncpus appears unused. Verify use ... https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... ``` ### What changes are included in this PR? * SC1091: Skip file check * SC2034: remove the variable * SC2086: Quote variables * SC2223: Quote variables * SC2236: Use `-n` instead of `! -z` ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * GitHub Issue: #47306 Authored-by: Hiroyuki Sato <hiroysato@gmail.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2025-08-13 06:26:26 +09:00
# We don't need to follow this external file.
# See also: https://www.shellcheck.net/wiki/SC1091
#
# shellcheck source=/dev/null
. "${ARROW_PYTHON_VENV}/bin/activate"
fi
case "$(uname)" in
Linux)
n_jobs=$(nproc)
;;
Darwin)
n_jobs=$(sysctl -n hw.ncpu)
;;
MINGW*)
n_jobs=${NUMBER_OF_PROCESSORS:-1}
;;
*)
n_jobs=${NPROC:-1}
;;
esac
GH-47306: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_build.sh (#47307) ### Rationale for this change This is the sub issue #44748. * SC1091: Not following: ./bin/activate: openBinaryFile: does not exist * SC2034: foo appears unused * SC2086: Double quote to prevent globbing and word splitting * SC2223: This default assignment may cause DoS due to globbing. Quote it. * SC2236: Use `-n` instead of `! -z` ``` shellcheck ci/scripts/python_build.sh In ci/scripts/python_build.sh line 28: : ${BUILD_DOCS_PYTHON:=OFF} ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 31: git config --global --add safe.directory ${arrow_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: git config --global --add safe.directory "${arrow_dir}" In ci/scripts/python_build.sh line 35: . "${ARROW_PYTHON_VENV}/bin/activate" ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory) In ci/scripts/python_build.sh line 53: if [ ! -z "${CONDA_PREFIX}" ]; then ^-- SC2236 (style): Use -n instead of ! -z. In ci/scripts/python_build.sh line 77: : ${CMAKE_PREFIX_PATH:=${ARROW_HOME}} ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 85: rm -rf ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}" In ci/scripts/python_build.sh line 86: cp -aL ${source_dir} ${python_build_dir} ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -aL "${source_dir}" "${python_build_dir}" In ci/scripts/python_build.sh line 87: pushd ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${python_build_dir}" In ci/scripts/python_build.sh line 101: rm -rf ${python_build_dir}/docs/source ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/docs/source In ci/scripts/python_build.sh line 102: mkdir -p ${python_build_dir}/docs ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/docs In ci/scripts/python_build.sh line 103: cp -a ${arrow_dir}/docs/source ${python_build_dir}/docs/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/docs/source "${python_build_dir}"/docs/ In ci/scripts/python_build.sh line 104: rm -rf ${python_build_dir}/format ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/format In ci/scripts/python_build.sh line 105: cp -a ${arrow_dir}/format ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/format "${python_build_dir}"/ In ci/scripts/python_build.sh line 106: rm -rf ${python_build_dir}/cpp/examples ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/cpp/examples In ci/scripts/python_build.sh line 107: mkdir -p ${python_build_dir}/cpp ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/cpp In ci/scripts/python_build.sh line 108: cp -a ${arrow_dir}/cpp/examples ${python_build_dir}/cpp/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/cpp/examples "${python_build_dir}"/cpp/ In ci/scripts/python_build.sh line 109: rm -rf ${python_build_dir}/ci ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/ci In ci/scripts/python_build.sh line 110: cp -a ${arrow_dir}/ci/ ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/ci/ "${python_build_dir}"/ In ci/scripts/python_build.sh line 111: ncpus=$(python -c "import os; print(os.cpu_count())") ^---^ SC2034 (warning): ncpus appears unused. Verify use (or export if used externally). In ci/scripts/python_build.sh line 113: pushd ${build_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${build_dir}" In ci/scripts/python_build.sh line 116: ${python_build_dir}/docs/source \ ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${python_build_dir}"/docs/source \ In ci/scripts/python_build.sh line 117: ${build_dir}/docs ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${build_dir}"/docs For more information: https://www.shellcheck.net/wiki/SC2034 -- ncpus appears unused. Verify use ... https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... ``` ### What changes are included in this PR? * SC1091: Skip file check * SC2034: remove the variable * SC2086: Quote variables * SC2223: Quote variables * SC2236: Use `-n` instead of `! -z` ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * GitHub Issue: #47306 Authored-by: Hiroyuki Sato <hiroysato@gmail.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2025-08-13 06:26:26 +09:00
if [ -n "${CONDA_PREFIX}" ]; then
echo -e "===\n=== Conda environment for build\n==="
conda list
fi
GH-36411: [Python] Use scikit-build-core as build backend for PyArrow and get rid of setup.py (#49259) ### Rationale for this change Move our PyArrow build backend from setuptools and a custom setup.py to scikit-build-core which is just build backend for CMake related projects. ### What changes are included in this PR? Move from setuptools to scikit-build-core and remove PyArrow setup.py. Update some of the build requirements and minor fixes. A custom build backend has been also been created in order to wrap scikit-build-core in order to fix problems on License files for monorepos. pyproject.toml metadata validation expects license files to exist before exercising the build backend that's why we create symlinks. Our thin build backend will just make those symlinks hard-links in order for license and notice files to contain the contents and be added as part of the sdist. Remove flags that are not used anymore (were only part of setup.py) and documented and validated how the same flags have to be used now. ### Are these changes tested? Yes all Python CI tests, wheels and sdist are successful. ### Are there any user-facing changes? Yes, users building PyArrow will now require the new build dependencies to exercise the build and depending on the flags used they might require to use the new documented way of using those flags. * GitHub Issue: #36411 Lead-authored-by: Raúl Cumplido <raulcumplido@gmail.com> Co-authored-by: Joris Van den Bossche <jorisvandenbossche@gmail.com> Co-authored-by: Rok Mihevc <rok@mihevc.org> Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
2026-03-09 09:47:21 +01:00
export CMAKE_BUILD_PARALLEL_LEVEL=${n_jobs}
export CMAKE_GENERATOR=${CMAKE_GENERATOR:-Ninja}
export PYARROW_WITH_ACERO=${ARROW_ACERO:-OFF}
export PYARROW_WITH_AZURE=${ARROW_AZURE:-OFF}
ARROW-7101: [CI] Refactor docker-compose setup and use it with GitHub Actions ## Projecting ideas from ursabot ### Parametric docker images The images are better parameterized now, meaning that we can build more variant of the same service. Couple of examples: ```console UBUNTU=16.04 docker-compose build ubuntu-cpp ARCH=arm64v8 UBUNTU=18.04 docker-compose build ubuntu-cpp PYTHON=3.6 docker-compose build conda-python ARCH=arm32v7 PYTHON=3.6 PANDAS=0.25 docker-compose build conda-python-pandas ``` Each variant has it's own docker image following a string naming schema: `{org}/{arch}-{platform}-{platform-version}[[-{variant}-{variant-version}]..]:latest` ### Use *_build.sh and *_test.sh for each job The docker images provide the environment, and each language backend usually should implement two scripts, a `build.sh` and a `test.sh`. This way dependent build like the docker python, r or c glib are able to reuse the build script of the ancestor without running its tests. With small enough scripts, if the environment is properly set up even the non-docker builds should be reproducible locally. GitHub Actions support bash scripts across all three platforms, so we can reuse the same `*_build.sh` and `*_test.sh` scripts to execute the builds either in docker, on the CI or locally. ## Using GitHub Actions for running the builds Regardless of the CI we're going to choose, the isolation constraint of different platforms requires some sort of virtualisation. Currently linux (and windows, but I have not tried it yet) has lightweight containerisation, so we should keep the linux builds isolated in docker containers. The rest of the platforms (windows and macOS) should be executed on the CI system. GitHub Actions support all three major platforms, linux, windows and macOS. I've added cross platform builds for a couple of languages, like Rust, and Go, the rest are work in progress. ### Workflow A workflow should define all builds of a language, mostly because the path filters can be defined on workflow level. For example the python builds should be triggered if either a cpp/** or a python/** file changes which can be covered in the same workflow file. ## Feature parity with the current builds Reaching feature parity with all of the builds below is not a goal for this PR, the difficult ones should at least have a tracking JIRA ticket. ### Travis-CI - [x] **Lint, Release tests**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` - [x] **C++ unit tests w/ conda-forge toolchain, coverage**: without coverage - `C++ / AMD64 Conda C++` - [x] **Python 3.6 unit tests, conda-forge toolchain, coverage**: without coverage - `Python / AMD64 Conda Python 3.6` - [x] **[OS X] C++ w/ Xcode 9.3**: - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - [x] **[OS X] Python w/ Xcode 9.3**: - `Python / AMD64 MacOS 10.14 Python 3`: with Xcode 10.3 - [x] **Java OpenJDK8 and OpenJDK11**: - `Java / AMD64 Debian Java JDK 8 Maven 3.5.2` - `Java / AMD64 Debian Java JDK 11 Maven 3.6.2` - [x] **Protocol / Flight Integration Tests**: - `Dev / Protocol Test` - [x] **NodeJS**: without running lint and coverage - `NodeJS / AMD64 Debian NodeJS 11` - [x] **C++ & GLib & Ruby w/ gcc 5.4**: - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - `C GLib / AMD64 Ubuntu 18.04 C GLib` - `Ruby / AMD64 Ubuntu 18.04 Ruby` - [x] **[OS X] C++ & GLib & Ruby w/ XCode 10.2 & Homebrew** - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - `C GLib / AMD64 MacOS 10.14 C Glib`: with Xcode 10.3 - `Ruby / AMD64 MacOS 10.14 Ruby`: with Xcode 10.3 - [x] **Go**: without coverage - `Go / AMD64 Debian Go 1.12` - [x] **R (with and without libarrow)**: - `R / AMD64 Conda R 3.6`: with libarrow - `R / AMD64 Ubuntu 18.04 R 3.6` with libarrow ### Appveyor - ~JOB=Build, GENERATOR=Ninja, CONFIGURATION=Release, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017~ - ~JOB=Toolchain, GENERATOR=Ninja, CONFIGURATION=Release, ARROW_S3=ON, ARROW_BUILD_FLIGHT=ON, ARROW_BUILD_GANDIVA=ON~ - ~JOB=Build_Debug, GENERATOR=Ninja, CONFIGURATION=Debug~ - ~JOB=MinGW32, MINGW_ARCH=i686, MINGW_PACKAGE_PREFIX=mingw-w64-i686, MINGW_PREFIX=c:\msys64\mingw32, MSYSTEM=MINGW32, USE_CLCACHE=false~ - ~JOB=MinGW64, MINGW_ARCH=x86_64, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64, MINGW_PREFIX=c:\msys64\mingw64, MSYSTEM=MINGW64, USE_CLCACHE=false~ - [x] **JOB=Rust, TARGET=x86_64-pc-windows-msvc, USE_CLCACHE=false**: - `Rust / AMD64 Windows 2019 Rust nightly-2019-09-25` - [x] **JOB=C#, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017, USE_CLCACHE=false** - `C# / AMD64 Windows 2019 C# 2.2.103` - [x] **JOB=Go, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64 ...**: - `Go / AMD64 Windows 2019 Go 1.12` - ~JOB=R with libarrow, USE_CLCACHE=false, TEST_R_WITH_ARROW=TRUE, RWINLIB_LOCAL=%APPVEYOR_BUILD_FOLDER%\libarrow.zip~ ### Github Actions - [x] **Windows MSVC C++ / Build (Visual Studio 16 2019)**: - `C++ / AMD64 Windows 2019 C++`: without tests - [x] **Windows MSVC C++ / Build (Visual Studio 15 2017)**: - `C++ / AMD64 Windows 2016 C++`: without tests - [x] **Linux docker-compose / Test (C++ w/ clang-7 & system packages)**: all have llvm for gandiva but the compiler is set to gcc - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - [x] **Linux docker-compose / Test (Rust)**: without rustfmt - `Rust / AMD64 Debian Rust nightly-2019-09-25` - [x] **Linux docker-compose / Test (Lint, Release tests)**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` ### Nightly Crossbow tests The packaging builds are out of the scope if this PR, but the nightly **dockerized test** task are in. Nightly tests: - [x] docker-r - [x] docker-r-conda - [x] docker-r-sanitizer - [x] docker-rust - [x] docker-cpp - [x] docker-cpp-cmake32 - [x] docker-cpp-release - [x] docker-cpp-static-only - [x] docker-c_glib - [x] docker-go - [x] docker-python-2.7 - [x] docker-python-3.6 - [x] docker-python-3.7 - [x] docker-python-2.7-nopandas - [x] docker-python-3.6-nopandas - [x] docker-java - [x] docker-js - [x] docker-docs - [x] docker-lint - [x] docker-iwyu: included in the lint - [x] docker-clang-format: included in the lint - [x] docker-pandas-master - [x] docker-dask-integration - [x] docker-hdfs-integration - [x] docker-spark-integration - [x] docker-turbodbc-integration # TODOs left: - [x] Fix the Apidoc generation for c_glib - [x] Fix the JNI test for Gandiva and ORC - [x] Test that crossbow tests are passing - ~Optionally restore the travis configuration to incrementally decommission old builds~ ## Follow-up JIRAs: - [Archery] Consider porting the docker tool of ursabot to archery - [Archery] Consider to use archery with or instead of the pre-commit hooks - [Archery] Create a wrapper script in archery for docker compose in order to run the containers with the host's user and group - [C++] GCC 5.4.0 has a compile errors, reproduce with UBUNTU=16.04 docker-compose run ubuntu-cpp - [C++][CI] Test the ported fuzzit integration image - [C++][CI] Turn off unnecessary features in the integration tests (spark/turbodbc/dask/hdfs) - [C++][CI] Revisit ASAN UBSAN settings in every C++ based image - [CI] Consider re-adding the removed debian testing image is removed - [Go][CI] Pre-install the go dependencies in the dockerfile using go get - [JS][CI] Pre-install the JS dependencies in the dockerfile - [Rust][CI] Pre-install the rust dependencies in the dockerfile - [Java][CI] Pre-install the java dependencies in the dockerfile - [Ruby][CI] Pre-install the ruby dependencies in the dockerfile and remove it from the test script - [C#][CI] Pre-install the C# dependencies in the dockerfile - [R][CI] Fix the r-sanitizer build https://issues.apache.org/jira/browse/ARROW-6957 - [GLIB][MacOS] Fail to execute lua examples (fails to load 'lgi.corelgilua51' despite that lgi is installed) - [C++][CMake] Automatically set ARROW_GANDIVA_PC_CXX_FLAGS for conda and OSX sdk (see cpp_build.sh) - [C++][CI] Hiveserver2 instegration test fails to connect to impala container - [CI][Spark] Support specific Spark version in the integration tet including latest - [JS][CI] Move nodejs linting from js_build.sh to archery - [Python][CI] create a docker image for python ASV benchmarks and fix the script - [CI] Find a short but related prefix for the env vars used for the docker-compose file to prevent collisions - [C#] the docker container fails to run because of the ubuntu host versions, see https://github.com/dotnet/core/issues/3509 - [C++][Windows] Enable more features on the windows GHA build - [Doc] document docker-compose usage in the developer sphinx guide - [CI][C++] Add .ccache to the docker-compose mounts - [Archery][CI] Refactor the ci/scripts to a sourceable bash functions or to archery directly - [C++][CI] Use scripts/util_coredump.sh to show automatic backtraces - [C++] Fix the hanging C++ tests in Windows 2019 - [CI] Ask INFRA to set up the DOCKERHUB_* secrets for GitHub actions - [C++][CI] Running Gandiva tests fails on Fedora: Reproduce with: `docker-compose run -e ARROW_GANDIVA=ON fedora-cpp` ``` Running gandiva-internals-test, redirecting output into /build/cpp/build/test-logs/gandiva-internals-test.txt (attempt 1/1) 1364 : CommandLine Error: Option 'x86-experimental-vector-widening-legalization' registered more than once! 1365 LLVM ERROR: inconsistency in registered CommandLine options 1366 /build/cpp/src/gandiva ``` - [JS][CI] NodeJS build fails on Github Actions Windows node ``` > NODE_NO_WARNINGS=1 gulp build # 'NODE_NO_WARNINGS' is not recognized as an internal or external command, # operable program or batch file. # npm ERR! code ELIFECYCLE # npm ERR! errno 1 # npm ERR! apache-arrow@1.0.0-SNAPSHOT build: `NODE_NO_WARNINGS=1 gulp build` # npm ERR! Exit status 1 # npm ERR! # npm ERR! Failed at the apache-arrow@1.0.0-SNAPSHOT build script. # npm ERR! This is probably not a problem with npm. There is likely additional logging output above. ``` Closes #5589 from kszucs/docker-refactor and squashes the following commits: 5105d12e6 <Krisztián Szűcs> Rename pull-request folder to dev_cron e9e9a7eec <Krisztián Szűcs> Use underscores for naming the workflow files a92c99d03 <Krisztián Szűcs> Disable hanging C++ tests on windows f158c89b5 <Krisztián Szűcs> Attempt to push from apache/arrow master; Don't push from crossbow tasks 0e1d470a1 <Krisztián Szűcs> Turn off ORC on macOS C++ test due to link error 258db5cff <Krisztián Szűcs> Only push docker images from apache/arrow repository acdfcf086 <Krisztián Szűcs> Remove ORC from the brewfile 5102b85b1 <Krisztián Szűcs> Fix nodeJS workflow 032d6a388 <Krisztián Szűcs> Turn off 2 python builds 7f15b97a8 <Krisztián Szűcs> Filter branches 48b8d128a <Krisztián Szűcs> Fix workflows 36ad9d297 <Krisztián Szűcs> Disable builds 0f603af0c <Krisztián Szűcs> master only and cron workflows 28cc2d78d <Krisztián Szűcs> Rename Java JNI workflow bcd8af7b7 <Krisztián Szűcs> Port the remaining travis utility scripts ed5688154 <Krisztián Szűcs> Usage comments; recommend installing pandas from the docs because of its removal from conda_env_python 3c8c023ce <Krisztián Szűcs> Use Arch in volumes; some comments; remove conda version 'latest' from the images 771b023a8 <Krisztián Szűcs> Cleanup files; separate JNI builds 97ff8a122 <Krisztián Szűcs> Push docker images only from master dc00b4297 <Krisztián Szűcs> Enable path filters e0e2e1f46 <Krisztián Szűcs> Fix pandas master build 3814e0828 <Krisztián Szűcs> Fix manylinux volumes c18edda70 <Krisztián Szűcs> Add CentOS version to the manylinux image names c8b9dd6b1 <Krisztián Szűcs> Missing --pyargs argument for the python test command 33e646981 <Krisztián Szűcs> Turn off gandiva and flight for the HDFS test b9c547889 <Krisztián Szűcs> Refactor docker-compose file and use it with github actions. Authored-by: Krisztián Szűcs <szucs.krisztian@gmail.com> Signed-off-by: Krisztián Szűcs <szucs.krisztian@gmail.com>
2019-11-12 11:07:48 +01:00
export PYARROW_WITH_CUDA=${ARROW_CUDA:-OFF}
export PYARROW_WITH_DATASET=${ARROW_DATASET:-ON}
ARROW-7101: [CI] Refactor docker-compose setup and use it with GitHub Actions ## Projecting ideas from ursabot ### Parametric docker images The images are better parameterized now, meaning that we can build more variant of the same service. Couple of examples: ```console UBUNTU=16.04 docker-compose build ubuntu-cpp ARCH=arm64v8 UBUNTU=18.04 docker-compose build ubuntu-cpp PYTHON=3.6 docker-compose build conda-python ARCH=arm32v7 PYTHON=3.6 PANDAS=0.25 docker-compose build conda-python-pandas ``` Each variant has it's own docker image following a string naming schema: `{org}/{arch}-{platform}-{platform-version}[[-{variant}-{variant-version}]..]:latest` ### Use *_build.sh and *_test.sh for each job The docker images provide the environment, and each language backend usually should implement two scripts, a `build.sh` and a `test.sh`. This way dependent build like the docker python, r or c glib are able to reuse the build script of the ancestor without running its tests. With small enough scripts, if the environment is properly set up even the non-docker builds should be reproducible locally. GitHub Actions support bash scripts across all three platforms, so we can reuse the same `*_build.sh` and `*_test.sh` scripts to execute the builds either in docker, on the CI or locally. ## Using GitHub Actions for running the builds Regardless of the CI we're going to choose, the isolation constraint of different platforms requires some sort of virtualisation. Currently linux (and windows, but I have not tried it yet) has lightweight containerisation, so we should keep the linux builds isolated in docker containers. The rest of the platforms (windows and macOS) should be executed on the CI system. GitHub Actions support all three major platforms, linux, windows and macOS. I've added cross platform builds for a couple of languages, like Rust, and Go, the rest are work in progress. ### Workflow A workflow should define all builds of a language, mostly because the path filters can be defined on workflow level. For example the python builds should be triggered if either a cpp/** or a python/** file changes which can be covered in the same workflow file. ## Feature parity with the current builds Reaching feature parity with all of the builds below is not a goal for this PR, the difficult ones should at least have a tracking JIRA ticket. ### Travis-CI - [x] **Lint, Release tests**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` - [x] **C++ unit tests w/ conda-forge toolchain, coverage**: without coverage - `C++ / AMD64 Conda C++` - [x] **Python 3.6 unit tests, conda-forge toolchain, coverage**: without coverage - `Python / AMD64 Conda Python 3.6` - [x] **[OS X] C++ w/ Xcode 9.3**: - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - [x] **[OS X] Python w/ Xcode 9.3**: - `Python / AMD64 MacOS 10.14 Python 3`: with Xcode 10.3 - [x] **Java OpenJDK8 and OpenJDK11**: - `Java / AMD64 Debian Java JDK 8 Maven 3.5.2` - `Java / AMD64 Debian Java JDK 11 Maven 3.6.2` - [x] **Protocol / Flight Integration Tests**: - `Dev / Protocol Test` - [x] **NodeJS**: without running lint and coverage - `NodeJS / AMD64 Debian NodeJS 11` - [x] **C++ & GLib & Ruby w/ gcc 5.4**: - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - `C GLib / AMD64 Ubuntu 18.04 C GLib` - `Ruby / AMD64 Ubuntu 18.04 Ruby` - [x] **[OS X] C++ & GLib & Ruby w/ XCode 10.2 & Homebrew** - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - `C GLib / AMD64 MacOS 10.14 C Glib`: with Xcode 10.3 - `Ruby / AMD64 MacOS 10.14 Ruby`: with Xcode 10.3 - [x] **Go**: without coverage - `Go / AMD64 Debian Go 1.12` - [x] **R (with and without libarrow)**: - `R / AMD64 Conda R 3.6`: with libarrow - `R / AMD64 Ubuntu 18.04 R 3.6` with libarrow ### Appveyor - ~JOB=Build, GENERATOR=Ninja, CONFIGURATION=Release, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017~ - ~JOB=Toolchain, GENERATOR=Ninja, CONFIGURATION=Release, ARROW_S3=ON, ARROW_BUILD_FLIGHT=ON, ARROW_BUILD_GANDIVA=ON~ - ~JOB=Build_Debug, GENERATOR=Ninja, CONFIGURATION=Debug~ - ~JOB=MinGW32, MINGW_ARCH=i686, MINGW_PACKAGE_PREFIX=mingw-w64-i686, MINGW_PREFIX=c:\msys64\mingw32, MSYSTEM=MINGW32, USE_CLCACHE=false~ - ~JOB=MinGW64, MINGW_ARCH=x86_64, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64, MINGW_PREFIX=c:\msys64\mingw64, MSYSTEM=MINGW64, USE_CLCACHE=false~ - [x] **JOB=Rust, TARGET=x86_64-pc-windows-msvc, USE_CLCACHE=false**: - `Rust / AMD64 Windows 2019 Rust nightly-2019-09-25` - [x] **JOB=C#, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017, USE_CLCACHE=false** - `C# / AMD64 Windows 2019 C# 2.2.103` - [x] **JOB=Go, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64 ...**: - `Go / AMD64 Windows 2019 Go 1.12` - ~JOB=R with libarrow, USE_CLCACHE=false, TEST_R_WITH_ARROW=TRUE, RWINLIB_LOCAL=%APPVEYOR_BUILD_FOLDER%\libarrow.zip~ ### Github Actions - [x] **Windows MSVC C++ / Build (Visual Studio 16 2019)**: - `C++ / AMD64 Windows 2019 C++`: without tests - [x] **Windows MSVC C++ / Build (Visual Studio 15 2017)**: - `C++ / AMD64 Windows 2016 C++`: without tests - [x] **Linux docker-compose / Test (C++ w/ clang-7 & system packages)**: all have llvm for gandiva but the compiler is set to gcc - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - [x] **Linux docker-compose / Test (Rust)**: without rustfmt - `Rust / AMD64 Debian Rust nightly-2019-09-25` - [x] **Linux docker-compose / Test (Lint, Release tests)**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` ### Nightly Crossbow tests The packaging builds are out of the scope if this PR, but the nightly **dockerized test** task are in. Nightly tests: - [x] docker-r - [x] docker-r-conda - [x] docker-r-sanitizer - [x] docker-rust - [x] docker-cpp - [x] docker-cpp-cmake32 - [x] docker-cpp-release - [x] docker-cpp-static-only - [x] docker-c_glib - [x] docker-go - [x] docker-python-2.7 - [x] docker-python-3.6 - [x] docker-python-3.7 - [x] docker-python-2.7-nopandas - [x] docker-python-3.6-nopandas - [x] docker-java - [x] docker-js - [x] docker-docs - [x] docker-lint - [x] docker-iwyu: included in the lint - [x] docker-clang-format: included in the lint - [x] docker-pandas-master - [x] docker-dask-integration - [x] docker-hdfs-integration - [x] docker-spark-integration - [x] docker-turbodbc-integration # TODOs left: - [x] Fix the Apidoc generation for c_glib - [x] Fix the JNI test for Gandiva and ORC - [x] Test that crossbow tests are passing - ~Optionally restore the travis configuration to incrementally decommission old builds~ ## Follow-up JIRAs: - [Archery] Consider porting the docker tool of ursabot to archery - [Archery] Consider to use archery with or instead of the pre-commit hooks - [Archery] Create a wrapper script in archery for docker compose in order to run the containers with the host's user and group - [C++] GCC 5.4.0 has a compile errors, reproduce with UBUNTU=16.04 docker-compose run ubuntu-cpp - [C++][CI] Test the ported fuzzit integration image - [C++][CI] Turn off unnecessary features in the integration tests (spark/turbodbc/dask/hdfs) - [C++][CI] Revisit ASAN UBSAN settings in every C++ based image - [CI] Consider re-adding the removed debian testing image is removed - [Go][CI] Pre-install the go dependencies in the dockerfile using go get - [JS][CI] Pre-install the JS dependencies in the dockerfile - [Rust][CI] Pre-install the rust dependencies in the dockerfile - [Java][CI] Pre-install the java dependencies in the dockerfile - [Ruby][CI] Pre-install the ruby dependencies in the dockerfile and remove it from the test script - [C#][CI] Pre-install the C# dependencies in the dockerfile - [R][CI] Fix the r-sanitizer build https://issues.apache.org/jira/browse/ARROW-6957 - [GLIB][MacOS] Fail to execute lua examples (fails to load 'lgi.corelgilua51' despite that lgi is installed) - [C++][CMake] Automatically set ARROW_GANDIVA_PC_CXX_FLAGS for conda and OSX sdk (see cpp_build.sh) - [C++][CI] Hiveserver2 instegration test fails to connect to impala container - [CI][Spark] Support specific Spark version in the integration tet including latest - [JS][CI] Move nodejs linting from js_build.sh to archery - [Python][CI] create a docker image for python ASV benchmarks and fix the script - [CI] Find a short but related prefix for the env vars used for the docker-compose file to prevent collisions - [C#] the docker container fails to run because of the ubuntu host versions, see https://github.com/dotnet/core/issues/3509 - [C++][Windows] Enable more features on the windows GHA build - [Doc] document docker-compose usage in the developer sphinx guide - [CI][C++] Add .ccache to the docker-compose mounts - [Archery][CI] Refactor the ci/scripts to a sourceable bash functions or to archery directly - [C++][CI] Use scripts/util_coredump.sh to show automatic backtraces - [C++] Fix the hanging C++ tests in Windows 2019 - [CI] Ask INFRA to set up the DOCKERHUB_* secrets for GitHub actions - [C++][CI] Running Gandiva tests fails on Fedora: Reproduce with: `docker-compose run -e ARROW_GANDIVA=ON fedora-cpp` ``` Running gandiva-internals-test, redirecting output into /build/cpp/build/test-logs/gandiva-internals-test.txt (attempt 1/1) 1364 : CommandLine Error: Option 'x86-experimental-vector-widening-legalization' registered more than once! 1365 LLVM ERROR: inconsistency in registered CommandLine options 1366 /build/cpp/src/gandiva ``` - [JS][CI] NodeJS build fails on Github Actions Windows node ``` > NODE_NO_WARNINGS=1 gulp build # 'NODE_NO_WARNINGS' is not recognized as an internal or external command, # operable program or batch file. # npm ERR! code ELIFECYCLE # npm ERR! errno 1 # npm ERR! apache-arrow@1.0.0-SNAPSHOT build: `NODE_NO_WARNINGS=1 gulp build` # npm ERR! Exit status 1 # npm ERR! # npm ERR! Failed at the apache-arrow@1.0.0-SNAPSHOT build script. # npm ERR! This is probably not a problem with npm. There is likely additional logging output above. ``` Closes #5589 from kszucs/docker-refactor and squashes the following commits: 5105d12e6 <Krisztián Szűcs> Rename pull-request folder to dev_cron e9e9a7eec <Krisztián Szűcs> Use underscores for naming the workflow files a92c99d03 <Krisztián Szűcs> Disable hanging C++ tests on windows f158c89b5 <Krisztián Szűcs> Attempt to push from apache/arrow master; Don't push from crossbow tasks 0e1d470a1 <Krisztián Szűcs> Turn off ORC on macOS C++ test due to link error 258db5cff <Krisztián Szűcs> Only push docker images from apache/arrow repository acdfcf086 <Krisztián Szűcs> Remove ORC from the brewfile 5102b85b1 <Krisztián Szűcs> Fix nodeJS workflow 032d6a388 <Krisztián Szűcs> Turn off 2 python builds 7f15b97a8 <Krisztián Szűcs> Filter branches 48b8d128a <Krisztián Szűcs> Fix workflows 36ad9d297 <Krisztián Szűcs> Disable builds 0f603af0c <Krisztián Szűcs> master only and cron workflows 28cc2d78d <Krisztián Szűcs> Rename Java JNI workflow bcd8af7b7 <Krisztián Szűcs> Port the remaining travis utility scripts ed5688154 <Krisztián Szűcs> Usage comments; recommend installing pandas from the docs because of its removal from conda_env_python 3c8c023ce <Krisztián Szűcs> Use Arch in volumes; some comments; remove conda version 'latest' from the images 771b023a8 <Krisztián Szűcs> Cleanup files; separate JNI builds 97ff8a122 <Krisztián Szűcs> Push docker images only from master dc00b4297 <Krisztián Szűcs> Enable path filters e0e2e1f46 <Krisztián Szűcs> Fix pandas master build 3814e0828 <Krisztián Szűcs> Fix manylinux volumes c18edda70 <Krisztián Szűcs> Add CentOS version to the manylinux image names c8b9dd6b1 <Krisztián Szűcs> Missing --pyargs argument for the python test command 33e646981 <Krisztián Szűcs> Turn off gandiva and flight for the HDFS test b9c547889 <Krisztián Szűcs> Refactor docker-compose file and use it with github actions. Authored-by: Krisztián Szűcs <szucs.krisztian@gmail.com> Signed-off-by: Krisztián Szűcs <szucs.krisztian@gmail.com>
2019-11-12 11:07:48 +01:00
export PYARROW_WITH_FLIGHT=${ARROW_FLIGHT:-OFF}
export PYARROW_WITH_GANDIVA=${ARROW_GANDIVA:-OFF}
export PYARROW_WITH_GCS=${ARROW_GCS:-OFF}
export PYARROW_WITH_HDFS=${ARROW_HDFS:-ON}
export PYARROW_WITH_ORC=${ARROW_ORC:-OFF}
ARROW-7101: [CI] Refactor docker-compose setup and use it with GitHub Actions ## Projecting ideas from ursabot ### Parametric docker images The images are better parameterized now, meaning that we can build more variant of the same service. Couple of examples: ```console UBUNTU=16.04 docker-compose build ubuntu-cpp ARCH=arm64v8 UBUNTU=18.04 docker-compose build ubuntu-cpp PYTHON=3.6 docker-compose build conda-python ARCH=arm32v7 PYTHON=3.6 PANDAS=0.25 docker-compose build conda-python-pandas ``` Each variant has it's own docker image following a string naming schema: `{org}/{arch}-{platform}-{platform-version}[[-{variant}-{variant-version}]..]:latest` ### Use *_build.sh and *_test.sh for each job The docker images provide the environment, and each language backend usually should implement two scripts, a `build.sh` and a `test.sh`. This way dependent build like the docker python, r or c glib are able to reuse the build script of the ancestor without running its tests. With small enough scripts, if the environment is properly set up even the non-docker builds should be reproducible locally. GitHub Actions support bash scripts across all three platforms, so we can reuse the same `*_build.sh` and `*_test.sh` scripts to execute the builds either in docker, on the CI or locally. ## Using GitHub Actions for running the builds Regardless of the CI we're going to choose, the isolation constraint of different platforms requires some sort of virtualisation. Currently linux (and windows, but I have not tried it yet) has lightweight containerisation, so we should keep the linux builds isolated in docker containers. The rest of the platforms (windows and macOS) should be executed on the CI system. GitHub Actions support all three major platforms, linux, windows and macOS. I've added cross platform builds for a couple of languages, like Rust, and Go, the rest are work in progress. ### Workflow A workflow should define all builds of a language, mostly because the path filters can be defined on workflow level. For example the python builds should be triggered if either a cpp/** or a python/** file changes which can be covered in the same workflow file. ## Feature parity with the current builds Reaching feature parity with all of the builds below is not a goal for this PR, the difficult ones should at least have a tracking JIRA ticket. ### Travis-CI - [x] **Lint, Release tests**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` - [x] **C++ unit tests w/ conda-forge toolchain, coverage**: without coverage - `C++ / AMD64 Conda C++` - [x] **Python 3.6 unit tests, conda-forge toolchain, coverage**: without coverage - `Python / AMD64 Conda Python 3.6` - [x] **[OS X] C++ w/ Xcode 9.3**: - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - [x] **[OS X] Python w/ Xcode 9.3**: - `Python / AMD64 MacOS 10.14 Python 3`: with Xcode 10.3 - [x] **Java OpenJDK8 and OpenJDK11**: - `Java / AMD64 Debian Java JDK 8 Maven 3.5.2` - `Java / AMD64 Debian Java JDK 11 Maven 3.6.2` - [x] **Protocol / Flight Integration Tests**: - `Dev / Protocol Test` - [x] **NodeJS**: without running lint and coverage - `NodeJS / AMD64 Debian NodeJS 11` - [x] **C++ & GLib & Ruby w/ gcc 5.4**: - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - `C GLib / AMD64 Ubuntu 18.04 C GLib` - `Ruby / AMD64 Ubuntu 18.04 Ruby` - [x] **[OS X] C++ & GLib & Ruby w/ XCode 10.2 & Homebrew** - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - `C GLib / AMD64 MacOS 10.14 C Glib`: with Xcode 10.3 - `Ruby / AMD64 MacOS 10.14 Ruby`: with Xcode 10.3 - [x] **Go**: without coverage - `Go / AMD64 Debian Go 1.12` - [x] **R (with and without libarrow)**: - `R / AMD64 Conda R 3.6`: with libarrow - `R / AMD64 Ubuntu 18.04 R 3.6` with libarrow ### Appveyor - ~JOB=Build, GENERATOR=Ninja, CONFIGURATION=Release, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017~ - ~JOB=Toolchain, GENERATOR=Ninja, CONFIGURATION=Release, ARROW_S3=ON, ARROW_BUILD_FLIGHT=ON, ARROW_BUILD_GANDIVA=ON~ - ~JOB=Build_Debug, GENERATOR=Ninja, CONFIGURATION=Debug~ - ~JOB=MinGW32, MINGW_ARCH=i686, MINGW_PACKAGE_PREFIX=mingw-w64-i686, MINGW_PREFIX=c:\msys64\mingw32, MSYSTEM=MINGW32, USE_CLCACHE=false~ - ~JOB=MinGW64, MINGW_ARCH=x86_64, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64, MINGW_PREFIX=c:\msys64\mingw64, MSYSTEM=MINGW64, USE_CLCACHE=false~ - [x] **JOB=Rust, TARGET=x86_64-pc-windows-msvc, USE_CLCACHE=false**: - `Rust / AMD64 Windows 2019 Rust nightly-2019-09-25` - [x] **JOB=C#, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017, USE_CLCACHE=false** - `C# / AMD64 Windows 2019 C# 2.2.103` - [x] **JOB=Go, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64 ...**: - `Go / AMD64 Windows 2019 Go 1.12` - ~JOB=R with libarrow, USE_CLCACHE=false, TEST_R_WITH_ARROW=TRUE, RWINLIB_LOCAL=%APPVEYOR_BUILD_FOLDER%\libarrow.zip~ ### Github Actions - [x] **Windows MSVC C++ / Build (Visual Studio 16 2019)**: - `C++ / AMD64 Windows 2019 C++`: without tests - [x] **Windows MSVC C++ / Build (Visual Studio 15 2017)**: - `C++ / AMD64 Windows 2016 C++`: without tests - [x] **Linux docker-compose / Test (C++ w/ clang-7 & system packages)**: all have llvm for gandiva but the compiler is set to gcc - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - [x] **Linux docker-compose / Test (Rust)**: without rustfmt - `Rust / AMD64 Debian Rust nightly-2019-09-25` - [x] **Linux docker-compose / Test (Lint, Release tests)**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` ### Nightly Crossbow tests The packaging builds are out of the scope if this PR, but the nightly **dockerized test** task are in. Nightly tests: - [x] docker-r - [x] docker-r-conda - [x] docker-r-sanitizer - [x] docker-rust - [x] docker-cpp - [x] docker-cpp-cmake32 - [x] docker-cpp-release - [x] docker-cpp-static-only - [x] docker-c_glib - [x] docker-go - [x] docker-python-2.7 - [x] docker-python-3.6 - [x] docker-python-3.7 - [x] docker-python-2.7-nopandas - [x] docker-python-3.6-nopandas - [x] docker-java - [x] docker-js - [x] docker-docs - [x] docker-lint - [x] docker-iwyu: included in the lint - [x] docker-clang-format: included in the lint - [x] docker-pandas-master - [x] docker-dask-integration - [x] docker-hdfs-integration - [x] docker-spark-integration - [x] docker-turbodbc-integration # TODOs left: - [x] Fix the Apidoc generation for c_glib - [x] Fix the JNI test for Gandiva and ORC - [x] Test that crossbow tests are passing - ~Optionally restore the travis configuration to incrementally decommission old builds~ ## Follow-up JIRAs: - [Archery] Consider porting the docker tool of ursabot to archery - [Archery] Consider to use archery with or instead of the pre-commit hooks - [Archery] Create a wrapper script in archery for docker compose in order to run the containers with the host's user and group - [C++] GCC 5.4.0 has a compile errors, reproduce with UBUNTU=16.04 docker-compose run ubuntu-cpp - [C++][CI] Test the ported fuzzit integration image - [C++][CI] Turn off unnecessary features in the integration tests (spark/turbodbc/dask/hdfs) - [C++][CI] Revisit ASAN UBSAN settings in every C++ based image - [CI] Consider re-adding the removed debian testing image is removed - [Go][CI] Pre-install the go dependencies in the dockerfile using go get - [JS][CI] Pre-install the JS dependencies in the dockerfile - [Rust][CI] Pre-install the rust dependencies in the dockerfile - [Java][CI] Pre-install the java dependencies in the dockerfile - [Ruby][CI] Pre-install the ruby dependencies in the dockerfile and remove it from the test script - [C#][CI] Pre-install the C# dependencies in the dockerfile - [R][CI] Fix the r-sanitizer build https://issues.apache.org/jira/browse/ARROW-6957 - [GLIB][MacOS] Fail to execute lua examples (fails to load 'lgi.corelgilua51' despite that lgi is installed) - [C++][CMake] Automatically set ARROW_GANDIVA_PC_CXX_FLAGS for conda and OSX sdk (see cpp_build.sh) - [C++][CI] Hiveserver2 instegration test fails to connect to impala container - [CI][Spark] Support specific Spark version in the integration tet including latest - [JS][CI] Move nodejs linting from js_build.sh to archery - [Python][CI] create a docker image for python ASV benchmarks and fix the script - [CI] Find a short but related prefix for the env vars used for the docker-compose file to prevent collisions - [C#] the docker container fails to run because of the ubuntu host versions, see https://github.com/dotnet/core/issues/3509 - [C++][Windows] Enable more features on the windows GHA build - [Doc] document docker-compose usage in the developer sphinx guide - [CI][C++] Add .ccache to the docker-compose mounts - [Archery][CI] Refactor the ci/scripts to a sourceable bash functions or to archery directly - [C++][CI] Use scripts/util_coredump.sh to show automatic backtraces - [C++] Fix the hanging C++ tests in Windows 2019 - [CI] Ask INFRA to set up the DOCKERHUB_* secrets for GitHub actions - [C++][CI] Running Gandiva tests fails on Fedora: Reproduce with: `docker-compose run -e ARROW_GANDIVA=ON fedora-cpp` ``` Running gandiva-internals-test, redirecting output into /build/cpp/build/test-logs/gandiva-internals-test.txt (attempt 1/1) 1364 : CommandLine Error: Option 'x86-experimental-vector-widening-legalization' registered more than once! 1365 LLVM ERROR: inconsistency in registered CommandLine options 1366 /build/cpp/src/gandiva ``` - [JS][CI] NodeJS build fails on Github Actions Windows node ``` > NODE_NO_WARNINGS=1 gulp build # 'NODE_NO_WARNINGS' is not recognized as an internal or external command, # operable program or batch file. # npm ERR! code ELIFECYCLE # npm ERR! errno 1 # npm ERR! apache-arrow@1.0.0-SNAPSHOT build: `NODE_NO_WARNINGS=1 gulp build` # npm ERR! Exit status 1 # npm ERR! # npm ERR! Failed at the apache-arrow@1.0.0-SNAPSHOT build script. # npm ERR! This is probably not a problem with npm. There is likely additional logging output above. ``` Closes #5589 from kszucs/docker-refactor and squashes the following commits: 5105d12e6 <Krisztián Szűcs> Rename pull-request folder to dev_cron e9e9a7eec <Krisztián Szűcs> Use underscores for naming the workflow files a92c99d03 <Krisztián Szűcs> Disable hanging C++ tests on windows f158c89b5 <Krisztián Szűcs> Attempt to push from apache/arrow master; Don't push from crossbow tasks 0e1d470a1 <Krisztián Szűcs> Turn off ORC on macOS C++ test due to link error 258db5cff <Krisztián Szűcs> Only push docker images from apache/arrow repository acdfcf086 <Krisztián Szűcs> Remove ORC from the brewfile 5102b85b1 <Krisztián Szűcs> Fix nodeJS workflow 032d6a388 <Krisztián Szűcs> Turn off 2 python builds 7f15b97a8 <Krisztián Szűcs> Filter branches 48b8d128a <Krisztián Szűcs> Fix workflows 36ad9d297 <Krisztián Szűcs> Disable builds 0f603af0c <Krisztián Szűcs> master only and cron workflows 28cc2d78d <Krisztián Szűcs> Rename Java JNI workflow bcd8af7b7 <Krisztián Szűcs> Port the remaining travis utility scripts ed5688154 <Krisztián Szűcs> Usage comments; recommend installing pandas from the docs because of its removal from conda_env_python 3c8c023ce <Krisztián Szűcs> Use Arch in volumes; some comments; remove conda version 'latest' from the images 771b023a8 <Krisztián Szűcs> Cleanup files; separate JNI builds 97ff8a122 <Krisztián Szűcs> Push docker images only from master dc00b4297 <Krisztián Szűcs> Enable path filters e0e2e1f46 <Krisztián Szűcs> Fix pandas master build 3814e0828 <Krisztián Szűcs> Fix manylinux volumes c18edda70 <Krisztián Szűcs> Add CentOS version to the manylinux image names c8b9dd6b1 <Krisztián Szűcs> Missing --pyargs argument for the python test command 33e646981 <Krisztián Szűcs> Turn off gandiva and flight for the HDFS test b9c547889 <Krisztián Szűcs> Refactor docker-compose file and use it with github actions. Authored-by: Krisztián Szűcs <szucs.krisztian@gmail.com> Signed-off-by: Krisztián Szűcs <szucs.krisztian@gmail.com>
2019-11-12 11:07:48 +01:00
export PYARROW_WITH_PARQUET=${ARROW_PARQUET:-OFF}
export PYARROW_WITH_PARQUET_ENCRYPTION=${PARQUET_REQUIRE_ENCRYPTION:-ON}
export PYARROW_WITH_S3=${ARROW_S3:-OFF}
export PYARROW_WITH_SUBSTRAIT=${ARROW_SUBSTRAIT:-OFF}
ARROW-7101: [CI] Refactor docker-compose setup and use it with GitHub Actions ## Projecting ideas from ursabot ### Parametric docker images The images are better parameterized now, meaning that we can build more variant of the same service. Couple of examples: ```console UBUNTU=16.04 docker-compose build ubuntu-cpp ARCH=arm64v8 UBUNTU=18.04 docker-compose build ubuntu-cpp PYTHON=3.6 docker-compose build conda-python ARCH=arm32v7 PYTHON=3.6 PANDAS=0.25 docker-compose build conda-python-pandas ``` Each variant has it's own docker image following a string naming schema: `{org}/{arch}-{platform}-{platform-version}[[-{variant}-{variant-version}]..]:latest` ### Use *_build.sh and *_test.sh for each job The docker images provide the environment, and each language backend usually should implement two scripts, a `build.sh` and a `test.sh`. This way dependent build like the docker python, r or c glib are able to reuse the build script of the ancestor without running its tests. With small enough scripts, if the environment is properly set up even the non-docker builds should be reproducible locally. GitHub Actions support bash scripts across all three platforms, so we can reuse the same `*_build.sh` and `*_test.sh` scripts to execute the builds either in docker, on the CI or locally. ## Using GitHub Actions for running the builds Regardless of the CI we're going to choose, the isolation constraint of different platforms requires some sort of virtualisation. Currently linux (and windows, but I have not tried it yet) has lightweight containerisation, so we should keep the linux builds isolated in docker containers. The rest of the platforms (windows and macOS) should be executed on the CI system. GitHub Actions support all three major platforms, linux, windows and macOS. I've added cross platform builds for a couple of languages, like Rust, and Go, the rest are work in progress. ### Workflow A workflow should define all builds of a language, mostly because the path filters can be defined on workflow level. For example the python builds should be triggered if either a cpp/** or a python/** file changes which can be covered in the same workflow file. ## Feature parity with the current builds Reaching feature parity with all of the builds below is not a goal for this PR, the difficult ones should at least have a tracking JIRA ticket. ### Travis-CI - [x] **Lint, Release tests**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` - [x] **C++ unit tests w/ conda-forge toolchain, coverage**: without coverage - `C++ / AMD64 Conda C++` - [x] **Python 3.6 unit tests, conda-forge toolchain, coverage**: without coverage - `Python / AMD64 Conda Python 3.6` - [x] **[OS X] C++ w/ Xcode 9.3**: - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - [x] **[OS X] Python w/ Xcode 9.3**: - `Python / AMD64 MacOS 10.14 Python 3`: with Xcode 10.3 - [x] **Java OpenJDK8 and OpenJDK11**: - `Java / AMD64 Debian Java JDK 8 Maven 3.5.2` - `Java / AMD64 Debian Java JDK 11 Maven 3.6.2` - [x] **Protocol / Flight Integration Tests**: - `Dev / Protocol Test` - [x] **NodeJS**: without running lint and coverage - `NodeJS / AMD64 Debian NodeJS 11` - [x] **C++ & GLib & Ruby w/ gcc 5.4**: - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - `C GLib / AMD64 Ubuntu 18.04 C GLib` - `Ruby / AMD64 Ubuntu 18.04 Ruby` - [x] **[OS X] C++ & GLib & Ruby w/ XCode 10.2 & Homebrew** - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - `C GLib / AMD64 MacOS 10.14 C Glib`: with Xcode 10.3 - `Ruby / AMD64 MacOS 10.14 Ruby`: with Xcode 10.3 - [x] **Go**: without coverage - `Go / AMD64 Debian Go 1.12` - [x] **R (with and without libarrow)**: - `R / AMD64 Conda R 3.6`: with libarrow - `R / AMD64 Ubuntu 18.04 R 3.6` with libarrow ### Appveyor - ~JOB=Build, GENERATOR=Ninja, CONFIGURATION=Release, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017~ - ~JOB=Toolchain, GENERATOR=Ninja, CONFIGURATION=Release, ARROW_S3=ON, ARROW_BUILD_FLIGHT=ON, ARROW_BUILD_GANDIVA=ON~ - ~JOB=Build_Debug, GENERATOR=Ninja, CONFIGURATION=Debug~ - ~JOB=MinGW32, MINGW_ARCH=i686, MINGW_PACKAGE_PREFIX=mingw-w64-i686, MINGW_PREFIX=c:\msys64\mingw32, MSYSTEM=MINGW32, USE_CLCACHE=false~ - ~JOB=MinGW64, MINGW_ARCH=x86_64, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64, MINGW_PREFIX=c:\msys64\mingw64, MSYSTEM=MINGW64, USE_CLCACHE=false~ - [x] **JOB=Rust, TARGET=x86_64-pc-windows-msvc, USE_CLCACHE=false**: - `Rust / AMD64 Windows 2019 Rust nightly-2019-09-25` - [x] **JOB=C#, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017, USE_CLCACHE=false** - `C# / AMD64 Windows 2019 C# 2.2.103` - [x] **JOB=Go, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64 ...**: - `Go / AMD64 Windows 2019 Go 1.12` - ~JOB=R with libarrow, USE_CLCACHE=false, TEST_R_WITH_ARROW=TRUE, RWINLIB_LOCAL=%APPVEYOR_BUILD_FOLDER%\libarrow.zip~ ### Github Actions - [x] **Windows MSVC C++ / Build (Visual Studio 16 2019)**: - `C++ / AMD64 Windows 2019 C++`: without tests - [x] **Windows MSVC C++ / Build (Visual Studio 15 2017)**: - `C++ / AMD64 Windows 2016 C++`: without tests - [x] **Linux docker-compose / Test (C++ w/ clang-7 & system packages)**: all have llvm for gandiva but the compiler is set to gcc - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - [x] **Linux docker-compose / Test (Rust)**: without rustfmt - `Rust / AMD64 Debian Rust nightly-2019-09-25` - [x] **Linux docker-compose / Test (Lint, Release tests)**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` ### Nightly Crossbow tests The packaging builds are out of the scope if this PR, but the nightly **dockerized test** task are in. Nightly tests: - [x] docker-r - [x] docker-r-conda - [x] docker-r-sanitizer - [x] docker-rust - [x] docker-cpp - [x] docker-cpp-cmake32 - [x] docker-cpp-release - [x] docker-cpp-static-only - [x] docker-c_glib - [x] docker-go - [x] docker-python-2.7 - [x] docker-python-3.6 - [x] docker-python-3.7 - [x] docker-python-2.7-nopandas - [x] docker-python-3.6-nopandas - [x] docker-java - [x] docker-js - [x] docker-docs - [x] docker-lint - [x] docker-iwyu: included in the lint - [x] docker-clang-format: included in the lint - [x] docker-pandas-master - [x] docker-dask-integration - [x] docker-hdfs-integration - [x] docker-spark-integration - [x] docker-turbodbc-integration # TODOs left: - [x] Fix the Apidoc generation for c_glib - [x] Fix the JNI test for Gandiva and ORC - [x] Test that crossbow tests are passing - ~Optionally restore the travis configuration to incrementally decommission old builds~ ## Follow-up JIRAs: - [Archery] Consider porting the docker tool of ursabot to archery - [Archery] Consider to use archery with or instead of the pre-commit hooks - [Archery] Create a wrapper script in archery for docker compose in order to run the containers with the host's user and group - [C++] GCC 5.4.0 has a compile errors, reproduce with UBUNTU=16.04 docker-compose run ubuntu-cpp - [C++][CI] Test the ported fuzzit integration image - [C++][CI] Turn off unnecessary features in the integration tests (spark/turbodbc/dask/hdfs) - [C++][CI] Revisit ASAN UBSAN settings in every C++ based image - [CI] Consider re-adding the removed debian testing image is removed - [Go][CI] Pre-install the go dependencies in the dockerfile using go get - [JS][CI] Pre-install the JS dependencies in the dockerfile - [Rust][CI] Pre-install the rust dependencies in the dockerfile - [Java][CI] Pre-install the java dependencies in the dockerfile - [Ruby][CI] Pre-install the ruby dependencies in the dockerfile and remove it from the test script - [C#][CI] Pre-install the C# dependencies in the dockerfile - [R][CI] Fix the r-sanitizer build https://issues.apache.org/jira/browse/ARROW-6957 - [GLIB][MacOS] Fail to execute lua examples (fails to load 'lgi.corelgilua51' despite that lgi is installed) - [C++][CMake] Automatically set ARROW_GANDIVA_PC_CXX_FLAGS for conda and OSX sdk (see cpp_build.sh) - [C++][CI] Hiveserver2 instegration test fails to connect to impala container - [CI][Spark] Support specific Spark version in the integration tet including latest - [JS][CI] Move nodejs linting from js_build.sh to archery - [Python][CI] create a docker image for python ASV benchmarks and fix the script - [CI] Find a short but related prefix for the env vars used for the docker-compose file to prevent collisions - [C#] the docker container fails to run because of the ubuntu host versions, see https://github.com/dotnet/core/issues/3509 - [C++][Windows] Enable more features on the windows GHA build - [Doc] document docker-compose usage in the developer sphinx guide - [CI][C++] Add .ccache to the docker-compose mounts - [Archery][CI] Refactor the ci/scripts to a sourceable bash functions or to archery directly - [C++][CI] Use scripts/util_coredump.sh to show automatic backtraces - [C++] Fix the hanging C++ tests in Windows 2019 - [CI] Ask INFRA to set up the DOCKERHUB_* secrets for GitHub actions - [C++][CI] Running Gandiva tests fails on Fedora: Reproduce with: `docker-compose run -e ARROW_GANDIVA=ON fedora-cpp` ``` Running gandiva-internals-test, redirecting output into /build/cpp/build/test-logs/gandiva-internals-test.txt (attempt 1/1) 1364 : CommandLine Error: Option 'x86-experimental-vector-widening-legalization' registered more than once! 1365 LLVM ERROR: inconsistency in registered CommandLine options 1366 /build/cpp/src/gandiva ``` - [JS][CI] NodeJS build fails on Github Actions Windows node ``` > NODE_NO_WARNINGS=1 gulp build # 'NODE_NO_WARNINGS' is not recognized as an internal or external command, # operable program or batch file. # npm ERR! code ELIFECYCLE # npm ERR! errno 1 # npm ERR! apache-arrow@1.0.0-SNAPSHOT build: `NODE_NO_WARNINGS=1 gulp build` # npm ERR! Exit status 1 # npm ERR! # npm ERR! Failed at the apache-arrow@1.0.0-SNAPSHOT build script. # npm ERR! This is probably not a problem with npm. There is likely additional logging output above. ``` Closes #5589 from kszucs/docker-refactor and squashes the following commits: 5105d12e6 <Krisztián Szűcs> Rename pull-request folder to dev_cron e9e9a7eec <Krisztián Szűcs> Use underscores for naming the workflow files a92c99d03 <Krisztián Szűcs> Disable hanging C++ tests on windows f158c89b5 <Krisztián Szűcs> Attempt to push from apache/arrow master; Don't push from crossbow tasks 0e1d470a1 <Krisztián Szűcs> Turn off ORC on macOS C++ test due to link error 258db5cff <Krisztián Szűcs> Only push docker images from apache/arrow repository acdfcf086 <Krisztián Szűcs> Remove ORC from the brewfile 5102b85b1 <Krisztián Szűcs> Fix nodeJS workflow 032d6a388 <Krisztián Szűcs> Turn off 2 python builds 7f15b97a8 <Krisztián Szűcs> Filter branches 48b8d128a <Krisztián Szűcs> Fix workflows 36ad9d297 <Krisztián Szűcs> Disable builds 0f603af0c <Krisztián Szűcs> master only and cron workflows 28cc2d78d <Krisztián Szűcs> Rename Java JNI workflow bcd8af7b7 <Krisztián Szűcs> Port the remaining travis utility scripts ed5688154 <Krisztián Szűcs> Usage comments; recommend installing pandas from the docs because of its removal from conda_env_python 3c8c023ce <Krisztián Szűcs> Use Arch in volumes; some comments; remove conda version 'latest' from the images 771b023a8 <Krisztián Szűcs> Cleanup files; separate JNI builds 97ff8a122 <Krisztián Szűcs> Push docker images only from master dc00b4297 <Krisztián Szűcs> Enable path filters e0e2e1f46 <Krisztián Szűcs> Fix pandas master build 3814e0828 <Krisztián Szűcs> Fix manylinux volumes c18edda70 <Krisztián Szűcs> Add CentOS version to the manylinux image names c8b9dd6b1 <Krisztián Szűcs> Missing --pyargs argument for the python test command 33e646981 <Krisztián Szűcs> Turn off gandiva and flight for the HDFS test b9c547889 <Krisztián Szűcs> Refactor docker-compose file and use it with github actions. Authored-by: Krisztián Szűcs <szucs.krisztian@gmail.com> Signed-off-by: Krisztián Szűcs <szucs.krisztian@gmail.com>
2019-11-12 11:07:48 +01:00
GH-47306: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_build.sh (#47307) ### Rationale for this change This is the sub issue #44748. * SC1091: Not following: ./bin/activate: openBinaryFile: does not exist * SC2034: foo appears unused * SC2086: Double quote to prevent globbing and word splitting * SC2223: This default assignment may cause DoS due to globbing. Quote it. * SC2236: Use `-n` instead of `! -z` ``` shellcheck ci/scripts/python_build.sh In ci/scripts/python_build.sh line 28: : ${BUILD_DOCS_PYTHON:=OFF} ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 31: git config --global --add safe.directory ${arrow_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: git config --global --add safe.directory "${arrow_dir}" In ci/scripts/python_build.sh line 35: . "${ARROW_PYTHON_VENV}/bin/activate" ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory) In ci/scripts/python_build.sh line 53: if [ ! -z "${CONDA_PREFIX}" ]; then ^-- SC2236 (style): Use -n instead of ! -z. In ci/scripts/python_build.sh line 77: : ${CMAKE_PREFIX_PATH:=${ARROW_HOME}} ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 85: rm -rf ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}" In ci/scripts/python_build.sh line 86: cp -aL ${source_dir} ${python_build_dir} ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -aL "${source_dir}" "${python_build_dir}" In ci/scripts/python_build.sh line 87: pushd ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${python_build_dir}" In ci/scripts/python_build.sh line 101: rm -rf ${python_build_dir}/docs/source ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/docs/source In ci/scripts/python_build.sh line 102: mkdir -p ${python_build_dir}/docs ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/docs In ci/scripts/python_build.sh line 103: cp -a ${arrow_dir}/docs/source ${python_build_dir}/docs/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/docs/source "${python_build_dir}"/docs/ In ci/scripts/python_build.sh line 104: rm -rf ${python_build_dir}/format ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/format In ci/scripts/python_build.sh line 105: cp -a ${arrow_dir}/format ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/format "${python_build_dir}"/ In ci/scripts/python_build.sh line 106: rm -rf ${python_build_dir}/cpp/examples ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/cpp/examples In ci/scripts/python_build.sh line 107: mkdir -p ${python_build_dir}/cpp ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/cpp In ci/scripts/python_build.sh line 108: cp -a ${arrow_dir}/cpp/examples ${python_build_dir}/cpp/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/cpp/examples "${python_build_dir}"/cpp/ In ci/scripts/python_build.sh line 109: rm -rf ${python_build_dir}/ci ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/ci In ci/scripts/python_build.sh line 110: cp -a ${arrow_dir}/ci/ ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/ci/ "${python_build_dir}"/ In ci/scripts/python_build.sh line 111: ncpus=$(python -c "import os; print(os.cpu_count())") ^---^ SC2034 (warning): ncpus appears unused. Verify use (or export if used externally). In ci/scripts/python_build.sh line 113: pushd ${build_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${build_dir}" In ci/scripts/python_build.sh line 116: ${python_build_dir}/docs/source \ ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${python_build_dir}"/docs/source \ In ci/scripts/python_build.sh line 117: ${build_dir}/docs ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${build_dir}"/docs For more information: https://www.shellcheck.net/wiki/SC2034 -- ncpus appears unused. Verify use ... https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... ``` ### What changes are included in this PR? * SC1091: Skip file check * SC2034: remove the variable * SC2086: Quote variables * SC2223: Quote variables * SC2236: Use `-n` instead of `! -z` ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * GitHub Issue: #47306 Authored-by: Hiroyuki Sato <hiroysato@gmail.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2025-08-13 06:26:26 +09:00
: "${CMAKE_PREFIX_PATH:=${ARROW_HOME}}"
export CMAKE_PREFIX_PATH
ARROW-7101: [CI] Refactor docker-compose setup and use it with GitHub Actions ## Projecting ideas from ursabot ### Parametric docker images The images are better parameterized now, meaning that we can build more variant of the same service. Couple of examples: ```console UBUNTU=16.04 docker-compose build ubuntu-cpp ARCH=arm64v8 UBUNTU=18.04 docker-compose build ubuntu-cpp PYTHON=3.6 docker-compose build conda-python ARCH=arm32v7 PYTHON=3.6 PANDAS=0.25 docker-compose build conda-python-pandas ``` Each variant has it's own docker image following a string naming schema: `{org}/{arch}-{platform}-{platform-version}[[-{variant}-{variant-version}]..]:latest` ### Use *_build.sh and *_test.sh for each job The docker images provide the environment, and each language backend usually should implement two scripts, a `build.sh` and a `test.sh`. This way dependent build like the docker python, r or c glib are able to reuse the build script of the ancestor without running its tests. With small enough scripts, if the environment is properly set up even the non-docker builds should be reproducible locally. GitHub Actions support bash scripts across all three platforms, so we can reuse the same `*_build.sh` and `*_test.sh` scripts to execute the builds either in docker, on the CI or locally. ## Using GitHub Actions for running the builds Regardless of the CI we're going to choose, the isolation constraint of different platforms requires some sort of virtualisation. Currently linux (and windows, but I have not tried it yet) has lightweight containerisation, so we should keep the linux builds isolated in docker containers. The rest of the platforms (windows and macOS) should be executed on the CI system. GitHub Actions support all three major platforms, linux, windows and macOS. I've added cross platform builds for a couple of languages, like Rust, and Go, the rest are work in progress. ### Workflow A workflow should define all builds of a language, mostly because the path filters can be defined on workflow level. For example the python builds should be triggered if either a cpp/** or a python/** file changes which can be covered in the same workflow file. ## Feature parity with the current builds Reaching feature parity with all of the builds below is not a goal for this PR, the difficult ones should at least have a tracking JIRA ticket. ### Travis-CI - [x] **Lint, Release tests**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` - [x] **C++ unit tests w/ conda-forge toolchain, coverage**: without coverage - `C++ / AMD64 Conda C++` - [x] **Python 3.6 unit tests, conda-forge toolchain, coverage**: without coverage - `Python / AMD64 Conda Python 3.6` - [x] **[OS X] C++ w/ Xcode 9.3**: - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - [x] **[OS X] Python w/ Xcode 9.3**: - `Python / AMD64 MacOS 10.14 Python 3`: with Xcode 10.3 - [x] **Java OpenJDK8 and OpenJDK11**: - `Java / AMD64 Debian Java JDK 8 Maven 3.5.2` - `Java / AMD64 Debian Java JDK 11 Maven 3.6.2` - [x] **Protocol / Flight Integration Tests**: - `Dev / Protocol Test` - [x] **NodeJS**: without running lint and coverage - `NodeJS / AMD64 Debian NodeJS 11` - [x] **C++ & GLib & Ruby w/ gcc 5.4**: - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - `C GLib / AMD64 Ubuntu 18.04 C GLib` - `Ruby / AMD64 Ubuntu 18.04 Ruby` - [x] **[OS X] C++ & GLib & Ruby w/ XCode 10.2 & Homebrew** - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - `C GLib / AMD64 MacOS 10.14 C Glib`: with Xcode 10.3 - `Ruby / AMD64 MacOS 10.14 Ruby`: with Xcode 10.3 - [x] **Go**: without coverage - `Go / AMD64 Debian Go 1.12` - [x] **R (with and without libarrow)**: - `R / AMD64 Conda R 3.6`: with libarrow - `R / AMD64 Ubuntu 18.04 R 3.6` with libarrow ### Appveyor - ~JOB=Build, GENERATOR=Ninja, CONFIGURATION=Release, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017~ - ~JOB=Toolchain, GENERATOR=Ninja, CONFIGURATION=Release, ARROW_S3=ON, ARROW_BUILD_FLIGHT=ON, ARROW_BUILD_GANDIVA=ON~ - ~JOB=Build_Debug, GENERATOR=Ninja, CONFIGURATION=Debug~ - ~JOB=MinGW32, MINGW_ARCH=i686, MINGW_PACKAGE_PREFIX=mingw-w64-i686, MINGW_PREFIX=c:\msys64\mingw32, MSYSTEM=MINGW32, USE_CLCACHE=false~ - ~JOB=MinGW64, MINGW_ARCH=x86_64, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64, MINGW_PREFIX=c:\msys64\mingw64, MSYSTEM=MINGW64, USE_CLCACHE=false~ - [x] **JOB=Rust, TARGET=x86_64-pc-windows-msvc, USE_CLCACHE=false**: - `Rust / AMD64 Windows 2019 Rust nightly-2019-09-25` - [x] **JOB=C#, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017, USE_CLCACHE=false** - `C# / AMD64 Windows 2019 C# 2.2.103` - [x] **JOB=Go, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64 ...**: - `Go / AMD64 Windows 2019 Go 1.12` - ~JOB=R with libarrow, USE_CLCACHE=false, TEST_R_WITH_ARROW=TRUE, RWINLIB_LOCAL=%APPVEYOR_BUILD_FOLDER%\libarrow.zip~ ### Github Actions - [x] **Windows MSVC C++ / Build (Visual Studio 16 2019)**: - `C++ / AMD64 Windows 2019 C++`: without tests - [x] **Windows MSVC C++ / Build (Visual Studio 15 2017)**: - `C++ / AMD64 Windows 2016 C++`: without tests - [x] **Linux docker-compose / Test (C++ w/ clang-7 & system packages)**: all have llvm for gandiva but the compiler is set to gcc - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - [x] **Linux docker-compose / Test (Rust)**: without rustfmt - `Rust / AMD64 Debian Rust nightly-2019-09-25` - [x] **Linux docker-compose / Test (Lint, Release tests)**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` ### Nightly Crossbow tests The packaging builds are out of the scope if this PR, but the nightly **dockerized test** task are in. Nightly tests: - [x] docker-r - [x] docker-r-conda - [x] docker-r-sanitizer - [x] docker-rust - [x] docker-cpp - [x] docker-cpp-cmake32 - [x] docker-cpp-release - [x] docker-cpp-static-only - [x] docker-c_glib - [x] docker-go - [x] docker-python-2.7 - [x] docker-python-3.6 - [x] docker-python-3.7 - [x] docker-python-2.7-nopandas - [x] docker-python-3.6-nopandas - [x] docker-java - [x] docker-js - [x] docker-docs - [x] docker-lint - [x] docker-iwyu: included in the lint - [x] docker-clang-format: included in the lint - [x] docker-pandas-master - [x] docker-dask-integration - [x] docker-hdfs-integration - [x] docker-spark-integration - [x] docker-turbodbc-integration # TODOs left: - [x] Fix the Apidoc generation for c_glib - [x] Fix the JNI test for Gandiva and ORC - [x] Test that crossbow tests are passing - ~Optionally restore the travis configuration to incrementally decommission old builds~ ## Follow-up JIRAs: - [Archery] Consider porting the docker tool of ursabot to archery - [Archery] Consider to use archery with or instead of the pre-commit hooks - [Archery] Create a wrapper script in archery for docker compose in order to run the containers with the host's user and group - [C++] GCC 5.4.0 has a compile errors, reproduce with UBUNTU=16.04 docker-compose run ubuntu-cpp - [C++][CI] Test the ported fuzzit integration image - [C++][CI] Turn off unnecessary features in the integration tests (spark/turbodbc/dask/hdfs) - [C++][CI] Revisit ASAN UBSAN settings in every C++ based image - [CI] Consider re-adding the removed debian testing image is removed - [Go][CI] Pre-install the go dependencies in the dockerfile using go get - [JS][CI] Pre-install the JS dependencies in the dockerfile - [Rust][CI] Pre-install the rust dependencies in the dockerfile - [Java][CI] Pre-install the java dependencies in the dockerfile - [Ruby][CI] Pre-install the ruby dependencies in the dockerfile and remove it from the test script - [C#][CI] Pre-install the C# dependencies in the dockerfile - [R][CI] Fix the r-sanitizer build https://issues.apache.org/jira/browse/ARROW-6957 - [GLIB][MacOS] Fail to execute lua examples (fails to load 'lgi.corelgilua51' despite that lgi is installed) - [C++][CMake] Automatically set ARROW_GANDIVA_PC_CXX_FLAGS for conda and OSX sdk (see cpp_build.sh) - [C++][CI] Hiveserver2 instegration test fails to connect to impala container - [CI][Spark] Support specific Spark version in the integration tet including latest - [JS][CI] Move nodejs linting from js_build.sh to archery - [Python][CI] create a docker image for python ASV benchmarks and fix the script - [CI] Find a short but related prefix for the env vars used for the docker-compose file to prevent collisions - [C#] the docker container fails to run because of the ubuntu host versions, see https://github.com/dotnet/core/issues/3509 - [C++][Windows] Enable more features on the windows GHA build - [Doc] document docker-compose usage in the developer sphinx guide - [CI][C++] Add .ccache to the docker-compose mounts - [Archery][CI] Refactor the ci/scripts to a sourceable bash functions or to archery directly - [C++][CI] Use scripts/util_coredump.sh to show automatic backtraces - [C++] Fix the hanging C++ tests in Windows 2019 - [CI] Ask INFRA to set up the DOCKERHUB_* secrets for GitHub actions - [C++][CI] Running Gandiva tests fails on Fedora: Reproduce with: `docker-compose run -e ARROW_GANDIVA=ON fedora-cpp` ``` Running gandiva-internals-test, redirecting output into /build/cpp/build/test-logs/gandiva-internals-test.txt (attempt 1/1) 1364 : CommandLine Error: Option 'x86-experimental-vector-widening-legalization' registered more than once! 1365 LLVM ERROR: inconsistency in registered CommandLine options 1366 /build/cpp/src/gandiva ``` - [JS][CI] NodeJS build fails on Github Actions Windows node ``` > NODE_NO_WARNINGS=1 gulp build # 'NODE_NO_WARNINGS' is not recognized as an internal or external command, # operable program or batch file. # npm ERR! code ELIFECYCLE # npm ERR! errno 1 # npm ERR! apache-arrow@1.0.0-SNAPSHOT build: `NODE_NO_WARNINGS=1 gulp build` # npm ERR! Exit status 1 # npm ERR! # npm ERR! Failed at the apache-arrow@1.0.0-SNAPSHOT build script. # npm ERR! This is probably not a problem with npm. There is likely additional logging output above. ``` Closes #5589 from kszucs/docker-refactor and squashes the following commits: 5105d12e6 <Krisztián Szűcs> Rename pull-request folder to dev_cron e9e9a7eec <Krisztián Szűcs> Use underscores for naming the workflow files a92c99d03 <Krisztián Szűcs> Disable hanging C++ tests on windows f158c89b5 <Krisztián Szűcs> Attempt to push from apache/arrow master; Don't push from crossbow tasks 0e1d470a1 <Krisztián Szűcs> Turn off ORC on macOS C++ test due to link error 258db5cff <Krisztián Szűcs> Only push docker images from apache/arrow repository acdfcf086 <Krisztián Szűcs> Remove ORC from the brewfile 5102b85b1 <Krisztián Szűcs> Fix nodeJS workflow 032d6a388 <Krisztián Szűcs> Turn off 2 python builds 7f15b97a8 <Krisztián Szűcs> Filter branches 48b8d128a <Krisztián Szűcs> Fix workflows 36ad9d297 <Krisztián Szűcs> Disable builds 0f603af0c <Krisztián Szűcs> master only and cron workflows 28cc2d78d <Krisztián Szűcs> Rename Java JNI workflow bcd8af7b7 <Krisztián Szűcs> Port the remaining travis utility scripts ed5688154 <Krisztián Szűcs> Usage comments; recommend installing pandas from the docs because of its removal from conda_env_python 3c8c023ce <Krisztián Szűcs> Use Arch in volumes; some comments; remove conda version 'latest' from the images 771b023a8 <Krisztián Szűcs> Cleanup files; separate JNI builds 97ff8a122 <Krisztián Szűcs> Push docker images only from master dc00b4297 <Krisztián Szűcs> Enable path filters e0e2e1f46 <Krisztián Szűcs> Fix pandas master build 3814e0828 <Krisztián Szűcs> Fix manylinux volumes c18edda70 <Krisztián Szűcs> Add CentOS version to the manylinux image names c8b9dd6b1 <Krisztián Szűcs> Missing --pyargs argument for the python test command 33e646981 <Krisztián Szűcs> Turn off gandiva and flight for the HDFS test b9c547889 <Krisztián Szűcs> Refactor docker-compose file and use it with github actions. Authored-by: Krisztián Szűcs <szucs.krisztian@gmail.com> Signed-off-by: Krisztián Szűcs <szucs.krisztian@gmail.com>
2019-11-12 11:07:48 +01:00
export LD_LIBRARY_PATH=${ARROW_HOME}/lib:${LD_LIBRARY_PATH}
export DYLD_LIBRARY_PATH=${ARROW_HOME}/lib${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
ARROW-7101: [CI] Refactor docker-compose setup and use it with GitHub Actions ## Projecting ideas from ursabot ### Parametric docker images The images are better parameterized now, meaning that we can build more variant of the same service. Couple of examples: ```console UBUNTU=16.04 docker-compose build ubuntu-cpp ARCH=arm64v8 UBUNTU=18.04 docker-compose build ubuntu-cpp PYTHON=3.6 docker-compose build conda-python ARCH=arm32v7 PYTHON=3.6 PANDAS=0.25 docker-compose build conda-python-pandas ``` Each variant has it's own docker image following a string naming schema: `{org}/{arch}-{platform}-{platform-version}[[-{variant}-{variant-version}]..]:latest` ### Use *_build.sh and *_test.sh for each job The docker images provide the environment, and each language backend usually should implement two scripts, a `build.sh` and a `test.sh`. This way dependent build like the docker python, r or c glib are able to reuse the build script of the ancestor without running its tests. With small enough scripts, if the environment is properly set up even the non-docker builds should be reproducible locally. GitHub Actions support bash scripts across all three platforms, so we can reuse the same `*_build.sh` and `*_test.sh` scripts to execute the builds either in docker, on the CI or locally. ## Using GitHub Actions for running the builds Regardless of the CI we're going to choose, the isolation constraint of different platforms requires some sort of virtualisation. Currently linux (and windows, but I have not tried it yet) has lightweight containerisation, so we should keep the linux builds isolated in docker containers. The rest of the platforms (windows and macOS) should be executed on the CI system. GitHub Actions support all three major platforms, linux, windows and macOS. I've added cross platform builds for a couple of languages, like Rust, and Go, the rest are work in progress. ### Workflow A workflow should define all builds of a language, mostly because the path filters can be defined on workflow level. For example the python builds should be triggered if either a cpp/** or a python/** file changes which can be covered in the same workflow file. ## Feature parity with the current builds Reaching feature parity with all of the builds below is not a goal for this PR, the difficult ones should at least have a tracking JIRA ticket. ### Travis-CI - [x] **Lint, Release tests**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` - [x] **C++ unit tests w/ conda-forge toolchain, coverage**: without coverage - `C++ / AMD64 Conda C++` - [x] **Python 3.6 unit tests, conda-forge toolchain, coverage**: without coverage - `Python / AMD64 Conda Python 3.6` - [x] **[OS X] C++ w/ Xcode 9.3**: - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - [x] **[OS X] Python w/ Xcode 9.3**: - `Python / AMD64 MacOS 10.14 Python 3`: with Xcode 10.3 - [x] **Java OpenJDK8 and OpenJDK11**: - `Java / AMD64 Debian Java JDK 8 Maven 3.5.2` - `Java / AMD64 Debian Java JDK 11 Maven 3.6.2` - [x] **Protocol / Flight Integration Tests**: - `Dev / Protocol Test` - [x] **NodeJS**: without running lint and coverage - `NodeJS / AMD64 Debian NodeJS 11` - [x] **C++ & GLib & Ruby w/ gcc 5.4**: - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - `C GLib / AMD64 Ubuntu 18.04 C GLib` - `Ruby / AMD64 Ubuntu 18.04 Ruby` - [x] **[OS X] C++ & GLib & Ruby w/ XCode 10.2 & Homebrew** - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - `C GLib / AMD64 MacOS 10.14 C Glib`: with Xcode 10.3 - `Ruby / AMD64 MacOS 10.14 Ruby`: with Xcode 10.3 - [x] **Go**: without coverage - `Go / AMD64 Debian Go 1.12` - [x] **R (with and without libarrow)**: - `R / AMD64 Conda R 3.6`: with libarrow - `R / AMD64 Ubuntu 18.04 R 3.6` with libarrow ### Appveyor - ~JOB=Build, GENERATOR=Ninja, CONFIGURATION=Release, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017~ - ~JOB=Toolchain, GENERATOR=Ninja, CONFIGURATION=Release, ARROW_S3=ON, ARROW_BUILD_FLIGHT=ON, ARROW_BUILD_GANDIVA=ON~ - ~JOB=Build_Debug, GENERATOR=Ninja, CONFIGURATION=Debug~ - ~JOB=MinGW32, MINGW_ARCH=i686, MINGW_PACKAGE_PREFIX=mingw-w64-i686, MINGW_PREFIX=c:\msys64\mingw32, MSYSTEM=MINGW32, USE_CLCACHE=false~ - ~JOB=MinGW64, MINGW_ARCH=x86_64, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64, MINGW_PREFIX=c:\msys64\mingw64, MSYSTEM=MINGW64, USE_CLCACHE=false~ - [x] **JOB=Rust, TARGET=x86_64-pc-windows-msvc, USE_CLCACHE=false**: - `Rust / AMD64 Windows 2019 Rust nightly-2019-09-25` - [x] **JOB=C#, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017, USE_CLCACHE=false** - `C# / AMD64 Windows 2019 C# 2.2.103` - [x] **JOB=Go, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64 ...**: - `Go / AMD64 Windows 2019 Go 1.12` - ~JOB=R with libarrow, USE_CLCACHE=false, TEST_R_WITH_ARROW=TRUE, RWINLIB_LOCAL=%APPVEYOR_BUILD_FOLDER%\libarrow.zip~ ### Github Actions - [x] **Windows MSVC C++ / Build (Visual Studio 16 2019)**: - `C++ / AMD64 Windows 2019 C++`: without tests - [x] **Windows MSVC C++ / Build (Visual Studio 15 2017)**: - `C++ / AMD64 Windows 2016 C++`: without tests - [x] **Linux docker-compose / Test (C++ w/ clang-7 & system packages)**: all have llvm for gandiva but the compiler is set to gcc - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - [x] **Linux docker-compose / Test (Rust)**: without rustfmt - `Rust / AMD64 Debian Rust nightly-2019-09-25` - [x] **Linux docker-compose / Test (Lint, Release tests)**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` ### Nightly Crossbow tests The packaging builds are out of the scope if this PR, but the nightly **dockerized test** task are in. Nightly tests: - [x] docker-r - [x] docker-r-conda - [x] docker-r-sanitizer - [x] docker-rust - [x] docker-cpp - [x] docker-cpp-cmake32 - [x] docker-cpp-release - [x] docker-cpp-static-only - [x] docker-c_glib - [x] docker-go - [x] docker-python-2.7 - [x] docker-python-3.6 - [x] docker-python-3.7 - [x] docker-python-2.7-nopandas - [x] docker-python-3.6-nopandas - [x] docker-java - [x] docker-js - [x] docker-docs - [x] docker-lint - [x] docker-iwyu: included in the lint - [x] docker-clang-format: included in the lint - [x] docker-pandas-master - [x] docker-dask-integration - [x] docker-hdfs-integration - [x] docker-spark-integration - [x] docker-turbodbc-integration # TODOs left: - [x] Fix the Apidoc generation for c_glib - [x] Fix the JNI test for Gandiva and ORC - [x] Test that crossbow tests are passing - ~Optionally restore the travis configuration to incrementally decommission old builds~ ## Follow-up JIRAs: - [Archery] Consider porting the docker tool of ursabot to archery - [Archery] Consider to use archery with or instead of the pre-commit hooks - [Archery] Create a wrapper script in archery for docker compose in order to run the containers with the host's user and group - [C++] GCC 5.4.0 has a compile errors, reproduce with UBUNTU=16.04 docker-compose run ubuntu-cpp - [C++][CI] Test the ported fuzzit integration image - [C++][CI] Turn off unnecessary features in the integration tests (spark/turbodbc/dask/hdfs) - [C++][CI] Revisit ASAN UBSAN settings in every C++ based image - [CI] Consider re-adding the removed debian testing image is removed - [Go][CI] Pre-install the go dependencies in the dockerfile using go get - [JS][CI] Pre-install the JS dependencies in the dockerfile - [Rust][CI] Pre-install the rust dependencies in the dockerfile - [Java][CI] Pre-install the java dependencies in the dockerfile - [Ruby][CI] Pre-install the ruby dependencies in the dockerfile and remove it from the test script - [C#][CI] Pre-install the C# dependencies in the dockerfile - [R][CI] Fix the r-sanitizer build https://issues.apache.org/jira/browse/ARROW-6957 - [GLIB][MacOS] Fail to execute lua examples (fails to load 'lgi.corelgilua51' despite that lgi is installed) - [C++][CMake] Automatically set ARROW_GANDIVA_PC_CXX_FLAGS for conda and OSX sdk (see cpp_build.sh) - [C++][CI] Hiveserver2 instegration test fails to connect to impala container - [CI][Spark] Support specific Spark version in the integration tet including latest - [JS][CI] Move nodejs linting from js_build.sh to archery - [Python][CI] create a docker image for python ASV benchmarks and fix the script - [CI] Find a short but related prefix for the env vars used for the docker-compose file to prevent collisions - [C#] the docker container fails to run because of the ubuntu host versions, see https://github.com/dotnet/core/issues/3509 - [C++][Windows] Enable more features on the windows GHA build - [Doc] document docker-compose usage in the developer sphinx guide - [CI][C++] Add .ccache to the docker-compose mounts - [Archery][CI] Refactor the ci/scripts to a sourceable bash functions or to archery directly - [C++][CI] Use scripts/util_coredump.sh to show automatic backtraces - [C++] Fix the hanging C++ tests in Windows 2019 - [CI] Ask INFRA to set up the DOCKERHUB_* secrets for GitHub actions - [C++][CI] Running Gandiva tests fails on Fedora: Reproduce with: `docker-compose run -e ARROW_GANDIVA=ON fedora-cpp` ``` Running gandiva-internals-test, redirecting output into /build/cpp/build/test-logs/gandiva-internals-test.txt (attempt 1/1) 1364 : CommandLine Error: Option 'x86-experimental-vector-widening-legalization' registered more than once! 1365 LLVM ERROR: inconsistency in registered CommandLine options 1366 /build/cpp/src/gandiva ``` - [JS][CI] NodeJS build fails on Github Actions Windows node ``` > NODE_NO_WARNINGS=1 gulp build # 'NODE_NO_WARNINGS' is not recognized as an internal or external command, # operable program or batch file. # npm ERR! code ELIFECYCLE # npm ERR! errno 1 # npm ERR! apache-arrow@1.0.0-SNAPSHOT build: `NODE_NO_WARNINGS=1 gulp build` # npm ERR! Exit status 1 # npm ERR! # npm ERR! Failed at the apache-arrow@1.0.0-SNAPSHOT build script. # npm ERR! This is probably not a problem with npm. There is likely additional logging output above. ``` Closes #5589 from kszucs/docker-refactor and squashes the following commits: 5105d12e6 <Krisztián Szűcs> Rename pull-request folder to dev_cron e9e9a7eec <Krisztián Szűcs> Use underscores for naming the workflow files a92c99d03 <Krisztián Szűcs> Disable hanging C++ tests on windows f158c89b5 <Krisztián Szűcs> Attempt to push from apache/arrow master; Don't push from crossbow tasks 0e1d470a1 <Krisztián Szűcs> Turn off ORC on macOS C++ test due to link error 258db5cff <Krisztián Szűcs> Only push docker images from apache/arrow repository acdfcf086 <Krisztián Szűcs> Remove ORC from the brewfile 5102b85b1 <Krisztián Szűcs> Fix nodeJS workflow 032d6a388 <Krisztián Szűcs> Turn off 2 python builds 7f15b97a8 <Krisztián Szűcs> Filter branches 48b8d128a <Krisztián Szűcs> Fix workflows 36ad9d297 <Krisztián Szűcs> Disable builds 0f603af0c <Krisztián Szűcs> master only and cron workflows 28cc2d78d <Krisztián Szűcs> Rename Java JNI workflow bcd8af7b7 <Krisztián Szűcs> Port the remaining travis utility scripts ed5688154 <Krisztián Szűcs> Usage comments; recommend installing pandas from the docs because of its removal from conda_env_python 3c8c023ce <Krisztián Szűcs> Use Arch in volumes; some comments; remove conda version 'latest' from the images 771b023a8 <Krisztián Szűcs> Cleanup files; separate JNI builds 97ff8a122 <Krisztián Szűcs> Push docker images only from master dc00b4297 <Krisztián Szűcs> Enable path filters e0e2e1f46 <Krisztián Szűcs> Fix pandas master build 3814e0828 <Krisztián Szűcs> Fix manylinux volumes c18edda70 <Krisztián Szűcs> Add CentOS version to the manylinux image names c8b9dd6b1 <Krisztián Szűcs> Missing --pyargs argument for the python test command 33e646981 <Krisztián Szűcs> Turn off gandiva and flight for the HDFS test b9c547889 <Krisztián Szűcs> Refactor docker-compose file and use it with github actions. Authored-by: Krisztián Szűcs <szucs.krisztian@gmail.com> Signed-off-by: Krisztián Szűcs <szucs.krisztian@gmail.com>
2019-11-12 11:07:48 +01:00
# https://github.com/apache/arrow/issues/41429
# TODO: We want to out-of-source build. This is a workaround. We copy
# all needed files to the build directory from the source directory
# and build in the build directory.
GH-47306: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_build.sh (#47307) ### Rationale for this change This is the sub issue #44748. * SC1091: Not following: ./bin/activate: openBinaryFile: does not exist * SC2034: foo appears unused * SC2086: Double quote to prevent globbing and word splitting * SC2223: This default assignment may cause DoS due to globbing. Quote it. * SC2236: Use `-n` instead of `! -z` ``` shellcheck ci/scripts/python_build.sh In ci/scripts/python_build.sh line 28: : ${BUILD_DOCS_PYTHON:=OFF} ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 31: git config --global --add safe.directory ${arrow_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: git config --global --add safe.directory "${arrow_dir}" In ci/scripts/python_build.sh line 35: . "${ARROW_PYTHON_VENV}/bin/activate" ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory) In ci/scripts/python_build.sh line 53: if [ ! -z "${CONDA_PREFIX}" ]; then ^-- SC2236 (style): Use -n instead of ! -z. In ci/scripts/python_build.sh line 77: : ${CMAKE_PREFIX_PATH:=${ARROW_HOME}} ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 85: rm -rf ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}" In ci/scripts/python_build.sh line 86: cp -aL ${source_dir} ${python_build_dir} ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -aL "${source_dir}" "${python_build_dir}" In ci/scripts/python_build.sh line 87: pushd ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${python_build_dir}" In ci/scripts/python_build.sh line 101: rm -rf ${python_build_dir}/docs/source ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/docs/source In ci/scripts/python_build.sh line 102: mkdir -p ${python_build_dir}/docs ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/docs In ci/scripts/python_build.sh line 103: cp -a ${arrow_dir}/docs/source ${python_build_dir}/docs/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/docs/source "${python_build_dir}"/docs/ In ci/scripts/python_build.sh line 104: rm -rf ${python_build_dir}/format ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/format In ci/scripts/python_build.sh line 105: cp -a ${arrow_dir}/format ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/format "${python_build_dir}"/ In ci/scripts/python_build.sh line 106: rm -rf ${python_build_dir}/cpp/examples ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/cpp/examples In ci/scripts/python_build.sh line 107: mkdir -p ${python_build_dir}/cpp ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/cpp In ci/scripts/python_build.sh line 108: cp -a ${arrow_dir}/cpp/examples ${python_build_dir}/cpp/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/cpp/examples "${python_build_dir}"/cpp/ In ci/scripts/python_build.sh line 109: rm -rf ${python_build_dir}/ci ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/ci In ci/scripts/python_build.sh line 110: cp -a ${arrow_dir}/ci/ ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/ci/ "${python_build_dir}"/ In ci/scripts/python_build.sh line 111: ncpus=$(python -c "import os; print(os.cpu_count())") ^---^ SC2034 (warning): ncpus appears unused. Verify use (or export if used externally). In ci/scripts/python_build.sh line 113: pushd ${build_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${build_dir}" In ci/scripts/python_build.sh line 116: ${python_build_dir}/docs/source \ ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${python_build_dir}"/docs/source \ In ci/scripts/python_build.sh line 117: ${build_dir}/docs ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${build_dir}"/docs For more information: https://www.shellcheck.net/wiki/SC2034 -- ncpus appears unused. Verify use ... https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... ``` ### What changes are included in this PR? * SC1091: Skip file check * SC2034: remove the variable * SC2086: Quote variables * SC2223: Quote variables * SC2236: Use `-n` instead of `! -z` ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * GitHub Issue: #47306 Authored-by: Hiroyuki Sato <hiroysato@gmail.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2025-08-13 06:26:26 +09:00
rm -rf "${python_build_dir}"
cp -aL "${source_dir}" "${python_build_dir}"
pushd "${python_build_dir}"
# - Cannot use build isolation as we want to use specific dependency versions
# (e.g. Numpy, Pandas) on some CI jobs.
GH-36411: [Python] Use scikit-build-core as build backend for PyArrow and get rid of setup.py (#49259) ### Rationale for this change Move our PyArrow build backend from setuptools and a custom setup.py to scikit-build-core which is just build backend for CMake related projects. ### What changes are included in this PR? Move from setuptools to scikit-build-core and remove PyArrow setup.py. Update some of the build requirements and minor fixes. A custom build backend has been also been created in order to wrap scikit-build-core in order to fix problems on License files for monorepos. pyproject.toml metadata validation expects license files to exist before exercising the build backend that's why we create symlinks. Our thin build backend will just make those symlinks hard-links in order for license and notice files to contain the contents and be added as part of the sdist. Remove flags that are not used anymore (were only part of setup.py) and documented and validated how the same flags have to be used now. ### Are these changes tested? Yes all Python CI tests, wheels and sdist are successful. ### Are there any user-facing changes? Yes, users building PyArrow will now require the new build dependencies to exercise the build and depending on the flags used they might require to use the new documented way of using those flags. * GitHub Issue: #36411 Lead-authored-by: Raúl Cumplido <raulcumplido@gmail.com> Co-authored-by: Joris Van den Bossche <jorisvandenbossche@gmail.com> Co-authored-by: Rok Mihevc <rok@mihevc.org> Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
2026-03-09 09:47:21 +01:00
${PYTHON:-python} -m pip install --no-deps --no-build-isolation -vv -C cmake.build-type="${CMAKE_BUILD_TYPE:-Debug}" .
ARROW-7101: [CI] Refactor docker-compose setup and use it with GitHub Actions ## Projecting ideas from ursabot ### Parametric docker images The images are better parameterized now, meaning that we can build more variant of the same service. Couple of examples: ```console UBUNTU=16.04 docker-compose build ubuntu-cpp ARCH=arm64v8 UBUNTU=18.04 docker-compose build ubuntu-cpp PYTHON=3.6 docker-compose build conda-python ARCH=arm32v7 PYTHON=3.6 PANDAS=0.25 docker-compose build conda-python-pandas ``` Each variant has it's own docker image following a string naming schema: `{org}/{arch}-{platform}-{platform-version}[[-{variant}-{variant-version}]..]:latest` ### Use *_build.sh and *_test.sh for each job The docker images provide the environment, and each language backend usually should implement two scripts, a `build.sh` and a `test.sh`. This way dependent build like the docker python, r or c glib are able to reuse the build script of the ancestor without running its tests. With small enough scripts, if the environment is properly set up even the non-docker builds should be reproducible locally. GitHub Actions support bash scripts across all three platforms, so we can reuse the same `*_build.sh` and `*_test.sh` scripts to execute the builds either in docker, on the CI or locally. ## Using GitHub Actions for running the builds Regardless of the CI we're going to choose, the isolation constraint of different platforms requires some sort of virtualisation. Currently linux (and windows, but I have not tried it yet) has lightweight containerisation, so we should keep the linux builds isolated in docker containers. The rest of the platforms (windows and macOS) should be executed on the CI system. GitHub Actions support all three major platforms, linux, windows and macOS. I've added cross platform builds for a couple of languages, like Rust, and Go, the rest are work in progress. ### Workflow A workflow should define all builds of a language, mostly because the path filters can be defined on workflow level. For example the python builds should be triggered if either a cpp/** or a python/** file changes which can be covered in the same workflow file. ## Feature parity with the current builds Reaching feature parity with all of the builds below is not a goal for this PR, the difficult ones should at least have a tracking JIRA ticket. ### Travis-CI - [x] **Lint, Release tests**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` - [x] **C++ unit tests w/ conda-forge toolchain, coverage**: without coverage - `C++ / AMD64 Conda C++` - [x] **Python 3.6 unit tests, conda-forge toolchain, coverage**: without coverage - `Python / AMD64 Conda Python 3.6` - [x] **[OS X] C++ w/ Xcode 9.3**: - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - [x] **[OS X] Python w/ Xcode 9.3**: - `Python / AMD64 MacOS 10.14 Python 3`: with Xcode 10.3 - [x] **Java OpenJDK8 and OpenJDK11**: - `Java / AMD64 Debian Java JDK 8 Maven 3.5.2` - `Java / AMD64 Debian Java JDK 11 Maven 3.6.2` - [x] **Protocol / Flight Integration Tests**: - `Dev / Protocol Test` - [x] **NodeJS**: without running lint and coverage - `NodeJS / AMD64 Debian NodeJS 11` - [x] **C++ & GLib & Ruby w/ gcc 5.4**: - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - `C GLib / AMD64 Ubuntu 18.04 C GLib` - `Ruby / AMD64 Ubuntu 18.04 Ruby` - [x] **[OS X] C++ & GLib & Ruby w/ XCode 10.2 & Homebrew** - `C++ / AMD64 MacOS 10.14 C++`: with Xcode 10.3 - `C GLib / AMD64 MacOS 10.14 C Glib`: with Xcode 10.3 - `Ruby / AMD64 MacOS 10.14 Ruby`: with Xcode 10.3 - [x] **Go**: without coverage - `Go / AMD64 Debian Go 1.12` - [x] **R (with and without libarrow)**: - `R / AMD64 Conda R 3.6`: with libarrow - `R / AMD64 Ubuntu 18.04 R 3.6` with libarrow ### Appveyor - ~JOB=Build, GENERATOR=Ninja, CONFIGURATION=Release, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017~ - ~JOB=Toolchain, GENERATOR=Ninja, CONFIGURATION=Release, ARROW_S3=ON, ARROW_BUILD_FLIGHT=ON, ARROW_BUILD_GANDIVA=ON~ - ~JOB=Build_Debug, GENERATOR=Ninja, CONFIGURATION=Debug~ - ~JOB=MinGW32, MINGW_ARCH=i686, MINGW_PACKAGE_PREFIX=mingw-w64-i686, MINGW_PREFIX=c:\msys64\mingw32, MSYSTEM=MINGW32, USE_CLCACHE=false~ - ~JOB=MinGW64, MINGW_ARCH=x86_64, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64, MINGW_PREFIX=c:\msys64\mingw64, MSYSTEM=MINGW64, USE_CLCACHE=false~ - [x] **JOB=Rust, TARGET=x86_64-pc-windows-msvc, USE_CLCACHE=false**: - `Rust / AMD64 Windows 2019 Rust nightly-2019-09-25` - [x] **JOB=C#, APPVEYOR_BUILD_WORKER_IMAGE=Visual Studio 2017, USE_CLCACHE=false** - `C# / AMD64 Windows 2019 C# 2.2.103` - [x] **JOB=Go, MINGW_PACKAGE_PREFIX=mingw-w64-x86_64 ...**: - `Go / AMD64 Windows 2019 Go 1.12` - ~JOB=R with libarrow, USE_CLCACHE=false, TEST_R_WITH_ARROW=TRUE, RWINLIB_LOCAL=%APPVEYOR_BUILD_FOLDER%\libarrow.zip~ ### Github Actions - [x] **Windows MSVC C++ / Build (Visual Studio 16 2019)**: - `C++ / AMD64 Windows 2019 C++`: without tests - [x] **Windows MSVC C++ / Build (Visual Studio 15 2017)**: - `C++ / AMD64 Windows 2016 C++`: without tests - [x] **Linux docker-compose / Test (C++ w/ clang-7 & system packages)**: all have llvm for gandiva but the compiler is set to gcc - `C++ / AMD64 Debian 10 C++`: with GCC 8.3 - `C++ / AMD64 Ubuntu 16.04 C++`: with GCC 5.4 - `C++ / AMD64 Ubuntu 18.04 C++`: with GCC 7.4 - [x] **Linux docker-compose / Test (Rust)**: without rustfmt - `Rust / AMD64 Debian Rust nightly-2019-09-25` - [x] **Linux docker-compose / Test (Lint, Release tests)**: - `Lint / C++, Python, R, Rust, Docker, RAT` - `Dev / Source Release` ### Nightly Crossbow tests The packaging builds are out of the scope if this PR, but the nightly **dockerized test** task are in. Nightly tests: - [x] docker-r - [x] docker-r-conda - [x] docker-r-sanitizer - [x] docker-rust - [x] docker-cpp - [x] docker-cpp-cmake32 - [x] docker-cpp-release - [x] docker-cpp-static-only - [x] docker-c_glib - [x] docker-go - [x] docker-python-2.7 - [x] docker-python-3.6 - [x] docker-python-3.7 - [x] docker-python-2.7-nopandas - [x] docker-python-3.6-nopandas - [x] docker-java - [x] docker-js - [x] docker-docs - [x] docker-lint - [x] docker-iwyu: included in the lint - [x] docker-clang-format: included in the lint - [x] docker-pandas-master - [x] docker-dask-integration - [x] docker-hdfs-integration - [x] docker-spark-integration - [x] docker-turbodbc-integration # TODOs left: - [x] Fix the Apidoc generation for c_glib - [x] Fix the JNI test for Gandiva and ORC - [x] Test that crossbow tests are passing - ~Optionally restore the travis configuration to incrementally decommission old builds~ ## Follow-up JIRAs: - [Archery] Consider porting the docker tool of ursabot to archery - [Archery] Consider to use archery with or instead of the pre-commit hooks - [Archery] Create a wrapper script in archery for docker compose in order to run the containers with the host's user and group - [C++] GCC 5.4.0 has a compile errors, reproduce with UBUNTU=16.04 docker-compose run ubuntu-cpp - [C++][CI] Test the ported fuzzit integration image - [C++][CI] Turn off unnecessary features in the integration tests (spark/turbodbc/dask/hdfs) - [C++][CI] Revisit ASAN UBSAN settings in every C++ based image - [CI] Consider re-adding the removed debian testing image is removed - [Go][CI] Pre-install the go dependencies in the dockerfile using go get - [JS][CI] Pre-install the JS dependencies in the dockerfile - [Rust][CI] Pre-install the rust dependencies in the dockerfile - [Java][CI] Pre-install the java dependencies in the dockerfile - [Ruby][CI] Pre-install the ruby dependencies in the dockerfile and remove it from the test script - [C#][CI] Pre-install the C# dependencies in the dockerfile - [R][CI] Fix the r-sanitizer build https://issues.apache.org/jira/browse/ARROW-6957 - [GLIB][MacOS] Fail to execute lua examples (fails to load 'lgi.corelgilua51' despite that lgi is installed) - [C++][CMake] Automatically set ARROW_GANDIVA_PC_CXX_FLAGS for conda and OSX sdk (see cpp_build.sh) - [C++][CI] Hiveserver2 instegration test fails to connect to impala container - [CI][Spark] Support specific Spark version in the integration tet including latest - [JS][CI] Move nodejs linting from js_build.sh to archery - [Python][CI] create a docker image for python ASV benchmarks and fix the script - [CI] Find a short but related prefix for the env vars used for the docker-compose file to prevent collisions - [C#] the docker container fails to run because of the ubuntu host versions, see https://github.com/dotnet/core/issues/3509 - [C++][Windows] Enable more features on the windows GHA build - [Doc] document docker-compose usage in the developer sphinx guide - [CI][C++] Add .ccache to the docker-compose mounts - [Archery][CI] Refactor the ci/scripts to a sourceable bash functions or to archery directly - [C++][CI] Use scripts/util_coredump.sh to show automatic backtraces - [C++] Fix the hanging C++ tests in Windows 2019 - [CI] Ask INFRA to set up the DOCKERHUB_* secrets for GitHub actions - [C++][CI] Running Gandiva tests fails on Fedora: Reproduce with: `docker-compose run -e ARROW_GANDIVA=ON fedora-cpp` ``` Running gandiva-internals-test, redirecting output into /build/cpp/build/test-logs/gandiva-internals-test.txt (attempt 1/1) 1364 : CommandLine Error: Option 'x86-experimental-vector-widening-legalization' registered more than once! 1365 LLVM ERROR: inconsistency in registered CommandLine options 1366 /build/cpp/src/gandiva ``` - [JS][CI] NodeJS build fails on Github Actions Windows node ``` > NODE_NO_WARNINGS=1 gulp build # 'NODE_NO_WARNINGS' is not recognized as an internal or external command, # operable program or batch file. # npm ERR! code ELIFECYCLE # npm ERR! errno 1 # npm ERR! apache-arrow@1.0.0-SNAPSHOT build: `NODE_NO_WARNINGS=1 gulp build` # npm ERR! Exit status 1 # npm ERR! # npm ERR! Failed at the apache-arrow@1.0.0-SNAPSHOT build script. # npm ERR! This is probably not a problem with npm. There is likely additional logging output above. ``` Closes #5589 from kszucs/docker-refactor and squashes the following commits: 5105d12e6 <Krisztián Szűcs> Rename pull-request folder to dev_cron e9e9a7eec <Krisztián Szűcs> Use underscores for naming the workflow files a92c99d03 <Krisztián Szűcs> Disable hanging C++ tests on windows f158c89b5 <Krisztián Szűcs> Attempt to push from apache/arrow master; Don't push from crossbow tasks 0e1d470a1 <Krisztián Szűcs> Turn off ORC on macOS C++ test due to link error 258db5cff <Krisztián Szűcs> Only push docker images from apache/arrow repository acdfcf086 <Krisztián Szűcs> Remove ORC from the brewfile 5102b85b1 <Krisztián Szűcs> Fix nodeJS workflow 032d6a388 <Krisztián Szűcs> Turn off 2 python builds 7f15b97a8 <Krisztián Szűcs> Filter branches 48b8d128a <Krisztián Szűcs> Fix workflows 36ad9d297 <Krisztián Szűcs> Disable builds 0f603af0c <Krisztián Szűcs> master only and cron workflows 28cc2d78d <Krisztián Szűcs> Rename Java JNI workflow bcd8af7b7 <Krisztián Szűcs> Port the remaining travis utility scripts ed5688154 <Krisztián Szűcs> Usage comments; recommend installing pandas from the docs because of its removal from conda_env_python 3c8c023ce <Krisztián Szűcs> Use Arch in volumes; some comments; remove conda version 'latest' from the images 771b023a8 <Krisztián Szűcs> Cleanup files; separate JNI builds 97ff8a122 <Krisztián Szűcs> Push docker images only from master dc00b4297 <Krisztián Szűcs> Enable path filters e0e2e1f46 <Krisztián Szűcs> Fix pandas master build 3814e0828 <Krisztián Szűcs> Fix manylinux volumes c18edda70 <Krisztián Szűcs> Add CentOS version to the manylinux image names c8b9dd6b1 <Krisztián Szűcs> Missing --pyargs argument for the python test command 33e646981 <Krisztián Szűcs> Turn off gandiva and flight for the HDFS test b9c547889 <Krisztián Szűcs> Refactor docker-compose file and use it with github actions. Authored-by: Krisztián Szűcs <szucs.krisztian@gmail.com> Signed-off-by: Krisztián Szűcs <szucs.krisztian@gmail.com>
2019-11-12 11:07:48 +01:00
popd
if [ "${BUILD_DOCS_PYTHON}" == "ON" ]; then
# https://github.com/apache/arrow/issues/41429
# TODO: We want to out-of-source build. This is a workaround.
#
# Copy docs/source because the "autosummary_generate = True"
# configuration generates files to docs/source/python/generated/.
GH-47306: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_build.sh (#47307) ### Rationale for this change This is the sub issue #44748. * SC1091: Not following: ./bin/activate: openBinaryFile: does not exist * SC2034: foo appears unused * SC2086: Double quote to prevent globbing and word splitting * SC2223: This default assignment may cause DoS due to globbing. Quote it. * SC2236: Use `-n` instead of `! -z` ``` shellcheck ci/scripts/python_build.sh In ci/scripts/python_build.sh line 28: : ${BUILD_DOCS_PYTHON:=OFF} ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 31: git config --global --add safe.directory ${arrow_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: git config --global --add safe.directory "${arrow_dir}" In ci/scripts/python_build.sh line 35: . "${ARROW_PYTHON_VENV}/bin/activate" ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory) In ci/scripts/python_build.sh line 53: if [ ! -z "${CONDA_PREFIX}" ]; then ^-- SC2236 (style): Use -n instead of ! -z. In ci/scripts/python_build.sh line 77: : ${CMAKE_PREFIX_PATH:=${ARROW_HOME}} ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 85: rm -rf ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}" In ci/scripts/python_build.sh line 86: cp -aL ${source_dir} ${python_build_dir} ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -aL "${source_dir}" "${python_build_dir}" In ci/scripts/python_build.sh line 87: pushd ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${python_build_dir}" In ci/scripts/python_build.sh line 101: rm -rf ${python_build_dir}/docs/source ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/docs/source In ci/scripts/python_build.sh line 102: mkdir -p ${python_build_dir}/docs ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/docs In ci/scripts/python_build.sh line 103: cp -a ${arrow_dir}/docs/source ${python_build_dir}/docs/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/docs/source "${python_build_dir}"/docs/ In ci/scripts/python_build.sh line 104: rm -rf ${python_build_dir}/format ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/format In ci/scripts/python_build.sh line 105: cp -a ${arrow_dir}/format ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/format "${python_build_dir}"/ In ci/scripts/python_build.sh line 106: rm -rf ${python_build_dir}/cpp/examples ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/cpp/examples In ci/scripts/python_build.sh line 107: mkdir -p ${python_build_dir}/cpp ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/cpp In ci/scripts/python_build.sh line 108: cp -a ${arrow_dir}/cpp/examples ${python_build_dir}/cpp/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/cpp/examples "${python_build_dir}"/cpp/ In ci/scripts/python_build.sh line 109: rm -rf ${python_build_dir}/ci ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/ci In ci/scripts/python_build.sh line 110: cp -a ${arrow_dir}/ci/ ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/ci/ "${python_build_dir}"/ In ci/scripts/python_build.sh line 111: ncpus=$(python -c "import os; print(os.cpu_count())") ^---^ SC2034 (warning): ncpus appears unused. Verify use (or export if used externally). In ci/scripts/python_build.sh line 113: pushd ${build_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${build_dir}" In ci/scripts/python_build.sh line 116: ${python_build_dir}/docs/source \ ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${python_build_dir}"/docs/source \ In ci/scripts/python_build.sh line 117: ${build_dir}/docs ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${build_dir}"/docs For more information: https://www.shellcheck.net/wiki/SC2034 -- ncpus appears unused. Verify use ... https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... ``` ### What changes are included in this PR? * SC1091: Skip file check * SC2034: remove the variable * SC2086: Quote variables * SC2223: Quote variables * SC2236: Use `-n` instead of `! -z` ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * GitHub Issue: #47306 Authored-by: Hiroyuki Sato <hiroysato@gmail.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2025-08-13 06:26:26 +09:00
rm -rf "${python_build_dir}/docs/source"
mkdir -p "${python_build_dir}/docs"
cp -a "${arrow_dir}/docs/source" "${python_build_dir}/docs/"
rm -rf "${python_build_dir}/format"
cp -a "${arrow_dir}/format" "${python_build_dir}/"
rm -rf "${python_build_dir}/cpp/examples"
mkdir -p "${python_build_dir}/cpp"
cp -a "${arrow_dir}/cpp/examples" "${python_build_dir}/cpp/"
rm -rf "${python_build_dir}/ci"
cp -a "${arrow_dir}/ci/" "${python_build_dir}/"
export ARROW_CPP_DOXYGEN_XML=${build_dir}/cpp/apidoc/xml
GH-47306: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_build.sh (#47307) ### Rationale for this change This is the sub issue #44748. * SC1091: Not following: ./bin/activate: openBinaryFile: does not exist * SC2034: foo appears unused * SC2086: Double quote to prevent globbing and word splitting * SC2223: This default assignment may cause DoS due to globbing. Quote it. * SC2236: Use `-n` instead of `! -z` ``` shellcheck ci/scripts/python_build.sh In ci/scripts/python_build.sh line 28: : ${BUILD_DOCS_PYTHON:=OFF} ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 31: git config --global --add safe.directory ${arrow_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: git config --global --add safe.directory "${arrow_dir}" In ci/scripts/python_build.sh line 35: . "${ARROW_PYTHON_VENV}/bin/activate" ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory) In ci/scripts/python_build.sh line 53: if [ ! -z "${CONDA_PREFIX}" ]; then ^-- SC2236 (style): Use -n instead of ! -z. In ci/scripts/python_build.sh line 77: : ${CMAKE_PREFIX_PATH:=${ARROW_HOME}} ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 85: rm -rf ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}" In ci/scripts/python_build.sh line 86: cp -aL ${source_dir} ${python_build_dir} ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -aL "${source_dir}" "${python_build_dir}" In ci/scripts/python_build.sh line 87: pushd ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${python_build_dir}" In ci/scripts/python_build.sh line 101: rm -rf ${python_build_dir}/docs/source ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/docs/source In ci/scripts/python_build.sh line 102: mkdir -p ${python_build_dir}/docs ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/docs In ci/scripts/python_build.sh line 103: cp -a ${arrow_dir}/docs/source ${python_build_dir}/docs/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/docs/source "${python_build_dir}"/docs/ In ci/scripts/python_build.sh line 104: rm -rf ${python_build_dir}/format ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/format In ci/scripts/python_build.sh line 105: cp -a ${arrow_dir}/format ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/format "${python_build_dir}"/ In ci/scripts/python_build.sh line 106: rm -rf ${python_build_dir}/cpp/examples ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/cpp/examples In ci/scripts/python_build.sh line 107: mkdir -p ${python_build_dir}/cpp ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/cpp In ci/scripts/python_build.sh line 108: cp -a ${arrow_dir}/cpp/examples ${python_build_dir}/cpp/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/cpp/examples "${python_build_dir}"/cpp/ In ci/scripts/python_build.sh line 109: rm -rf ${python_build_dir}/ci ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/ci In ci/scripts/python_build.sh line 110: cp -a ${arrow_dir}/ci/ ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/ci/ "${python_build_dir}"/ In ci/scripts/python_build.sh line 111: ncpus=$(python -c "import os; print(os.cpu_count())") ^---^ SC2034 (warning): ncpus appears unused. Verify use (or export if used externally). In ci/scripts/python_build.sh line 113: pushd ${build_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${build_dir}" In ci/scripts/python_build.sh line 116: ${python_build_dir}/docs/source \ ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${python_build_dir}"/docs/source \ In ci/scripts/python_build.sh line 117: ${build_dir}/docs ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${build_dir}"/docs For more information: https://www.shellcheck.net/wiki/SC2034 -- ncpus appears unused. Verify use ... https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... ``` ### What changes are included in this PR? * SC1091: Skip file check * SC2034: remove the variable * SC2086: Quote variables * SC2223: Quote variables * SC2236: Use `-n` instead of `! -z` ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * GitHub Issue: #47306 Authored-by: Hiroyuki Sato <hiroysato@gmail.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2025-08-13 06:26:26 +09:00
pushd "${build_dir}"
sphinx-build \
-j auto \
-b html \
GH-47306: [CI][Dev] Fix shellcheck errors in the ci/scripts/python_build.sh (#47307) ### Rationale for this change This is the sub issue #44748. * SC1091: Not following: ./bin/activate: openBinaryFile: does not exist * SC2034: foo appears unused * SC2086: Double quote to prevent globbing and word splitting * SC2223: This default assignment may cause DoS due to globbing. Quote it. * SC2236: Use `-n` instead of `! -z` ``` shellcheck ci/scripts/python_build.sh In ci/scripts/python_build.sh line 28: : ${BUILD_DOCS_PYTHON:=OFF} ^-----------------------^ SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 31: git config --global --add safe.directory ${arrow_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: git config --global --add safe.directory "${arrow_dir}" In ci/scripts/python_build.sh line 35: . "${ARROW_PYTHON_VENV}/bin/activate" ^-- SC1091 (info): Not following: ./bin/activate: openBinaryFile: does not exist (No such file or directory) In ci/scripts/python_build.sh line 53: if [ ! -z "${CONDA_PREFIX}" ]; then ^-- SC2236 (style): Use -n instead of ! -z. In ci/scripts/python_build.sh line 77: : ${CMAKE_PREFIX_PATH:=${ARROW_HOME}} ^-- SC2223 (info): This default assignment may cause DoS due to globbing. Quote it. In ci/scripts/python_build.sh line 85: rm -rf ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}" In ci/scripts/python_build.sh line 86: cp -aL ${source_dir} ${python_build_dir} ^-----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -aL "${source_dir}" "${python_build_dir}" In ci/scripts/python_build.sh line 87: pushd ${python_build_dir} ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${python_build_dir}" In ci/scripts/python_build.sh line 101: rm -rf ${python_build_dir}/docs/source ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/docs/source In ci/scripts/python_build.sh line 102: mkdir -p ${python_build_dir}/docs ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/docs In ci/scripts/python_build.sh line 103: cp -a ${arrow_dir}/docs/source ${python_build_dir}/docs/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/docs/source "${python_build_dir}"/docs/ In ci/scripts/python_build.sh line 104: rm -rf ${python_build_dir}/format ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/format In ci/scripts/python_build.sh line 105: cp -a ${arrow_dir}/format ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/format "${python_build_dir}"/ In ci/scripts/python_build.sh line 106: rm -rf ${python_build_dir}/cpp/examples ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/cpp/examples In ci/scripts/python_build.sh line 107: mkdir -p ${python_build_dir}/cpp ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: mkdir -p "${python_build_dir}"/cpp In ci/scripts/python_build.sh line 108: cp -a ${arrow_dir}/cpp/examples ${python_build_dir}/cpp/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/cpp/examples "${python_build_dir}"/cpp/ In ci/scripts/python_build.sh line 109: rm -rf ${python_build_dir}/ci ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: rm -rf "${python_build_dir}"/ci In ci/scripts/python_build.sh line 110: cp -a ${arrow_dir}/ci/ ${python_build_dir}/ ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: cp -a "${arrow_dir}"/ci/ "${python_build_dir}"/ In ci/scripts/python_build.sh line 111: ncpus=$(python -c "import os; print(os.cpu_count())") ^---^ SC2034 (warning): ncpus appears unused. Verify use (or export if used externally). In ci/scripts/python_build.sh line 113: pushd ${build_dir} ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: pushd "${build_dir}" In ci/scripts/python_build.sh line 116: ${python_build_dir}/docs/source \ ^-----------------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${python_build_dir}"/docs/source \ In ci/scripts/python_build.sh line 117: ${build_dir}/docs ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "${build_dir}"/docs For more information: https://www.shellcheck.net/wiki/SC2034 -- ncpus appears unused. Verify use ... https://www.shellcheck.net/wiki/SC1091 -- Not following: ./bin/activate: op... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... ``` ### What changes are included in this PR? * SC1091: Skip file check * SC2034: remove the variable * SC2086: Quote variables * SC2223: Quote variables * SC2236: Use `-n` instead of `! -z` ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * GitHub Issue: #47306 Authored-by: Hiroyuki Sato <hiroysato@gmail.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
2025-08-13 06:26:26 +09:00
"${python_build_dir}/docs/source" \
"${build_dir}/docs"
popd
fi