Skip to content

Commit 14a562f

Browse files
author
José Valim
committed
Compile not ok dependencies on deps.get and deps.update
1 parent dd91696 commit 14a562f

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

lib/mix/lib/mix/deps.ex

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -400,11 +400,16 @@ defmodule Mix.Deps do
400400
# deps if all dependencies are available. This is because if a
401401
# dependency is missing, it could be a children of the parent
402402
# (aka a sibling) which would make parent compilation fail.
403+
#
404+
# If there is any other dependency that is not ok, we include
405+
# it for compilation too, this is our best to try to solve the
406+
# maximum we can at each deps.get and deps.update.
403407
if Enum.all?(all_deps, &available?/1) do
404-
deps = with_depending(deps, all_deps)
408+
deps = with_depending(deps, all_deps) ++
409+
Enum.filter(all_deps, fn dep -> not ok?(dep) end)
405410
end
406411
407-
apps = Enum.map(deps, &(&1.app))
412+
apps = Enum.map(deps, &(&1.app)) |> Enum.uniq
408413
Mix.Deps.Lock.write(lock)
409414
410415
unless opts[:no_compile] do
@@ -414,8 +419,11 @@ defmodule Mix.Deps do
414419
Mix.Task.run("deps.loadpaths", ["--no-deps-check"])
415420
Mix.Task.reenable("deps.loadpaths")
416421
417-
args = if opts[:quiet], do: ["--quiet"|apps], else: apps
418-
Mix.Task.run("deps.compile", args)
422+
if apps != [] do
423+
args = if opts[:quiet], do: ["--quiet"|apps], else: apps
424+
Mix.Task.run("deps.compile", args)
425+
end
426+
419427
unless opts[:no_deps_check] do
420428
Mix.Task.run("deps.check", [])
421429
end

lib/mix/test/mix/tasks/deps_test.exs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ defmodule Mix.Tasks.DepsTest do
512512
File.write!("deps/ok/mix.exs", """)
513513
defmodule Ok.Mixfile do
514514
use Mix.Project
515-
def project, do: [app: :ok]
515+
def project, do: [app: :ok, version: "1.0.0"]
516516
end
517517
"""
518518
File.write!("deps/ok/ebin/.compile.lock", "the_future")
@@ -524,6 +524,9 @@ defmodule Mix.Tasks.DepsTest do
524524

525525
assert_received { :mix_shell, :error, ["* ok (deps/ok)"] }
526526
assert_received { :mix_shell, :error, [" the dependency is built with an out-of-date elixir version, run `mix deps.get`"] }
527+
528+
Mix.Tasks.Deps.Get.run []
529+
assert_received { :mix_shell, :info, ["* Compiling ok"] }
527530
end
528531
after
529532
Mix.Project.pop

0 commit comments

Comments
 (0)