ng0 <n...@we.make.ritual.n0.is> writes: > On 2016-06-14(12:10:05+0200), Ludovic Courtès wrote: >> This reminds me that we should eventually update ‘perl-build-system’ to >> have a ‘wrap’ phase similar to that of ‘python-build-system’. >> >> Thanks, >> Ludo’. >> > > Thanks for taking the time to look into it. > Would you know if other than the source of perl-build-system, the section > 7.2.6.1 > "Locale Data Compatibility Considerations" and the section above (and below?) > in > the manual could serve as an explanation to the authors question of > "Why do you wrap such a simple language as perl?" ? > > I know it becomes more obvious once you look more into details, but maybe you > have an explanation which wouldn't take so many turns as mine, or be too > simple > ("look at the source").
The wrapping is a necessity that stems from two causes: - we install all packages (including Perl modules) to their very own prefixes under /gnu/store - Perl (like Python, Guile, R, and other languages, but unlike C) looks up modules by name in a list of directories. To ensure that a Perl script can find all modules it depends on we create a wrapper that sets an environment variable such that it contains the location of all Perl modules that are needed at runtime. In a traditional system that adheres to the FHS this is not required because modules are installed into *one* location which happens to be among the standard directories that Perl natively searches. Without a wrapper users would need to do one of these two things: - install Perl and all dependent modules into a profile (that’s what happens when we propagate packages); then set the module path environment variable to the shared directory for Perl modules in the profile. - manually assemble a list of directories in /gnu/store and set the environment variable to it. We do this with a wrapper instead. ~~ Ricardo