@@ -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
0 commit comments