amoeba commented on code in PR #51765:
URL: https://github.com/apache/arrow/pull/51765#discussion_r4273643815
##########
.github/workflows/cpp_extra.yml:
##########
@@ -686,6 +693,112 @@ jobs:
sudo chown -R $USER /Library/ODBC
ci/scripts/cpp_test.sh $(pwd) $(pwd)/build
+ odbc-macos-universal:
+ needs: odbc-macos
+ if: needs.check-enabled.outputs.is_enabled == 'true'
+ name: ODBC universal macOS installer
+ runs-on: macos-14
+ timeout-minutes: 30
+ steps:
+ - name: Download ARM64 PKG
+ uses: actions/download-artifact@v8
+ with:
+ name: flight-sql-odbc-pkg-installer-ARM64
+ path: arm64-pkg
+ - name: Download AMD64 dylib
+ uses: actions/download-artifact@v8
+ with:
+ name: flight-sql-odbc-dylib-AMD64
+ path: amd64-dylib
+ - name: Build universal macOS installer
+ run: |
+ set -euo pipefail
+
+ pkg_path="$(ls arm64-pkg/ArrowFlightSQLODBC-*.pkg)"
+ pkg_name="$(basename "${pkg_path}" .pkg)"
+
+ # Use the ARM64 .pkg and swap in a universal ODBC dylib
+ # that works on ARM64 and AMD64.
+ pkgutil --expand-full "${pkg_path}" expanded
+
+ # The unversioned name libarrow_flight_sql_odbc.dylib is a symlink
+ # to the versioned dylib that the
+ # install name (@rpath/libarrow_flight_sql_odbc.<SOVERSION>.dylib)
+ # resolves to. Run lipo on the real file so the symlinks stay intact.
+ symlink_path="$(find expanded -name libarrow_flight_sql_odbc.dylib)"
+ lib_dir="$(dirname "${symlink_path}")"
+ dylib_path="$(realpath "${symlink_path}")"
+ echo "Merging into ${dylib_path} (via ${symlink_path})"
+ lipo -create "${dylib_path}"
amd64-dylib/libarrow_flight_sql_odbc.dylib \
+ -output "${dylib_path}"
+
+ for lib in "${lib_dir}"/libarrow_flight_sql_odbc*.dylib; do
+ dylib_archs="$(lipo -archs "${lib}")"
+ echo "${lib}: ${dylib_archs}"
+ for arch in arm64 x86_64; do
+ if ! grep -qw "${arch}" <<< "${dylib_archs}"; then
+ echo "${lib} is missing '${arch}' (got: ${dylib_archs})"
+ exit 1
+ fi
+ done
+ done
Review Comment:
Hrm... But this works fine on CI (older CLT). Let me see if I can figure out
what's up.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]