perl.makemaker http://www.nntp.perl.org/group/perl.makemaker/ ... Copyright 1998-2013 perl.org Thu, 20 Jun 2013 02:51:47 +0000 ask@perl.org ExtUtils::MakeMaker 6.68 released by Chris 'BinGOs' Williams We&#39;re leaving together<br/> But still it&#39;s farewell<br/> And maybe we&#39;ll come back,<br/> To earth, who can tell?<br/><br/> I guess there is no one to blame<br/> We&#39;re leaving ground (leaving ground)<br/> Will things ever be the same again?<br/> It&#39;s the final countdown.<br/><br/> -- &quot;The Final Countdown&quot; - Europe<br/><br/>V6.68 of ExtUtils-MakeMaker has been liberated to CPAN<br/><br/>The following changes were made since the last stable release V6.66<br/><br/> 6.68 Fri Jun 14 23:26:11 BST 2013<br/> No changes from 6.67_05<br/><br/> 6.67_05 Thu Jun 13 21:52:46 BST 2013<br/> Doc fixes:<br/> * RT#86007 - Restore meaning for divorced sentence<br/><br/> 6.67_04 Mon Jun 10 20:18:25 BST 2013<br/> Bug fixes<br/> * Address RT#85406, where specifying &#39;meta-spec&#39; in<br/> META_[ADD|MERGE] would remove all prereqs (bingos)<br/><br/> 6.67_03 Wed Jun 5 22:03:28 BST 2013<br/> Doc Fixes<br/> * Document how to specify meta-spec in META_MERGE (bingos)<br/><br/> 6.67_02 Sun Jun 2 18:27:45 BST 2013<br/> Bug Fixes<br/> * Allow v-prefixed version strings once more (bingos)<br/> * Typos fixed (David Steinbrunner)<br/> * Resolve test failure with latest CPAN::Meta<br/><br/> 6.67_01 Thu Apr 25 21:03:58 BST 2013<br/> Doc Fixes<br/> * Change references to makemaker.org in the docs<br/> (Reported as RT#83246 by dolmen)<br/><br/> VOS Fixes<br/> * &#39;core&#39; files are keep files (*.kp) on vos, adjust the<br/> &#39;clean&#39; target to account for this (Paul Green)<br/><br/> Win32 Fixes<br/> * Increase dmake MAXLINELENGTH to 800000 (RT#77215) as<br/> per kmx&#39;s recommendations (kmx)<br/><br/> Cygwin Fixes<br/> * Allow linking of Cygwin libraries (Reini Urban)<br/><br/>The full change log is available online at:<br/><br/>https://metacpan.org/source/BINGOS/ExtUtils-MakeMaker-6.68/Changes<br/><br/>Further detail is available in the source code repository at<br/>https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker<br/><br/>-- <br/>Chris Williams<br/>aka BinGOs<br/>PGP ID 0x4658671F<br/>http://www.gumbynet.org.uk<br/>==========================<br/><br/> http://www.nntp.perl.org/group/perl.makemaker/2013/06/msg3359.html Sat, 15 Jun 2013 13:59:43 +0000 ExtUtils::MakeMaker 6.66 released by Chris 'BinGOs' Williams <br/> Night was black, was no use holding back<br/> &#39;Cause I just had to see, was someone watching me?<br/> In the mist, dark figures move and twist<br/> Was all this for real or just some kind of Hell?<br/><br/> 6 6 6, the number of the beast<br/> Hell and fire was spawned to be released<br/><br/> -- &quot;The Number Of The Beast&quot; - Iron Maiden<br/><br/>V6.66 of ExtUtils-MakeMaker has been unleashed upon CPAN<br/><br/>The following changes were made since the last stable release V6.64<br/><br/> 6.66 Fri Apr 19 17:53:13 BST 2013<br/> No changes from 6.65_03<br/> <br/> 6.65_03 Mon Apr 15 13:44:24 BST 2013<br/> Test Fixes<br/> * Use File::Temp in parse_* tests to resolve race conditions<br/> on 64bit Windows<br/> (bingos)<br/> <br/> 6.65_02 Sun Apr 14 10:56:41 BST 2013<br/> Test Fixes<br/> * t/xs.t is now running tests against the XS build.<br/> (Michael G Schwern) (Leon Timmermans)<br/> <br/> <br/> 6.65_01 Tue Mar 19 00:06:17 CET 2013<br/> New Features<br/> * Improvements perlcritic support. (M. Schwern)<br/> * Improvements to dynamic linking for gcc (Tobias Leich)<br/> [github #43]<br/> * Change $(PERL_HDRS) from a hard coded list of headers to<br/> reading install directory for available header files. Allows<br/> us to work with any version of Perl properly.<br/> (Yves Orton, Craig A. Berry) [github #47]<br/> <br/> Doc Fixes<br/> * Numerous typo fixes. (Ben Bullock)<br/> [github #33] [github #34] [github #35]<br/> * Various FAQ and doc improvements (M. Schwern, Ivan Bessarabov)<br/> [github #44]<br/> <br/> Bug Fixes<br/> * fixes relating to hash ordering (Yves Orton)<br/> [github #46] [rt.cpan.org #83441] [rt.perl.org #116857]<br/> * fixes to Mksymlists (Ben Bullock, Yves Orton)<br/> [github #48] [github #49] [github #51]<br/><br/>The full change log is available online at:<br/><br/>https://metacpan.org/source/BINGOS/ExtUtils-MakeMaker-6.66/Changes<br/><br/>-- <br/>Chris Williams<br/>aka BinGOs<br/>PGP ID 0x4658671F<br/>http://www.gumbynet.org.uk<br/>==========================<br/><br/> http://www.nntp.perl.org/group/perl.makemaker/2013/04/msg3358.html Fri, 19 Apr 2013 19:12:21 +0000 Re: ExtUtils::MakeMaker needs a release BY YOU by demerphq If noone else steps up, I would like to make an alpha release. My CPAN<br/>id is YVES, and github is &#39;demerphq&#39;.<br/><br/>If you give me the relevant permissions I will get one rolled this week.<br/><br/>Yves<br/><br/>On 16 March 2013 01:42, Michael G. Schwern &lt;schwern@pobox.com&gt; wrote:<br/>&gt; -----BEGIN PGP SIGNED MESSAGE-----<br/>&gt; Hash: SHA1<br/>&gt;<br/>&gt; Hi folks,<br/>&gt;<br/>&gt; 5.18.0 needs a MakeMaker release in order to fix some hash order bugs.<br/>&gt; Fortunately, its all already been patched in, its just a matter of us<br/>&gt; putting out an alpha, testing it, and then putting out a stable.<br/>&gt;<br/>&gt; And I&#39;m not doing it. Been doing it too long, I&#39;m just getting in the<br/>&gt; way.<br/>&gt;<br/>&gt; I&#39;d like somebody to step up and offer to do the next stable.<br/>&gt;<br/>&gt; To that end, I&#39;ve written down how to do it as best I can.<br/>&gt;<br/>&gt; Here&#39;s how you make a release, in general.<br/>&gt; https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/wiki/How-To-Make-A-Release<br/>&gt;<br/>&gt; And here&#39;s the special considerations for a stable release.<br/>&gt; https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/wiki/How-To-Make-A-Stable-Release<br/>&gt;<br/>&gt; An alpha release isn&#39;t much different from releasing any other CPAN<br/>&gt; module. A stable release involves a bit more rigor, but that&#39;s mostly<br/>&gt; reading CPAN Testers. And I&#39;ll be happy to be available as a resource<br/>&gt; and answer questions and hold hands.<br/>&gt;<br/>&gt; So, who wants to make a MakeMaker release?<br/>&gt;<br/>&gt;<br/>&gt; - -------- Original Message --------<br/>&gt; Subject: ExtUtils::MakeMaker<br/>&gt; Date: Wed, 6 Mar 2013 10:38:29 -0500<br/>&gt; From: Ricardo Signes &lt;rjbs@cpan.org&gt;<br/>&gt; To: Michael Schwern &lt;schwern@pobox.com&gt;<br/>&gt;<br/>&gt;<br/>&gt; Perl 5.18.0 is very likely to include improvements to hash traversal<br/>&gt; randomness. Right now, I believe the only part of the core left that<br/>&gt; has not<br/>&gt; been patched in blead is ExtUtils::MakeMaker. I see at<br/>&gt;<br/>&gt; https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commits/master<br/>&gt;<br/>&gt; that you&#39;ve merged the work from Yves Oton to fix the bugs made<br/>&gt; visible by the<br/>&gt; changes to perl. Can we expect a release of EUMM more or less<br/>&gt; immediately?<br/>&gt;<br/>&gt; If not, we&#39;ll apply these patches in blead and create a _0x version<br/>&gt; number,<br/>&gt; which I am really not eager to do.<br/>&gt;<br/>&gt; - --<br/>&gt; rjbs<br/>&gt;<br/>&gt;<br/>&gt;<br/>&gt; -----BEGIN PGP SIGNATURE-----<br/>&gt; Version: GnuPG/MacGPG2 v2.0.18 (Darwin)<br/>&gt; Comment: GPGTools - http://gpgtools.org<br/>&gt; Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/<br/>&gt;<br/>&gt; iQEcBAEBAgAGBQJRQ7/qAAoJEJxzdbWzfct37rUH/RwHuCJcDdFydWoltV5tHVq4<br/>&gt; Rfk17hCN7ZZP3Bsd2GQT/0xRqqcycck4JGeHmtypZTtzCv9Eg3wlK67uWDasCogV<br/>&gt; iSs/wHSyffx/25C0JKZ7Wjag1U//G+HLQSopTXnAf9PSmTM3o5eE46E/9DjcC29W<br/>&gt; cf0K+NqgWk0vjW1Ez+XzOSBwki0EKz68MJxOf5lgwvs1yIt/Qjm62WCPmMdZRuNd<br/>&gt; /WF2ojp+pCWD5Rat5rnpFricTQeUSEoJ7FF3y7fzpzVARRE1ujAgDOcACU0OgcC4<br/>&gt; ibHcYjGZQFU1S3d6F6mYKigxiMpEkCm/yj+TTs/sL9Nn0E/SsP630C2PJfTALQ8=<br/>&gt; =umdv<br/>&gt; -----END PGP SIGNATURE-----<br/><br/><br/><br/>-- <br/>perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/03/msg3357.html Sun, 17 Mar 2013 13:02:58 +0000 ExtUtils::MakeMaker needs a release BY YOU by Michael G. Schwern -----BEGIN PGP SIGNED MESSAGE-----<br/>Hash: SHA1<br/><br/>Hi folks,<br/><br/>5.18.0 needs a MakeMaker release in order to fix some hash order bugs.<br/> Fortunately, its all already been patched in, its just a matter of us<br/>putting out an alpha, testing it, and then putting out a stable.<br/><br/>And I&#39;m not doing it. Been doing it too long, I&#39;m just getting in the<br/>way.<br/><br/>I&#39;d like somebody to step up and offer to do the next stable.<br/><br/>To that end, I&#39;ve written down how to do it as best I can.<br/><br/>Here&#39;s how you make a release, in general.<br/>https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/wiki/How-To-Make-A-Release<br/><br/>And here&#39;s the special considerations for a stable release.<br/>https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/wiki/How-To-Make-A-Stable-Release<br/><br/>An alpha release isn&#39;t much different from releasing any other CPAN<br/>module. A stable release involves a bit more rigor, but that&#39;s mostly<br/>reading CPAN Testers. And I&#39;ll be happy to be available as a resource<br/>and answer questions and hold hands.<br/><br/>So, who wants to make a MakeMaker release?<br/><br/><br/>- -------- Original Message --------<br/>Subject: ExtUtils::MakeMaker<br/>Date: Wed, 6 Mar 2013 10:38:29 -0500<br/>From: Ricardo Signes &lt;rjbs@cpan.org&gt;<br/>To: Michael Schwern &lt;schwern@pobox.com&gt;<br/><br/><br/>Perl 5.18.0 is very likely to include improvements to hash traversal<br/>randomness. Right now, I believe the only part of the core left that<br/>has not<br/>been patched in blead is ExtUtils::MakeMaker. I see at<br/><br/> https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commits/master<br/><br/>that you&#39;ve merged the work from Yves Oton to fix the bugs made<br/>visible by the<br/>changes to perl. Can we expect a release of EUMM more or less<br/>immediately?<br/><br/>If not, we&#39;ll apply these patches in blead and create a _0x version<br/>number,<br/>which I am really not eager to do.<br/><br/>- -- <br/>rjbs<br/><br/><br/><br/>-----BEGIN PGP SIGNATURE-----<br/>Version: GnuPG/MacGPG2 v2.0.18 (Darwin)<br/>Comment: GPGTools - http://gpgtools.org<br/>Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/<br/><br/>iQEcBAEBAgAGBQJRQ7/qAAoJEJxzdbWzfct37rUH/RwHuCJcDdFydWoltV5tHVq4<br/>Rfk17hCN7ZZP3Bsd2GQT/0xRqqcycck4JGeHmtypZTtzCv9Eg3wlK67uWDasCogV<br/>iSs/wHSyffx/25C0JKZ7Wjag1U//G+HLQSopTXnAf9PSmTM3o5eE46E/9DjcC29W<br/>cf0K+NqgWk0vjW1Ez+XzOSBwki0EKz68MJxOf5lgwvs1yIt/Qjm62WCPmMdZRuNd<br/>/WF2ojp+pCWD5Rat5rnpFricTQeUSEoJ7FF3y7fzpzVARRE1ujAgDOcACU0OgcC4<br/>ibHcYjGZQFU1S3d6F6mYKigxiMpEkCm/yj+TTs/sL9Nn0E/SsP630C2PJfTALQ8=<br/>=umdv<br/>-----END PGP SIGNATURE-----<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/03/msg3356.html Sat, 16 Mar 2013 00:42:32 +0000 Re: C++ support by Michael G. Schwern Hey folks,<br/><br/>This patch needs a review of somebody who understands XS and C++.<br/>Vladimir&#39;s done what looks to me like good work and I&#39;d like to<br/>incorporate it so he does more.<br/><br/>It&#39;s a small amount of change and shouldn&#39;t take long to look over.<br/>https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/pull/45<br/><br/>Schwern<br/><br/><br/>On 2/17/13 11:51 AM, Vladimir Timofeev wrote:<br/>&gt; Hi, please review pull request<br/>&gt; https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/pull/45<br/>&gt; <br/>&gt; This patch make suffix of target for .xs file processing configurable<br/>&gt; (defaults .c as before). But now we really can make process .xs files<br/>&gt; to .cpp (for example) to support C++.<br/>&gt; <br/>&gt; Before this change I found two methods to work with C++ in .xs (both<br/>&gt; are defective in some ways):<br/>&gt; 1. Use CC=&gt;&#39;g++&#39; parameter.<br/>&gt; Bad, because C++ compiler not always gcc (it may be clang, microsoft<br/>&gt; compiler or any other).<br/>&gt; 2. Use CCFLAGS with &quot;-x c++&quot; it at least works for gcc and clang (may<br/>&gt; be in others...)<br/>&gt; Also not portable...<br/>&gt; <br/>&gt; Both solutions will not work if module has mix of .c and .cpp files...<br/>&gt; because .c files also will be processed as c++<br/>&gt; <br/>&gt; Solution with custom subclassing of EUMM works, but it is very ugly<br/>&gt; (see my post about<br/>&gt; https://plus.google.com/110578993733685478222/posts/fvisV7ktDtd )<br/>&gt; <br/>&gt; So I propose to remove hardcode of .c suffix of xs targets and make it<br/>&gt; configurable. It is small change, but will make life of C++ module<br/>&gt; writers math easy.<br/><br/><br/> http://www.nntp.perl.org/group/perl.makemaker/2013/03/msg3355.html Fri, 15 Mar 2013 22:03:17 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by Craig A. Berry On Mon, Feb 25, 2013 at 1:08 AM, demerphq &lt;demerphq@gmail.com&gt; wrote:<br/>&gt; On 19 February 2013 17:57, demerphq &lt;demerphq@gmail.com&gt; wrote:<br/>&gt;&gt; Currently EU::MM maintains a list of headers that will cause XS<br/>&gt;&gt; modules to be rebuilt.<br/>&gt;<br/>&gt; Hey guys, getting a release made of the current patches as well as<br/>&gt;<br/>&gt; https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/pull/47<br/><br/>After verifying it causes no new test failures on VMS and OS X, I have<br/>merged this into master.<br/><br/>&gt; is holding up applying important changes to Perl for 5.18, and time is<br/>&gt; wasting away...<br/>&gt;<br/>&gt; Please can you arrange a release ASAP.<br/><br/>I don&#39;t think I can do that as it would require PAUSE access as well<br/>as a commit bit in the github repository. And it should really be<br/>Schwern who decides when to make a release. There haven&#39;t been that<br/>many changes since the last stable release so it should be reasonably<br/>safe to make another one.<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3354.html Wed, 27 Feb 2013 04:01:53 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by demerphq On 19 February 2013 17:57, demerphq &lt;demerphq@gmail.com&gt; wrote:<br/>&gt; Currently EU::MM maintains a list of headers that will cause XS<br/>&gt; modules to be rebuilt.<br/><br/>Hey guys, getting a release made of the current patches as well as<br/><br/>https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/pull/47<br/><br/>is holding up applying important changes to Perl for 5.18, and time is<br/>wasting away...<br/><br/>Please can you arrange a release ASAP.<br/><br/>As a temporary work around I can make a core only release myself, but<br/>I would prefer not to.<br/><br/>Thanks,<br/>Yves<br/><br/><br/>-- <br/>perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3353.html Mon, 25 Feb 2013 07:08:10 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by Craig A. Berry On Wed, Feb 20, 2013 at 12:41 AM, demerphq &lt;demerphq@gmail.com&gt; wrote:<br/><br/>&gt;&gt; I have pushed a patch in the yves/hv_h_split branch which should fix<br/>&gt;&gt; this. I plan to merge this branch to blead once 5.17.9 is out.<br/>&gt;&gt;<br/>&gt;&gt; Assuming it passes tests in core on VMS<br/><br/>The core and its extensions build fine. The generated include file<br/>dependencies look like:<br/><br/># --- MakeMaker perldepend section:<br/><br/>$(OBJECT) : $(PERL_INC)EXTERN.h, $(PERL_INC)INTERN.h, $(PERL_INC)XSUB.h<br/>$(OBJECT) : $(PERL_INC)av.h, $(PERL_INC)charclass_invlists.h, $(PERL_INC)cop.h<br/>$(OBJECT) : $(PERL_INC)cv.h, $(PERL_INC)dosish.h, $(PERL_INC)embed.h<br/>$(OBJECT) : $(PERL_INC)embedvar.h, $(PERL_INC)fakesdio.h, $(PERL_INC)fakethr.h<br/>$(OBJECT) : $(PERL_INC)feature.h, $(PERL_INC)form.h, $(PERL_INC)git_version.h<br/>$(OBJECT) : $(PERL_INC)gv.h, $(PERL_INC)handy.h, $(PERL_INC)hv.h<br/>$(OBJECT) : $(PERL_INC)hv_func.h, $(PERL_INC)inline.h, $(PERL_INC)intrpvar.h<br/>$(OBJECT) : $(PERL_INC)iperlsys.h, $(PERL_INC)keywords.h<br/>$(OBJECT) : $(PERL_INC)l1_char_class_tab.h, $(PERL_INC)malloc_ctl.h<br/>$(OBJECT) : $(PERL_INC)metaconfig.h, $(PERL_INC)mg.h, $(PERL_INC)mg_raw.h<br/>$(OBJECT) : $(PERL_INC)mg_vtable.h, $(PERL_INC)mydtrace.h, $(PERL_INC)nostdio.h<br/>$(OBJECT) : $(PERL_INC)op.h, $(PERL_INC)op_reg_common.h, $(PERL_INC)opcode.h<br/>$(OBJECT) : $(PERL_INC)opnames.h, $(PERL_INC)overload.h, $(PERL_INC)pad.h<br/>$(OBJECT) : $(PERL_INC)parser.h, $(PERL_INC)patchlevel.h, $(PERL_INC)perl.h<br/>$(OBJECT) : $(PERL_INC)perlapi.h, $(PERL_INC)perlio.h, $(PERL_INC)perliol.h<br/>$(OBJECT) : $(PERL_INC)perlsdio.h, $(PERL_INC)perlsfio.h, $(PERL_INC)perlvars.h<br/>$(OBJECT) : $(PERL_INC)perly.h, $(PERL_INC)pp.h, $(PERL_INC)pp_proto.h<br/>$(OBJECT) : $(PERL_INC)proto.h, $(PERL_INC)reentr.h, $(PERL_INC)regcharclass.h<br/>$(OBJECT) : $(PERL_INC)regcomp.h, $(PERL_INC)regexp.h, $(PERL_INC)regnodes.h<br/>$(OBJECT) : $(PERL_INC)scope.h, $(PERL_INC)sv.h, $(PERL_INC)thread.h<br/>$(OBJECT) : $(PERL_INC)time64.h, $(PERL_INC)time64_config.h<br/>$(OBJECT) : $(PERL_INC)uconfig.h, $(PERL_INC)unicode_constants.h<br/>$(OBJECT) : $(PERL_INC)unixish.h, $(PERL_INC)utf8.h, $(PERL_INC)utfebcdic.h<br/>$(OBJECT) : $(PERL_INC)util.h, $(PERL_INC)vmsish.h, $(PERL_INC)warnings.h<br/><br/>which is really the same as it was before but with a bunch of includes<br/>that were missing from the list.<br/><br/>I&#39;m not sure the VMS-specific perldepend needs to be as different as<br/>it is. I will try to look into consolidating anything in it that can<br/>be with the one in MM_Unix.<br/><br/>&gt;&gt; and the various core smoke<br/>&gt;&gt; environments I will push a patch to my EUMM fork on github and then<br/>&gt;&gt; file a Pull Request with the master repo (also on github). At which<br/>&gt;&gt; point we can update EUMM to the latest.<br/>&gt;&gt;<br/>&gt;&gt; I consider this patch and getting it or something equivalent merged<br/>&gt;&gt; into EUMM and perl core a 5.18 release blocker.<br/>&gt;<br/>&gt; Patch ID is: 0b340fe025421621146aac814778d80ad1df28c2<br/>&gt;<br/>&gt; Cheers,<br/>&gt; Yves<br/>&gt;<br/>&gt;<br/>&gt; --<br/>&gt; perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3352.html Thu, 21 Feb 2013 04:16:53 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by demerphq On 20 February 2013 07:40, demerphq &lt;demerphq@gmail.com&gt; wrote:<br/>&gt; On 20 February 2013 05:47, Craig A. Berry &lt;craig.a.berry@gmail.com&gt; wrote:<br/>&gt;&gt; On Tue, Feb 19, 2013 at 1:00 PM, Nicholas Clark &lt;nick@ccl4.org&gt; wrote:<br/>&gt;&gt;&gt; On Tue, Feb 19, 2013 at 05:57:12PM +0100, demerphq wrote:<br/>&gt;&gt;&gt;<br/>&gt;&gt;&gt;&gt; I want to fix this.<br/>&gt;&gt;&gt;&gt;<br/>&gt;&gt;&gt;&gt; My current plan is to create a new module ExtUtils::PerlHeaders and<br/>&gt;&gt;&gt;&gt; then move the list there.<br/>&gt;&gt;&gt;&gt;<br/>&gt;&gt;&gt;&gt; EU::MakeMaker can then require this module, and if it exists use it<br/>&gt;&gt;&gt;&gt; for the header list.<br/>&gt;&gt;&gt;&gt;<br/>&gt;&gt;&gt;&gt; I am curious if anyone has any better suggestions or comments?<br/>&gt;&gt;&gt;&gt;<br/>&gt;&gt;&gt;&gt; The code involved is in lib/ExtUtils/MM_Unix.pm as the sub perldepend():<br/>&gt;&gt;&gt;<br/>&gt;&gt;&gt; It&#39;s also in ExtUtils::MM_VMS as perldepend(). The intent is the same. The<br/>&gt;&gt;&gt; list is different.<br/>&gt;&gt;<br/>&gt;&gt; Omissions are probably maintenance failures. The one addition I can<br/>&gt;&gt; think of at the moment is vmsish.h.<br/>&gt;&gt;<br/>&gt;&gt;&gt; I noticed this problem a while back. I got some way towards addressing it -<br/>&gt;&gt;&gt; I added a routine Config::header_files() to give the list of header files.<br/>&gt;&gt;&gt; (So that&#39;s your ExtUtils::PerlHeaders already done)<br/>&gt;&gt;&gt;<br/>&gt;&gt;&gt; However, at the time I didn&#39;t have access to VMS, so couldn&#39;t fix up the<br/>&gt;&gt;&gt; forked code to do it in one place.<br/>&gt;&gt;&gt;<br/>&gt;&gt;&gt; However, since then, it&#39;s been suggested by someone (forget who, sorry) -<br/>&gt;&gt;&gt; why do we need a list? Given that the directory of installed header files<br/>&gt;&gt;&gt; is under our control, why not just glob it, and depend on everything that<br/>&gt;&gt;&gt; is &lt;*.h&gt; ?<br/>&gt;&gt;&gt;<br/>&gt;&gt;&gt; This seems a simpler suggestion than having to maintain an explicit list.<br/>&gt;&gt;<br/>&gt;&gt; You might be thinking of:<br/>&gt;&gt;<br/>&gt;&gt; &lt;http://www.nntp.perl.org/group/perl.perl5.porters/2012/12/msg196426.htmll&gt;<br/>&gt;<br/>&gt; I have pushed a patch in the yves/hv_h_split branch which should fix<br/>&gt; this. I plan to merge this branch to blead once 5.17.9 is out.<br/>&gt;<br/>&gt; Assuming it passes tests in core on VMS and the various core smoke<br/>&gt; environments I will push a patch to my EUMM fork on github and then<br/>&gt; file a Pull Request with the master repo (also on github). At which<br/>&gt; point we can update EUMM to the latest.<br/>&gt;<br/>&gt; I consider this patch and getting it or something equivalent merged<br/>&gt; into EUMM and perl core a 5.18 release blocker.<br/><br/>Patch ID is: 0b340fe025421621146aac814778d80ad1df28c2<br/><br/>Cheers,<br/>Yves<br/><br/><br/>-- <br/>perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3351.html Wed, 20 Feb 2013 06:41:39 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by demerphq On 20 February 2013 05:47, Craig A. Berry &lt;craig.a.berry@gmail.com&gt; wrote:<br/>&gt; On Tue, Feb 19, 2013 at 1:00 PM, Nicholas Clark &lt;nick@ccl4.org&gt; wrote:<br/>&gt;&gt; On Tue, Feb 19, 2013 at 05:57:12PM +0100, demerphq wrote:<br/>&gt;&gt;<br/>&gt;&gt;&gt; I want to fix this.<br/>&gt;&gt;&gt;<br/>&gt;&gt;&gt; My current plan is to create a new module ExtUtils::PerlHeaders and<br/>&gt;&gt;&gt; then move the list there.<br/>&gt;&gt;&gt;<br/>&gt;&gt;&gt; EU::MakeMaker can then require this module, and if it exists use it<br/>&gt;&gt;&gt; for the header list.<br/>&gt;&gt;&gt;<br/>&gt;&gt;&gt; I am curious if anyone has any better suggestions or comments?<br/>&gt;&gt;&gt;<br/>&gt;&gt;&gt; The code involved is in lib/ExtUtils/MM_Unix.pm as the sub perldepend():<br/>&gt;&gt;<br/>&gt;&gt; It&#39;s also in ExtUtils::MM_VMS as perldepend(). The intent is the same. The<br/>&gt;&gt; list is different.<br/>&gt;<br/>&gt; Omissions are probably maintenance failures. The one addition I can<br/>&gt; think of at the moment is vmsish.h.<br/>&gt;<br/>&gt;&gt; I noticed this problem a while back. I got some way towards addressing it -<br/>&gt;&gt; I added a routine Config::header_files() to give the list of header files.<br/>&gt;&gt; (So that&#39;s your ExtUtils::PerlHeaders already done)<br/>&gt;&gt;<br/>&gt;&gt; However, at the time I didn&#39;t have access to VMS, so couldn&#39;t fix up the<br/>&gt;&gt; forked code to do it in one place.<br/>&gt;&gt;<br/>&gt;&gt; However, since then, it&#39;s been suggested by someone (forget who, sorry) -<br/>&gt;&gt; why do we need a list? Given that the directory of installed header files<br/>&gt;&gt; is under our control, why not just glob it, and depend on everything that<br/>&gt;&gt; is &lt;*.h&gt; ?<br/>&gt;&gt;<br/>&gt;&gt; This seems a simpler suggestion than having to maintain an explicit list.<br/>&gt;<br/>&gt; You might be thinking of:<br/>&gt;<br/>&gt; &lt;http://www.nntp.perl.org/group/perl.perl5.porters/2012/12/msg196426.htmll&gt;<br/><br/>I have pushed a patch in the yves/hv_h_split branch which should fix<br/>this. I plan to merge this branch to blead once 5.17.9 is out.<br/><br/>Assuming it passes tests in core on VMS and the various core smoke<br/>environments I will push a patch to my EUMM fork on github and then<br/>file a Pull Request with the master repo (also on github). At which<br/>point we can update EUMM to the latest.<br/><br/>I consider this patch and getting it or something equivalent merged<br/>into EUMM and perl core a 5.18 release blocker.<br/><br/>Yves<br/><br/>-- <br/>perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3350.html Wed, 20 Feb 2013 06:40:52 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by Craig A. Berry On Tue, Feb 19, 2013 at 1:00 PM, Nicholas Clark &lt;nick@ccl4.org&gt; wrote:<br/>&gt; On Tue, Feb 19, 2013 at 05:57:12PM +0100, demerphq wrote:<br/>&gt;<br/>&gt;&gt; I want to fix this.<br/>&gt;&gt;<br/>&gt;&gt; My current plan is to create a new module ExtUtils::PerlHeaders and<br/>&gt;&gt; then move the list there.<br/>&gt;&gt;<br/>&gt;&gt; EU::MakeMaker can then require this module, and if it exists use it<br/>&gt;&gt; for the header list.<br/>&gt;&gt;<br/>&gt;&gt; I am curious if anyone has any better suggestions or comments?<br/>&gt;&gt;<br/>&gt;&gt; The code involved is in lib/ExtUtils/MM_Unix.pm as the sub perldepend():<br/>&gt;<br/>&gt; It&#39;s also in ExtUtils::MM_VMS as perldepend(). The intent is the same. The<br/>&gt; list is different.<br/><br/>Omissions are probably maintenance failures. The one addition I can<br/>think of at the moment is vmsish.h.<br/><br/>&gt; I noticed this problem a while back. I got some way towards addressing it -<br/>&gt; I added a routine Config::header_files() to give the list of header files.<br/>&gt; (So that&#39;s your ExtUtils::PerlHeaders already done)<br/>&gt;<br/>&gt; However, at the time I didn&#39;t have access to VMS, so couldn&#39;t fix up the<br/>&gt; forked code to do it in one place.<br/>&gt;<br/>&gt; However, since then, it&#39;s been suggested by someone (forget who, sorry) -<br/>&gt; why do we need a list? Given that the directory of installed header files<br/>&gt; is under our control, why not just glob it, and depend on everything that<br/>&gt; is &lt;*.h&gt; ?<br/>&gt;<br/>&gt; This seems a simpler suggestion than having to maintain an explicit list.<br/><br/>You might be thinking of:<br/><br/>&lt;http://www.nntp.perl.org/group/perl.perl5.porters/2012/12/msg196426.htmll&gt;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3349.html Wed, 20 Feb 2013 04:47:27 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by demerphq On 20 February 2013 03:39, Leon Timmermans &lt;fawaka@gmail.com&gt; wrote:<br/>&gt; On Wed, Feb 20, 2013 at 3:29 AM, demerphq &lt;demerphq@gmail.com&gt; wrote:<br/>&gt;&gt; Cool thanks. Ill make EUMM try to use that.<br/>&gt;<br/>&gt; Actually, it seems MakeMaker already defines a $self-&gt;{PERL_SRC}, so<br/>&gt; you could skip that part and just do something like<br/>&gt; &laquo;$self-&gt;{PERL_SRC} || $self-&gt;catdir($Config{archlibexp}, &#39;CORE&#39;)&raquo;.<br/>&gt; It&#39;s tricky enough to get MakeMaker bootstrapped without adding even<br/>&gt; more dependencies.<br/><br/>Heh. If you want to take this task off me id be obliged... :-)<br/><br/>Otherwise ill do my best to follow your recommendation here.<br/><br/>cheers,<br/>Yves<br/><br/><br/>-- <br/>perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3348.html Wed, 20 Feb 2013 02:41:32 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by Leon Timmermans On Wed, Feb 20, 2013 at 3:29 AM, demerphq &lt;demerphq@gmail.com&gt; wrote:<br/>&gt; Cool thanks. Ill make EUMM try to use that.<br/><br/>Actually, it seems MakeMaker already defines a $self-&gt;{PERL_SRC}, so<br/>you could skip that part and just do something like<br/>&laquo;$self-&gt;{PERL_SRC} || $self-&gt;catdir($Config{archlibexp}, &#39;CORE&#39;)&raquo;.<br/>It&#39;s tricky enough to get MakeMaker bootstrapped without adding even<br/>more dependencies.<br/><br/>Leon<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3347.html Wed, 20 Feb 2013 02:40:05 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by demerphq On 20 February 2013 03:25, Leon Timmermans &lt;fawaka@gmail.com&gt; wrote:<br/>&gt; On Wed, Feb 20, 2013 at 3:21 AM, demerphq &lt;demerphq@gmail.com&gt; wrote:<br/>&gt;&gt; Is that going to work while building perl itself when that directory wont exist?<br/>&gt;<br/>&gt; No, ExtUtils::CBuilder-&gt;perl_inc knows exactly where to find those<br/>&gt; headers in either condition.<br/><br/>Cool thanks. Ill make EUMM try to use that.<br/><br/>Yves<br/><br/><br/>-- <br/>perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3346.html Wed, 20 Feb 2013 02:29:26 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by Leon Timmermans On Wed, Feb 20, 2013 at 3:21 AM, demerphq &lt;demerphq@gmail.com&gt; wrote:<br/>&gt; Is that going to work while building perl itself when that directory wont exist?<br/><br/>No, ExtUtils::CBuilder-&gt;perl_inc knows exactly where to find those<br/>headers in either condition.<br/><br/>Leon<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3345.html Wed, 20 Feb 2013 02:26:20 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by demerphq On 20 February 2013 02:46, Leon Timmermans &lt;fawaka@gmail.com&gt; wrote:<br/>&gt; On Wed, Feb 20, 2013 at 2:43 AM, demerphq &lt;demerphq@gmail.com&gt; wrote:<br/>&gt;&gt; Sounds great. I did some rudimentary poking but couldnt find the right<br/>&gt;&gt; dir... Do you happen to know the config var name?<br/>&gt;<br/>&gt; catdir($Config{archlibexp}, &#39;CORE&#39;)<br/><br/>Is that going to work while building perl itself when that directory wont exist?<br/><br/>Yves<br/><br/>-- <br/>perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3344.html Wed, 20 Feb 2013 02:21:24 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by Leon Timmermans On Wed, Feb 20, 2013 at 2:43 AM, demerphq &lt;demerphq@gmail.com&gt; wrote:<br/>&gt; Sounds great. I did some rudimentary poking but couldnt find the right<br/>&gt; dir... Do you happen to know the config var name?<br/><br/>catdir($Config{archlibexp}, &#39;CORE&#39;)<br/><br/>Leon<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3343.html Wed, 20 Feb 2013 01:46:36 +0000 Re: Allow Perl to specify the list of headers that are XS dependencies by demerphq On 19 February 2013 20:00, Nicholas Clark &lt;nick@ccl4.org&gt; wrote:<br/>&gt; On Tue, Feb 19, 2013 at 05:57:12PM +0100, demerphq wrote:<br/>&gt;<br/>&gt;&gt; I want to fix this.<br/>&gt;&gt;<br/>&gt;&gt; My current plan is to create a new module ExtUtils::PerlHeaders and<br/>&gt;&gt; then move the list there.<br/>&gt;&gt;<br/>&gt;&gt; EU::MakeMaker can then require this module, and if it exists use it<br/>&gt;&gt; for the header list.<br/>&gt;&gt;<br/>&gt;&gt; I am curious if anyone has any better suggestions or comments?<br/>&gt;&gt;<br/>&gt;&gt; The code involved is in lib/ExtUtils/MM_Unix.pm as the sub perldepend():<br/>&gt;<br/>&gt; It&#39;s also in ExtUtils::MM_VMS as perldepend(). The intent is the same. The<br/>&gt; list is different.<br/>&gt;<br/>&gt;<br/>&gt; I noticed this problem a while back. I got some way towards addressing it -<br/>&gt; I added a routine Config::header_files() to give the list of header files.<br/>&gt; (So that&#39;s your ExtUtils::PerlHeaders already done)<br/>&gt;<br/>&gt; However, at the time I didn&#39;t have access to VMS, so couldn&#39;t fix up the<br/>&gt; forked code to do it in one place.<br/>&gt;<br/>&gt; However, since then, it&#39;s been suggested by someone (forget who, sorry) -<br/>&gt; why do we need a list? Given that the directory of installed header files<br/>&gt; is under our control, why not just glob it, and depend on everything that<br/>&gt; is &lt;*.h&gt; ?<br/>&gt;<br/>&gt; This seems a simpler suggestion than having to maintain an explicit list.<br/><br/>Sounds great. I did some rudimentary poking but couldnt find the right<br/>dir... Do you happen to know the config var name?<br/><br/>Yves<br/><br/>-- <br/>perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3342.html Wed, 20 Feb 2013 01:44:07 +0000 Re: Allow Perl to specify the list of headers that are XSdependencies by Nicholas Clark On Tue, Feb 19, 2013 at 05:57:12PM +0100, demerphq wrote:<br/><br/>&gt; I want to fix this.<br/>&gt; <br/>&gt; My current plan is to create a new module ExtUtils::PerlHeaders and<br/>&gt; then move the list there.<br/>&gt; <br/>&gt; EU::MakeMaker can then require this module, and if it exists use it<br/>&gt; for the header list.<br/>&gt; <br/>&gt; I am curious if anyone has any better suggestions or comments?<br/>&gt; <br/>&gt; The code involved is in lib/ExtUtils/MM_Unix.pm as the sub perldepend():<br/><br/>It&#39;s also in ExtUtils::MM_VMS as perldepend(). The intent is the same. The<br/>list is different.<br/><br/><br/>I noticed this problem a while back. I got some way towards addressing it -<br/>I added a routine Config::header_files() to give the list of header files.<br/>(So that&#39;s your ExtUtils::PerlHeaders already done)<br/><br/>However, at the time I didn&#39;t have access to VMS, so couldn&#39;t fix up the<br/>forked code to do it in one place.<br/><br/>However, since then, it&#39;s been suggested by someone (forget who, sorry) -<br/>why do we need a list? Given that the directory of installed header files<br/>is under our control, why not just glob it, and depend on everything that<br/>is &lt;*.h&gt; ?<br/><br/>This seems a simpler suggestion than having to maintain an explicit list.<br/><br/>Nicholas Clark<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3341.html Tue, 19 Feb 2013 19:00:34 +0000 Allow Perl to specify the list of headers that are XS dependencies by demerphq Currently EU::MM maintains a list of headers that will cause XS<br/>modules to be rebuilt.<br/><br/>If this list is not up to date then modifications to core headers<br/>during core development do not cause extensions to be rebuilt.<br/><br/>This means that we (perl core devs) cannot add new headers to Perl<br/>without build problems when they change and are used in XS code.<br/><br/>I personally have encountered this in a few places, the regex engine<br/>and the hash code.<br/><br/>I plan to merge a change which splits hv.h in two. Once this happens<br/>XS modules that depend on the perl hash function will break if the<br/>file is modified.<br/><br/>I want to fix this.<br/><br/>My current plan is to create a new module ExtUtils::PerlHeaders and<br/>then move the list there.<br/><br/>EU::MakeMaker can then require this module, and if it exists use it<br/>for the header list.<br/><br/>I am curious if anyone has any better suggestions or comments?<br/><br/>The code involved is in lib/ExtUtils/MM_Unix.pm as the sub perldepend():<br/><br/>sub perldepend {<br/> my($self) = shift;<br/> my(@m);<br/><br/> my $make_config = $self-&gt;cd(&#39;$(PERL_SRC)&#39;, &#39;$(MAKE) lib/Config.pm&#39;);<br/><br/> push @m, sprintf &lt;&lt;&#39;MAKE_FRAG&#39;, $make_config if $self-&gt;{PERL_SRC};<br/># Check for unpropogated config.sh changes. Should never happen.<br/># We do NOT just update config.h because that is not sufficient.<br/># An out of date config.h is not fatal but complains loudly!<br/>$(PERL_INC)/config.h: $(PERL_SRC)/config.sh<br/> -$(NOECHO) $(ECHO) &quot;Warning: $(PERL_INC)/config.h out of date with<br/>$(PERL_SRC)/config.sh&quot;; $(FALSE)<br/><br/>$(PERL_ARCHLIB)/Config.pm: $(PERL_SRC)/config.sh<br/> $(NOECHO) $(ECHO) &quot;Warning: $(PERL_ARCHLIB)/Config.pm may be out of<br/>date with $(PERL_SRC)/config.sh&quot;<br/> %s<br/>MAKE_FRAG<br/><br/> return join &quot;&quot;, @m unless $self-&gt;needs_linking;<br/><br/> push @m, q{<br/>PERL_HDRS = \<br/> $(PERL_INC)/EXTERN.h \<br/> $(PERL_INC)/INTERN.h \<br/> $(PERL_INC)/XSUB.h \<br/> $(PERL_INC)/av.h \<br/> $(PERL_INC)/config.h \<br/> $(PERL_INC)/cop.h \<br/> $(PERL_INC)/cv.h \<br/> $(PERL_INC)/dosish.h \<br/> $(PERL_INC)/embed.h \<br/> $(PERL_INC)/embedvar.h \<br/> $(PERL_INC)/fakethr.h \<br/> $(PERL_INC)/form.h \<br/> $(PERL_INC)/gv.h \<br/> $(PERL_INC)/handy.h \<br/> $(PERL_INC)/hv.h \<br/> $(PERL_INC)/intrpvar.h \<br/> $(PERL_INC)/iperlsys.h \<br/> $(PERL_INC)/keywords.h \<br/> $(PERL_INC)/mg.h \<br/> $(PERL_INC)/nostdio.h \<br/> $(PERL_INC)/op.h \<br/> $(PERL_INC)/opcode.h \<br/> $(PERL_INC)/patchlevel.h \<br/> $(PERL_INC)/perl.h \<br/> $(PERL_INC)/perlio.h \<br/> $(PERL_INC)/perlsdio.h \<br/> $(PERL_INC)/perlsfio.h \<br/> $(PERL_INC)/perlvars.h \<br/> $(PERL_INC)/perly.h \<br/> $(PERL_INC)/pp.h \<br/> $(PERL_INC)/pp_proto.h \<br/> $(PERL_INC)/proto.h \<br/> $(PERL_INC)/regcomp.h \<br/> $(PERL_INC)/regexp.h \<br/> $(PERL_INC)/regnodes.h \<br/> $(PERL_INC)/scope.h \<br/> $(PERL_INC)/sv.h \<br/> $(PERL_INC)/thread.h \<br/> $(PERL_INC)/unixish.h \<br/> $(PERL_INC)/util.h<br/><br/>$(OBJECT) : $(PERL_HDRS)<br/>} if $self-&gt;{OBJECT};<br/><br/> push @m, join(&quot; &quot;, values %{$self-&gt;{XS}}).&quot; : \$(XSUBPPDEPS)\n&quot;<br/>if %{$self-&gt;{XS}};<br/><br/> join &quot;\n&quot;, @m;<br/>}<br/><br/><br/>IMO this list has no business being hard coded into EU::MM now that<br/>EU::MM is not a core maintained module!<br/><br/>Cheers,<br/>Yves<br/>-- <br/>perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3340.html Tue, 19 Feb 2013 16:57:24 +0000 C++ support by Vladimir Timofeev Hi, please review pull request<br/>https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/pull/45<br/><br/>This patch make suffix of target for .xs file processing configurable<br/>(defaults .c as before). But now we really can make process .xs files<br/>to .cpp (for example) to support C++.<br/><br/>Before this change I found two methods to work with C++ in .xs (both<br/>are defective in some ways):<br/>1. Use CC=&gt;&#39;g++&#39; parameter.<br/>Bad, because C++ compiler not always gcc (it may be clang, microsoft<br/>compiler or any other).<br/>2. Use CCFLAGS with &quot;-x c++&quot; it at least works for gcc and clang (may<br/>be in others...)<br/>Also not portable...<br/><br/>Both solutions will not work if module has mix of .c and .cpp files...<br/>because .c files also will be processed as c++<br/><br/>Solution with custom subclassing of EUMM works, but it is very ugly<br/>(see my post about<br/>https://plus.google.com/110578993733685478222/posts/fvisV7ktDtd )<br/><br/>So I propose to remove hardcode of .c suffix of xs targets and make it<br/>configurable. It is small change, but will make life of C++ module<br/>writers math easy.<br/><br/>--<br/>Vladimir Timofeev &lt;vovkasm@gmail.com&gt;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/02/msg3339.html Mon, 18 Feb 2013 17:58:49 +0000 Re: How To Build A Perl Package Database by jvromans [Quoting Philippe Bruhat (BooK), on January 2 2013, 01:23, in &quot;Re: How To Build A P&quot;]<br/>&gt; One issue I had when trying to store distributions with<br/>&gt; Git::CPAN::Hook is that if a file does not change between two<br/>&gt; versions of a distribution, then git won&#39;t &quot;detect&quot; it.<br/><br/>This doesn&#39;t look like a problem if the approach is to checkout a<br/>particular tag corresponding to a specific install.<br/><br/>-- Johan<br/> http://johan.vromans.org/seasons_greetings.html<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/01/msg3338.html Wed, 02 Jan 2013 21:30:04 +0000 Re: How To Build A Perl Package Database by demerphq On 31 December 2012 19:38, Leon Timmermans &lt;fawaka@gmail.com&gt; wrote:<br/>&gt; On Mon, Dec 31, 2012 at 6:50 PM, Jan Dubois &lt;jand@activestate.com&gt; wrote:<br/>&gt;&gt; Mostly I would prohibit sharing of directories between Perl installations,<br/>&gt;&gt; and even within a single installation, the sharing of directories between<br/>&gt;&gt; install locations.<br/>&gt;&gt;<br/>&gt;&gt; E.g. the default configuration right now has $Config{installbin} and<br/>&gt;&gt; $Config{installsitebin} pointing to the the same directory. This means that<br/>&gt;&gt; if you install ExtUtils::ParseXS from CPAN, you end up with the new version<br/>&gt;&gt; of the module in $Config{installsitelib}, but the xsubpp script installed<br/>&gt;&gt; into $Config{installsitebin} will overwrite the core version already in<br/>&gt;&gt; $Config{installbin} because they are the same directory.<br/>&gt;&gt;<br/>&gt;&gt; This means it is now impossible to remove the ExtUtils::ParseXS module from<br/>&gt;&gt; the &quot;site&quot; install location and reverting to the core version.<br/>&gt;&gt;<br/>&gt;&gt; Even if you don&#39;t care about &quot;delete&quot; functionality in your package manager,<br/>&gt;&gt; you may still want to preserve the integrity of core install. Otherwise it<br/>&gt;&gt; is possible that the package manager updates a package it relies upon itself<br/>&gt;&gt; that breaks the package manager. Then it is impossible to fix this situation<br/>&gt;&gt; for a regular user without doing a complete reinstall of Perl itself.<br/>&gt;&gt;<br/>&gt;&gt; For this reason the ActivePerl package manager explicitly removes the &quot;site&quot;<br/>&gt;&gt; directories from @INC and only uses the modules originally included in the<br/>&gt;&gt; distribution.<br/>&gt;<br/>&gt; I think that would clash with most vendor distributed perls (or at<br/>&gt; least it does with both Debian and Red Hat). It would be nice if this<br/>&gt; system was instead able to integrate with them instead of them nuking<br/>&gt; it to prevent users from doing something stupid.<br/><br/>FWIW I think that Perl should use one install format and the distros<br/>should not fight that.<br/><br/>IMO a lot of MakeMakers problems come from trying to please too many<br/>people and ending up pleasing no one.<br/><br/>Yves<br/><br/>-- <br/>perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/01/msg3337.html Wed, 02 Jan 2013 14:18:21 +0000 Re: How To Build A Perl Package Database by Philippe Bruhat On Thu, Dec 20, 2012 at 05:48:10PM +0100, Johan Vromans wrote:<br/>&gt; Tim Bunce &lt;Tim.Bunce@pobox.com&gt; writes:<br/>&gt; <br/>&gt; &gt; A separate install database for each install location seems like the<br/>&gt; &gt; only workable approach.<br/>&gt; <br/>&gt; Store the complete distribution in a git repository?<br/>&gt; <br/><br/>One issue I had when trying to store distributions with Git::CPAN::Hook is<br/>that if a file does not change between two versions of a distribution,<br/>then git won&#39;t &quot;detect&quot; it.<br/><br/>That was an issue for me, as I tried to create special tree objects for<br/>each distribution, so that &quot;install this version of the distribution&quot;<br/>would basically mean &quot;apply the patch that creates the whole tree&quot;. This<br/>does not work if the tree does not contain files that haven&#39;t changed<br/>between versions.<br/><br/>Depending on what you meant, that could be an issue for you too.<br/><br/>-- <br/> Philippe Bruhat (BooK)<br/><br/> When you double-cross a friend, you triple-cross yourself.<br/> (Moral from Groo The Wanderer #8 (Epic))<br/> http://www.nntp.perl.org/group/perl.makemaker/2013/01/msg3336.html Wed, 02 Jan 2013 00:41:48 +0000 Re: How To Build A Perl Package Database by Leon Timmermans On Mon, Dec 31, 2012 at 6:50 PM, Jan Dubois &lt;jand@activestate.com&gt; wrote:<br/>&gt; Mostly I would prohibit sharing of directories between Perl installations,<br/>&gt; and even within a single installation, the sharing of directories between<br/>&gt; install locations.<br/>&gt;<br/>&gt; E.g. the default configuration right now has $Config{installbin} and<br/>&gt; $Config{installsitebin} pointing to the the same directory. This means that<br/>&gt; if you install ExtUtils::ParseXS from CPAN, you end up with the new version<br/>&gt; of the module in $Config{installsitelib}, but the xsubpp script installed<br/>&gt; into $Config{installsitebin} will overwrite the core version already in<br/>&gt; $Config{installbin} because they are the same directory.<br/>&gt;<br/>&gt; This means it is now impossible to remove the ExtUtils::ParseXS module from<br/>&gt; the &quot;site&quot; install location and reverting to the core version.<br/>&gt;<br/>&gt; Even if you don&#39;t care about &quot;delete&quot; functionality in your package manager,<br/>&gt; you may still want to preserve the integrity of core install. Otherwise it<br/>&gt; is possible that the package manager updates a package it relies upon itself<br/>&gt; that breaks the package manager. Then it is impossible to fix this situation<br/>&gt; for a regular user without doing a complete reinstall of Perl itself.<br/>&gt;<br/>&gt; For this reason the ActivePerl package manager explicitly removes the &quot;site&quot;<br/>&gt; directories from @INC and only uses the modules originally included in the<br/>&gt; distribution.<br/><br/>I think that would clash with most vendor distributed perls (or at<br/>least it does with both Debian and Red Hat). It would be nice if this<br/>system was instead able to integrate with them instead of them nuking<br/>it to prevent users from doing something stupid.<br/><br/>Leon<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3335.html Mon, 31 Dec 2012 18:39:05 +0000 Re: How To Build A Perl Package Database by Jan Dubois On Fri, Dec 28, 2012 at 4:18 PM, Leon Timmermans &lt;fawaka@gmail.com&gt; wrote:<br/><br/>&gt; &gt; Anyways, I just wanted to say that without putting some restrictions on<br/>&gt; how<br/>&gt; &gt; modules (and corresponding scripts) can be installed, creating a package<br/>&gt; &gt; manager would seem to get even more complex than ExtUtils::Makemaker...<br/>&gt; :)<br/>&gt;<br/>&gt; What kind of restrictions are you thinking about exactly?<br/>&gt;<br/><br/>Mostly I would prohibit sharing of directories between Perl installations,<br/>and even within a single installation, the sharing of directories between<br/>install locations.<br/><br/>E.g. the default configuration right now has $Config{installbin} and<br/>$Config{installsitebin} pointing to the the same directory. This means that<br/>if you install ExtUtils::ParseXS from CPAN, you end up with the new version<br/>of the module in $Config{installsitelib}, but the xsubpp script installed<br/>into $Config{installsitebin} will overwrite the core version already in<br/>$Config{installbin} because they are the same directory.<br/><br/>This means it is now impossible to remove the ExtUtils::ParseXS module from<br/>the &quot;site&quot; install location and reverting to the core version.<br/><br/>Even if you don&#39;t care about &quot;delete&quot; functionality in your package<br/>manager, you may still want to preserve the integrity of core install.<br/>Otherwise it is possible that the package manager updates a package it<br/>relies upon itself that breaks the package manager. Then it is impossible<br/>to fix this situation for a regular user without doing a complete reinstall<br/>of Perl itself.<br/><br/>For this reason the ActivePerl package manager explicitly removes the<br/>&quot;site&quot; directories from @INC and only uses the modules originally included<br/>in the distribution.<br/><br/>Cheers,<br/>-Jan<br/><br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3334.html Mon, 31 Dec 2012 17:50:16 +0000 Re: How To Build A Perl Package Database by Leon Timmermans On Fri, Dec 28, 2012 at 2:44 AM, Jan Dubois &lt;jand@activestate.com&gt; wrote:<br/>&gt; I wonder if it isn&#39;t time to deprecate all the complex install combinations<br/>&gt; that may have made sense when hard disks was rather limited.<br/>&gt;<br/>&gt; In ActivePerl we enforce a pretty simplified install layout to be able to<br/>&gt; create an intuitive package manager:<br/>&gt;<br/>&gt; no sharing of directories between different versions<br/>&gt; every install area has its own bin, etc, lib, and html subdirectories<br/>&gt; the etc subdirectory records packages installed in that location<br/><br/>I think that ship already sailed, if only because different<br/>distributions have very different layouts.<br/><br/>&gt; Anyways, I just wanted to say that without putting some restrictions on how<br/>&gt; modules (and corresponding scripts) can be installed, creating a package<br/>&gt; manager would seem to get even more complex than ExtUtils::Makemaker... :)<br/><br/>What kind of restrictions are you thinking about exactly?<br/><br/>Leon<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3333.html Sat, 29 Dec 2012 00:19:18 +0000 Fwd: How To Build A Perl Package Database by Jan Dubois ---------- Forwarded message ----------<br/>From: Jan Dubois &lt;jand@activestate.com&gt;<br/>Date: Thu, Dec 27, 2012 at 5:40 PM<br/>Subject: Re: How To Build A Perl Package Database<br/>To: Leon Timmermans &lt;fawaka@gmail.com&gt;<br/><br/><br/>On Thu, Dec 20, 2012 at 2:42 AM, Leon Timmermans &lt;fawaka@gmail.com&gt; wrote:<br/><br/>&gt; On Mon, Dec 17, 2012 at 9:36 AM, Tim Bunce &lt;Tim.Bunce@pobox.com&gt; wrote:<br/>&gt; &gt; A separate install database for each install location seems like the only<br/>&gt; &gt; workable approach.<br/>&gt;<br/>&gt; One minor complication of that is the strictest sense an &quot;install<br/>&gt; location&quot; isn&#39;t all that well defined. Or perhaps I should say every<br/>&gt; dist has 8 install locations with unspecified relationship on the<br/>&gt; filesystem (lib, arch, bin, script, libdoc, bindoc, libhtml, binhtml).<br/>&gt; In practice you may want to use lib *and* arch (they are never used<br/>&gt; simultaneously, but stuff in lib may be shared over different perl<br/>&gt; installations, contrary to arch which should be for one specific<br/>&gt; install).<br/>&gt;<br/><br/>I wonder if it isn&#39;t time to deprecate all the complex install combinations<br/>that may have made sense when hard disks was rather limited.<br/><br/>In ActivePerl we enforce a pretty simplified install layout to be able to<br/>create an intuitive package manager:<br/><br/> - no sharing of directories between different versions<br/> - every install area has its own bin, etc, lib, and html subdirectories<br/> - the etc subdirectory records packages installed in that location<br/><br/>Here is how PPM looks (on my Mac, but it is rather similar on Windows or<br/>Unix systems too):<br/>$ ppm area<br/>&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;<br/>&#x2502; name &#x2502; pkgs &#x2502; lib &#x2502;<br/>&#x251C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x253C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x253C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2524;<br/>&#x2502; user* &#x2502; 38 &#x2502; /Users/jan/Library/ActivePerl-5.16/lib &#x2502;<br/>&#x2502; (site) &#x2502; n/a &#x2502; /usr/local/ActivePerl-5.16/site/lib &#x2502;<br/>&#x2502; (perl) &#x2502; 245 &#x2502; /usr/local/ActivePerl-5.16/lib &#x2502;<br/>&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2534;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2534;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;<br/><br/>$ ls /Users/jan/Library/ActivePerl-5.16<br/>bin etc html lib<br/><br/>$ ppm query XML<br/>&#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x252C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;<br/>&#x2502; name &#x2502; version &#x2502;<br/>abstract &#x2502; area &#x2502;<br/>&#x251C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x253C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x253C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x253C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2524;<br/>&#x2502; XML-NamespaceSupport &#x2502; 1.11 &#x2502; a simple generic namespace support<br/>class &#x2502; user &#x2502;<br/>&#x2502; XML-Parser &#x2502; 2.41-r1 &#x2502; A perl module for parsing XML<br/>documents &#x2502; perl &#x2502;<br/>&#x2502; XML-SAX &#x2502; 0.99 &#x2502; Simple API for<br/>XML &#x2502; user &#x2502;<br/>&#x2502; XML-SAX-Base &#x2502; 1.08 &#x2502; Base class for SAX Drivers and<br/>Filters &#x2502; user &#x2502;<br/>&#x2502; XML-Simple &#x2502; 2.20 &#x2502; Easily read/write XML (esp config<br/>files) &#x2502; perl &#x2502;<br/>&#x2502; XML-Stream &#x2502; 1.23 &#x2502; Creates an XML Stream connection and<br/>parses return data &#x2502; user &#x2502;<br/>&#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2534;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2534;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2534;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;<br/> (6 packages installed matching &#39;XML&#39;)<br/><br/>$ ppm files XML-Stream<br/>/Users/jan/Library/ActivePerl-5.16/lib/XML/Stream.pm<br/>/Users/jan/Library/ActivePerl-5.16/lib/XML/Stream/IO/Select/Win32.pm<br/>/Users/jan/Library/ActivePerl-5.16/lib/XML/Stream/Namespace.pm<br/>/Users/jan/Library/ActivePerl-5.16/lib/XML/Stream/Node.pm<br/>/Users/jan/Library/ActivePerl-5.16/lib/XML/Stream/Parser.pm<br/>/Users/jan/Library/ActivePerl-5.16/lib/XML/Stream/Parser/DTD.pm<br/>/Users/jan/Library/ActivePerl-5.16/lib/XML/Stream/Tree.pm<br/>/Users/jan/Library/ActivePerl-5.16/lib/XML/Stream/XPath.pm<br/>/Users/jan/Library/ActivePerl-5.16/lib/XML/Stream/XPath/Op.pm<br/>/Users/jan/Library/ActivePerl-5.16/lib/XML/Stream/XPath/Query.pm<br/>/Users/jan/Library/ActivePerl-5.16/lib/XML/Stream/XPath/Value.pm<br/>/Users/jan/Library/ActivePerl-5.16/lib/auto/XML/Stream/.packlist<br/><br/>$ ppm remove XML-NamespaceSupport<br/>XML-NamespaceSupport: required by XML-SAX<br/>ppm remove failed: No packages uninstalled<br/><br/>Having a separate perl/bin and perl/site/bin and perl/vendor/bin is<br/>somewhat inconvenient for adding things to the $PATH, but it makes it<br/>possible to install an updated core package into the site directory, and<br/>later uninstall it without breaking the original core version. We don&#39;t use<br/>perl/vendor but instead merge all pre-installed packages into the core<br/>directories to keep $PATH a little shorter.<br/><br/>Anyways, I just wanted to say that without putting some restrictions on how<br/>modules (and corresponding scripts) can be installed, creating a package<br/>manager would seem to get even more complex than ExtUtils::Makemaker... :)<br/><br/>Cheers,<br/>-Jan<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3332.html Fri, 28 Dec 2012 01:45:07 +0000 Re: How To Build A Perl Package Database by Tim Bunce On Thu, Dec 20, 2012 at 11:42:06AM +0100, Leon Timmermans wrote:<br/>&gt; On Mon, Dec 17, 2012 at 9:36 AM, Tim Bunce &lt;Tim.Bunce@pobox.com&gt; wrote:<br/>&gt; &gt; A separate install database for each install location seems like the only<br/>&gt; &gt; workable approach.<br/>&gt; <br/>&gt; One minor complication of that is the strictest sense an &quot;install<br/>&gt; location&quot; isn&#39;t all that well defined. Or perhaps I should say every<br/>&gt; dist has 8 install locations with unspecified relationship on the<br/>&gt; filesystem (lib, arch, bin, script, libdoc, bindoc, libhtml, binhtml).<br/>&gt; In practice you may want to use lib *and* arch (they are never used<br/>&gt; simultaneously, but stuff in lib may be shared over different perl<br/>&gt; installations, contrary to arch which should be for one specific<br/>&gt; install).<br/><br/>Good point.<br/>Strengthening the definition of an &quot;install location&quot; would be good.<br/>Supporting only the common subset of possible layouts seems reasonable.<br/><br/>Tim.<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3331.html Thu, 20 Dec 2012 17:56:17 +0000 Re: How To Build A Perl Package Database by Johan Vromans Tim Bunce &lt;Tim.Bunce@pobox.com&gt; writes:<br/><br/>&gt; A separate install database for each install location seems like the<br/>&gt; only workable approach.<br/><br/>Store the complete distribution in a git repository?<br/><br/>-- Johan<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3330.html Thu, 20 Dec 2012 16:48:54 +0000 Re: How To Build A Perl Package Database by Leon Timmermans On Mon, Dec 17, 2012 at 9:36 AM, Tim Bunce &lt;Tim.Bunce@pobox.com&gt; wrote:<br/>&gt; A separate install database for each install location seems like the only<br/>&gt; workable approach.<br/><br/>One minor complication of that is the strictest sense an &quot;install<br/>location&quot; isn&#39;t all that well defined. Or perhaps I should say every<br/>dist has 8 install locations with unspecified relationship on the<br/>filesystem (lib, arch, bin, script, libdoc, bindoc, libhtml, binhtml).<br/>In practice you may want to use lib *and* arch (they are never used<br/>simultaneously, but stuff in lib may be shared over different perl<br/>installations, contrary to arch which should be for one specific<br/>install).<br/><br/>Leon<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3329.html Thu, 20 Dec 2012 10:42:38 +0000 Re: How To Build A Perl Package Database by Tim Bunce On Mon, Dec 17, 2012 at 08:23:51PM +0100, Ask Bj&oslash;rn Hansen wrote:<br/>&gt; On Dec 17, 2012, at 9:36, Tim Bunce &lt;Tim.Bunce@pobox.com&gt; wrote:<br/>&gt; <br/>&gt; &gt; A separate install database for each install location seems like the only<br/>&gt; &gt; workable approach.<br/>&gt; <br/>&gt; It seems to me that the database indeed will have to be[1] &quot;per library root&quot; and the tools using the database will need to know to do lookups everywhere and merge the results.<br/>&gt; <br/>&gt; Ask<br/>&gt; <br/>&gt; [1] Where &quot;will have to&quot; means &quot;to fit *my* universe&quot;.<br/><br/>Yes, that&#39;s what I had in mind.<br/><br/>Tim.<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3328.html Thu, 20 Dec 2012 10:38:37 +0000 Re: How To Build A Perl Package Database by Adam Kennedy Packlist 2.0<br/><br/>MYMETA + installed file details<br/><br/>?<br/>On Dec 17, 2012 12:36 AM, &quot;Tim Bunce&quot; &lt;Tim.Bunce@pobox.com&gt; wrote:<br/><br/>&gt; On Sun, Dec 16, 2012 at 04:53:49PM -0800, Michael G Schwern wrote:<br/>&gt; &gt; On 2012.12.16 11:57 AM, Leon Timmermans wrote:<br/>&gt; &gt;<br/>&gt; &gt; &gt;&gt; * Where to put the database? What about non-standard install<br/>&gt; locations?<br/>&gt;<br/>&gt; &gt; &gt;&gt; Another is to have a separate install database for non-standard<br/>&gt; install<br/>&gt; &gt; &gt;&gt; locations.<br/>&gt;<br/>&gt; A separate install database for each install location seems like the only<br/>&gt; workable approach.<br/>&gt;<br/>&gt; &gt; &gt;&gt; This makes sense to me, but it brings in the sticky problem<br/>&gt; &gt; &gt;&gt; of having to merge install databases. Sticky, but still a SMOP.<br/>&gt; Once you<br/>&gt; &gt; &gt;&gt; have to implement merging anyway, it now makes sense to have an<br/>&gt; install<br/>&gt; &gt; &gt;&gt; database for each install location. One for core. One for vendor.<br/>&gt; One for<br/>&gt; &gt; &gt;&gt; perl. And one for each custom location. This has a lot of<br/>&gt; advantages to<br/>&gt; &gt; &gt;&gt; better fit how Perl layers module installs.<br/>&gt; &gt; &gt;&gt;<br/>&gt; &gt; &gt;&gt; * allows separation of permissions<br/>&gt; &gt; &gt;&gt; * allows queries of what&#39;s installed based on what&#39;s in @INC<br/>&gt;<br/>&gt; Perhaps that could be taken one step further: one per installed<br/>&gt; distribution.<br/>&gt;<br/>&gt; Then, what&#39;s kept at each install location is a cached summary of what&#39;s<br/>&gt; installed below it. One that can be cross-checked against the individual<br/>&gt; distribution &#39;databases&#39; and rebuilt from it.<br/>&gt;<br/>&gt; That seems more robust against various kinds of &#39;damage&#39;.<br/>&gt;<br/>&gt; &gt; &gt;&gt; That second one is important. When a normal user queries the<br/>&gt; database, they<br/>&gt; &gt; &gt;&gt; want to get what&#39;s installed in the standard library location. When a<br/>&gt; &gt; &gt;&gt; local::lib user queries the database, they want to get what&#39;s<br/>&gt; installed in the<br/>&gt; &gt; &gt;&gt; standard library locations AND their own local lib.<br/>&gt;<br/>&gt; I.e., the default view is &quot;what&#39;s installed in my @INC&quot;.<br/>&gt;<br/>&gt; &gt; &gt; The combination of these is problematic. You might upgrade EU::Install<br/>&gt; &gt; &gt; in your local module path, but not have write permissions on the<br/>&gt; &gt; &gt; system paths. In practice, we might have to support all our older<br/>&gt; &gt; &gt; versions :-|<br/>&gt; &gt;<br/>&gt; &gt; Erg, good point. That very likely scenario is definitely going to<br/>&gt; require<br/>&gt; &gt; some thought.<br/>&gt;<br/>&gt; *nods*<br/>&gt;<br/>&gt; Here&#39;s where &quot;one install database per distribution with a cache<br/>&gt; database at the install location&quot; offers another benefit.<br/>&gt; The &quot;per distribution install database&quot; can be kept in a very simple<br/>&gt; plain text format that targets readability and future-proofing,<br/>&gt; while the &quot;cache database at the install location&quot; can target<br/>&gt; performance.<br/>&gt;<br/>&gt; If an install location has an incompatible version of the db,<br/>&gt; the per distribution dbs could be read instead. That&#39;s slow but workable<br/>&gt; and seems reasonable for that presumably uncommon case.<br/>&gt; I can think of a few further options as well.<br/>&gt;<br/>&gt; Tim.<br/>&gt;<br/><br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3327.html Mon, 17 Dec 2012 19:34:53 +0000 Re: How To Build A Perl Package Database by Ask Bjørn Hansen <br/>On Dec 17, 2012, at 9:36, Tim Bunce &lt;Tim.Bunce@pobox.com&gt; wrote:<br/><br/>&gt; A separate install database for each install location seems like the only<br/>&gt; workable approach.<br/><br/>It seems to me that the database indeed will have to be[1] &quot;per library root&quot; and the tools using the database will need to know to do lookups everywhere and merge the results.<br/><br/><br/>Ask<br/><br/>[1] Where &quot;will have to&quot; means &quot;to fit *my* universe&quot;.<br/><br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3326.html Mon, 17 Dec 2012 19:34:50 +0000 Re: How To Build A Perl Package Database by Leon Timmermans On Mon, Dec 17, 2012 at 1:53 AM, Michael G Schwern &lt;schwern@pobox.com&gt; wrote:<br/>&gt; I was thinking about what you said about packlists, and I wonder how much<br/>&gt; information one could scrape out of them. Would it be enough to reconstruct<br/>&gt; at least that a group of files belongs to a release? That would be enough to<br/>&gt; be able to fully uninstall a requested module. For example, if the user asks<br/>&gt; to uninstall ExtUtils::MakeMaker the database could have seen that<br/>&gt; ExtUtils/MakeMaker.pm was in a packlist together with ExtUtils/MM_Unix.pm and<br/>&gt; so on and uninstall them. Probably given their original purpose was to<br/>&gt; provide an uninstaller.<br/><br/>You can use them to uninstall (I assume that&#39;s the reason why Debian<br/>disables them for vendor packages). It can get a little messy when<br/>modules are split or some such, but that&#39;s relatively rare anyway.<br/><br/>&gt; Also what&#39;s with this .meta directory I see popping up? I missed a memo.<br/><br/>AFAIK that&#39;s cpanminus specific. AFAIK it stores meta information so<br/>that carton can use it. Ask Miyagawa for the details.<br/><br/>&gt; That&#39;s a good point about Storable. JSON requires a dependency.<br/>&gt; ExtUtils::Install could bundle JSON::PP, but it would be simpler to use<br/>&gt; Data::Dumper. It makes de/serialization faster and simpler. The main<br/>&gt; disadvantage is its only readable by Perl, but that&#39;s ok since this pile of<br/>&gt; DBM files will be opaque to everything but the Perl API. Too much of a mess<br/>&gt; to contemplate otherwise.<br/><br/>JSON::PP is already in modern perl releases, so it only requires a<br/>dependency on older perls.<br/><br/>Leon<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3325.html Mon, 17 Dec 2012 19:28:58 +0000 Re: How To Build A Perl Package Database by Leon Timmermans On Sat, Dec 15, 2012 at 11:59 PM, Michael G Schwern &lt;schwern@pobox.com&gt; wrote:<br/>&gt; We have a lot of serious problems because we lack a database of installed<br/>&gt; distributions, releases and files. There are serious problems with<br/>&gt; implementing one given A) the limitations of the standard Perl install and B)<br/>&gt; wedging it into existing systems. But I think I have a solution. Its similar<br/>&gt; to how meta data was slipped into the ecosystem without requiring authors to<br/>&gt; rewrite their releases or install a bunch of extra modules. It just happens<br/>&gt; as part of the normal CPAN module upgrade process.<br/>&gt;<br/>&gt; I&#39;ve been thinking that a minimal package database could be created by putting<br/>&gt; some hooks into ExtUtils::Install::install(), which every Perl build system<br/>&gt; ultimately uses, to record what gets installed. That way when<br/>&gt; ExtUtils::Install is upgraded, the user gets a build database without<br/>&gt; upgrading everything else.<br/>&gt;<br/>&gt; This would be a fairly straight forward process at install time...<br/>&gt;<br/>&gt; 1) Copy everything to a temp directory<br/>&gt; 2) Record everything in that temp directory<br/>&gt; 3) Copy everything from temp into the real location<br/>&gt;<br/>&gt; You could probably optimize this by skipping the copy to temp and just have<br/>&gt; install() record stuff as it goes by, but this is the dumb, simple, robust way<br/>&gt; to do it.<br/>&gt;<br/>&gt; Storage is a problem. The only reliable &quot;database&quot; Perl ships with is DBM, an<br/>&gt; on disk hash, so we can&#39;t get too fancy. It might take several DBM files, but<br/>&gt; this is enough to record information and do simple queries. What are those<br/>&gt; queries?<br/>&gt;<br/>&gt; * What version of the database is this?<br/>&gt; * What distributions are installed?<br/>&gt; * What release of a distribution is installed?<br/>&gt; * What files are in that release?<br/>&gt; * What version is that release?<br/>&gt; * What location was a release installed into? (core, vendor, site, custom)<br/>&gt; * What are the checksums of those files?<br/>&gt;<br/>&gt; And the basic operations we need to support.<br/>&gt;<br/>&gt; * Add a release (ie. install).<br/>&gt; * Delete a release (and its files).<br/>&gt; * Delete an older version of a release (as part of install).<br/>&gt; * Delete an older version of a release, only if its in the same release<br/>&gt; location. This is so CPAN installs don&#39;t delete vendor installed modules.<br/>&gt; * Verify the files of a release.<br/>&gt; * List distributions/releases installed.<br/>&gt;<br/>&gt; It would also store the MYMETA data which gives us a lot of information (such<br/>&gt; as dependencies) for free.<br/><br/>I can agree with all of that. Actually, starting a discussion about<br/>this was on my todo-list for the last QA hackathon but I didn&#39;t get<br/>around to it. Ideally, it should replace not only packlists but also<br/>perllocal<br/><br/>&gt; This is all totally doable, and efficient enough, with a small pile of DBM<br/>&gt; files and Storable. Where to put the database is a bit more complicated, see<br/>&gt; the list of open problems below.<br/><br/>Given that Storable&#39;s format isn&#39;t forward-compatible, something more<br/>stable such as JSON would be more appropriate.<br/><br/>&gt; There&#39;s lots and lots and lots of additional information which could be stored<br/>&gt; and queries and operations to allow, but if we can get the basics working<br/>&gt; it&#39;ll allow a heap of new solutions. And I think this is a SMOP.<br/>&gt;<br/>&gt;<br/>&gt; Future possibilities include...<br/>&gt;<br/>&gt; * Auto-upgrade to SQLite if ExtUtils::Install::DB::SQLite is installed.<br/>&gt;<br/>&gt; If a special module is installed we can offer SQLite support (or whatever) for<br/>&gt; a more advanced database. At install time it would copy the existing DBM<br/>&gt; system into its own database.<br/>&gt;<br/>&gt; In general, more functionality can be added as more optional (or bundled)<br/>&gt; dependencies are available to the system. Through it all the basic DBM<br/>&gt; database would continue to be redundantly maintained to provide a fallback<br/>&gt; should those optional modules break or go away.<br/><br/>Having a proper database would be really nice, but I&#39;m not sure if<br/>it&#39;s going to be worth the hassle if we have a robust system already.<br/><br/>&gt; * Upgrading the database.<br/>&gt;<br/>&gt; I&#39;d like to put some thought into how things are laid out initially to avoid a<br/>&gt; lot of major revisions, and thought into what information should be recorded<br/>&gt; so its available later, but eventually we&#39;re going to want to change the<br/>&gt; &quot;schema&quot;, such as it is with DBM files.<br/>&gt;<br/>&gt; I figure this can happen as part of upgrading ExtUtils::Install. It checks<br/>&gt; what version of the database you have and performs the necessary transforms to<br/>&gt; bring it up to the current version. We know how to do this, just have to keep<br/>&gt; it in mind and remember to implement it.<br/>&gt;<br/>&gt; * Where to put the database? What about non-standard install locations?<br/>&gt;<br/>&gt; $Config{archlib} would seem the obvious location, but it presents a<br/>&gt; permissions problem. If a non-root user installs into their home<br/>&gt; directory, you don&#39;t want them needing root to write to the installation<br/>&gt; database. There&#39;s several ways to deal with this.<br/>&gt;<br/>&gt; One is to simply not record non-standard install locations, but this loses<br/>&gt; data and punishes all those local::lib users out there.<br/>&gt;<br/>&gt; Another is to have a separate install database for non-standard install<br/>&gt; locations. This makes sense to me, but it brings in the sticky problem<br/>&gt; of having to merge install databases. Sticky, but still a SMOP. Once you<br/>&gt; have to implement merging anyway, it now makes sense to have an install<br/>&gt; database for each install location. One for core. One for vendor. One for<br/>&gt; perl. And one for each custom location. This has a lot of advantages to<br/>&gt; better fit how Perl layers module installs.<br/>&gt;<br/>&gt; * allows separation of permissions<br/>&gt; * allows queries of what&#39;s installed based on what&#39;s in @INC<br/>&gt;<br/>&gt; That second one is important. When a normal user queries the database, they<br/>&gt; want to get what&#39;s installed in the standard library location. When a<br/>&gt; local::lib user queries the database, they want to get what&#39;s installed in the<br/>&gt; standard library locations AND their own local lib.<br/><br/>The combination of these is problematic. You might upgrade EU::Install<br/>in your local module path, but not have write permissions on the<br/>system paths. In practice, we might have to support all our older<br/>versions :-|<br/><br/>&gt; Not perfect, but gets us off the ground. Its not a great database, but it<br/>&gt; does the important job of recording the critical install-time data for later<br/>&gt; use. Its implementable within the current system. It doesn&#39;t require a bunch<br/>&gt; of dependencies, just one upgrade. It works with most existing module<br/>&gt; releases. It solves a major design problem with the Perl module system.<br/>&gt;<br/>&gt; I think it&#39;s a Simple(?!) Matter Of Programming in ExtUtils::Install to get it<br/>&gt; off the ground. IMO the most important bit of coordination is putting some<br/>&gt; thought into what the basic database should look like so we don&#39;t have to<br/>&gt; worry about complicated upgrades later.<br/><br/>I&#39;m not sure it&#39;s as simple as you make it sound, but it is a good<br/>idea nonetheless.<br/><br/>Leon<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3324.html Mon, 17 Dec 2012 19:28:33 +0000 Re: How To Build A Perl Package Database by Leon Timmermans On Sun, Dec 16, 2012 at 6:34 PM, Johan Vromans &lt;jvromans@squirrel.nl&gt; wrote:<br/>&gt; Debian, and most other systems have decent package- and install<br/>&gt; managers. *They* maintain the database with installed distributions,<br/>&gt; releases and files. The only good approach for us is to play with them.<br/>&gt;<br/>&gt; So, an enhanced META.yaml or whatsoever may be a good idea, but *only*<br/>&gt; to generate a deb control file, or rpm spec file, or innosetup file and<br/>&gt; so on.<br/>&gt;<br/>&gt; It is no longer neccessary to handle everything ourselves. We&#39;re not<br/>&gt; alone anymore.<br/><br/>There are many ways to deploy stuff, not everyone uses rpm/deb, there<br/>are good reasons not to do so: for starters it assumes you have root<br/>privileges.<br/><br/>Leon<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3323.html Mon, 17 Dec 2012 19:28:31 +0000 Re: How To Build A Perl Package Database by Johan Vromans Michael G Schwern &lt;schwern@pobox.com&gt; writes:<br/><br/>&gt; We have a lot of serious problems because we lack a database of<br/>&gt; installed distributions, releases and files.<br/><br/>No, that is not our problem.<br/><br/>Our problem is that we want to handle it ourselves. This may have been a<br/>good approach in the dark ages, but nowadays there are better solutions.<br/><br/>For example, on Sat, 15 Dec 2012 14:15:24 -0800 you wrote:<br/><br/>&gt; When it comes to packaging, my first thought is always WDDD? What Does<br/>&gt; Debian Do? They usually do it right.<br/><br/>Debian, and most other systems have decent package- and install<br/>managers. *They* maintain the database with installed distributions,<br/>releases and files. The only good approach for us is to play with them.<br/><br/>So, an enhanced META.yaml or whatsoever may be a good idea, but *only*<br/>to generate a deb control file, or rpm spec file, or innosetup file and<br/>so on.<br/><br/>It is no longer neccessary to handle everything ourselves. We&#39;re not<br/>alone anymore.<br/><br/>-- Johan<br/><br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3322.html Mon, 17 Dec 2012 19:28:29 +0000 Re: How To Build A Perl Package Database by Alberto Simoes <br/>&gt;<br/>&gt; Thoughts?<br/>&gt;<br/><br/>Seems a good idea.<br/>Anybody wiling to submit a TPF grant to work on this? O:-)<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3321.html Mon, 17 Dec 2012 19:28:22 +0000 Re: How To Build A Perl Package Database by demerphq On 17 December 2012 01:53, Michael G Schwern &lt;schwern@pobox.com&gt; wrote:<br/>&gt; On 2012.12.16 11:57 AM, Leon Timmermans wrote:<br/>&gt;&gt; I can agree with all of that. Actually, starting a discussion about<br/>&gt;&gt; this was on my todo-list for the last QA hackathon but I didn&#39;t get<br/>&gt;&gt; around to it. Ideally, it should replace not only packlists but also<br/>&gt;&gt; perllocal<br/>&gt;<br/>&gt; I was thinking about what you said about packlists, and I wonder how much<br/>&gt; information one could scrape out of them. Would it be enough to reconstruct<br/>&gt; at least that a group of files belongs to a release? That would be enough to<br/>&gt; be able to fully uninstall a requested module. For example, if the user asks<br/>&gt; to uninstall ExtUtils::MakeMaker the database could have seen that<br/>&gt; ExtUtils/MakeMaker.pm was in a packlist together with ExtUtils/MM_Unix.pm and<br/>&gt; so on and uninstall them. Probably given their original purpose was to<br/>&gt; provide an uninstaller.<br/>&gt;<br/>&gt; Also what&#39;s with this .meta directory I see popping up? I missed a memo.<br/>&gt;<br/>&gt;<br/>&gt;&gt;&gt; This is all totally doable, and efficient enough, with a small pile of DBM<br/>&gt;&gt;&gt; files and Storable. Where to put the database is a bit more complicated, see<br/>&gt;&gt;&gt; the list of open problems below.<br/>&gt;&gt;<br/>&gt;&gt; Given that Storable&#39;s format isn&#39;t forward-compatible, something more<br/>&gt;&gt; stable such as JSON would be more appropriate.<br/>&gt;<br/>&gt; That&#39;s a good point about Storable. JSON requires a dependency.<br/>&gt; ExtUtils::Install could bundle JSON::PP, but it would be simpler to use<br/>&gt; Data::Dumper. It makes de/serialization faster and simpler. The main<br/>&gt; disadvantage is its only readable by Perl, but that&#39;s ok since this pile of<br/>&gt; DBM files will be opaque to everything but the Perl API. Too much of a mess<br/>&gt; to contemplate otherwise.<br/><br/>IMO the question is whether you want the data human readable or not.<br/><br/>If you dont care then use Sereal as a replacement for Storable. Same<br/>feature set pretty much except it is faster and produces smaller<br/>output.<br/><br/>Yves<br/><br/>-- <br/>perl -Mre=debug -e &quot;/just|another|perl|hacker/&quot;<br/> http://www.nntp.perl.org/group/perl.makemaker/2012/12/msg3320.html Mon, 17 Dec 2012 13:21:37 +0000