Skip to content

Commit 23daa09

Browse files
authored
Add ODBC Debian support
* Attempt to build Debian ODBC Update debian-13-cpp.dockerfile # New if statement attempts to fix error at https://github.com/Bit-Quill/arrow/actions/runs/23025621291/job/66872649956#step:6:4516. Only an if statement is added, rest of code change is space # Disable Arrow parquet due to https://github.com/Bit-Quill/arrow/actions/runs/23070284534/job/67018772931#step:6:11116
1 parent b98d401 commit 23daa09

File tree

4 files changed

+104
-45
lines changed

4 files changed

+104
-45
lines changed

.github/workflows/cpp_extra.yml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ jobs:
338338
339339
odbc-linux:
340340
needs: check-labels
341-
name: ODBC Linux
341+
name: ODBC ${{ matrix.title }}
342342
runs-on: ubuntu-latest
343343
if: >-
344344
needs.check-labels.outputs.force == 'true' ||
@@ -347,6 +347,12 @@ jobs:
347347
timeout-minutes: 75
348348
strategy:
349349
fail-fast: false
350+
matrix:
351+
include:
352+
- image: ubuntu-cpp-odbc
353+
title: AMD64 Ubuntu
354+
- image: debian-cpp-odbc
355+
title: AMD64 Debian
350356
env:
351357
ARCH: amd64
352358
ARCHERY_DEBUG: 1
@@ -365,8 +371,8 @@ jobs:
365371
uses: actions/cache@v5
366372
with:
367373
path: .docker
368-
key: ubuntu-cpp-odbc-${{ hashFiles('cpp/**') }}
369-
restore-keys: ubuntu-cpp-odbc-
374+
key: ${{ matrix.image }}-${{ hashFiles('cpp/**') }}
375+
restore-keys: ${{ matrix.image }}-
370376
- name: Setup Python on hosted runner
371377
uses: actions/setup-python@v6
372378
with:
@@ -381,7 +387,7 @@ jobs:
381387
# GH-40558: reduce ASLR to avoid ASAN/LSAN crashes
382388
sudo sysctl -w vm.mmap_rnd_bits=28
383389
source ci/scripts/util_enable_core_dumps.sh
384-
archery docker run ubuntu-cpp-odbc
390+
archery docker run ${{ matrix.image }}
385391
- name: Docker Push
386392
if: >-
387393
success() &&
@@ -392,7 +398,7 @@ jobs:
392398
ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
393399
ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
394400
continue-on-error: true
395-
run: archery docker push ubuntu-cpp-odbc
401+
run: archery docker push ${{ matrix.image }}
396402

397403
odbc-macos:
398404
needs: check-labels

