Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
9daafb3
Use docker and vcpkgs for building both manylinux and windows wheels
kszucs Jan 4, 2021
b803620
Removed disabled archery docker test case
kszucs Jan 4, 2021
b585268
Bump CMake version to 3.19.2 in the manylinux dockerfile
kszucs Jan 4, 2021
749f7a1
Don't requre filly qualified python version for windows images
kszucs Jan 4, 2021
1972363
Integrating with Crossbow
kszucs Jan 5, 2021
258f80e
Remove manylinux scripts and start to integrate windows builds
kszucs Jan 5, 2021
081638e
Remove remaining occurencies of old manylinux configurations from doc…
kszucs Jan 5, 2021
d60446f
Add an archery command to build images
kszucs Jan 6, 2021
e4c0025
Use github container registry instead of ECR
kszucs Jan 6, 2021
f7c44a4
Fix ghcr login
kszucs Jan 6, 2021
a8fabfc
Remove -it flags from docker run
kszucs Jan 6, 2021
bc17d77
Fix docker command for the windows containers
kszucs Jan 6, 2021
b509592
Don't attempt to pull windows testing image
kszucs Jan 6, 2021
ef7932d
Add custum vcpkg triplets
kszucs Jan 7, 2021
878eb9c
Pass --shm-size parameter to the docker container in order to make th…
kszucs Jan 7, 2021
0a9759d
Parse shm_size from docker-compose.yml
kszucs Jan 7, 2021
fb50cf7
Bundle mvscp140.dll runtime
kszucs Jan 7, 2021
728cd7c
Add windows 3.8 build; remove old windows script
kszucs Jan 7, 2021
38fbcaa
Fix artifact search path for uploading from windows
kszucs Jan 7, 2021
5ec4d18
Fix python 3.9 installation in the windows image
kszucs Jan 8, 2021
09529c1
Remove disabled code for bundling zlib and openssl
kszucs Jan 8, 2021
c095c77
Address review comments
kszucs Jan 11, 2021
a7e5a1c
Fix archery test cases
kszucs Jan 11, 2021
8fc0649
Fix linting issues for archery
kszucs Jan 11, 2021
359f48b
Use ursacomputing/crossbow instead of ursa-labs/crossbow
kszucs Jan 11, 2021
8ab77c0
Fix RAT
kszucs Jan 11, 2021
62181df
Export DOCKER_VOLUME_PREFIX in the github actions workflows to keep t…
kszucs Jan 11, 2021
a46653f
Fix typo in build script
kszucs Jan 11, 2021
f85a45d
Switch grpc protobuf package type condition
kszucs Jan 12, 2021
494b91c
Explicitly set protobuf package type in the osx wheel builds
kszucs Jan 12, 2021
7d9907e
gemfury upload
kszucs Jan 12, 2021
ee43d22
Trigger CI builds
kszucs Jan 12, 2021
0ccb69b
Remove outdated cron jobs
kszucs Jan 12, 2021
b6a0358
Unskip s3 tests
kszucs Jan 13, 2021
2f0900b
Enable mimalloc on linux and macos
kszucs Jan 13, 2021
bf0c47c
Enable unity on manylinux
kszucs Jan 13, 2021
82c88ef
Update vcpkg pin to include 1.1.1i
kszucs Jan 13, 2021
2244d83
Add Snappy patch for ARROW-7939
pitrou Jan 13, 2021
7b5033d
Patch snappy on windows as well
kszucs Jan 13, 2021
e7cf120
Fix curl ssl issue
kszucs Jan 14, 2021
9609ef6
Implicitly handle grpc protobuf package type
kszucs Jan 14, 2021
b85ac17
Add vcpkg patch to rat exclusion list
kszucs Jan 14, 2021
07c7aa8
Fix artifact patterns
kszucs Jan 14, 2021
19b91a1
Remove an unused file
kou Jan 14, 2021
8e4cbf2
Remove unused volume
kou Jan 14, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,15 @@
# All of the following environment variables are required to set default values
# for the parameters in docker-compose.yml.

# empty prefix means that the docker-compose configuration will use named
# volumes which potentially improves the performance on docker for macos and
# docker for windows, it also prevents the contamination of the source
# directory
# a non-empty prefix means that directories from the host are bind-mounted
# into the container, it should be set to ".docker/" on github actions to keep
# the cache plugin functional
DOCKER_VOLUME_PREFIX=""

ULIMIT_CORE=-1
REPO=apache/arrow-dev
ARCH=amd64
Expand Down Expand Up @@ -49,3 +58,6 @@ R_IMAGE=ubuntu-gcc-release
R_TAG=latest
# -1 does not attempt to install a devtoolset version, any positive integer will install devtoolset-n
DEVTOOLSET_VERSION=-1

