[erlang-bugs] About Dialyzer and its dependencies

Mikael Pettersson mikpe@REDACTED
Fri Apr 9 16:45:07 CEST 2010


Roberto Aloi writes:
 > Hi all,
 > 
 > I'm trying to include dialyzer in my application and I've noticed that
 > one of its dependencies (wx) was missing an .app file. I've also noticed
 > this has been fixed in the 'dev' branch of OTP.
 > 
 > Still, another dependency (hipe) has something strange in its .app file:
...
 > 	     hipe_amd64_assemble,
 > 	     hipe_amd64_defuse,
 > 	     hipe_amd64_encode,
...
 > Lots of these modules seems to be architecture-dependent and I'm
 > obviously missing most of them. Why they are listed in the .app file?

Because they are part of HiPE and get built when HiPE proper is built.
And while there are many arch-dependent modules, all of them get built.
(HiPE can cross-compile, but issues with the runtime system prevent
it from actually working.)

 > This is what I get when trying to build everything:
 > 
 > Creating boot script
 > {{module_not_found,hipe,hipe},
 >  {hipe,'$$ignore$$',hipe,"3.7.5","lib/hipe-3.7.5/ebin"}}
 > {{module_not_found,hipe,hipe_adj_list},
 >  {hipe_adj_list,'$$ignore$$',hipe,"3.7.5","lib/hipe-3.7.5/ebin"}}
 > {{module_not_found,hipe,hipe_amd64_assemble},
 >  {hipe_amd64_assemble,'$$ignore$$',hipe,"3.7.5","lib/hipe-3.7.5/ebin"}}
 > {{module_not_found,hipe,hipe_amd64_defuse},
 >  {hipe_amd64_defuse,'$$ignore$$',hipe,"3.7.5","lib/hipe-3.7.5/ebin"}}
 > {{module_not_found,hipe,hipe_amd64_encode},
 >  {hipe_amd64_encode,'$$ignore$$',hipe,"3.7.5","lib/hipe-3.7.5/ebin"}}
 > {{module_not_found,hipe,hipe_amd64_frame},
 >  {hipe_amd64_frame,'$$ignore$$',hipe,"3.7.5","lib/hipe-3.7.5/ebin"}}
 > {{module_not_found,hipe,hipe_amd64_liveness},
 >  {hipe_amd64_liveness,'$$ignore$$',hipe,"3.7.5","lib/hipe-3.7.5/ebin"}}
 > {{module_not_found,hipe,hipe_amd64_main},
 >  {hipe_amd64_main,'$$ignore$$',hipe,"3.7.5","lib/hipe-3.7.5/ebin"}}
 > {{module_not_found,hipe,hipe_amd64_pp},
 >  {hipe_amd64_pp,'$$ignore$$',hipe,"3.7.5","lib/hipe-3.7.5/ebin"}}
 > {{module_not_found,hipe,hipe_amd64_ra},
 >  {hipe_amd64_ra,'$$ignore$$',hipe,"3.7.5","lib/hipe-3.7.5/ebin"}}
 > {{module_not_found,hipe,hipe_amd64_ra_finalise},
 >  {hipe_amd64_ra_finalise,'$$ignore$$',hipe,"3.7.5","lib/hipe-3.7.5/ebin"}}
 > {{module_not_found,hipe,hipe_amd64_ra_ls},
 > [...]

The issue that confuses you is that dialyzer depends on a subset of HiPE.
That subset is built regardless of whether HiPE is enabled or not, but
everything listed in HiPE's app file is not necessarily present.

If this is a problem, post a patch to instantiate a different (smaller)
hipe.app.src for the case when HiPE is disabled.

/Mikael


More information about the erlang-bugs mailing list