ci/docker/debian-13-cpp.dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,10 @@ RUN apt-get update -y -q && \
8888
rapidjson-dev \
8989
rsync \
9090
rustc \
91+
sudo \
9192
tzdata \
9293
tzdata-legacy \
94+
unixodbc-dev \
9395
zlib1g-dev && \
9496
apt-get clean && \
9597
rm -rf /var/lib/apt/lists/*

compose.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ x-hierarchy:
134134
- debian-cpp:
135135
- debian-c-glib:
136136
- debian-ruby
137+
- debian-cpp-odbc
137138
- debian-python:
138139
- debian-docs
139140
- fedora-cpp:
@@ -372,6 +373,54 @@ services:
372373
/arrow/ci/scripts/cpp_build.sh /arrow /build &&
373374
/arrow/ci/scripts/cpp_test.sh /arrow /build"
374375

376+
debian-cpp-odbc:
377+
# Usage:
378+
# docker compose build debian-cpp-odbc
379+
# docker compose run --rm debian-cpp-odbc
380+
# Parameters:
381+
# ARCH: amd64, arm64v8, ...
382+
# DEBIAN: 12, experimental
383+
image: ${REPO}:${ARCH}-debian-${DEBIAN}-cpp
384+
build:
385+
context: .
386+
dockerfile: ci/docker/debian-${DEBIAN}-cpp.dockerfile
387+
cache_from:
388+
- ${REPO}:${ARCH}-debian-${DEBIAN}-cpp
389+
args:
390+
arch: ${ARCH}
391+
gcc: ${GCC}
392+
llvm: ${LLVM}
393+
shm_size: *shm-size
394+
ulimits: *ulimits
395+
environment:
396+
<<: [*common, *ccache, *sccache, *cpp]
397+
ARROW_ACERO: "OFF"
398+
ARROW_AZURE: "OFF"
399+
ARROW_BUILD_TYPE: RELEASE
400+
ARROW_CSV: "OFF"
401+
ARROW_DATASET: "OFF"
402+
ARROW_ENABLE_TIMING_TESTS: # inherit
403+
ARROW_DEPENDENCY_SOURCE: BUNDLED
404+
ARROW_DEPENDENCY_USE_SHARED: "OFF"
405+
ARROW_FILESYSTEM: "OFF"
406+
ARROW_FLIGHT_SQL_ODBC: "ON"
407+
ARROW_GANDIVA: "OFF"
408+
ARROW_GCS: "OFF"
409+
ARROW_HDFS: "OFF"
410+
ARROW_ORC: "OFF"
411+
ARROW_PARQUET: "OFF"
412+
ARROW_S3: "OFF"
413+
ARROW_SUBSTRAIT: "OFF"
414+
volumes: &debian-volumes
415+
- .:/arrow:delegated
416+
- ${DOCKER_VOLUME_PREFIX}debian-ccache:/ccache:delegated
417+
# Register ODBC before running tests
418+
command: >
419+
/bin/bash -c "
420+
/arrow/ci/scripts/cpp_build.sh /arrow /build &&
421+
sudo /arrow/cpp/src/arrow/flight/sql/odbc/install/unix/install_odbc.sh /usr/local/lib/libarrow_flight_sql_odbc.so &&
422+
/arrow/ci/scripts/cpp_test.sh /arrow /build"
423+
375424
ubuntu-cpp:
376425
# Usage:
377426
# docker compose build ubuntu-cpp

cpp/cmake_modules/ThirdpartyToolchain.cmake

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2679,51 +2679,53 @@ macro(build_zlib)
26792679
# bundled. We need to do this for all packages
26802680
# not just zlib as some depend on zlib, but we don't rebuild
26812681
# if it exists already
2682-
if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
2683-
# build zlib using Emscripten ports
2684-
if(NOT EXISTS ${EMSCRIPTEN_SYSROOT}/lib/wasm32-emscripten/pic/libz.a)
2685-
execute_process(COMMAND embuilder --pic --force build zlib)
2686-
endif()
2687-
add_library(ZLIB::ZLIB STATIC IMPORTED)
2688-
set_property(TARGET ZLIB::ZLIB
2689-
PROPERTY IMPORTED_LOCATION
2690-
"${EMSCRIPTEN_SYSROOT}/lib/wasm32-emscripten/pic/libz.a")
2691-
target_include_directories(ZLIB::ZLIB INTERFACE "${EMSCRIPTEN_SYSROOT}/include")
2692-
list(APPEND ARROW_BUNDLED_STATIC_LIBS ZLIB::ZLIB)
2693-
else()
2694-
set(ZLIB_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/zlib_ep/src/zlib_ep-install")
2695-
if(MSVC)
2696-
if(${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG")
2697-
set(ZLIB_STATIC_LIB_NAME zlibstaticd.lib)
2698-
else()
2699-
set(ZLIB_STATIC_LIB_NAME zlibstatic.lib)
2682+
if(NOT TARGET ZLIB::ZLIB)
2683+
if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
2684+
# build zlib using Emscripten ports
2685+
if(NOT EXISTS ${EMSCRIPTEN_SYSROOT}/lib/wasm32-emscripten/pic/libz.a)
2686+
execute_process(COMMAND embuilder --pic --force build zlib)
27002687
endif()
2688+
add_library(ZLIB::ZLIB STATIC IMPORTED)
2689+
set_property(TARGET ZLIB::ZLIB
2690+
PROPERTY IMPORTED_LOCATION
2691+
"${EMSCRIPTEN_SYSROOT}/lib/wasm32-emscripten/pic/libz.a")
2692+
target_include_directories(ZLIB::ZLIB INTERFACE "${EMSCRIPTEN_SYSROOT}/include")
2693+
list(APPEND ARROW_BUNDLED_STATIC_LIBS ZLIB::ZLIB)
27012694
else()
2702-
set(ZLIB_STATIC_LIB_NAME libz.a)
2695+
set(ZLIB_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/zlib_ep/src/zlib_ep-install")
2696+
if(MSVC)
2697+
if(${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG")
2698+
set(ZLIB_STATIC_LIB_NAME zlibstaticd.lib)
2699+
else()
2700+
set(ZLIB_STATIC_LIB_NAME zlibstatic.lib)
2701+
endif()
2702+
else()
2703+
set(ZLIB_STATIC_LIB_NAME libz.a)
2704+
endif()
2705+
set(ZLIB_STATIC_LIB "${ZLIB_PREFIX}/lib/${ZLIB_STATIC_LIB_NAME}")
2706+
set(ZLIB_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${ZLIB_PREFIX}")
2707+
2708+
externalproject_add(zlib_ep
2709+
${EP_COMMON_OPTIONS}
2710+
URL ${ZLIB_SOURCE_URL}
2711+
URL_HASH "SHA256=${ARROW_ZLIB_BUILD_SHA256_CHECKSUM}"
2712+
BUILD_BYPRODUCTS "${ZLIB_STATIC_LIB}"
2713+
CMAKE_ARGS ${ZLIB_CMAKE_ARGS})
2714+
2715+
file(MAKE_DIRECTORY "${ZLIB_PREFIX}/include")
2716+
2717+
add_library(ZLIB::ZLIB STATIC IMPORTED)
2718+
set(ZLIB_LIBRARIES ${ZLIB_STATIC_LIB})
2719+
set(ZLIB_INCLUDE_DIRS "${ZLIB_PREFIX}/include")
2720+
set_target_properties(ZLIB::ZLIB PROPERTIES IMPORTED_LOCATION ${ZLIB_LIBRARIES})
2721+
target_include_directories(ZLIB::ZLIB BEFORE INTERFACE "${ZLIB_INCLUDE_DIRS}")
2722+
2723+
add_dependencies(ZLIB::ZLIB zlib_ep)
2724+
list(APPEND ARROW_BUNDLED_STATIC_LIBS ZLIB::ZLIB)
27032725
endif()
2704-
set(ZLIB_STATIC_LIB "${ZLIB_PREFIX}/lib/${ZLIB_STATIC_LIB_NAME}")
2705-
set(ZLIB_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${ZLIB_PREFIX}")
2706-
2707-
externalproject_add(zlib_ep
2708-
${EP_COMMON_OPTIONS}
2709-
URL ${ZLIB_SOURCE_URL}
2710-
URL_HASH "SHA256=${ARROW_ZLIB_BUILD_SHA256_CHECKSUM}"
2711-
BUILD_BYPRODUCTS "${ZLIB_STATIC_LIB}"
2712-
CMAKE_ARGS ${ZLIB_CMAKE_ARGS})
27132726

2714-
file(MAKE_DIRECTORY "${ZLIB_PREFIX}/include")
2715-
2716-
add_library(ZLIB::ZLIB STATIC IMPORTED)
2717-
set(ZLIB_LIBRARIES ${ZLIB_STATIC_LIB})
2718-
set(ZLIB_INCLUDE_DIRS "${ZLIB_PREFIX}/include")
2719-
set_target_properties(ZLIB::ZLIB PROPERTIES IMPORTED_LOCATION ${ZLIB_LIBRARIES})
2720-
target_include_directories(ZLIB::ZLIB BEFORE INTERFACE "${ZLIB_INCLUDE_DIRS}")
2721-
2722-
add_dependencies(ZLIB::ZLIB zlib_ep)
2723-
list(APPEND ARROW_BUNDLED_STATIC_LIBS ZLIB::ZLIB)
2727+
set(ZLIB_VENDORED TRUE)
27242728
endif()
2725-
2726-
set(ZLIB_VENDORED TRUE)
27272729
endmacro()
27282730

27292731
if(ARROW_WITH_ZLIB)

0 commit comments

Comments
 (0)