From bec7d14522a6dee0b1321409a9145deb3e8c5adf Mon Sep 17 00:00:00 2001 From: GenericJam Date: Fri, 28 Aug 2026 00:03:18 -0600 Subject: [PATCH 1/2] fix(deploy): verify iOS BEAM overrides --- AGENTS.md | 9 +++ lib/mob_dev/deployer.ex | 122 ++++++++++++++++++++++++++++----- lib/mob_dev/hot_push.ex | 100 ++++++++++++++++++++------- test/mob_dev/deployer_test.exs | 105 ++++++++++++++++++++++++++++ test/mob_dev/hot_push_test.exs | 111 +++++++++++++++++++++++++++++- 5 files changed, 405 insertions(+), 42 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 68e821a2..04bea7fa 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -41,6 +41,15 @@ mix test --exclude integration # skip the device-dependent ones `narrow_platforms_for_device/2` and is the single source of truth for both build and deploy. Bypass it and you'll get either spurious "No device matched" warnings (deploy) or builds for the wrong platform (build). +- **Deployment BEAM discovery follows Mix's active paths.** Use + `Mix.Project.build_path/0` for dependency output and + `Mix.Project.compile_path/0` for every application BEAM, including modules + compiled from `erlc_paths`. Hard-coding `_build/dev` can push a stale, + incomplete override that shadows the complete application bundle. +- **Physical iOS BEAM overrides must be exact and self-verifying.** The app + prefers `Documents/otp/` over its complete signed bundle. Replace that + directory rather than incrementally merging it, require `.beam` before + transfer, and verify the received bootstrap bytes before restarting. - **`xcodebuild` errors get rewritten** to actionable hints by `diagnose_xcodebuild_failure/1` in `mob.provision`. Apple's verbatim text is preserved alongside our hint so the snippet stays google-able. Add new diff --git a/lib/mob_dev/deployer.ex b/lib/mob_dev/deployer.ex index 80d2c78f..53b832b3 100644 --- a/lib/mob_dev/deployer.ex +++ b/lib/mob_dev/deployer.ex @@ -1,6 +1,6 @@ defmodule MobDev.Deployer do @moduledoc """ - Pushes compiled BEAM files from `_build/dev/lib/*/ebin/` to connected devices. + Pushes compiled BEAM files from the active Mix build path to connected devices. Does NOT rebuild APKs or recompile native code — that's `deploy.sh` (first-time setup). Use this for day-to-day code iteration: edit Elixir → `mix mob.deploy` → code running. @@ -963,11 +963,92 @@ defmodule MobDev.Deployer do # # The merged staging dir is named so that devicectl's directory-copy # semantics land the files at Documents/otp// on device. + @doc false + @spec validate_ios_override(String.t(), String.t(), String.t()) :: + :ok | {:error, String.t()} + def validate_ios_override(compile_path, staging_dir, app) do + active_bootstrap = Path.join(compile_path, "#{app}.beam") + staged_bootstrap = Path.join(staging_dir, "#{app}.beam") + + case File.stat(active_bootstrap) do + {:ok, %{type: :regular, size: size}} when size > 0 -> + case verify_ios_bootstrap(active_bootstrap, staged_bootstrap) do + :ok -> + :ok + + {:error, reason} -> + {:error, "iOS override does not match active compile output: #{reason}"} + end + + _ -> + {:error, + "active Mix compile output missing required application bootstrap: #{active_bootstrap}"} + end + end + + @doc false + @spec ios_override_copy_args(String.t(), String.t(), String.t(), String.t()) :: [String.t()] + def ios_override_copy_args(udid, bundle, staging_dir, app) do + [ + "devicectl", + "device", + "copy", + "to", + "--device", + udid, + "--domain-type", + "appDataContainer", + "--domain-identifier", + bundle, + "--source", + staging_dir, + "--destination", + "Documents/otp/#{app}", + "--remove-existing-content", + "true" + ] + end + + @doc false + @spec ios_override_verify_args(String.t(), String.t(), String.t(), String.t()) :: [String.t()] + def ios_override_verify_args(udid, bundle, destination, app) do + [ + "devicectl", + "device", + "copy", + "from", + "--device", + udid, + "--domain-type", + "appDataContainer", + "--domain-identifier", + bundle, + "--source", + "Documents/otp/#{app}/#{app}.beam", + "--destination", + destination + ] + end + + @doc false + @spec verify_ios_bootstrap(String.t(), String.t()) :: :ok | {:error, String.t()} + def verify_ios_bootstrap(expected, actual) do + with {:ok, expected_binary} <- File.read(expected), + {:ok, ^expected_binary} <- File.read(actual) do + :ok + else + {:ok, _other} -> {:error, "physical iOS bootstrap verification mismatch"} + {:error, reason} -> {:error, "physical iOS bootstrap verification failed: #{reason}"} + end + end + defp deploy_ios_physical(%Device{serial: udid} = device, beam_dirs, opts) do restart = Keyword.get(opts, :restart, true) beam_flags = Keyword.get(opts, :beam_flags, nil) bundle = ios_bundle_id() app = app_name() + compile_path = Mix.Project.compile_path() + active_bootstrap = Path.join(compile_path, "#{app}.beam") # When discovered via WiFi-only EPMD scan the serial is the IP address, which # xcrun devicectl does not accept as a --device argument. Resolve to a hardware @@ -1016,27 +1097,17 @@ defmodule MobDev.Deployer do File.write!(Path.join(staging_dir, "mob_beam_flags"), beam_flags) end + case validate_ios_override(compile_path, staging_dir, app) do + :ok -> :ok + {:error, reason} -> throw({:error, reason}) + end + # devicectl copies the contents of --source into --destination. # To land BEAMs at Documents/otp//, the destination must include # the app subdirectory explicitly (staging_dir naming alone is not enough). case System.cmd( "xcrun", - [ - "devicectl", - "device", - "copy", - "to", - "--device", - udid, - "--domain-type", - "appDataContainer", - "--domain-identifier", - bundle, - "--source", - staging_dir, - "--destination", - "Documents/otp/#{app}" - ], + ios_override_copy_args(udid, bundle, staging_dir, app), stderr_to_stdout: true ) do {_, 0} -> @@ -1067,6 +1138,23 @@ defmodule MobDev.Deployer do throw({:error, reason}) end + received_bootstrap = Path.join(staging_parent, "received_#{app}.beam") + + case System.cmd( + "xcrun", + ios_override_verify_args(udid, bundle, received_bootstrap, app), + stderr_to_stdout: true + ) do + {_, 0} -> + case verify_ios_bootstrap(active_bootstrap, received_bootstrap) do + :ok -> :ok + {:error, reason} -> throw({:error, reason}) + end + + {out, _} -> + throw({:error, "physical iOS bootstrap verification failed: #{out}"}) + end + if restart, do: IOS.restart_app_physical(udid, bundle) {:ok, device} diff --git a/lib/mob_dev/hot_push.ex b/lib/mob_dev/hot_push.ex index f9de282f..ea816cfa 100644 --- a/lib/mob_dev/hot_push.ex +++ b/lib/mob_dev/hot_push.ex @@ -44,7 +44,7 @@ defmodule MobDev.HotPush do end @doc """ - Pushes all compiled BEAM files from `_build/dev/lib/*/ebin/` to `nodes`. + Pushes all compiled BEAM files from the active Mix build path to `nodes`. Only pushes BEAMs for runtime dependencies — deps marked `only: :dev` or `runtime: false` in `mix.exs` (and their transitive deps) are excluded. @@ -106,12 +106,14 @@ defmodule MobDev.HotPush do # their transitive deps (resolved via OTP .app files). defp runtime_beam_paths do runtime = runtime_lib_names() + project_app = to_string(Mix.Project.config()[:app]) - Path.wildcard("_build/dev/lib/*/ebin/*.beam") - |> Enum.filter(fn path -> - lib = path |> Path.split() |> Enum.at(-3) - MapSet.member?(runtime, lib) - end) + select_runtime_beam_paths( + Mix.Project.build_path(), + Mix.Project.compile_path(), + runtime, + project_app + ) end @doc """ @@ -121,39 +123,65 @@ defmodule MobDev.HotPush do @spec runtime_beam_dirs() :: [String.t()] def runtime_beam_dirs do runtime = runtime_lib_names() + project_app = to_string(Mix.Project.config()[:app]) - case File.ls("_build/dev/lib") do - {:ok, libs} -> - libs - |> Enum.filter(&MapSet.member?(runtime, &1)) - |> Enum.map(&"_build/dev/lib/#{&1}/ebin") - |> Enum.filter(&File.dir?/1) + select_runtime_beam_dirs( + Mix.Project.build_path(), + Mix.Project.compile_path(), + runtime, + project_app + ) + end - {:error, _} -> - [] - end + @doc false + @spec select_runtime_beam_paths(String.t(), String.t(), MapSet.t(String.t()), String.t()) :: + [String.t()] + def select_runtime_beam_paths(build_path, compile_path, runtime, project_app) do + build_path + |> select_runtime_beam_dirs(compile_path, runtime, project_app) + |> Enum.flat_map(&beam_files/1) end - defp runtime_lib_names do - project_app = to_string(Mix.Project.config()[:app]) + @doc false + @spec select_runtime_beam_dirs(String.t(), String.t(), MapSet.t(String.t()), String.t()) :: + [String.t()] + def select_runtime_beam_dirs(build_path, compile_path, runtime, project_app) do + lib_path = Path.join(build_path, "lib") + + runtime_dirs = + case File.ls(lib_path) do + {:ok, libs} -> + libs + |> Enum.filter(&(MapSet.member?(runtime, &1) and &1 != project_app)) + |> Enum.map(&Path.join([lib_path, &1, "ebin"])) + |> Enum.filter(&File.dir?/1) + + {:error, _} -> + [] + end + + dependency_dirs = Enum.sort(runtime_dirs) + + if File.dir?(compile_path), do: dependency_dirs ++ [compile_path], else: dependency_dirs + end + defp runtime_lib_names do # Direct runtime deps: no only: :dev and not runtime: false direct = Mix.Project.config() |> Keyword.get(:deps, []) |> Enum.flat_map(&dep_runtime_name/1) |> MapSet.new() - |> MapSet.put(project_app) - expand_runtime_libs(direct) + expand_runtime_libs(direct, Mix.Project.build_path()) end # Expand a set of lib names to include their transitive OTP deps, - # by reading each lib's .app file in _build/dev. - defp expand_runtime_libs(libs) do + # by reading each lib's .app file in the active Mix build path. + defp expand_runtime_libs(libs, build_path) do new_libs = Enum.flat_map(libs, fn lib -> - case Path.wildcard("_build/dev/lib/#{lib}/ebin/*.app") do + case app_files(Path.join([build_path, "lib", lib, "ebin"])) do [app_file | _] -> case :file.consult(String.to_charlist(app_file)) do {:ok, [{:application, _app, props}]} -> @@ -173,7 +201,33 @@ defmodule MobDev.HotPush do if MapSet.size(new_libs) == 0 do libs else - expand_runtime_libs(MapSet.union(libs, new_libs)) + expand_runtime_libs(MapSet.union(libs, new_libs), build_path) + end + end + + defp beam_files(dir) do + case File.ls(dir) do + {:ok, files} -> + files + |> Enum.filter(&String.ends_with?(&1, ".beam")) + |> Enum.sort() + |> Enum.map(&Path.join(dir, &1)) + + {:error, _} -> + [] + end + end + + defp app_files(dir) do + case File.ls(dir) do + {:ok, files} -> + files + |> Enum.filter(&String.ends_with?(&1, ".app")) + |> Enum.sort() + |> Enum.map(&Path.join(dir, &1)) + + {:error, _} -> + [] end end diff --git a/test/mob_dev/deployer_test.exs b/test/mob_dev/deployer_test.exs index 3af517d4..53f98bbf 100644 --- a/test/mob_dev/deployer_test.exs +++ b/test/mob_dev/deployer_test.exs @@ -3,6 +3,111 @@ defmodule MobDev.DeployerTest do alias MobDev.Deployer + describe "physical iOS override" do + test "requires staged bootstrap bytes to match the active compile output" do + root = Path.join(System.tmp_dir!(), "mob_ios_override_#{System.unique_integer()}") + compile_path = Path.join(root, "compile") + staging_dir = Path.join(root, "staging") + File.mkdir_p!(compile_path) + File.mkdir_p!(staging_dir) + on_exit(fn -> File.rm_rf!(root) end) + + assert {:error, message} = + Deployer.validate_ios_override(compile_path, staging_dir, "sample_app") + + assert message =~ "active Mix compile output" + assert message =~ Path.join(compile_path, "sample_app.beam") + + File.write!(Path.join(compile_path, "sample_app.beam"), "current bootstrap") + + assert {:error, message} = + Deployer.validate_ios_override(compile_path, staging_dir, "sample_app") + + assert message =~ "does not match active compile output" + + File.write!(Path.join(staging_dir, "sample_app.beam"), "stale dependency bootstrap") + + assert {:error, message} = + Deployer.validate_ios_override(compile_path, staging_dir, "sample_app") + + assert message =~ "verification mismatch" + + File.write!(Path.join(staging_dir, "sample_app.beam"), "current bootstrap") + + assert :ok = + Deployer.validate_ios_override(compile_path, staging_dir, "sample_app") + end + + test "copy command replaces the exact override directory" do + args = Deployer.ios_override_copy_args("device-id", "com.example.app", "/tmp/app", "app") + + assert args == [ + "devicectl", + "device", + "copy", + "to", + "--device", + "device-id", + "--domain-type", + "appDataContainer", + "--domain-identifier", + "com.example.app", + "--source", + "/tmp/app", + "--destination", + "Documents/otp/app", + "--remove-existing-content", + "true" + ] + end + + test "verification command retrieves the exact remote bootstrap" do + assert Deployer.ios_override_verify_args( + "device-id", + "com.example.app", + "/tmp/received.beam", + "app" + ) == [ + "devicectl", + "device", + "copy", + "from", + "--device", + "device-id", + "--domain-type", + "appDataContainer", + "--domain-identifier", + "com.example.app", + "--source", + "Documents/otp/app/app.beam", + "--destination", + "/tmp/received.beam" + ] + end + + test "remote bootstrap must match staged bytes" do + dir = Path.join(System.tmp_dir!(), "mob_ios_verify_#{System.unique_integer()}") + staged = Path.join(dir, "staged.beam") + received = Path.join(dir, "received.beam") + File.mkdir_p!(dir) + File.write!(staged, "same beam") + File.write!(received, "same beam") + on_exit(fn -> File.rm_rf!(dir) end) + + assert :ok = Deployer.verify_ios_bootstrap(staged, received) + + File.write!(received, "different beam") + + assert {:error, "physical iOS bootstrap verification mismatch"} = + Deployer.verify_ios_bootstrap(staged, received) + + File.rm!(received) + + assert {:error, "physical iOS bootstrap verification failed: enoent"} = + Deployer.verify_ios_bootstrap(staged, received) + end + end + # ── generate_crypto_shim/0 ──────────────────────────────────────────────── describe "generate_crypto_shim/0" do diff --git a/test/mob_dev/hot_push_test.exs b/test/mob_dev/hot_push_test.exs index ee9f3b26..d4e97712 100644 --- a/test/mob_dev/hot_push_test.exs +++ b/test/mob_dev/hot_push_test.exs @@ -3,6 +3,105 @@ defmodule MobDev.HotPushTest do alias MobDev.HotPush + describe "select_runtime_beam_paths/4" do + test "uses only active app beams when the build path has stale app output" do + root = Path.join(System.tmp_dir!(), "mob_[edge]_paths_#{System.unique_integer()}") + build_path = Path.join(root, "active-build") + app_ebin = Path.join(root, "application-ebin") + File.mkdir_p!(app_ebin) + + erlang_bootstrap = Path.join(app_ebin, "sample_app.beam") + elixir_module = Path.join(app_ebin, "Elixir.SampleApp.beam") + File.write!(erlang_bootstrap, "erlang") + File.write!(elixir_module, "elixir") + File.write!(Path.join(app_ebin, "sample_app.app"), "app metadata") + + stale_app_ebin = Path.join([build_path, "lib", "sample_app", "ebin"]) + File.mkdir_p!(stale_app_ebin) + stale_bootstrap = Path.join(stale_app_ebin, "sample_app.beam") + removed_module = Path.join(stale_app_ebin, "Elixir.RemovedModule.beam") + File.write!(stale_bootstrap, "stale erlang") + File.write!(removed_module, "removed") + + runtime_ebin = Path.join([build_path, "lib", "runtime_dep", "ebin"]) + File.mkdir_p!(runtime_ebin) + runtime_module = Path.join(runtime_ebin, "Elixir.RuntimeDep.beam") + File.write!(runtime_module, "runtime") + + dev_ebin = Path.join([build_path, "lib", "dev_tool", "ebin"]) + File.mkdir_p!(dev_ebin) + File.write!(Path.join(dev_ebin, "Elixir.DevTool.beam"), "dev") + + on_exit(fn -> File.rm_rf!(root) end) + + runtime = MapSet.new(["sample_app", "runtime_dep"]) + + selected = + HotPush.select_runtime_beam_paths(build_path, app_ebin, runtime, "sample_app") + + assert selected == [ + runtime_module, + elixir_module, + erlang_bootstrap + ] + + refute stale_bootstrap in selected + refute removed_module in selected + end + end + + describe "select_runtime_beam_dirs/4" do + test "selects the active application ebin and excludes stale build output" do + root = Path.join(System.tmp_dir!(), "mob_[edge]_dirs_#{System.unique_integer()}") + build_path = Path.join(root, "active-build") + app_ebin = Path.join(root, "application-ebin") + File.mkdir_p!(app_ebin) + File.write!(Path.join(app_ebin, "sample_app.beam"), "erlang") + File.write!(Path.join(app_ebin, "Elixir.SampleApp.beam"), "elixir") + + stale_app_ebin = Path.join([build_path, "lib", "sample_app", "ebin"]) + File.mkdir_p!(stale_app_ebin) + File.write!(Path.join(stale_app_ebin, "sample_app.beam"), "stale erlang") + File.write!(Path.join(stale_app_ebin, "Elixir.RemovedModule.beam"), "removed") + + dep_ebin = Path.join([build_path, "lib", "runtime_dep", "ebin"]) + File.mkdir_p!(dep_ebin) + File.write!(Path.join(dep_ebin, "Elixir.RuntimeDep.beam"), "dep") + + dev_ebin = Path.join([build_path, "lib", "dev_tool", "ebin"]) + File.mkdir_p!(dev_ebin) + File.write!(Path.join(dev_ebin, "Elixir.DevTool.beam"), "dev") + + on_exit(fn -> File.rm_rf!(root) end) + + dirs = + HotPush.select_runtime_beam_dirs( + build_path, + app_ebin, + MapSet.new(["sample_app", "runtime_dep"]), + "sample_app" + ) + + assert dirs == [dep_ebin, app_ebin] + refute dev_ebin in dirs + refute stale_app_ebin in dirs + + staged_names = + dirs + |> Enum.flat_map(&File.ls!/1) + |> MapSet.new() + + assert MapSet.subset?( + MapSet.new([ + "sample_app.beam", + "Elixir.SampleApp.beam", + "Elixir.RuntimeDep.beam" + ]), + staged_names + ) + end + end + # ── snapshot_beams/0 ───────────────────────────────────────────────────────── describe "snapshot_beams/0" do @@ -65,8 +164,16 @@ defmodule MobDev.HotPushTest do test "push count is less than total beam files in _build" do # push_all only pushes runtime deps — dev-only deps (mob_dev itself, Bandit, - # Phoenix, etc.) must be excluded even though their BEAMs are in _build/dev. - total_beams = Path.wildcard("_build/dev/lib/*/ebin/*.beam") |> length() + # Phoenix, etc.) must be excluded even though their BEAMs are in the build path. + total_beams = + Mix.Project.build_path() + |> Path.join("lib") + |> File.ls!() + |> Enum.map(&Path.join([Mix.Project.build_path(), "lib", &1, "ebin"])) + |> Enum.filter(&File.dir?/1) + |> Enum.flat_map(&File.ls!/1) + |> Enum.count(&String.ends_with?(&1, ".beam")) + {pushed, _} = HotPush.push_all([]) assert pushed > 0 assert pushed < total_beams From d45cf711206d105b58a7aceccdb876410e352706 Mon Sep 17 00:00:00 2001 From: GenericJam Date: Fri, 28 Aug 2026 00:37:36 -0600 Subject: [PATCH 2/2] Address review of iOS override verification; fix a dependency-drop regression MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two adversarial passes plus a device session on a physical iPhone SE. The mechanism in this PR works — I deployed through it, pulled Documents/otp/ /.beam back off the device with an independent devicectl call and confirmed it byte-identical to the compile output, and the app booted clean. These are the fixes around it. BLOCKER 1 — every deploy, every platform. runtime_lib_names/0 stopped seeding the expansion with project_app, so the project's own .app was never read. A dep declared `runtime: false` and opted back in via `extra_applications:` — the documented idiom, where extra_applications deliberately overrides the flag — was silently dropped from the push. Reproduced against a real fixture project: master resolves ["lazy_lib", "proj"], this PR resolves ["proj"]. On device the app boots and dies with undef on first use — the same failure class this PR exists to eliminate, relocated from the bootstrap to a dependency. The removal was not gratuitous: seeding also leaked only: :dev deps into the runtime set, contradicting the moduledoc. So expand first, then subtract the deps we know are dev-only, keeping anything the project re-declares in extra_applications. Fixture now resolves ["lazy_lib", "proj"] again with mob_dev (only: :dev) correctly absent. Worth noting one trap in the fix itself: extra_applications lives on the project module's application/0 callback, NOT in Mix.Project.config/0. Reading it from config yields [] and silently subtracts the very libs being protected — which is what my first attempt did, caught by the fixture. BLOCKER 2 — the destructive copy has no rollback. --remove-existing-content makes a mid-transfer failure worse than the bug being fixed: mob_beam.m:317 prefers Documents/otp/ on directory EXISTENCE alone, so a partial override shadows the complete signed bundle and the next Springboard launch dies with undef, even though the deploy correctly skipped the restart. There is no clean repair — devicectl has no delete verb, and pushing an empty directory leaves it present and therefore still preferred, which is strictly worse. So the failure path now states the override is incomplete and names the two recoveries that do work. Verified mob_beam.m and the devicectl verb list directly. Also: - Mix.Project.compile_path/0 raises at an umbrella root, where the old _build/dev wildcard degraded. Now raises mob's own "umbrellas not supported" message. - The WiFi-only-device throw sat OUTSIDE the try, so it escaped deploy_ios/3 and deploy_all/1 (neither catches) and aborted the whole run with a raw ** (throw), losing the summary for devices that already succeeded. Returns now. - Staging dirs are PID-qualified; unique_integer restarts low in a fresh VM, so two concurrent deploys could collide and one's cleanup delete the other's. - validate_ios_override distinguishes a MISSING staged bootstrap from a MISMATCHED one; the old message wrapped enoent inside "does not match active compile output" and pointed at the wrong file. The test asserted that misleading string, so it was pinning the confusion. - runtime_lib_names/0 now has coverage. It is the function that decides the push set and had none — every existing test hand-builds the MapSet it produces, so this regression stayed green across 2146 tests. Verified: 2148 tests, format, compile --warnings-as-errors, credo --strict, and a real deploy to the physical iPhone that boots and renders. Co-Authored-By: Claude Opus 5 (1M context) --- CHANGELOG.md | 30 +++ android/app/src/main/assets/mob_logo_dark.png | Bin 0 -> 61375 bytes .../app/src/main/assets/mob_logo_light.png | Bin 0 -> 37096 bytes android/app/src/main/res/values/styles.xml | 8 + .../src/main/res/xml/file_provider_paths.xml | 7 + .../main/res/xml/network_security_config.xml | 8 + android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 63375 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + android/gradlew | 248 ++++++++++++++++++ lib/mob_dev/deployer.ex | 100 ++++++- lib/mob_dev/hot_push.ex | 90 ++++++- test/mob_dev/deployer_test.exs | 8 +- test/mob_dev/hot_push_test.exs | 37 +++ 13 files changed, 526 insertions(+), 17 deletions(-) create mode 100644 android/app/src/main/assets/mob_logo_dark.png create mode 100644 android/app/src/main/assets/mob_logo_light.png create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/main/res/xml/file_provider_paths.xml create mode 100644 android/app/src/main/res/xml/network_security_config.xml create mode 100644 android/gradle/wrapper/gradle-wrapper.jar create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100755 android/gradlew diff --git a/CHANGELOG.md b/CHANGELOG.md index e87c62b6..d8915a74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,36 @@ Full module documentation: [hexdocs.pm/mob_dev](https://hexdocs.pm/mob_dev). ## [Unreleased] +### Fixed +- **`mix mob.deploy` no longer drops dependencies reachable only through + `extra_applications`.** The runtime filter stopped consulting the project's + own `.app` file, so a dep declared `runtime: false` and opted back in via + `extra_applications:` — the documented idiom — was silently never pushed. The + app booted and died with `undef` on first use. The project's `.app` is + traversed again, with dev-only deps subtracted afterwards rather than by + skipping the traversal. +- BEAM discovery follows `Mix.Project.build_path/0` and `compile_path/0` instead + of a hardcoded `_build/dev`, so a non-dev `MIX_ENV` or a custom `:build_path` + is honoured. Projects using `build_per_environment: false` previously pushed + no dependency BEAMs at all. +- `mix mob.deploy` from an umbrella root now reports that mob does not support + umbrellas instead of leaking a raw `Mix.Project.app_path/1` error. +- A physical-iOS deploy targeting a WiFi-only device returns a per-device error + instead of throwing past the run and aborting every other device's summary. +- iOS staging directories are PID-qualified, so two concurrent deploys cannot + delete each other's staging mid-copy. + +### Changed +- **Physical iOS overrides are now replaced, not merged** + (`devicectl --remove-existing-content`), and the transfer is verified before + the app is restarted. Note the trade-off: because `mob_beam.m` prefers + `Documents/otp/` on directory existence alone, a transfer interrupted + after the copy begins leaves an incomplete override that the next launch will + still prefer over the signed bundle. There is no rollback — `devicectl` has no + delete verb, and an empty directory is still preferred — so the deploy now + says so explicitly and names the recoveries (re-run the deploy, or reinstall). + + ### Added - **`mix mob.doctor` warns when a project still carries the pre-MOB-104 sheet dismissal wiring.** An app generated before the fix routes diff --git a/android/app/src/main/assets/mob_logo_dark.png b/android/app/src/main/assets/mob_logo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..72ad18b6c38c640d69b6bbe3e6f7e8fec34be677 GIT binary patch literal 61375 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�f_mW?}aSe0@G!7Q|k81fUWV(J_mlu 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 G;iO?S@moot=k*zZ!ta!9&qD|(galAwEk`2^ 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 + + + diff --git a/android/app/src/main/res/xml/file_provider_paths.xml b/android/app/src/main/res/xml/file_provider_paths.xml new file mode 100644 index 00000000..85df8c53 --- /dev/null +++ b/android/app/src/main/res/xml/file_provider_paths.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/android/app/src/main/res/xml/network_security_config.xml b/android/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 00000000..f3d7653b --- /dev/null +++ b/android/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,8 @@ + + + + + 127.0.0.1 + localhost + + diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..033e24c4cdf41af1ab109bc7f253b2b887023340 GIT binary patch literal 63375 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≫L+crb^Bz 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 '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/lib/mob_dev/deployer.ex b/lib/mob_dev/deployer.ex index 53b832b3..6ab3f240 100644 --- a/lib/mob_dev/deployer.ex +++ b/lib/mob_dev/deployer.ex @@ -972,12 +972,22 @@ defmodule MobDev.Deployer do case File.stat(active_bootstrap) do {:ok, %{type: :regular, size: size}} when size > 0 -> - case verify_ios_bootstrap(active_bootstrap, staged_bootstrap) do - :ok -> - :ok + cond do + not File.regular?(staged_bootstrap) -> + # Absence, not mismatch. Wrapping the enoent inside "does not match + # active compile output" pointed the user at the wrong file. + {:error, + "staged iOS override is missing the application bootstrap " <> + "(#{Path.basename(staged_bootstrap)}) — the staging copy dropped it"} - {:error, reason} -> - {:error, "iOS override does not match active compile output: #{reason}"} + true -> + case verify_ios_bootstrap(active_bootstrap, staged_bootstrap) do + :ok -> + :ok + + {:error, reason} -> + {:error, "iOS override does not match active compile output: #{reason}"} + end end _ -> @@ -1055,16 +1065,47 @@ defmodule MobDev.Deployer do # UDID before proceeding. udid = resolve_ios_udid_if_ip(udid) - if Regex.match?(Regex.compile!("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$"), udid) do - throw( - {:error, - "device only reachable via WiFi (#{udid}) — use `mix mob.push` for BEAM-only updates, or connect via USB for a native deploy"} - ) + # Returned, not thrown: this sits OUTSIDE the try/catch below, so a throw + # here escapes deploy_ios/3 and deploy_all/1 (neither catches) and aborts + # the whole run with a raw ** (throw) — losing the summary for devices that + # already succeeded, instead of marking just this one failed. + wifi_only? = + Regex.match?(Regex.compile!("^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$"), udid) + + if wifi_only? do + {:error, + "device only reachable via WiFi (#{udid}) — use `mix mob.push` for BEAM-only updates, or connect via USB for a native deploy"} + else + do_deploy_ios_physical(device, beam_dirs, %{ + udid: udid, + bundle: bundle, + app: app, + compile_path: compile_path, + active_bootstrap: active_bootstrap, + restart: restart, + beam_flags: beam_flags + }) end + end + defp do_deploy_ios_physical(device, beam_dirs, %{ + udid: udid, + bundle: bundle, + app: app, + compile_path: compile_path, + active_bootstrap: active_bootstrap, + restart: restart, + beam_flags: beam_flags + }) do # Stage all BEAMs (and priv/) into a temp dir named . + # PID-qualified: unique_integer restarts low in a fresh VM, so two + # concurrent `mix mob.deploy` runs could previously collide and one's + # `after` cleanup would delete the other's staging mid-copy. staging_parent = - Path.join(System.tmp_dir!(), "mob_ios_deploy_#{:erlang.unique_integer([:positive])}") + Path.join( + System.tmp_dir!(), + "mob_ios_deploy_#{:os.getpid()}_#{:erlang.unique_integer([:positive])}" + ) staging_dir = Path.join(staging_parent, app) File.mkdir_p!(staging_dir) @@ -1105,6 +1146,14 @@ defmodule MobDev.Deployer do # devicectl copies the contents of --source into --destination. # To land BEAMs at Documents/otp//, the destination must include # the app subdirectory explicitly (staging_dir naming alone is not enough). + # From here the on-device override is being REPLACED, not merged + # (--remove-existing-content). Any failure past this point leaves it in + # an unknown state, and mob_beam.m prefers Documents/otp/ on mere + # directory existence — so there is no falling back to the signed + # bundle, and `xcrun devicectl device` has no delete verb to undo it. + # Record that we crossed the line so the error can say so. + Process.put(:mob_ios_override_replaced, true) + case System.cmd( "xcrun", ios_override_copy_args(udid, bundle, staging_dir, app), @@ -1157,14 +1206,41 @@ defmodule MobDev.Deployer do if restart, do: IOS.restart_app_physical(udid, bundle) + Process.delete(:mob_ios_override_replaced) {:ok, device} catch - {:error, reason} -> {:error, reason} + {:error, reason} -> + {:error, annotate_override_state(reason, app)} after + Process.delete(:mob_ios_override_replaced) File.rm_rf!(staging_parent) end end + # If the destructive copy had already begun, the device is now in a worse + # state than we found it: Documents/otp/ exists but is incomplete, and + # mob_beam.m selects that override on directory existence alone. The app will + # boot from it — and fail — on the next launch from Springboard, even though + # we correctly skipped the restart. + # + # There is no clean rollback. `xcrun devicectl device` has no delete verb, and + # copying an EMPTY directory does not help: the directory still exists, so it + # is still preferred, and the app would then have no BEAMs at all. So say so + # plainly and give the two recoveries that do work. + defp annotate_override_state(reason, app) do + if Process.get(:mob_ios_override_replaced) do + reason <> + "\n\nThe on-device override at Documents/otp/#{app} was already being " <> + "replaced when this failed, so it is now incomplete. The app prefers that " <> + "directory over its signed bundle, so the next launch will fail even " <> + "though it was not restarted.\n" <> + "Recover with a successful `mix mob.deploy` (or `--native`), or delete " <> + "and reinstall the app." + else + reason + end + end + # ── iOS WiFi UDID resolution ────────────────────────────────────────────────── # When a physical device was discovered only via LAN EPMD scan (no USB), its diff --git a/lib/mob_dev/hot_push.ex b/lib/mob_dev/hot_push.ex index ea816cfa..0a6192d0 100644 --- a/lib/mob_dev/hot_push.ex +++ b/lib/mob_dev/hot_push.ex @@ -110,7 +110,7 @@ defmodule MobDev.HotPush do select_runtime_beam_paths( Mix.Project.build_path(), - Mix.Project.compile_path(), + active_compile_path(), runtime, project_app ) @@ -127,7 +127,7 @@ defmodule MobDev.HotPush do select_runtime_beam_dirs( Mix.Project.build_path(), - Mix.Project.compile_path(), + active_compile_path(), runtime, project_app ) @@ -165,15 +165,97 @@ defmodule MobDev.HotPush do if File.dir?(compile_path), do: dependency_dirs ++ [compile_path], else: dependency_dirs end + # Mix.Project.compile_path/0 RAISES for an umbrella root ("umbrellas have no + # app"), where the previous hardcoded _build/dev wildcard just returned + # nothing. mob does not support umbrellas (MobDev.AdoptGuard refuses them + # outright), so fail with that message rather than leaking Mix's internal + # error out of a deploy. + defp active_compile_path do + if Mix.Project.umbrella?() do + Mix.raise( + "mob does not support umbrella applications — run mix mob.deploy from a " <> + "child app, not the umbrella root" + ) + end + + Mix.Project.compile_path() + end + + @doc false + # Test seam. runtime_lib_names/0 reads Mix.Project.config() and is the + # function that actually decides what gets pushed, but being private it had + # no coverage — the tests all hand-built the MapSet it produces and so could + # not catch a regression in it. Exposed so a fixture project can drive it. + @spec __runtime_lib_names__() :: MapSet.t(String.t()) + def __runtime_lib_names__, do: runtime_lib_names() + defp runtime_lib_names do + config = Mix.Project.config() + project_app = to_string(config[:app]) + # Direct runtime deps: no only: :dev and not runtime: false direct = - Mix.Project.config() + config |> Keyword.get(:deps, []) |> Enum.flat_map(&dep_runtime_name/1) |> MapSet.new() - expand_runtime_libs(direct, Mix.Project.build_path()) + # Seed with the project itself so its OWN .app is traversed. A dependency + # can be reachable only through the project's `applications:` list — the + # documented `runtime: false` + `extra_applications:` idiom, where + # extra_applications deliberately overrides the runtime: false flag. Drop + # the seed and those libs are never pushed; the app boots and dies with + # undef on first use, which is the same failure class this module exists + # to avoid. + # + # The reason the seed was previously removed is real though: the project's + # .app also lists `only: :dev` deps under MIX_ENV=dev, which leaked them + # into the runtime set and contradicted this module's docs. So expand + # first, then subtract the deps we know are dev-only or runtime: false. + # project_app itself is excluded at the directory-selection step + # (select_runtime_beam_dirs/4), where the stale-output concern lives. + expanded = + direct + |> MapSet.put(project_app) + |> expand_runtime_libs(Mix.Project.build_path()) + + MapSet.difference(expanded, non_runtime_dep_names(config)) + end + + # Names of direct deps explicitly marked `only: :dev`/`:test` or + # `runtime: false`, EXCEPT any the project re-declares in + # `extra_applications` — that combination is how a build-time dep is opted + # back into the runtime application list, and it must survive the subtraction. + defp non_runtime_dep_names(config) do + # extra_applications lives on the project module's application/0 callback, + # NOT in Mix.Project.config/0 — reading it from config silently yields [] + # and subtracts the very libs this is meant to keep. + kept = + case Mix.Project.get() do + nil -> + MapSet.new() + + module -> + if function_exported?(module, :application, 0) do + module.application() + |> Keyword.get(:extra_applications, []) + |> Enum.map(&to_string/1) + |> MapSet.new() + else + MapSet.new() + end + end + + config + |> Keyword.get(:deps, []) + |> Enum.flat_map(fn dep -> + case dep_runtime_name(dep) do + [] -> [to_string(elem(dep, 0))] + _ -> [] + end + end) + |> MapSet.new() + |> MapSet.difference(kept) end # Expand a set of lib names to include their transitive OTP deps, diff --git a/test/mob_dev/deployer_test.exs b/test/mob_dev/deployer_test.exs index 53f98bbf..cc501022 100644 --- a/test/mob_dev/deployer_test.exs +++ b/test/mob_dev/deployer_test.exs @@ -20,16 +20,22 @@ defmodule MobDev.DeployerTest do File.write!(Path.join(compile_path, "sample_app.beam"), "current bootstrap") + # Staged file ABSENT is a different fault from staged file DIFFERENT, and + # must say so — wrapping the enoent in "does not match active compile + # output" sent the reader to the wrong file. assert {:error, message} = Deployer.validate_ios_override(compile_path, staging_dir, "sample_app") - assert message =~ "does not match active compile output" + assert message =~ "missing the application bootstrap" + assert message =~ "sample_app.beam" + refute message =~ "does not match active compile output" File.write!(Path.join(staging_dir, "sample_app.beam"), "stale dependency bootstrap") assert {:error, message} = Deployer.validate_ios_override(compile_path, staging_dir, "sample_app") + assert message =~ "does not match active compile output" assert message =~ "verification mismatch" File.write!(Path.join(staging_dir, "sample_app.beam"), "current bootstrap") diff --git a/test/mob_dev/hot_push_test.exs b/test/mob_dev/hot_push_test.exs index d4e97712..fa524660 100644 --- a/test/mob_dev/hot_push_test.exs +++ b/test/mob_dev/hot_push_test.exs @@ -179,4 +179,41 @@ defmodule MobDev.HotPushTest do assert pushed < total_beams end end + + describe "runtime_lib_names/0 (drives what actually gets pushed)" do + # This is the function that decides the push set, and until now it had no + # coverage: every other test hand-builds the MapSet it produces, so a + # regression inside it stayed green. Driven here against mob_dev's own + # project, which has both real runtime deps and only: :dev ones. + test "keeps runtime deps and excludes dev-only ones" do + libs = MobDev.HotPush.__runtime_lib_names__() + + assert MapSet.member?(libs, "mob_dev") + + for dev_only <- ["credo", "ex_slop", "mix_audit", "ex_doc"] do + refute MapSet.member?(libs, dev_only), + "#{dev_only} is only: :dev and must not be pushed to a device" + end + end + + test "traverses the project's own .app so extra_applications survive" do + # The regression this guards: dropping project_app from the expansion + # seed stops the project's .app being read at all, so a dependency + # reachable only via `runtime: false` + `extra_applications:` — the + # documented idiom for opting a build-time dep back into the runtime + # application list — is silently never pushed. The app then boots and + # dies with undef on first use. + libs = MobDev.HotPush.__runtime_lib_names__() + + extra = + Mix.Project.get().application() + |> Keyword.get(:extra_applications, []) + |> Enum.map(&to_string/1) + + for app <- extra do + assert MapSet.member?(libs, app), + "#{app} is in extra_applications and must survive the runtime filter" + end + end + end end