@@ -15,7 +15,7 @@ defmodule Mix.Compilers.Elixir do
15
15
"""
16
16
def compile ( manifest , srcs , skip , exts , dest , force , on_start ) do
17
17
all = Mix.Utils . extract_files ( srcs -- skip , exts )
18
- { all_entries , skip_entries } = read_manifest ( manifest , skip )
18
+ { all_entries , skip_entries } = read_manifest ( manifest , dest , skip )
19
19
20
20
removed =
21
21
for { _b , _m , source , _d , _f , _bin } <- all_entries , not ( source in all ) , do: source
@@ -181,28 +181,32 @@ defmodule Mix.Compilers.Elixir do
181
181
182
182
# Reads the manifest returning the results as tuples.
183
183
# The beam files are read, removed and stored in memory.
184
- defp read_manifest ( manifest , skip_paths ) do
184
+ defp read_manifest ( manifest , dest , skip_paths ) do
185
185
initial = { [ ] , [ ] }
186
186
187
187
case File . read ( manifest ) do
188
188
{ :ok , contents } ->
189
189
skip_paths = Enum . map ( skip_paths , & ( & 1 <> "/" ) )
190
190
Enum . reduce String . split ( contents , "\n " ) , initial , fn x , acc ->
191
- read_manifest_entry ( String . split ( x , "\t " ) , acc , skip_paths )
191
+ read_manifest_entry ( String . split ( x , "\t " ) , acc , dest , skip_paths )
192
192
end
193
193
{ :error , _ } ->
194
194
initial
195
195
end
196
196
end
197
197
198
- defp read_manifest_entry ( [ beam , module , source | deps ] , { keep , skip } , skip_paths ) do
198
+ defp read_manifest_entry ( [ _beam , module , source | deps ] , { keep , skip } , dest , skip_paths ) do
199
199
{ deps , files } =
200
200
case Enum . split_while ( deps , & ( & 1 != "Elixir" ) ) do
201
201
{ deps , [ "Elixir" | files ] } -> { deps , files }
202
202
{ deps , _ } -> { deps , [ ] }
203
203
end
204
204
205
- entry = { beam , module , source , deps , files , nil }
205
+ # TODO: Notice we do not use beam from the file.
206
+ # Once Elixir v1.1 is out, we can start writing "1"
207
+ # instead of the beam file in write_manifest/2.
208
+ entry = { Path . join ( dest , module <> ".beam" ) , module , source ,
209
+ deps , files , nil }
206
210
207
211
if String . starts_with? ( source , skip_paths ) do
208
212
{ keep , [ entry | skip ] }
@@ -211,7 +215,7 @@ defmodule Mix.Compilers.Elixir do
211
215
end
212
216
end
213
217
214
- defp read_manifest_entry ( _ , acc , _skip_paths ) do
218
+ defp read_manifest_entry ( _ , acc , _dest , _skip_paths ) do
215
219
acc
216
220
end
217
221
0 commit comments