Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ CLANG_TOOLS=14
CUDA=11.2.2
DASK=latest
DOTNET=8.0
GCC_VERSION=""
GCC=
HDFS=3.2.1
JDK=11
KARTOTHEK=latest
Expand Down
143 changes: 143 additions & 0 deletions ci/docker/debian-experimental-cpp.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
# 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 arch=amd64
FROM ${arch}/debian:experimental
ARG arch

ENV DEBIAN_FRONTEND noninteractive

ARG gcc
ARG llvm
RUN if [ -n "${gcc}" ]; then \
gcc_package_suffix="-${gcc}"; \
else \
gcc_package_suffix=""; \
fi && \
if [ -n "${llvm}" ]; then \
llvm_package_suffix="-${llvm}"; \
else \
llvm_package_suffix=""; \
fi && \
apt-get update -y -q && \
apt-get install -y -q --no-install-recommends \
autoconf \
ccache \
cmake \
curl \
g++ \
gcc \
gdb \
git \
libbenchmark-dev \
libboost-filesystem-dev \
libboost-system-dev \
libbrotli-dev \
libbz2-dev \
libc-ares-dev \
libcurl4-openssl-dev \
libgflags-dev \
libgmock-dev \
libgoogle-glog-dev \
libgrpc++-dev \
libidn2-dev \
libkrb5-dev \
libldap-dev \
liblz4-dev \
libnghttp2-dev \
libprotobuf-dev \
libprotoc-dev \
libpsl-dev \
libre2-dev \
librtmp-dev \
libsnappy-dev \
libsqlite3-dev \
libssh-dev \
libssh2-1-dev \
libssl-dev \
libthrift-dev \
libutf8proc-dev \
libxml2-dev \
libxsimd-dev \
libzstd-dev \
make \
ninja-build \
nlohmann-json3-dev \
npm \
opentelemetry-cpp-dev \
pkg-config \
protobuf-compiler-grpc \
python3-dev \
python3-pip \
python3-venv \
rapidjson-dev \
rsync \
tzdata \
zlib1g-dev && \
apt-get install -y -q --no-install-recommends -t experimental \
clang${llvm_package_suffix} \
g++${gcc_package_suffix} \
gcc${gcc_package_suffix} \
llvm${llvm_package_suffix}-dev && \
Comment on lines +92 to +95
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, cleaver using a suffix that when it is "" just installs the default. Nice.

