xborder commented on code in PR #51765:
URL: https://github.com/apache/arrow/pull/51765#discussion_r4229160117


##########
.github/workflows/cpp_extra.yml:
##########
@@ -686,6 +693,101 @@ 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
+
+          dylib_path="$(find expanded -name libarrow_flight_sql_odbc.dylib)"
+          lipo -create "${dylib_path}" 
amd64-dylib/libarrow_flight_sql_odbc.dylib \
+            -output "${dylib_path}"

Review Comment:
   codex pointed me to an issue here:
   >  lipo replaces the unversioned symlink, leaving the versioned dylib 
ARM-only. Intel clients linking against its versioned install name then fail 
with “incompatible architecture.” The verification should check the versioned 
target too.



-- 
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]

Reply via email to