Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: (don't merge) build wheel with arrow fix for macos cross compilation #2799

Closed
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
12 changes: 6 additions & 6 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -207,8 +207,8 @@ jobs:
arch: aarch64
- os: ubuntu-22.04
arch: aarch64
- os: macos-13
is-release: false
# - os: macos-13
# is-release: false
- os: windows-2022
is-release: false

Expand Down Expand Up @@ -459,8 +459,8 @@ jobs:
arch: aarch64
- os: ubuntu-22.04
arch: aarch64
- os: macos-13
is-release: false
# - os: macos-13
# is-release: false
- os: windows-2022
is-release: false

Expand Down Expand Up @@ -602,8 +602,8 @@ jobs:
arch:
- x86_64
exclude:
- os: macos-13
is-release: false
# - os: macos-13
# is-release: false
- os: windows-2022
is-release: false
steps:
Expand Down
24 changes: 24 additions & 0 deletions cmake/toolchains/darwin-arm64.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
# ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
# ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
# ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
# ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
# ┃ Copyright (c) 2017, the Perspective Authors. ┃
# ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
# ┃ This file is part of the Perspective library, distributed under the terms ┃
# ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

# Minimal toolchain file to ensure that Arrow's bundled dependency builds use
# the correct architecture for Mac builds.

# (Arrow does not as of Oct 2024 pass on CMAKE_OSX_ARCHITECTURES to its
# dependencies if it is set, but does pass on a toolchain file)

set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "Target architecture for Mac builds")
# Arrow uses this to choose a `-march` flag
set(CMAKE_SYSTEM_PROCESSOR "arm64")
# Prevent cmake from overwriting CMAKE_SYSTEM_PROCESSOR
# https://github.com/apache/arrow/issues/44448#issuecomment-2418649378
set(CMAKE_SYSTEM_NAME "Darwin")
24 changes: 24 additions & 0 deletions cmake/toolchains/darwin-x86_64.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
# ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
# ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
# ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
# ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
# ┃ Copyright (c) 2017, the Perspective Authors. ┃
# ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
# ┃ This file is part of the Perspective library, distributed under the terms ┃
# ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

# Minimal toolchain file to ensure that Arrow's bundled dependency builds use
# the correct architecture for Mac builds.

# (Arrow does not as of Oct 2024 pass on CMAKE_OSX_ARCHITECTURES to its
# dependencies if it is set, but does pass on a toolchain file)

set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "Target architecture for Mac builds")
# Arrow uses this to choose a `-march` flag
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
# Prevent cmake from overwriting CMAKE_SYSTEM_PROCESSOR
# https://github.com/apache/arrow/issues/44448#issuecomment-2418649378
set(CMAKE_SYSTEM_NAME "Darwin")
22 changes: 18 additions & 4 deletions rust/perspective-server/build/psp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,24 @@ pub fn cmake_build() -> Result<Option<PathBuf>, std::io::Error> {
let profile = std::env::var("PROFILE").unwrap();
dst.always_configure(true);
dst.define("CMAKE_BUILD_TYPE", profile.as_str());
if std::env::var("PSP_ARCH").as_deref() == Ok("x86_64") {
dst.define("CMAKE_OSX_ARCHITECTURES", "x86_64");
} else if std::env::var("PSP_ARCH").as_deref() == Ok("arm64") {
dst.define("CMAKE_OSX_ARCHITECTURES", "arm64");

if cfg!(target_os = "macos") {
// Set CMAKE_OSX_ARCHITECTURES et al. for Mac builds. Arrow does not forward on
// CMAKE_OSX_ARCHITECTURES and but it does forward on a
// CMAKE_TOOLCHAIN_FILE. In Conda builds, the environment sets
// `CMAKE_ARGS` up with various toolchain arguments. This block may need
// to be patched out or adjusted for Conda.
let toolchain_file = match std::env::var("PSP_ARCH").as_deref() {
Ok("x86_64") => "./cmake/toolchains/darwin-x86_64.cmake",
Ok("aarch64") => "./cmake/toolchains/darwin-arm64.cmake",
arch @ Ok(_) | arch @ Err(_) => {
panic!("Unknown PSP_ARCH value: {:?}", arch)
},
};
dst.define(
"CMAKE_TOOLCHAIN_FILE",
std::fs::canonicalize(toolchain_file).expect("Failed to canonicalize toolchain file."),
);
}

if std::env::var("TARGET")
Expand Down
Loading