in reply to Why don't some CPAN modules append perllocal?

Can you provide examples of some that don't append perllocal ?

These days I build perl such that the different architectures sit alongside each other.
This means that any (pure perl) module that gets installed into perl/site/lib is immediately accessible to all architectures.
But the only perllocal that gets appended is the one for the architecture I was actually running when I installed that pure perl module.
Hence, the perllocals for all but one of those architectures will not mention this pure perl module, even though the module is accessible to *all* of the different architectures.
OTOH, it seems that ExtUtils::Installed is aware of all of the modules that have been installed - not just those modules that were appended to perllocal.
I don't know if that is relevant to what you are seeing.

Cheers,
Rob
  • Comment on Re: Why don't some CPAN modules append perllocal?

Replies are listed 'Best First'.
Re^2: Why don't some CPAN modules append perllocal?
by Anonymous Monk on Jan 29, 2023 at 06:03 UTC
      I hypothesize that if the module is built and installed using ExtUtils::MakeMaker (Makefile.PL) then perllocal gets updated.
      But if the module is built and installed using Module::Build (Build.PL) then perllocal does not get updated.
      If you can locate a module in that list you provided that does not provide a Build.PL file, then obviously my hypothesis is an unsatisfactory one. (Either it's plain wrong, or there are other factors involved.)

      I can definitely see the message "Appending installation info to D:\perl .../perllocal.pod" when the Makefile.PL gets run, but no such equivalent message when Build.PL gets run.
      But I've only looked at a very small sample ... and I've just now found this very pertinent bug report.

      Cheers,
      Rob
        Some modules only have Build.PL, others have both Build.PL and Makefile.PL.
        It's hard to believe that a bug in a popular CPAN module can be considered "low priority" and not fixed since 2005, when this bug destroys and renders inconsistent Perl's simple mechanism for recording module installation history. Without perllocal you have to traverse @INC and stat every module file to figure out when they were installed. If a module was edited or something then it becomes very difficult to impossible to tell when it was installed. Is this information stored anywhere else, does the cpan utility keep track of what it has done?