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 @@ -47,7 +47,7 @@ ULIMIT_CORE=-1

# Default versions for platforms
ALMALINUX=8
ALPINE_LINUX=3.16
ALPINE_LINUX=3.18
DEBIAN=12
FEDORA=39
UBUNTU=22.04
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@
# under the License.

ARG arch=amd64
FROM ${arch}/alpine:3.16
FROM ${arch}/alpine:3.18

RUN apk add \
apache-orc-dev \
bash \
benchmark-dev \
boost-dev \
Expand All @@ -39,8 +40,8 @@ RUN apk add \
grpc-dev \
gtest-dev \
libxml2-dev \
llvm13-dev \
llvm13-static \
llvm16-dev \
llvm16-static \
lz4-dev \
make \
musl-locales \
Expand All @@ -61,6 +62,7 @@ RUN apk add \
thrift-dev \
tzdata \
utf8proc-dev \
xsimd-dev \
zlib-dev \
zstd-dev && \
rm -rf /var/cache/apk/* && \
Expand Down Expand Up @@ -98,6 +100,5 @@ ENV ARROW_ACERO=ON \
ARROW_WITH_ZSTD=ON \
AWSSDK_SOURCE=BUNDLED \
google_cloud_cpp_storage_SOURCE=BUNDLED \
ORC_SOURCE=BUNDLED \
PATH=/usr/lib/ccache/:$PATH \
xsimd_SOURCE=BUNDLED
MUSL_LOCPATH=/usr/share/i18n/locales/musl \
PATH=/usr/lib/ccache/bin:$PATH
17 changes: 17 additions & 0 deletions cpp/cmake_modules/ThirdpartyToolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -1311,10 +1311,12 @@ if(ARROW_USE_BOOST)
endif()
endforeach()

set(BOOST_PROCESS_HAVE_V2 FALSE)
if(TARGET Boost::process)
# Boost >= 1.86
target_compile_definitions(Boost::process INTERFACE "BOOST_PROCESS_HAVE_V1")
target_compile_definitions(Boost::process INTERFACE "BOOST_PROCESS_HAVE_V2")
set(BOOST_PROCESS_HAVE_V2 TRUE)
else()
# Boost < 1.86
add_library(Boost::process INTERFACE IMPORTED)
Expand All @@ -1329,6 +1331,7 @@ if(ARROW_USE_BOOST)
endif()
if(Boost_VERSION VERSION_GREATER_EQUAL 1.80)
target_compile_definitions(Boost::process INTERFACE "BOOST_PROCESS_HAVE_V2")
set(BOOST_PROCESS_HAVE_V2 TRUE)
# Boost < 1.86 has a bug that
# boost::process::v2::process_environment::on_setup() isn't
# defined. We need to build Boost Process source to define it.
Expand All @@ -1341,6 +1344,20 @@ if(ARROW_USE_BOOST)
endif()
endif()
endif()
if(BOOST_PROCESS_HAVE_V2
AND # We can't use v2 API on Windows because v2 API doesn't support
# process group[1] and GCS testbench uses multiple processes[2].
#
# [1] https://github.com/boostorg/process/issues/259
# [2] https://github.com/googleapis/storage-testbench/issues/669
(NOT WIN32)
AND # We can't use v2 API with musl libc with Boost Process < 1.86
# because Boost Process < 1.86 doesn't support musl libc[3].
#
# [3] https://github.com/boostorg/process/commit/aea22dbf6be1695ceb42367590b6ca34d9433500
(NOT (ARROW_WITH_MUSL AND (Boost_VERSION VERSION_LESS 1.86))))
target_compile_definitions(Boost::process INTERFACE "BOOST_PROCESS_USE_V2")
endif()

message(STATUS "Boost include dir: ${Boost_INCLUDE_DIRS}")
endif()
Expand Down
10 changes: 10 additions & 0 deletions cpp/src/arrow/compute/kernels/scalar_temporal_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2154,13 +2154,23 @@ TEST_F(ScalarTemporalTest, StrftimeOtherLocale) {
auto options = StrftimeOptions("%d %B %Y %H:%M:%S", "fr_FR.UTF-8");
const char* milliseconds = R"(
["1970-01-01T00:00:59.123", "2021-08-18T15:11:50.456", null])";
#ifdef ARROW_WITH_MUSL
// musl-locales uses Capital case for month name.
// musl doesn't use "," for milliseconds separator.
const char* expected = R"(
["01 Janvier 1970 00:00:59.123", "18 Août 2021 15:11:50.456", null])";
#else
const char* expected = R"(
["01 janvier 1970 00:00:59,123", "18 août 2021 15:11:50,456", null])";
#endif
CheckScalarUnary("strftime", timestamp(TimeUnit::MILLI, "UTC"), milliseconds, utf8(),
expected, &options);
}

TEST_F(ScalarTemporalTest, StrftimeInvalidLocale) {
#ifdef ARROW_WITH_MUSL
GTEST_SKIP() << "musl doesn't report an error for invalid locale";
#endif
#ifdef __EMSCRIPTEN__
GTEST_SKIP() << "Emscripten doesn't build with multiple locales as default";
#endif
Expand Down
11 changes: 0 additions & 11 deletions cpp/src/arrow/testing/process.cc
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,6 @@
// work if windows.h is already included.
# include <boost/asio/io_context.hpp>

# ifdef BOOST_PROCESS_HAVE_V2
// We can't use v2 API on Windows because v2 API doesn't support
// process group [1] and GCS testbench uses multiple processes [2].
//
// [1] https://github.com/boostorg/process/issues/259
// [2] https://github.com/googleapis/storage-testbench/issues/669
# ifndef _WIN32
# define BOOST_PROCESS_USE_V2
# endif
# endif

# ifdef BOOST_PROCESS_USE_V2
# ifdef BOOST_PROCESS_NEED_SOURCE
// Workaround for https://github.com/boostorg/process/issues/312
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ services:
# docker compose build alpine-linux-cpp
# docker compose run --rm alpine-linux-cpp
# Parameters:
# ALPINE_LINUX: 3.16
# ALPINE_LINUX: 3.18
# ARCH: amd64, arm64v8, ...
image: ${REPO}:${ARCH}-alpine-linux-${ALPINE_LINUX}-cpp
build:
Expand Down
Loading