Aha. Turning on RESOLV_DEBUG gave this insight:
BEGIN_CYCLIC(Array, 322eb8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) Resolv("Array", "/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod") Resolv("Array", "/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod") => found 0 END_CYCLIC(Array, 322eb8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod])
The resolv of "Array" short-circuits to a 0 in this case. This does not happen when dumping. In order for dumping of a module to work when the source file is in the module path, the masters resolve_cache must first be populated with an entry for the module name, so that the resolve() call can short-circuit. Adding
mkmodulename(0, file);
to the beginning of the dumpit function is enough to make this happen, although there might be a more obvious way to do it... :-)
This fix makes `make dump_modules' work decidedly better (X509 now has content again), so unless someone can think of a more beautiful fix RSN, I'm going to commit it.
/ Marcus Comstedt (ACROSS) (Hail Ilpalazzo!)
Previous text:
2002-11-27 17:16: Subject: Image.SSL?
Hm, another thing that's a little strange is what happens if I just load the undumped module:
pelix:~/Pike/7.3/build% /pike/home/marcus/Pike/7.3/build/pike -DNOT_INSTALLED -DPRECOMPILED_SEARCH_MORE -m/pike/home/marcus/Pike/7.3/build/master.pike -e 'Array;' BEGIN_CYCLIC(Array, 327118 [-]) BEGIN_CYCLIC(__builtin, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(__builtin, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(Array, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod])
END_CYCLIC(Array, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(__builtin, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(__builtin, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) BEGIN_CYCLIC(Array, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(Array, 2e75b8 [/pike/home/marcus/Pike/7.3/lib/modules/Array.pmod]) END_CYCLIC(Array, 327118 [-]) BEGIN_CYCLIC(Array, 327118 [-]) END_CYCLIC(Array, 327118 [-]) pelix:~/Pike/7.3/build%
For some reason, the recursive resolutions of __builtin and Array that happens at *** when dumping are not made here. How come?
/ Marcus Comstedt (ACROSS) (Hail Ilpalazzo!)