diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index 1d2cb99959c9..ca85e0a0e26a 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -384,6 +384,13 @@ jobs: run-options: >- -e ARROW_FLIGHT_SQL_ODBC_INSTALLER=ON -e ODBC_PACKAGE_FORMAT=RPM + - image: ubuntu-cpp-odbc + title: AMD64 Ubuntu DEB Release + build-type: release + format: deb + run-options: >- + -e ARROW_FLIGHT_SQL_ODBC_INSTALLER=ON + -e ODBC_PACKAGE_FORMAT=DEB # GH-49582: TODO Enable Debian build for ODBC # - image: debian-cpp-odbc # title: AMD64 Debian @@ -415,8 +422,8 @@ jobs: uses: actions/cache@v5 with: path: .docker - key: ${{ matrix.image }}-${{ matrix.build-type }}-${{ hashFiles('cpp/**') }} - restore-keys: ${{ matrix.image }}-${{ matrix.build-type }}- + key: ${{ matrix.image }}-${{ matrix.build-type }}-${{ matrix.format }}-${{ hashFiles('cpp/**') }} + restore-keys: ${{ matrix.image }}-${{ matrix.build-type }}-${{ matrix.format }}- - name: Setup Python on hosted runner uses: actions/setup-python@v6 with: @@ -437,8 +444,8 @@ jobs: if: matrix.build-type == 'release' uses: actions/upload-artifact@v7 with: - name: flight-sql-odbc-pkg-installer-${{ matrix.format }} - path: build/cpp/ArrowFlightSqlOdbcODBC-*.${{ matrix.format }} + name: flight-sql-odbc-${{ matrix.format }}-installer + path: build/cpp/ArrowFlightSqlOdbc-*.${{ matrix.format }} if-no-files-found: error - name: Docker Push @@ -564,7 +571,7 @@ jobs: uses: actions/upload-artifact@v7 with: name: flight-sql-odbc-pkg-installer-${{ matrix.architecture }} - path: build/cpp/ArrowFlightSqlOdbcODBC-*.pkg + path: build/cpp/ArrowFlightSqlOdbc-*.pkg if-no-files-found: error - name: Register Flight SQL ODBC Driver run: | diff --git a/ci/docker/ubuntu-24.04-cpp.dockerfile b/ci/docker/ubuntu-24.04-cpp.dockerfile index eca5495b12f0..c13c6b27cbc0 100644 --- a/ci/docker/ubuntu-24.04-cpp.dockerfile +++ b/ci/docker/ubuntu-24.04-cpp.dockerfile @@ -70,6 +70,7 @@ RUN apt-get update -y -q && \ ccache \ cmake \ curl \ + file \ gdb \ git \ libbenchmark-dev \ diff --git a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt index fa6c0938d871..8c576ae66ee1 100644 --- a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt +++ b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt @@ -157,7 +157,7 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) "${CMAKE_CURRENT_SOURCE_DIR}/install/windows/arrow-wix-banner.bmp") else() set(ODBC_UNIX_FILE_NAME - "ArrowFlightSqlOdbcODBC-${CPACK_PACKAGE_VERSION_MAJOR}.${ODBC_PACKAGE_VERSION_MINOR}.${ODBC_PACKAGE_VERSION_PATCH}" + "ArrowFlightSqlOdbc-${CPACK_PACKAGE_VERSION_MAJOR}.${ODBC_PACKAGE_VERSION_MINOR}.${ODBC_PACKAGE_VERSION_PATCH}" ) if(APPLE) set(CPACK_PACKAGE_FILE_NAME "${ODBC_UNIX_FILE_NAME}") @@ -178,13 +178,21 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) # Linux set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}") if(${ODBC_PACKAGE_FORMAT} STREQUAL "DEB") - # GH-49595 TODO: implement DEB installer - message(STATUS "ODBC_PACKAGE_FORMAT DEB not implemented, see GH-49595") + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE amd64) + set(CPACK_GENERATOR DEB) + set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA + "${CMAKE_CURRENT_SOURCE_DIR}/install/linux/postinst") + set(CPACK_DEBIAN_FILE_NAME "${ODBC_UNIX_FILE_NAME}.deb") + set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_PACKAGE_CONTACT}") + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OFF) + # Exclude Unspecified components + set(CPACK_DEB_COMPONENT_INSTALL ON) + set(CPACK_COMPONENTS_GROUPING ALL_COMPONENTS_IN_ONE) elseif(${ODBC_PACKAGE_FORMAT} STREQUAL "RPM") set(CPACK_RPM_PACKAGE_ARCHITECTURE x86_64) set(CPACK_GENERATOR RPM) set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE - "${CMAKE_CURRENT_SOURCE_DIR}/install/linux/rpm/postinstall") + "${CMAKE_CURRENT_SOURCE_DIR}/install/linux/postinst") set(CPACK_RPM_FILE_NAME "${ODBC_UNIX_FILE_NAME}.rpm") # Disable dependency check as ODBC embeds all third party dependencies set(CPACK_RPM_PACKAGE_AUTOREQPROV "no") @@ -231,7 +239,7 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../LICENSE.txt" DESTINATION "${DOC_INSTALL_DIR}" COMPONENT Docs) - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/Connection-Options.md" + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/connection-options.md" DESTINATION "${DOC_INSTALL_DIR}" COMPONENT Docs) endif() diff --git a/cpp/src/arrow/flight/sql/odbc/install/linux/rpm/postinstall b/cpp/src/arrow/flight/sql/odbc/install/linux/postinst similarity index 100% rename from cpp/src/arrow/flight/sql/odbc/install/linux/rpm/postinstall rename to cpp/src/arrow/flight/sql/odbc/install/linux/postinst