Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^2: Why don't some CPAN modules append perllocal?

by Anonymous Monk
on Jan 29, 2023 at 06:03 UTC ( [id://11150007]=note: print w/replies, xml ) Need Help??


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

This command lists the modules missing from perllocal, for normal installations (creates 2 files mod.ext and mod.loc):
perl -MExtUtils::Installed -le '@_=ExtUtils::Installed->new->modules;p +rint for sort{lc$a cmp lc$b}@_' >mod.ext;perl -e '@_=grep/Module/,`pe +rldoc -uT perllocal`;for(@_){s/.*?\|([^>]+)>/$1/}print for sort{lc$a +cmp lc$b}@_' >mod.loc;diff -y mod.ext mod.loc|grep '<'
Here are my CPAN modules known to the "modules" method of ExtUtils::Installed but missing from perldoc perllocal | grep 'Module':
  1. Acme::JavaTrace
  2. Acme::MetaSyntactic::errno
  3. Algorithm::MarkovChain
  4. Algorithm::NaiveBayes
  5. aliased
  6. Alien::Base::ModuleBuild
  7. Alien::FLTK
  8. Alien::TALib
  9. Alien::wxWidgets
  10. Apache::LogFormat::Compiler
  11. App::AsciiChart
  12. App::cpm
  13. App::FatPacker::Simple
  14. App::perl2js
  15. App::perlfind
  16. App::SourcePlot
  17. Array::Compare
  18. Astro-Montenbruck
  19. Astro::App::Satpass2
  20. Astro::Catalog
  21. Astro::Coord::ECI
  22. Astro::Coords
  23. Astro::FITS::Header
  24. Astro::PAL
  25. Astro::SIMBAD::Client
  26. Astro::Telescope
  27. Astro::WaveBand
  28. BackPAN::Index
  29. CAM::PDF
  30. Carp::Parse
  31. Catalyst::Controller::POD
  32. Catalyst::Engine::PSGI
  33. CGI::Application
  34. CGI::Compress::Gzip
  35. CGI::Simple
  36. CGI::Wiki::Formatter::Multiple
  37. CGI::Wiki::Kwiki
  38. CGI::Wiki::Search::DB
  39. Chart::Plotly
  40. Class::Accessor::Chained
  41. Class::C3::Adopt::NEXT
  42. Class::Factory::Util
  43. Class::Prototyped
  44. Class::PublicPrivate
  45. Class::Std
  46. CLI::Coin::Toss
  47. Clipboard
  48. Color::Brewer
  49. Command::Runner
  50. Compiler::Parser
  51. Config::Std
  52. Convert::Color
  53. Cookie::Baker
  54. CPAN::Audit
  55. criticism
  56. Cwd::Guard
  57. Data::Dump::Streamer
  58. Data::Format::Pretty
  59. Data::Generate
  60. Data::Serializer
  61. Data::Transform::ExplicitMetadata
  62. DateTime::Astro
  63. DateTime::Calendar::Discordian
  64. DateTime::Format::ISO8601
  65. DBIx::Admin::CreateTable
  66. DBIx::Table2Hash
  67. Devel::CheckCompiler
  68. Devel::Ditto
  69. Directory::Scratch
  70. Distribution::Metadata
  71. Error
  72. ExtUtils::XSpp
  73. File::CountLines
  74. File::Find::Object
  75. File::Map
  76. File::RotateLogs
  77. File::ShareDir::Tarball
  78. File::Type
  79. Furl
  80. Future
  81. Future::AsyncAwait
  82. Future::Mojo
  83. GD::Sparkline
  84. Geo::WebService::Elevation::USGS
  85. Graph::Easy
  86. Graphics::ColorNames::WWW
  87. Hash::FieldHash
  88. HTML::Escape
  89. HTML::FormatText::WithLinks
  90. HTML::GenToc
  91. HTML::LinkList
  92. HTML::Notebook
  93. HTML::Parser::Simple
  94. HTML::Show
  95. HTML::SimpleParse
  96. HTML::TagCloud
  97. HTML::Tree
  98. HTTP::CookieMonster
  99. HTTP::Entity::Parser
  100. Image::Term256Color
  101. Imager::Filter::Bakumatsu
  102. Imager::Filter::RoundedCorner
  103. IO::Async
  104. IO::Handle::Util
  105. IO::Interface
  106. Kwiki::RenamePage
  107. L
  108. Lexical::SealRequireHints
  109. Lingua::EN::CommonMistakes
  110. Lingua::EN::Conjugate
  111. Lingua::EN::Contraction
  112. Lingua::EN::Fathom
  113. Lingua::Stem
  114. Lingua::Stem::Snowball::No
  115. Lingua::Stem::Snowball::Se
  116. List::Flatten
  117. List::PowerSet
  118. List::UtilsBy
  119. Log::QnD
  120. LWP::UserAgent::DNS::Hosts
  121. Mac::CocoaDialog
  122. Mac::Pasteboard
  123. Math::Factor::XS
  124. Math::GComplex
  125. Math::MatrixReal
  126. Math::Prime::XS
  127. MLDBM
  128. Modern::Perl
  129. Module::Build
  130. Module::Build::Pluggable
  131. Module::Build::Pluggable::PPPort
  132. Module::Build::Tiny
  133. Module::Build::XSUtil
  134. Module::ExtractUse
  135. Module::List
  136. Module::Runtime
  137. Module::Util
  138. MooseX::Clone
  139. MooseX::Daemonize
  140. MooseX::ExtraArgs
  141. MooseX::Getopt
  142. MooseX::LazyRequire
  143. MooseX::Object::Pluggable
  144. MooseX::Role::Parameterized
  145. MooseX::Singleton
  146. MooseX::Types
  147. MooseX::Types::Path::Class
  148. Mouse
  149. Music::Chord::Note
  150. Net::Async::HTTP
  151. Number::Misc
  152. Object::InsideOut
  153. OCR::PerfectCR
  154. Parallel::Pipes
  155. Params::Validate
  156. Parse::RecDescent
  157. Path::Class
  158. Perl (The perl 'core' is given the special name 'Perl'.)
  159. Perl4::CoreLibs
  160. Perl::Critic
  161. Perl::Phase
  162. PerlIO::Layers
  163. Perlito5
  164. Pod::Browser
  165. Pod::LaTeX
  166. Pod::Section
  167. Pod::Strip
  168. Pod::Text::Color::Delight
  169. Pod::Webserver
  170. POSIX::strftime::Compiler
  171. Postal::US::State
  172. PPIx::Regexp
  173. PPIx::Utilities
  174. Readonly
  175. Regexp::Debugger
  176. Starman
  177. Statistics::Autocorrelation
  178. Statistics::Data
  179. Statistics::Descriptive
  180. Statistics::Zed
  181. String::Dump
  182. String::Random
  183. String::Util
  184. Struct::Dumb
  185. SUPER
  186. SVN::Dump
  187. Sweat
  188. Syntax::Feature::EachOnArray
  189. Syntax::Keyword::Try
  190. Task::Unicode
  191. Template::Liquid
  192. Term::Drawille
  193. Term::Shell
  194. Test::Compile
  195. Test::Deep::JSON
  196. Test::Differences
  197. Test::Expect
  198. Test::Fake::HTTPD
  199. Test::Fork
  200. Test::Identity
  201. Test::MockModule
  202. Test::Perl::Critic
  203. Test::Pod::LinkCheck::Lite
  204. Test::Refcount
  205. Test::Toolbox
  206. Test::Trap
  207. Text::Affixes
  208. Text::Aligner
  209. Text::Flow
  210. Text::Reform
  211. Text::UpsideDown
  212. Text::WikiFormat
  213. Text::Xslate
  214. Thesaurus
  215. Tie::IxHash
  216. Tie::RangeHash
  217. Time::Format
  218. Tk::Canvas::GradientColor
  219. Tree::Node
  220. Unicode::CaseFold
  221. Unicode::Stringprep
  222. Unicode::Util
  223. Unix::Lsof
  224. Unix::Uptime
  225. URI::Find
  226. Web::NewsAPI
  227. WWW::Form::UrlEncoded
  228. WWW::YouTube::Download
  229. XML::Entities
  230. XML::RSS
  231. XML::Rules
  232. Zoidberg

Replies are listed 'Best First'.
Re^3: Why don't some CPAN modules append perllocal?
by syphilis (Archbishop) on Jan 29, 2023 at 07:53 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.
        Some modules only have Build.PL, others have both Build.PL and Makefile.PL

        If there's no Makefile.PL, then it seems you're stuck with building the module using Module::Build - and therefore perllocal will not be updated. (I suppose you could always hack your way around the issue, but that might be tedious.)
        OTOH, if there is a Makefile.PL, then perllocal should be updated if (and only if) you build the module using ExtUtils::MakeMaker,

        Annoyingly, my cpanm installation will use the Build.PL if both Makefile.PL and Build.PL are available.
        Maybe it's possible to reconfigure cpanm to default to using the Makefile.PL when both Makefile.PL and Build.PL are available. (I don't know.)
        I haven't checked to see how the cpan utility handles distros that contain both Makefile.PL and Build.PL.

        Modules that I author have never contained a Build.PL. And, for as long as I have control over them, I intend that they never will contain a Build.PL.

        Cheers,
        Rob
      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?

        As far as I have ever been able to tell, the original developers and subsequent maintainers of Module::Build have always considered this more a wishlist item than a bug.

        But as far as I know nobody has cared enough to submit a pull request; it seems at least possible that it would be applied.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11150007]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (6)
As of 2024-04-18 12:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found