Generate one file at a time (don't require ulimit change)
This commit is contained in:
1
Makefile
1
Makefile
@@ -4,6 +4,5 @@ zones:
|
|||||||
mkdir -p priv/tzdata
|
mkdir -p priv/tzdata
|
||||||
tar -xvzf tzdata-latest.tar.gz -C priv/tzdata
|
tar -xvzf tzdata-latest.tar.gz -C priv/tzdata
|
||||||
rm tzdata-latest.tar.gz
|
rm tzdata-latest.tar.gz
|
||||||
ulimit -n 1024
|
|
||||||
erl -pa ebin -s ezic_generator generate -s erlang halt
|
erl -pa ebin -s ezic_generator generate -s erlang halt
|
||||||
erlc -o ebin zones/*.erl
|
erlc -o ebin zones/*.erl
|
||||||
|
|||||||
@@ -22,25 +22,20 @@ generate_links([#link{from = From, to = To} | Rest], MapFile) ->
|
|||||||
file:write(MapFile, io_lib:format("find(~p) -> find(~p);\n", [To, From])),
|
file:write(MapFile, io_lib:format("find(~p) -> find(~p);\n", [To, From])),
|
||||||
generate_links(Rest, MapFile).
|
generate_links(Rest, MapFile).
|
||||||
|
|
||||||
generate_zones([], _, Files) ->
|
generate_zones([], MapFile, Files) ->
|
||||||
lists:foreach(fun({_, File}) ->
|
lists:foreach(fun({ZoneName, Content}) ->
|
||||||
file:write(File, "]."),
|
create_file(ZoneName, Content, MapFile)
|
||||||
file:close(File)
|
|
||||||
end, Files);
|
end, Files);
|
||||||
|
|
||||||
generate_zones([FlatZone = #flatzone{tzname = Name} | Rest], MapFile, Files) ->
|
generate_zones([FlatZone = #flatzone{tzname = Name} | Rest], MapFile, Files) ->
|
||||||
{File, NewFiles} = case orddict:find(Name, Files) of
|
Files2 = case orddict:is_key(Name, Files) of
|
||||||
error ->
|
true -> orddict:append(Name, ",\n", Files);
|
||||||
IO = create_file(Name, MapFile),
|
false -> Files
|
||||||
{IO, orddict:store(Name, IO, Files)};
|
|
||||||
{ok, IO} ->
|
|
||||||
file:write(IO, ",\n"),
|
|
||||||
{IO, Files}
|
|
||||||
end,
|
end,
|
||||||
file:write(File, io_lib:format("~1000p", [FlatZone])),
|
Files3 = orddict:append(Name, io_lib:format("~1000p", [FlatZone]), Files2),
|
||||||
generate_zones(Rest, MapFile, NewFiles).
|
generate_zones(Rest, MapFile, Files3).
|
||||||
|
|
||||||
create_file(ZoneName, MapFile) ->
|
create_file(ZoneName, Content, MapFile) ->
|
||||||
io:format("Creating file for zone ~p~n", [ZoneName]),
|
io:format("Creating file for zone ~p~n", [ZoneName]),
|
||||||
ModuleName = "ezic_zone_" ++ re:replace(string:to_lower(ZoneName), "/", "_", [global, {return, list}]),
|
ModuleName = "ezic_zone_" ++ re:replace(string:to_lower(ZoneName), "/", "_", [global, {return, list}]),
|
||||||
FileName = "zones" ++ "/" ++ ModuleName ++ ".erl",
|
FileName = "zones" ++ "/" ++ ModuleName ++ ".erl",
|
||||||
@@ -49,4 +44,6 @@ create_file(ZoneName, MapFile) ->
|
|||||||
file:write(File, "-export([flatzones/0]).\n"),
|
file:write(File, "-export([flatzones/0]).\n"),
|
||||||
file:write(File, "flatzones() ->\n["),
|
file:write(File, "flatzones() ->\n["),
|
||||||
file:write(MapFile, io_lib:format("find(~p) -> ~p;\n", [ZoneName, list_to_atom(ModuleName)])),
|
file:write(MapFile, io_lib:format("find(~p) -> ~p;\n", [ZoneName, list_to_atom(ModuleName)])),
|
||||||
File.
|
file:write(File, Content),
|
||||||
|
file:write(File, "]."),
|
||||||
|
file:close(File).
|
||||||
|
|||||||
Reference in New Issue
Block a user