[erlang-questions 43] code:lib_dir and .ez archives
Ulf Wiger
ulf.wiger@REDACTED
Sun Mar 27 01:06:58 CET 2011
I packed up EQC Mini and PropEr as a single archive to make it easier to include in an OSS project.
http://github.com/esl/run_eqc
This works very well, except when compiling modules that require the eqc/proper .hrl files. The -include_lib/1 directive doesn't work if the .hrl is inside an archive.
This made me think that the compiler - actually probably file.erl - should support paths where a component is an .ez archive, and do the sensible thing (act as if it were a real path).
But first, I noticed that code:lib_dir/1 acts very strangely when the application is loaded from an .ez archive (see below).
Is this deliberate, or is it a bug?
BR,
Ulf W
$ erl -pa run_proper.ez/proper/ebin
Erlang R14B (erts-5.8.1) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.8.1 (abort with ^G)
1> code:which(proper).
"run_proper.ez/proper/ebin/proper.beam"
2> code:lib_dir(proper).
"./run_proper"
3> {ok,Z} = zip:zip_open("run_proper.ez",[memory]).
{ok,<0.35.0>}
4> zip:zip_get("proper/include/proper.hrl",Z).
{ok,{"proper/include/proper.hrl",
<<"%%% Copyright 2010 Manolis Papadakis (manopapad@REDACTED)\n%%% and Kostis Sagonas (kostis"...>>}}
5> zip:zip_get("proper/ebin/proper.app",Z).
{ok,{"proper/ebin/proper.app",
<<"{application,proper,\n [{description,\"A QuickCheck-inspired property-based testing tool f"...>>}}
Ulf Wiger, CTO, Erlang Solutions, Ltd.
http://erlang-solutions.com
More information about the erlang-questions
mailing list