55defmodule Mix.Compilers.Elixir do
66 @ moduledoc false
77
8- @ manifest_vsn 28
8+ @ manifest_vsn 29
99 @ checkpoint_vsn 4
1010
1111 import Record
@@ -49,8 +49,8 @@ defmodule Mix.Compilers.Elixir do
4949 timestamp = System . os_time ( :second )
5050 all_paths = Mix.Utils . extract_files ( srcs , [ :ex ] )
5151
52- { all_modules , all_sources , all_local_exports , old_parents , old_cache_key , old_deps_config ,
53- old_project_mtime , old_config_mtime , old_protocols_and_impls } =
52+ { all_modules , all_sources , all_local_exports , old_parents , old_cache_key , old_cwd ,
53+ old_deps_config , old_project_mtime , old_config_mtime , old_protocols_and_impls } =
5454 parse_manifest ( manifest , dest )
5555
5656 # In case we aborted in the middle of a verification,
@@ -100,7 +100,8 @@ defmodule Mix.Compilers.Elixir do
100100
101101 { force? , stale , new_deps_config } =
102102 cond do
103- ! ! opts [ :force ] or is_nil ( old_deps_config ) or old_cache_key != new_cache_key ->
103+ ! ! opts [ :force ] or is_nil ( old_deps_config ) or old_cache_key != new_cache_key or
104+ ( Keyword . get ( opts , :check_cwd , true ) and old_cwd != File . cwd! ( ) ) ->
104105 { true , stale , deps_config ( local_deps ) }
105106
106107 deps_changed? or compile_env_apps != [ ] ->
@@ -313,7 +314,7 @@ defmodule Mix.Compilers.Elixir do
313314 rescue
314315 _ -> { [ ] , [ ] }
315316 else
316- { @ manifest_vsn , modules , sources , _ , _ , _ , _ , _ , _ , _ } -> { modules , sources }
317+ { @ manifest_vsn , modules , sources , _ , _ , _ , _ , _ , _ , _ , _ } -> { modules , sources }
317318 _ -> { [ ] , [ ] }
318319 end
319320 end
@@ -881,7 +882,7 @@ defmodule Mix.Compilers.Elixir do
881882
882883 ## Manifest handling
883884
884- @ default_manifest { % { } , % { } , % { } , [ ] , nil , nil , 0 , 0 , { % { } , % { } } }
885+ @ default_manifest { % { } , % { } , % { } , [ ] , nil , nil , nil , 0 , 0 , { % { } , % { } } }
885886
886887 # Similar to read_manifest, but for internal consumption and with data migration support.
887888 defp parse_manifest ( manifest , compile_path ) do
@@ -891,9 +892,9 @@ defmodule Mix.Compilers.Elixir do
891892 _ ->
892893 @ default_manifest
893894 else
894- { @ manifest_vsn , modules , sources , local_exports , parent , cache_key , deps_config ,
895+ { @ manifest_vsn , modules , sources , local_exports , parent , cache_key , cwd , deps_config ,
895896 project_mtime , config_mtime , protocols_and_impls } ->
896- { modules , sources , local_exports , parent , cache_key , deps_config , project_mtime ,
897+ { modules , sources , local_exports , parent , cache_key , cwd , deps_config , project_mtime ,
897898 config_mtime , protocols_and_impls }
898899
899900 # {vsn, %{module => record}, sources, ...} v22-?
@@ -952,8 +953,8 @@ defmodule Mix.Compilers.Elixir do
952953 File . mkdir_p! ( Path . dirname ( manifest ) )
953954
954955 term =
955- { @ manifest_vsn , modules , sources , exports , parents , cache_key , deps_config , project_mtime ,
956- config_mtime , protocols_and_impls }
956+ { @ manifest_vsn , modules , sources , exports , parents , cache_key , File . cwd! ( ) , deps_config ,
957+ project_mtime , config_mtime , protocols_and_impls }
957958
958959 manifest_data = :erlang . term_to_binary ( term , [ :compressed ] )
959960 File . write! ( manifest , manifest_data )
0 commit comments