At least I haven't seen that problem a hundred times. I can imagine there are problems if pike is installed in one location, tar'ed together and then extracted in a different place. That's because absolute paths normally are written in the dumped files, and that the pike binary is modified to contain an absolute path to the master.
(The NT installation variant contains relocation code to avoid absolute paths since, if I remember correctly, modules can't be dumped at installation time for some reason. Anyway, that stuff doesn't work entirely well.)
I don't understand how your fix solves anything. If the files that pike tries to remove there are in the wrong place then the dumping later on will fail much more, and pretty much the whole setup of the installed tree too, I suspect.
It looks rather like the install prefix to install.pike is incorrect. You can control it with an argument prefix=a/good/place to the installer.
/ Martin Stjernholm, Roxen IS
Previous text:
2003-12-09 20:42: Subject: How to dump pike modules in a fakeroot/sandbox environment?
Hi,
I am having a problem building pike in a fakeroot/sandbox'ed environment and *additionally* dump the pike modules.
(to avoid those problems you surely have heard about hundred times when building in a fakeroot and then try to run a pike application using a module: /usr/lib/pike/.../.../whatever.pmod.o:-: Warning: Decode failed: Failed to decode program)
The problem I am having is, pike seems to be able to dump the modules when installing in a fakeroot environment from what I can read in the install scripts but it cannot do it without violating the sandbox (e.g. writing outside the fakeroot).
In short, I do the following (after pike was built using make CONFIGUREARGS="..." etc.):
sed -i s/rm(mod+".o");/{}/ for install.pike, which results in the following:
--- install.pike.orig +++ install.pike @@ -1096,7 +1096,7 @@ rm("dumpmodule.log");
foreach(to_dump, string mod)
rm(mod+".o");
{}
// Dump 25 modules at a time
I need to do this, because otherwise the sandbox is violated since pike directly wants to do some action in /usr/lib/...
Then I use the following command to install pike:
make INSTALLARGS="--traditional" buildroot="${D}" install
("${D}" being the virtual "/") Because of the change to install.pike, the modules aren't dumped automagically, and to be honest, I feel a bit lost now how I can dump the modules to avoid those fakeroot/decode problems with the modules, but without violating the sandbox.
Thanks in advance for your answers,
-- Rainer Groesslinger rainer.groesslinger@gmx.net
/ Brevbäraren