apt-get clean && \
rm -rf /var/lib/apt/lists/*

COPY ci/scripts/install_minio.sh /arrow/ci/scripts/
RUN /arrow/ci/scripts/install_minio.sh latest /usr/local

COPY ci/scripts/install_gcs_testbench.sh /arrow/ci/scripts/
RUN /arrow/ci/scripts/install_gcs_testbench.sh default

COPY ci/scripts/install_azurite.sh /arrow/ci/scripts/
RUN /arrow/ci/scripts/install_azurite.sh

COPY ci/scripts/install_sccache.sh /arrow/ci/scripts/
RUN /arrow/ci/scripts/install_sccache.sh unknown-linux-musl /usr/local/bin

# Prioritize system packages and local installation.
ENV ARROW_ACERO=ON \
ARROW_AZURE=ON \
ARROW_BUILD_TESTS=ON \
ARROW_DATASET=ON \
ARROW_DEPENDENCY_SOURCE=SYSTEM \
ARROW_DATASET=ON \
ARROW_FLIGHT=ON \
ARROW_FLIGHT_SQL=ON \
ARROW_GANDIVA=ON \
ARROW_GCS=ON \
ARROW_HOME=/usr/local \
ARROW_JEMALLOC=ON \
ARROW_ORC=ON \
ARROW_PARQUET=ON \
ARROW_S3=ON \
ARROW_SUBSTRAIT=ON \
ARROW_USE_CCACHE=ON \
ARROW_WITH_BROTLI=ON \
ARROW_WITH_BZ2=ON \
ARROW_WITH_LZ4=ON \
ARROW_WITH_OPENTELEMETRY=ON \
ARROW_WITH_SNAPPY=ON \
ARROW_WITH_ZLIB=ON \
ARROW_WITH_ZSTD=ON \
AWSSDK_SOURCE=BUNDLED \
Azure_SOURCE=BUNDLED \
CC=gcc${gcc:+-${gcc}} \
CXX=g++${gcc:+-${gcc}} \
google_cloud_cpp_storage_SOURCE=BUNDLED \
ORC_SOURCE=BUNDLED \
PATH=/usr/lib/ccache/:$PATH \
PYTHON=python3
8 changes: 4 additions & 4 deletions ci/docker/linux-apt-r.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,10 @@ RUN apt-get update -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

ARG gcc_version=""
RUN if [ "${gcc_version}" != "" ]; then \
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${gcc_version} 100 && \
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${gcc_version} 100 && \
ARG gcc=""
RUN if [ "${gcc}" != "" ]; then \
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${gcc} 100 && \
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${gcc} 100 && \
update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30 && \
update-alternatives --set cc /usr/bin/gcc && \
update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30 && \
Expand Down
21 changes: 8 additions & 13 deletions ci/docker/ubuntu-22.04-cpp.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -137,32 +137,27 @@ RUN cd ~ && git clone https://github.com/emscripten-core/emsdk.git && \
echo "Installed emsdk to:" ~/emsdk


ARG gcc_version=""
RUN if [ "${gcc_version}" = "" ]; then \
ARG gcc=""
RUN if [ "${gcc}" = "" ]; then \
apt-get update -y -q && \
apt-get install -y -q --no-install-recommends \
g++ \
gcc; \
else \
if [ "${gcc_version}" -gt "12" ]; then \
apt-get update -y -q && \
apt-get install -y -q --no-install-recommends software-properties-common && \
add-apt-repository ppa:ubuntu-toolchain-r/volatile; \
fi; \
apt-get update -y -q && \
apt-get install -y -q --no-install-recommends \
g++-${gcc_version} \
gcc-${gcc_version} && \
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${gcc_version} 100 && \
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${gcc_version} 100 && \
g++-${gcc} \
gcc-${gcc} && \
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${gcc} 100 && \
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${gcc} 100 && \
update-alternatives --install \
/usr/bin/$(uname --machine)-linux-gnu-gcc \
$(uname --machine)-linux-gnu-gcc \
/usr/bin/$(uname --machine)-linux-gnu-gcc-${gcc_version} 100 && \
/usr/bin/$(uname --machine)-linux-gnu-gcc-${gcc} 100 && \
update-alternatives --install \
/usr/bin/$(uname --machine)-linux-gnu-g++ \
$(uname --machine)-linux-gnu-g++ \
/usr/bin/$(uname --machine)-linux-gnu-g++-${gcc_version} 100 && \
/usr/bin/$(uname --machine)-linux-gnu-g++-${gcc} 100 && \
update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 100 && \
update-alternatives --set cc /usr/bin/gcc && \
update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 100 && \
Expand Down
21 changes: 8 additions & 13 deletions ci/docker/ubuntu-24.04-cpp.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -128,32 +128,27 @@ RUN apt-get update -y -q && \
apt-get clean && \
rm -rf /var/lib/apt/lists*

ARG gcc_version=""
RUN if [ "${gcc_version}" = "" ]; then \
ARG gcc=""
RUN if [ "${gcc}" = "" ]; then \
apt-get update -y -q && \
apt-get install -y -q --no-install-recommends \
g++ \
gcc; \
else \
if [ "${gcc_version}" -gt "14" ]; then \
apt-get update -y -q && \
apt-get install -y -q --no-install-recommends software-properties-common && \
add-apt-repository ppa:ubuntu-toolchain-r/volatile; \
fi; \
apt-get update -y -q && \
apt-get install -y -q --no-install-recommends \
g++-${gcc_version} \
gcc-${gcc_version} && \
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${gcc_version} 100 && \
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${gcc_version} 100 && \
g++-${gcc} \
gcc-${gcc} && \
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${gcc} 100 && \
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${gcc} 100 && \
update-alternatives --install \
/usr/bin/$(uname --machine)-linux-gnu-gcc \
$(uname --machine)-linux-gnu-gcc \
/usr/bin/$(uname --machine)-linux-gnu-gcc-${gcc_version} 100 && \
/usr/bin/$(uname --machine)-linux-gnu-gcc-${gcc} 100 && \
update-alternatives --install \
/usr/bin/$(uname --machine)-linux-gnu-g++ \
$(uname --machine)-linux-gnu-g++ \
/usr/bin/$(uname --machine)-linux-gnu-g++-${gcc_version} 100 && \
/usr/bin/$(uname --machine)-linux-gnu-g++-${gcc} 100 && \
update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 100 && \
update-alternatives --set cc /usr/bin/gcc && \
update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 100 && \
Expand Down
25 changes: 21 additions & 4 deletions dev/tasks/tasks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,13 @@ groups:

test:
- test-*
# Can be removed after we improved C++20 support
- ~test-debian-experimental-cpp-gcc-15

cpp:
- test-*cpp*
# Can be removed after we improved C++20 support
- ~test-debian-experimental-cpp-gcc-15
- example-*cpp*

c-glib:
Expand Down Expand Up @@ -157,6 +161,8 @@ groups:

nightly-tests:
- test-*
# Can be removed after we improved C++20 support
- ~test-debian-experimental-cpp-gcc-15
- example-*

nightly-packaging:
Expand Down Expand Up @@ -935,7 +941,7 @@ tasks:
params:
env:
UBUNTU: 24.04
GCC_VERSION: 13
GCC: 13
image: ubuntu-cpp-bundled

test-ubuntu-24.04-cpp:
Expand All @@ -954,7 +960,7 @@ tasks:
params:
env:
CLANG_TOOLS: 15
GCC_VERSION: 14
GCC: 14
LLVM: 15
UBUNTU: 24.04
# rapidjson 1.1.0 has an error caught by gcc 14.
Expand Down Expand Up @@ -997,6 +1003,17 @@ tasks:
image: debian-cpp
{% endfor %}

test-debian-experimental-cpp-gcc-15:
ci: github
template: docker-tests/github.linux.yml
params:
env:
ARCH: "amd64"
DEBIAN: "experimental"
GCC: "15"
flags: "-e CMAKE_CXX_STANDARD=20"
image: debian-cpp

test-fedora-39-cpp:
ci: github
template: docker-tests/github.linux.yml
Expand Down Expand Up @@ -1301,7 +1318,7 @@ tasks:
params:
env:
UBUNTU: 22.04
GCC_VERSION: 11
GCC: 11
image: ubuntu-r-only-r

# This also has -flto=auto
Expand All @@ -1311,7 +1328,7 @@ tasks:
params:
env:
UBUNTU: 22.04
GCC_VERSION: 12
GCC: 12
image: ubuntu-r-only-r

test-r-minimal-build:
Expand Down
17 changes: 8 additions & 9 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -188,8 +188,6 @@ volumes:
name: ${ARCH}-conda-ccache
debian-ccache:
name: ${ARCH}-debian-${DEBIAN}-ccache
debian-rust:
name: ${ARCH}-debian-${DEBIAN}-rust
fedora-ccache:
name: ${ARCH}-fedora-${FEDORA}-ccache
maven-cache:
Expand Down Expand Up @@ -346,7 +344,7 @@ services:
# docker compose run --rm debian-cpp
# Parameters:
# ARCH: amd64, arm64v8, ...
# DEBIAN: 12
# DEBIAN: 12, experimental
image: ${REPO}:${ARCH}-debian-${DEBIAN}-cpp
build:
context: .
Expand All @@ -355,6 +353,7 @@ services:
- ${REPO}:${ARCH}-debian-${DEBIAN}-cpp
args:
arch: ${ARCH}
gcc: ${GCC}
llvm: ${LLVM}
shm_size: *shm-size
ulimits: *ulimits
Expand Down Expand Up @@ -389,8 +388,8 @@ services:
arch: ${ARCH}
base: "${ARCH}/ubuntu:${UBUNTU}"
clang_tools: ${CLANG_TOOLS}
gcc: ${GCC}
llvm: ${LLVM}
gcc_version: ${GCC_VERSION}
shm_size: *shm-size
cap_add:
- SYS_ADMIN
Expand Down Expand Up @@ -425,8 +424,8 @@ services:
arch: ${ARCH}
base: "${ARCH}/ubuntu:${UBUNTU}"
clang_tools: ${CLANG_TOOLS}
gcc: ${GCC}
llvm: ${LLVM}
gcc_version: ${GCC_VERSION}
shm_size: *shm-size
cap_add:
- SYS_ADMIN
Expand Down Expand Up @@ -1517,12 +1516,12 @@ services:
- ${REPO}:${ARCH}-ubuntu-${UBUNTU}-r-${R}
args:
arch: ${ARCH}
r: ${R}
base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp
gcc_version: ${GCC_VERSION}
tz: ${TZ}
r_prune_deps: ${R_PRUNE_DEPS}
gcc: ${GCC}
r: ${R}
r_duckdb_dev: ${R_DUCKDB_DEV:-}
r_prune_deps: ${R_PRUNE_DEPS}
tz: ${TZ}
Comment on lines -1520 to +1524
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is just s/GCC_VERSION/GCC/ and then alphabetically ordering, yeah?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

shm_size: *shm-size
environment:
<<: [*common, *ccache, *sccache]
Expand Down
Loading