# Used for the manylinux and windows wheels
VCPKG=c7e96f2a5b73b3278b004aa88abec2f8ebfb43b5
1 change: 1 addition & 0 deletions .github/workflows/cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ on:

env:
DOCKER_BUILDKIT: 0
DOCKER_VOLUME_PREFIX: ".docker/"
COMPOSE_DOCKER_CLI_BUILD: 1
ARROW_ENABLE_TIMING_TESTS: OFF
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/cpp_cron.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ on:

env:
DOCKER_BUILDKIT: 0
DOCKER_VOLUME_PREFIX: ".docker/"
COMPOSE_DOCKER_CLI_BUILD: 1
ARROW_ENABLE_TIMING_TESTS: OFF
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ on:

env:
DOCKER_BUILDKIT: 0
DOCKER_VOLUME_PREFIX: ".docker/"
COMPOSE_DOCKER_CLI_BUILD: 1
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/java.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ on:

env:
DOCKER_BUILDKIT: 0
DOCKER_VOLUME_PREFIX: ".docker/"
COMPOSE_DOCKER_CLI_BUILD: 1
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/java_jni.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ on:

env:
DOCKER_BUILDKIT: 0
DOCKER_VOLUME_PREFIX: ".docker/"
COMPOSE_DOCKER_CLI_BUILD: 1
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down
6 changes: 1 addition & 5 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ on:

