[erlang-questions] distel-mode with *.beam files separate from source
Paul Fisher
pfisher@REDACTED
Fri May 23 15:26:03 CEST 2008
On Fri, 2008-05-23 at 14:44 +0200, Mats Cronqvist wrote:
> Paul Fisher wrote:
> > Did a little digging and from the bottom distel:find_source/1 certainly
> > seems to find the source file (by the
> > path /top/project/application/source.erl) correctly, so maybe there is
> > something else going one unrelated to the source tree, or possibly
> > tangentially related. Here is the actual error I get in the
> > *erl-output* buffer that is created when I toggle on interactive:
> >
> > ** Invalid beam file or no abstract code:
> > "/top/project/application/source.erl"
>
> this in all likelihood means that the beam does not contain any debug
> info.
> try "erlc +debug_info" (the erlc equivalent of cc -g)
I'm certain that it does have debugging information, so the error
message is really not accurately reflecting the problem, which
ultimately the fact that int:i/1 cannot find any beam file to associate
with the absolute source path name.
The problem is that distel:find_source/1 in the face of this arrangement
locates the source file as:
top/project/application/source.erl
rather than
top/bld/erlang/application/src/source.erl
Then when it hands the former to the int:i/1 the interpreter does not
know how to find the source.beam file based on that location.
The core problem is that distel:get_source_file/2 should locate the
source at the latter location before the former location. It prefers
the source file attribute in the beam file over all other alternatives
because src_from_beam/1 is first in the list that is passed to
try_srcs/1. Works just great, except for these "out of tree" build
environments.
Seems to be that it would be preferable to simply move the result of
src_from_beam/1 to the end of the list that is handed to try_srcs/1.
Thoughts?
BTW, I see I forgot to answer you question about if I am using GNU
autotools to do the build. The answer is no, just a few dozen line of
gmake gooberware in our build system.
--
paul
More information about the erlang-questions
mailing list