fix: made the macos app smaller
This commit is contained in:
@@ -38,29 +38,45 @@ defmodule BDS.Embeddings.Backends.NeuralTest do
|
||||
end
|
||||
|
||||
describe "accelerator selection (NativeAcceleratedExecution)" do
|
||||
# select_accelerator(configured, emlx_available?, exla_available?, apple_silicon?)
|
||||
test "auto prefers Apple GPU (EMLX) when available on Apple Silicon" do
|
||||
assert Neural.select_accelerator(:auto, true, true) == :emlx
|
||||
assert Neural.select_accelerator(:auto, true, true, true) == :emlx
|
||||
end
|
||||
|
||||
test "auto falls back to EXLA-CPU off Apple Silicon" do
|
||||
assert Neural.select_accelerator(:auto, true, false) == :exla
|
||||
assert Neural.select_accelerator(:auto, true, true, false) == :exla
|
||||
end
|
||||
|
||||
test "auto falls back to EXLA-CPU when EMLX is unavailable" do
|
||||
assert Neural.select_accelerator(:auto, false, true) == :exla
|
||||
assert Neural.select_accelerator(:auto, false, true, true) == :exla
|
||||
end
|
||||
|
||||
test "auto uses EMLX when EXLA is not shipped (pruned macOS bundle)" do
|
||||
assert Neural.select_accelerator(:auto, true, false, true) == :emlx
|
||||
assert Neural.select_accelerator(:auto, true, false, false) == :emlx
|
||||
end
|
||||
|
||||
test "explicit :exla is honoured even on Apple Silicon with EMLX present" do
|
||||
assert Neural.select_accelerator(:exla, true, true) == :exla
|
||||
assert Neural.select_accelerator(:exla, true, true, true) == :exla
|
||||
end
|
||||
|
||||
test "explicit :exla degrades to EMLX when EXLA is unavailable" do
|
||||
assert Neural.select_accelerator(:exla, true, false, true) == :emlx
|
||||
end
|
||||
|
||||
test "explicit :emlx is honoured when available" do
|
||||
assert Neural.select_accelerator(:emlx, true, true) == :emlx
|
||||
assert Neural.select_accelerator(:emlx, true, false) == :emlx
|
||||
assert Neural.select_accelerator(:emlx, true, true, true) == :emlx
|
||||
assert Neural.select_accelerator(:emlx, true, true, false) == :emlx
|
||||
end
|
||||
|
||||
test "explicit :emlx degrades to EXLA when EMLX is unavailable" do
|
||||
assert Neural.select_accelerator(:emlx, false, true) == :exla
|
||||
assert Neural.select_accelerator(:emlx, false, true, true) == :exla
|
||||
end
|
||||
|
||||
test "no accelerator available selects :none" do
|
||||
assert Neural.select_accelerator(:auto, false, false, true) == :none
|
||||
assert Neural.select_accelerator(:exla, false, false, false) == :none
|
||||
assert Neural.select_accelerator(:emlx, false, false, false) == :none
|
||||
end
|
||||
|
||||
test "defn options map each accelerator to its native compiler" do
|
||||
|
||||
@@ -436,6 +436,8 @@ defmodule BDS.MacBundleTest do
|
||||
File.write!(Path.join(release, "bin/bds"), "#!/bin/sh\necho fake release\n")
|
||||
File.mkdir_p!(Path.join(release, "lib/wx-2.4/priv"))
|
||||
File.write!(Path.join(release, "lib/wx-2.4/priv/wxe_driver.so"), "fake-nif")
|
||||
File.mkdir_p!(Path.join(release, "releases/0.1.0"))
|
||||
File.write!(Path.join(release, "releases/0.1.0/env.sh"), "# env")
|
||||
|
||||
icns = Path.join(tmp, "AppIcon.icns")
|
||||
File.write!(icns, "fake-icns")
|
||||
@@ -489,5 +491,28 @@ defmodule BDS.MacBundleTest do
|
||||
assert File.exists?(Path.join(app, "Contents/Resources/rel/bin/bds"))
|
||||
assert File.exists?(Path.join(app, "Contents/Resources/AppIcon.icns"))
|
||||
end
|
||||
|
||||
test "refuses a half-assembled release and keeps the previous bundle", %{app: app} do
|
||||
# A failed `mix release` leaves lib/ but no releases/<version>/env.sh.
|
||||
tmp = Path.join(System.tmp_dir!(), "bds-macbundle-broken-#{System.unique_integer([:positive])}")
|
||||
broken = Path.join(tmp, "rel")
|
||||
File.mkdir_p!(Path.join(broken, "bin"))
|
||||
File.mkdir_p!(Path.join(broken, "lib/wx-2.4/priv"))
|
||||
on_exit(fn -> File.rm_rf!(tmp) end)
|
||||
|
||||
assert {:error, {:incomplete_release, message}} =
|
||||
MacBundle.assemble(
|
||||
release_dir: broken,
|
||||
output_dir: Path.dirname(app),
|
||||
icns_path: Path.join(tmp, "missing.icns"),
|
||||
version: "0.1.0",
|
||||
skip_dylibs: true,
|
||||
skip_codesign: true
|
||||
)
|
||||
|
||||
assert message =~ "mix release"
|
||||
# the refused build must not have wiped the existing bundle
|
||||
assert File.exists?(Path.join(app, "Contents/Resources/rel/bin/bds"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -15,6 +15,8 @@ defmodule BDS.ReleasePackagingTest do
|
||||
File.mkdir_p!(Path.join(mcp_release, "mcp/bin"))
|
||||
File.write!(Path.join(app_release, "bin/bds"), "app-release")
|
||||
File.write!(Path.join(mcp_release, "mcp/bin/bds-mcp"), "mcp-release")
|
||||
File.mkdir_p!(Path.join(app_release, "releases/0.1.0"))
|
||||
File.write!(Path.join(app_release, "releases/0.1.0/env.sh"), "# env")
|
||||
|
||||
on_exit(fn -> File.rm_rf(base_dir) end)
|
||||
|
||||
@@ -66,6 +68,23 @@ defmodule BDS.ReleasePackagingTest do
|
||||
}
|
||||
end
|
||||
|
||||
test "package refuses a half-assembled release (no releases/*/env.sh)", context do
|
||||
# A failed `mix release` can leave lib/ copied but no releases/<version>/;
|
||||
# packaging that produces an app that dies on launch.
|
||||
File.rm_rf!(Path.join(context.app_release, "releases"))
|
||||
|
||||
assert {:error, {:incomplete_release, message}} =
|
||||
ReleasePackaging.package(
|
||||
platform: :macos,
|
||||
version: "0.1.0",
|
||||
output_dir: context.output_dir,
|
||||
app_release_source: context.app_release,
|
||||
mcp_release_source: context.mcp_release
|
||||
)
|
||||
|
||||
assert message =~ "mix release"
|
||||
end
|
||||
|
||||
test "package creates a platform archive for redistribution", context do
|
||||
assert {:ok, metadata} =
|
||||
ReleasePackaging.package(
|
||||
|
||||
Reference in New Issue
Block a user