Merge pull request #238 from afonsojramos/fix/macos-x86-build
fix(macos): enable x86_64 cross-compilation
This commit is contained in:
5 files changed
+49
-30
No files matched your search
@@ -13,7 +13,13 @@ on:
|
||||
|
||||
jobs:
|
||||
build-macos:
|
||||
# Apple Silicon only — Intel Macs run via Rosetta 2
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- target: aarch64-apple-darwin
|
||||
artifact: qbz-macos-aarch64
|
||||
- target: x86_64-apple-darwin
|
||||
artifact: qbz-macos-x86_64
|
||||
runs-on: macos-latest
|
||||
permissions:
|
||||
contents: write
|
||||
@@ -78,29 +84,30 @@ jobs:
|
||||
- name: Setup Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: aarch64-apple-darwin
|
||||
targets: ${{ matrix.target }}
|
||||
|
||||
- name: Rust cache
|
||||
uses: Swatinem/rust-cache@v2
|
||||
with:
|
||||
workspaces: src-tauri -> target
|
||||
shared-key: macos-${{ matrix.target }}
|
||||
|
||||
- name: Install JS dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Build DMG
|
||||
run: npm run tauri build -- --target aarch64-apple-darwin --bundles dmg
|
||||
run: npm run tauri build -- --target ${{ matrix.target }} --bundles dmg
|
||||
|
||||
- name: Collect artifacts
|
||||
run: |
|
||||
mkdir -p dist
|
||||
cp -v src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/*.dmg dist/ || true
|
||||
cp -v src-tauri/target/${{ matrix.target }}/release/bundle/dmg/*.dmg dist/ || true
|
||||
ls -la dist
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qbz-macos-aarch64
|
||||
name: ${{ matrix.artifact }}
|
||||
path: dist/*
|
||||
|
||||
- name: Publish GitHub Release Assets
|
||||
|
||||
@@ -95,7 +95,7 @@ Download from [Releases](https://github.com/vicrodh/qbz/releases): `chmod +x QBZ
|
||||
|
||||
> **QBZ is a Linux-first application.** macOS support is experimental and limited. Features like PipeWire, ALSA Direct, casting, and device control are unavailable.
|
||||
|
||||
Download the unsigned DMG from [Releases](https://github.com/vicrodh/qbz/releases) (Apple Silicon only).
|
||||
Download the unsigned DMG from [Releases](https://github.com/vicrodh/qbz/releases).
|
||||
|
||||
Since the DMG is unsigned, you may need to allow it in System Settings > Privacy & Security after first launch.
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ description = "Casting support for QBZ - Chromecast, AirPlay, DLNA"
|
||||
|
||||
[dependencies]
|
||||
# Chromecast
|
||||
rust_cast = "0.18.1"
|
||||
rust_cast = "0.21"
|
||||
|
||||
# mDNS discovery
|
||||
mdns-sd = "0.11"
|
||||
|
||||
Generated
+27
-13
@@ -4468,9 +4468,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "protobuf"
|
||||
version = "3.2.0"
|
||||
version = "3.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b55bad9126f378a853655831eb7363b7b01b81d19f8cb1218861086ca4a1a61e"
|
||||
checksum = "d65a1d4ddae7d8b5de68153b48f6aa3bba8cb002b243dbdbc55a5afbc98f99f4"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"protobuf-support",
|
||||
@@ -4479,9 +4479,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "protobuf-codegen"
|
||||
version = "3.2.0"
|
||||
version = "3.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0dd418ac3c91caa4032d37cb80ff0d44e2ebe637b2fb243b6234bf89cdac4901"
|
||||
checksum = "5d3976825c0014bbd2f3b34f0001876604fe87e0c86cd8fa54251530f1544ace"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"once_cell",
|
||||
@@ -4494,12 +4494,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "protobuf-parse"
|
||||
version = "3.2.0"
|
||||
version = "3.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d39b14605eaa1f6a340aec7f320b34064feb26c93aec35d6a9a2272a8ddfa49"
|
||||
checksum = "b4aeaa1f2460f1d348eeaeed86aea999ce98c1bded6f089ff8514c9d9dbdc973"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"indexmap 1.9.3",
|
||||
"indexmap 2.13.0",
|
||||
"log",
|
||||
"protobuf",
|
||||
"protobuf-support",
|
||||
@@ -4510,9 +4510,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "protobuf-support"
|
||||
version = "3.2.0"
|
||||
version = "3.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a5d4d7b8601c814cfb36bcebb79f0e61e45e1e93640cf778837833bbed05c372"
|
||||
checksum = "3e36c2f31e0a47f9280fb347ef5e461ffcd2c52dd520d8e216b52f93b0b0d7d6"
|
||||
dependencies = [
|
||||
"thiserror 1.0.69",
|
||||
]
|
||||
@@ -5369,18 +5369,19 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "rust_cast"
|
||||
version = "0.18.1"
|
||||
version = "0.21.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7c9b210a559ed66ebb5096ebb754ad14e197bf8954c029bae6bfc82f0f51e460"
|
||||
checksum = "235d09067a35143d271fdeaf28298b4f729b5da50abdbf3b9e6395262d8bc7a9"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"log",
|
||||
"openssl",
|
||||
"protobuf",
|
||||
"protobuf-codegen",
|
||||
"rustls",
|
||||
"rustls-native-certs",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"thiserror 2.0.18",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5454,6 +5455,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4"
|
||||
dependencies = [
|
||||
"aws-lc-rs",
|
||||
"log",
|
||||
"once_cell",
|
||||
"ring",
|
||||
"rustls-pki-types",
|
||||
@@ -5462,6 +5464,18 @@ dependencies = [
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-native-certs"
|
||||
version = "0.8.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63"
|
||||
dependencies = [
|
||||
"openssl-probe",
|
||||
"rustls-pki-types",
|
||||
"schannel",
|
||||
"security-framework",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-pki-types"
|
||||
version = "1.14.0"
|
||||
|
||||
+8
-10
@@ -100,16 +100,13 @@ souvlaki = "0.8"
|
||||
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp"] }
|
||||
|
||||
# PDF rendering with MuPDF engine (high-quality rasterization for booklet viewer)
|
||||
# NOTE: Use sys-lib-* for zlib/harfbuzz/freetype to avoid symbol conflicts with
|
||||
# GTK/GdkPixbuf. But NOT libjpeg — Ubuntu ships libjpeg8 (libjpeg.so.8) while
|
||||
# Debian/Fedora ship libjpeg62-turbo (libjpeg.so.62). Let mupdf vendor its own
|
||||
# libjpeg to avoid cross-distro breakage (GitHub #161, #162).
|
||||
mupdf = { version = "0.6", default-features = false, features = [
|
||||
"system-fonts",
|
||||
"sys-lib-zlib",
|
||||
"sys-lib-harfbuzz",
|
||||
"sys-lib-freetype",
|
||||
] }
|
||||
# NOTE: On Linux, use sys-lib-* for zlib/harfbuzz/freetype to avoid symbol
|
||||
# conflicts with GTK/GdkPixbuf. But NOT libjpeg — Ubuntu ships libjpeg8 while
|
||||
# Debian/Fedora ship libjpeg62-turbo. Let mupdf vendor its own libjpeg to avoid
|
||||
# cross-distro breakage (GitHub #161, #162).
|
||||
# On macOS, let mupdf vendor everything (no GTK conflicts, and system libs
|
||||
# don't support x86_64 cross-compilation from Apple Silicon).
|
||||
mupdf = { version = "0.6", default-features = false, features = ["system-fonts"] }
|
||||
|
||||
# URL opening
|
||||
open = "5"
|
||||
@@ -147,6 +144,7 @@ futures-util = "0.3"
|
||||
[target.'cfg(target_os = "linux")'.dependencies]
|
||||
tauri-plugin-dialog = { version = "2.6.0" }
|
||||
ashpd = { version = "0.13", default-features = false, features = ["tokio", "notification", "inhibit"] }
|
||||
mupdf = { version = "0.6", features = ["sys-lib-zlib", "sys-lib-harfbuzz", "sys-lib-freetype"] }
|
||||
|
||||
# Direct ALSA access for bit-perfect playback (bypasses CPAL limitations)
|
||||
alsa = "0.9"
|
||||
|
||||
Reference in new issue
Block a user