env:
DOCKER_BUILDKIT: 0
DOCKER_VOLUME_PREFIX: ".docker/"
COMPOSE_DOCKER_CLI_BUILD: 1
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
Expand All @@ -50,7 +51,6 @@ jobs:
- conda-python-3.8-nopandas
- conda-python-3.6-pandas-0.23
- conda-python-3.7-pandas-latest
- centos-python-3.6-manylinux1
include:
- name: conda-python-3.8-nopandas
cache: conda-python-3.8
Expand All @@ -69,10 +69,6 @@ jobs:
title: AMD64 Conda Python 3.7 Pandas latest
python: 3.7
pandas: latest
- name: centos-python-3.6-manylinux1
cache: manylinux1
image: centos-python-manylinux1
title: AMD64 CentOS 5.11 Python 3.6 manylinux1
env:
PYTHON: ${{ matrix.python || 3.7 }}
UBUNTU: ${{ matrix.ubuntu || 18.04 }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/python_cron.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ on:

env:
DOCKER_BUILDKIT: 0
DOCKER_VOLUME_PREFIX: ".docker/"
COMPOSE_DOCKER_CLI_BUILD: 1
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/r.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ on:

env:
DOCKER_BUILDKIT: 0
DOCKER_VOLUME_PREFIX: ".docker/"
COMPOSE_DOCKER_CLI_BUILD: 1
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ruby.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ on:

env:
DOCKER_BUILDKIT: 0
DOCKER_VOLUME_PREFIX: ".docker/"
COMPOSE_DOCKER_CLI_BUILD: 1
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down
103 changes: 103 additions & 0 deletions ci/docker/python-wheel-manylinux-201x.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# 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.

ARG base
FROM ${base}

RUN yum install -y git flex curl autoconf zip wget

# Install CMake
ARG cmake=3.19.2
RUN wget -q https://github.com/Kitware/CMake/releases/download/v${cmake}/cmake-${cmake}-Linux-x86_64.tar.gz -O - | \
tar -xzf - --directory /usr/local --strip-components=1

# Install Ninja
ARG ninja=1.10.2
RUN mkdir /tmp/ninja && \
wget -q https://github.com/ninja-build/ninja/archive/v${ninja}.tar.gz -O - | \
tar -xzf - --directory /tmp/ninja --strip-components=1 && \
cd /tmp/ninja && \
./configure.py --bootstrap && \
mv ninja /usr/local/bin && \
rm -rf /tmp/ninja

# Install ccache
ARG ccache=4.1
RUN mkdir /tmp/ccache && \
wget -q https://github.com/ccache/ccache/archive/v${ccache}.tar.gz -O - | \
tar -xzf - --directory /tmp/ccache --strip-components=1 && \
cd /tmp/ccache && \
mkdir build && \
cd build && \
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DZSTD_FROM_INTERNET=ON .. && \
ninja install && \
rm -rf /tmp/ccache

# Install vcpkg
ARG vcpkg
RUN git clone https://github.com/microsoft/vcpkg /opt/vcpkg && \
git -C /opt/vcpkg checkout ${vcpkg} && \
/opt/vcpkg/bootstrap-vcpkg.sh --useSystemBinaries --disableMetrics && \
ln -s /opt/vcpkg/vcpkg /usr/bin/vcpkg

# Patch ports files as needed
COPY ci/vcpkg arrow/ci/vcpkg
RUN cd /opt/vcpkg && patch -p1 -i /arrow/ci/vcpkg/ports.patch

ARG build_type=release
ENV CMAKE_BUILD_TYPE=${build_type} \
VCPKG_FORCE_SYSTEM_BINARIES=1 \
VCPKG_OVERLAY_TRIPLETS=/arrow/ci/vcpkg \
VCPKG_DEFAULT_TRIPLET=x64-linux-static-${build_type}

# TODO(kszucs): factor out the package enumeration to a text file and reuse it
# from the windows image and potentially in a future macos wheel build
RUN vcpkg install --clean-after-build \
abseil \
aws-sdk-cpp[config,cognito-identity,core,identity-management,s3,sts,transfer] \
boost-filesystem \
boost-regex \
brotli \
bzip2 \
c-ares \
curl \
flatbuffers \
gflags \
glog \
grpc \
lz4 \
openssl \
orc \
protobuf \
rapidjson \
re2 \
snappy \
thrift \
utf8proc \
zlib \
zstd

ARG python=3.6
ENV PYTHON_VERSION=${python}
RUN PYTHON_ROOT=$(find /opt/python -name cp${PYTHON_VERSION/./}-*) && \
echo "export PATH=$PYTHON_ROOT/bin:\$PATH" >> /etc/profile.d/python.sh

SHELL ["/bin/bash", "-i", "-c"]
ENTRYPOINT ["/bin/bash", "-i", "-c"]

COPY python/requirements-wheel-build.txt /arrow/python/
RUN pip install -r /arrow/python/requirements-wheel-build.txt
99 changes: 99 additions & 0 deletions ci/docker/python-wheel-windows-vs2017.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# 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.

# based on mcr.microsoft.com/windows/servercore:ltsc2019
# contains choco and vs2017 preinstalled
FROM abrarov/msvc-2017:2.10.0

# Install CMake and Ninja
RUN choco install --no-progress -r -y cmake --installargs 'ADD_CMAKE_TO_PATH=System' && \
choco install --no-progress -r -y gzip wget ninja

# Add unix tools to path
RUN setx path "%path%;C:\Program Files\Git\usr\bin"

# Install vcpkg
ARG vcpkg
RUN git clone https://github.com/Microsoft/vcpkg && \
git -C vcpkg checkout %vcpkg% && \
vcpkg\bootstrap-vcpkg.bat -disableMetrics -win64 && \
setx PATH "%PATH%;C:\vcpkg"

# Patch ports files as needed
COPY ci/vcpkg arrow/ci/vcpkg
RUN cd vcpkg && patch -p1 -i C:/arrow/ci/vcpkg/ports.patch

# Configure vcpkg and install dependencies
# NOTE: use windows batch environment notation for build arguments in RUN
# statements but bash notation in ENV statements
# VCPKG_FORCE_SYSTEM_BINARIES=1 spare around ~750MB of image size if the system
# cmake's and ninja's versions are recent enough
COPY ci/vcpkg arrow/ci/vcpkg
ARG build_type=release
ENV CMAKE_BUILD_TYPE=${build_type} \
VCPKG_OVERLAY_TRIPLETS=C:\\arrow\\ci\\vcpkg \
VCPKG_DEFAULT_TRIPLET=x64-windows-static-md-${build_type}
RUN vcpkg install --clean-after-build \
abseil \
aws-sdk-cpp[config,cognito-identity,core,identity-management,s3,sts,transfer] \
boost-filesystem \
boost-multiprecision \
boost-regex \
boost-system \
brotli \
bzip2 \
c-ares \
curl \
flatbuffers \
gflags \
glog \
grpc \
lz4 \
openssl \
orc \
protobuf \
rapidjson \
re2 \
snappy \
thrift \
utf8proc \
zlib \
zstd

# Remove previous installations of python from the base image
RUN wmic product where "name like 'python%%'" call uninstall /nointeractive && \
rm -rf Python*

# Define the full version number otherwise choco falls back to patch number 0 (3.7 => 3.7.0)
ARG python=3.6
RUN (if "%python%"=="3.6" setx PYTHON_VERSION 3.6.8) & \
(if "%python%"=="3.7" setx PYTHON_VERSION 3.7.4) & \
(if "%python%"=="3.8" setx PYTHON_VERSION 3.8.6) & \
(if "%python%"=="3.9" setx PYTHON_VERSION 3.9.1)
RUN choco install -r -y --no-progress python --version=%PYTHON_VERSION%
RUN python -m pip install -U pip

COPY python/requirements-wheel-build.txt arrow/python/
RUN pip install -r arrow/python/requirements-wheel-build.txt

# TODO(kszucs): set clcache as the compiler
ENV CLCACHE_DIR="C:\clcache"
RUN pip install clcache

# For debugging purposes
# RUN wget --no-check-certificate https://github.com/lucasg/Dependencies/releases/download/v1.10/Dependencies_x64_Release.zip
# RUN unzip Dependencies_x64_Release.zip -d Dependencies && setx path "%path%;C:\Depencencies"
Loading