As per my most recent mail, this solution isn't complete:

Steffen Mueller schrieb:
- Solution:
--> Leave parl as it is and embed a stripped down version into a pure data module (PAR::StrippedPAR::Static and PAR::StrippedPAR::Dynamic respectively) which is created at PAR build time. --> Extract that parl-without-embedded-modules for each pp call and use it for packaging binary executables.

What's missing is embedding the relevant modules into the extracted, stripped parl when running pp. That is basically just one more step as in the myldr/Makefile:

New strategy:
- extract stripped parl
- run stripped parl with these arguments:
  (map {"-I$_"} @INC), '-q', '-B', "-Orealparl$EXE_EXTENSION"
- "realparl(.exe)" is now the full parl with the packaging system's core modules.
- use realparl for packaging (i.e. append .par)
- delete both intermediate steps (extracted stripped parl, real parl

I tried this with a hackish approach (on win32 as well) and it works. Doesn't exactly make pp faster, of course.

Is this worth the effort or should we go back to the current behaviour?

Glenn: Of course, this doesn't affect the "parl foo.par" use on the machine which has PAR. The parl.exe built at PAR build time might still have old versions of the perl code. The reason why we can't do anything about that is simple: pp is something of a "compilation" step which can do all sorts of things to the output. Just running "parl ..." conceptually can't do that. The only thing we can do is replace the concept of "parl" completely. But that's something for somebody else and at some other time. I cannot do that.

Steffen

Reply via email to