Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-25 Thread Ken Williams


On Feb 17, 2006, at 8:01 AM, Nicholas Clark wrote:

It won't hurt them, but it will cause immense pain for anyone  
wanting to
ship a module that uses a Build.PL - those developers will be  
forced to
decide whether to cut out anyone with an old Module::Build, or code  
their

Build.PL to use that version and work around the deficiencies.


Those authors should just be able to put a 'build_requires'  
dependency on the right version of Module::Build.





The thread on what YAML version Module::Build needs, and how to  
upgrade
correctly if there isn't =0.50 suggests that solving these  
Module::Build

needs upgrading issues isn't yet battle tested.


That's a different issue - the problem there is how to handle  
increases in 'feature' requirements, e.g. the 'yaml_support' feature  
for M::B.


 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-19 Thread Yitzchak Scott-Thoennes
On Sun, Feb 19, 2006 at 05:00:40PM +1100, Adam Kennedy wrote:
 I missed that thread.  What was the subject?  Module::Build doesn't
 need YAML at all (though authors really should have it to generate a
 fleshed-out META.yml).  And the current development version should
 work fine with current versions of YAML.  I don't think anybody is
 suggesting putting 0.2611 in the core, and I for one wouldn't mind
 seeing the battle-testing that would result from putting 0.27_* in the
 core happen before 0.28 is released.
 
 I'd really really really like to have a while to hammer on 0.28, since 
 it's been 8 months since the last Module::Build release, and what exists 
 now is surely better than what I have to play with now.
 
 Developer releases are only useful to a point.
 
 Andreas has 345 Perl installations on his server, and I'm starting to 
 assemble my every production Perl on every production platform matrix 
 based on his work.
 
 And I'd class that as appropriate _training_ for battle conditions, 
 which would throw up even more stuff.
 
 And if we can clear Module::Build on 400-500 installations of Perl, I'd 
 feel much more comfortable about seeing it head towards the core.

Sigh.  It's a perl-only module; putting it in is not going to break
any builds, at worst it will fail its tests.  And if it is going to
fail tests on platform Foo, we want to know that as soon as possible, so
that's a good thing.

I greatly appreciate it that you want to test it on so many perls, but
that's not a substitute for the variety of platforms doing smoke tests
or other periodic testing of the core.

It scares me that modules like version are switching to Module::Build
and we don't have any sense for how many platforms it just plain doesn't
work on.  The sooner it's in the core, the better.


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-18 Thread Yitzchak Scott-Thoennes
On Fri, Feb 17, 2006 at 02:01:30PM +, Nicholas Clark wrote:
 On Thu, Feb 16, 2006 at 07:26:47PM -0800, Yitzchak Scott-Thoennes wrote:
  On Thu, Feb 16, 2006 at 02:07:50PM +0100, Rafael Garcia-Suarez wrote:
 
   On the other hand, if we begin to ship M::B with stable perls, a lot
   of people will keep perl's M::B and not upgrade it. So we'd better be
   sure it's pretty stable in terms of functionality and API. So I agree
   with you here.
  
  Um.  Those same people aren't likely to install M::B in the first place.
  I don't see how providing them with it (even if it will fall out of date)
  hurts.
 
 It won't hurt them, but it will cause immense pain for anyone wanting to
 ship a module that uses a Build.PL - those developers will be forced to
 decide whether to cut out anyone with an old Module::Build, or code their
 Build.PL to use that version and work around the deficiencies.

I don't see the mountain, just a molehill.  But maybe that's just me.
For (wild speculation in absense of data) 99% of modules,
Module::Build is feature-complete.  The remaining 1% of modules
(e.g. Tk) won't be switching to it any time soon, and when they do,
they'll require version 0.30 or the like.

 The thread on what YAML version Module::Build needs, and how to upgrade
 correctly if there isn't =0.50 suggests that solving these Module::Build
 needs upgrading issues isn't yet battle tested.

I missed that thread.  What was the subject?  Module::Build doesn't
need YAML at all (though authors really should have it to generate a
fleshed-out META.yml).  And the current development version should
work fine with current versions of YAML.  I don't think anybody is
suggesting putting 0.2611 in the core, and I for one wouldn't mind
seeing the battle-testing that would result from putting 0.27_* in the
core happen before 0.28 is released.

 This is fine for 5.9 (anyone using 5.9 should be expecting surprises,
 including unannounced binary compatibility breakages across any patch)
 but not for stable, be it 5.8.x or 5.10.1.
 There is time before 5.10 to solve this. [But hopefully not loads of time :-)]

  With respect to stability, I hope functionality continues to increase,
  and that backwards-incompatible changes will be severely limited.  I
  don't see how this is different from any other module already in the
  core.
  
  However, I hope you are only applying this reasoning to 5.8.x.  My
 
 That's why it's not suitable for stable now, independent of any policy
 on assimilation.

Disagreeing with the premise (assuming I've correctly identified your
That), I disagree with your conclusion too.  Oh well.


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm,and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-17 Thread John Peacock
Adam Kennedy wrote:
 Adding additional work for every single Perl application because $you
 can't create a system which behaves like everybody else is expected to.

All of *my* CPAN releases contain a compatibility Makefile.PL which _will_
install Module::Build if it isn't already present; I don't have any bootstrap
problems.  I still don't think a Makefile.PL _has_ to be mandatory, though I
wouldn't object if M::B would whine if one wasn't present, because I agree that
it is a good idea.

On the other hand, I don't see Module::Install as being nearly ready for prime
time, at least partly due to lacking documentation (which I know you are
focusing on).  Try not to let your legitimate advocacy of a module you like
blind you to the reality that there are people who like M::B despite its
limitations and who will not switch, no matter how much you complain until you
can provide a clearly superior product.

John

-- 
John Peacock
Director of Information Research and Technology
Rowman  Littlefield Publishing Group
4720 Boston Way
Lanham, MD 20706
301-459-3366 x.5010
fax 301-429-5747


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm,and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-17 Thread John Peacock
demerphq wrote:

cherry picking through your message

 There is no excuse for a module built with MB going on CPAN without a
 Makefile.PL. 

I agree 100%.  I'm using using Module::Starter::PBP and (more importantly)
Module::Release, so I don't have an option.  But before we continue down the
road of FUD, can anyone provide a list of how many CPAN distros _don't_ contain
a Makefile.PL???

 MB should provide one automagically if the user hasnt requested it. 

Here, we disagree.  It is the *authors's* responsibility to ensure that any CPAN
release gets tested in a wide variety of environments, including bootstrapping
with backrev'd tools.  If no one else does, I'll even provide a patch to M::B
that will force a module author to hit Y when running './Build dist' if there
isn't a Makafile.PL present, but I'm opposed to creating a file without asking.
 There are simply too many variables involved for M::B to make a sane choice.

 But if it isnt there then
 the build is going to fail almost EVERYWHERE. And thats bad. Much much
 much worse than providing a Makefile.PL that will never be used.

If by EVERYWHERE you mean Win32, then I hate to break it to you but lots of
stuff doesn't work with Win32.  As much as they try, ActiveState's PPM has huge
holes because it is very hard to get Win32 installs working right (plus I have
to strongly disagree with their notion of we don't ship a newer version of
Module::XX in our product, so our PPM machines cannot be upgraded either).

If by EVERYWHERE you mean people running Perl 5.005_03 with the CPAN distro to
match, you aren't going to get a lot of sympathy around here, certainly.

Big modules on CPAN have README files which are supposed to help users perform
their install.  The very first paragraph of that README should suggest upgrading
the couple of dual-lived core modules that have been upgraded since 8088's were
the common desktop choice.  It's simply good practice to sharpen your tools
before cutting (you are much less likely to draw blood).

I am both an author and a user of CPAN.  I've installed RT.  More than once.
Successfully.  I've installed VCP.  More than once.  With very little loss of
blood.  I'm also a happy user of Module::Build and CPANPLUS, because they are
superior to what is shipped in the core.

John

-- 
John Peacock
Director of Information Research and Technology
Rowman  Littlefield Publishing Group
4720 Boston Way
Lanham, MD 20706
301-459-3366 x.5010
fax 301-429-5747


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-17 Thread Nicholas Clark
On Wed, Feb 15, 2006 at 12:07:02PM +0100, Rafael Garcia-Suarez wrote:
 On 2/15/06, Adam Kennedy [EMAIL PROTECTED] wrote:
  But MB is going to go core real soon now though right? 5.8.9?
 
 It's planned for the next 5.9, but I doubt new modules will go in the
 maintainance track. (But I'm no authority on maint:)

Well, I was assuming that it would be in current stable when current stable
is 5.10 :-)
(ie no, not 5.8.x, for the reasons below)

On Thu, Feb 16, 2006 at 07:26:47PM -0800, Yitzchak Scott-Thoennes wrote:
 On Thu, Feb 16, 2006 at 02:07:50PM +0100, Rafael Garcia-Suarez wrote:

  On the other hand, if we begin to ship M::B with stable perls, a lot
  of people will keep perl's M::B and not upgrade it. So we'd better be
  sure it's pretty stable in terms of functionality and API. So I agree
  with you here.
 
 Um.  Those same people aren't likely to install M::B in the first place.
 I don't see how providing them with it (even if it will fall out of date)
 hurts.

It won't hurt them, but it will cause immense pain for anyone wanting to
ship a module that uses a Build.PL - those developers will be forced to
decide whether to cut out anyone with an old Module::Build, or code their
Build.PL to use that version and work around the deficiencies.

The thread on what YAML version Module::Build needs, and how to upgrade
correctly if there isn't =0.50 suggests that solving these Module::Build
needs upgrading issues isn't yet battle tested.

This is fine for 5.9 (anyone using 5.9 should be expecting surprises,
including unannounced binary compatibility breakages across any patch)
but not for stable, be it 5.8.x or 5.10.1.
There is time before 5.10 to solve this. [But hopefully not loads of time :-)]

 With respect to stability, I hope functionality continues to increase,
 and that backwards-incompatible changes will be severely limited.  I
 don't see how this is different from any other module already in the
 core.
 
 However, I hope you are only applying this reasoning to 5.8.x.  My

That's why it's not suitable for stable now, independent of any policy
on assimilation.

Nicholas Clark


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm,and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-17 Thread Ken Williams


On Feb 16, 2006, at 8:44 AM, John Peacock wrote:


demerphq wrote:

cherry picking through your message


There is no excuse for a module built with MB going on CPAN without a
Makefile.PL.


I agree 100%.  I'm using using Module::Starter::PBP and (more 
importantly)

Module::Release, so I don't have an option.



I actually have a custom version of Module::Release that understands 
M::B and does a few more things to make my life easier (like looking up 
my CPAN password in my OS X keychain), but my several attempts at 
getting patches accepted for it have gone unresponded-to, so I've given 
up on getting it integrated.  I'll mail it to you if you want, though.


 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm,and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread demerphq
On 2/16/06, Ken Williams [EMAIL PROTECTED] wrote:

 On Feb 15, 2006, at 8:19 PM, Adam Kennedy wrote:

  But now I'm just getting annoyed and I doubt I can contribute any
  further to this conversation without repeating myself or resorting to
  outright flaming, so I'll step out here.

 Why do you think these threads keep happening on lists that AREN'T
 M::B's list?  It's very frustrating for me.  If there are problems we
 can solve in M::B, please bring them to our attention.

The reasons these discussions happen in other venues besides the MB
lists is because the MB lists are moderated and sometimes a post
doesnt hit the list for days after it was posted and then isnt
responded to for some time.  Also, I think that expecting every
critical thought about MB to be sent to the lists is unrealistic.
People have posted lots of discussion on Perlmonks for instance, but
ive rarely/never seen you comment. Is it so hard to pop by a site
where your users congregate and see what they are saying about your
stuff?  I mean we aren't talking about some obscure site with 7 users,
we are talking about one of the flagship perl help sites. As an
example I stopped hanging out in clpm because I found perlmonks, but i
still do the occasional search to see whether any of my modules are
being discussed.

Not only that but when legitimate concerns have been raised the
response has been less than positive.

For instance the subject matter of this thread (CPAN distros without
Makefile.PL's) has been raised time and time again. With almost every
time the exact same message.

And we still don't see that Makefile.PL being made mandatory. (And
judging from your comments in this thread it seems we shouldnt expect
to either.)

How long did it take to come up with a patch to make Cwd install ok on
Win32? A long time and in the end I wrote it.  As soon as you realized
that MB couldnt install CWD on win32 you should have a) ditched MB for
that project until it worked everywhere, b) fixed MB. I mean
seriously, if the author of a project like MB can't get it to work
properly on his flagship core distro and leaves it as such doesnt it
strike you as a pretty serious issue? Yet you havent released an
update to MB in a while because it breaks some feature of CPANPLUS?
(With an installed user base a mere fraction that of CPAN?)

I think you need to reconsider some of your positions. Making MB built
modules work as often as possible is much much more important than
adding new features whose appeal is restricted to module authors.
Making MB built stuff work on both of  the popular OS'es (Linux and
Win32) is more important than making it easy for an author to pick
which license they are releasing their module. Making feedback as easy
and painless as possible is more important than having a spam free
mailing list. Monitoring how your module is impacting the marketplace
is important, you cant just expect every comment to be emailed
directly to you.

And telling people that MB is great because its easy to extend while
ignoring the fact that most peoples first interaction with MB will be
when it fails to work is just counterproductive.

Frankly getting your product out the door more often with less changes
per release would help.  Its time to stop caring about the 10%ers and
start worrying about the 90%ers. If you can get an MB out the door
that has features and bug fixes that appeal to 90% of your user base
then forget about the stuff that you havent got working that only
appeals to 10%. The 10% will get over it and probably help you do the
work anyway, and the 90% are going to be able to yell a lot louder and
in a lot more places than you can respond to.

IMO, the MB PR has been awful. Time to fix that.

There is no excuse for a module built with MB going on CPAN without a
Makefile.PL. MB should provide one automagically if the user hasnt
requested it. If people dont need the Makefile.PL then they can ignore
it just fine. Its only a few hundred bytes. But if it isnt there then
the build is going to fail almost EVERYWHERE. And thats bad. Much much
much worse than providing a Makefile.PL that will never be used.

And BTW, before anybody tries to skewer me for saying this stuff,
consider that I have filed bug reports and patches. Ive gone from just
bitching about MB to trying to be constructive and helpful about it. 
MB is a good project that has gotten a bad name for decisions that
were no doubt made with good intent but that have backfired. Its time
to start taking these kinds of comments seriously and change the
public perception of MB. And respond to the issues raised.

I like to add a last point: I realize that you are a volunteer and
that you have a life besides Perl. But you have placed yourself as the
lynchpin of a number of core functions. If you dont have the time to
keep up with that then you need to change your development practices
and start distributing your responsibilites. Im not saying you should
do this, im just saying that a lack of 

Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm,and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread Rafael Garcia-Suarez
On 2/16/06, demerphq [EMAIL PROTECTED] wrote:
 ps: I'll go out on a limb here and say that MB should NOT be made core
 until it makes Makefile.PL production mandatory. And until it can

My opinion : the functionality that's interesting to add in the core
is to be able to run Build.PL, not to produce distros.
On the other hand, if we begin to ship M::B with stable perls, a lot
of people will keep perl's M::B and not upgrade it. So we'd better be
sure it's pretty stable in terms of functionality and API. So I agree
with you here.

 install all of the core modules that are built with it on all of the
 main OS'es that use it. Actually id go even further and say that no
 core distro should use MB until that distro can be installed on all
 the main OS'es.

I agree for XS core modules; pure-perl core modules just don't use any
makefile during perl's compilation process, so it's less important.
But it might be important that people can upgrade core modules without
installing non-core modules. (That won't be always the case, since
sometimes new dependencies appear.)


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm,and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread Ken Williams


On Feb 16, 2006, at 3:34 AM, demerphq wrote:


The reasons these discussions happen in other venues besides the MB
lists is because the MB lists are moderated and sometimes a post
doesnt hit the list for days after it was posted and then isnt
responded to for some time.  Also, I think that expecting every
critical thought about MB to be sent to the lists is unrealistic.
People have posted lots of discussion on Perlmonks for instance, but
ive rarely/never seen you comment.


That's true.  I don't typically have time to scan perlmonks.  Perlmonks 
is a great site, but for getting things changed in a module or asking 
questions about rationale, nothing beats contacting the module's 
authors and/or posting to its mailing list.




Is it so hard to pop by a site where your users congregate and see 
what they are saying about your stuff?


Yes.


Not only that but when legitimate concerns have been raised the
response has been less than positive.

For instance the subject matter of this thread (CPAN distros without
Makefile.PL's) has been raised time and time again. With almost every
time the exact same message.

And we still don't see that Makefile.PL being made mandatory. (And
judging from your comments in this thread it seems we shouldnt expect
to either.)


As I understand it, the reasoning is basically there are non-compliant 
distros on CPAN - so we must MAKE them comply!  I'm sorry, but I just 
disagree.  I believe we should *help* them comply.






How long did it take to come up with a patch to make Cwd install ok on
Win32? A long time and in the end I wrote it.  As soon as you realized
that MB couldnt install CWD on win32 you should have a) ditched MB for
that project until it worked everywhere, b) fixed MB. I mean
seriously, if the author of a project like MB can't get it to work
properly on his flagship core distro and leaves it as such doesnt it
strike you as a pretty serious issue?


You want the PathTools distro?  You can have it.  I only took it 
because nobody else would.  It's a horrible legacy mess and political 
mess and I would be glad to be rid of it.


Why didn't I make Cwd install ok on Win32 sooner?  Because I don't 
have an appropriate Win32 machine to test on, I don't understand ANY of 
the issues that were going on in that bug, and I don't own the code 
(ExtUtils::Install) that was determined to need the patching.  But you 
know all this, so why are you flaming me about it?




BTW, i really hope that this isnt perceived as a flame. Thats not
whats its intended to do. Its intended to be thoughtful and
constructive critcism with the aim of improving the standing of MB in
the community. I hope it acheives its goal.


Not really, it still felt like a flame to me.  But whatever, I can 
ignore the tone and try to just see the points.




ps: I'll go out on a limb here and say that MB should NOT be made core
until it makes Makefile.PL production mandatory. And until it can
install all of the core modules that are built with it on all of the
main OS'es that use it. Actually id go even further and say that no
core distro should use MB until that distro can be installed on all
the main OS'es.


You mean no core distro should use *just* M::B, right?  I see no harm 
in having both a traditional Makefile.PL and a Build.PL to give users 
the choice, do you?


In any case, on this Makefile.PL issue: I'm willing to put in an 
admonition to authors and a y/n button when they try to make a 
distribution without a Makefile.PL.  I think at least 90% of those 
cases are probably just accidents.  But I'm not willing to *force* the 
author to include a Makefile.PL, whatever force would mean here.


Given that, which is on the surface in conflict with your other desire 
to get 0.28 released ASAP, would you vote for a) getting this into 
0.28, or b) waiting until afterwards?


 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread Ken Williams


On Feb 14, 2006, at 1:16 PM, Tyler MacDonald wrote:


Ken Williams [EMAIL PROTECTED] wrote:

If we did that, we'd screw over people who are already maintaining
their Makefile.PL separately by hand.


OK... but if they are doing that, the Makefile.PL will be in their
*build* directory already... as far as I understand, our Makefile.PL 
only

needs to be generated in the *dist* directory.


Yeah, that's true.

Let me reconsider my reasoning here from scratch.  The original point 
that Adam  Yves were making, IIUIC, was that distributions should 
include a Makefile.PL.  If they don't have one at all, then of course 
we don't need to worry about clobbering one!  So I'd be fine with 
changing the default in this case to provide some flavor of Makefile.PL 
generated in the dist directory.


The main question would be what style to make it.  'traditional' is 
accessible by more people, but will often be broken (if, e.g., there 
are config questions or auto-sensing in the Build.PL they'll be lost to 
the Makefile.PL), so I'd be inclined to choose 'small' or 'passthrough' 
for this case.


That should make most people happy, no?

 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread Tyler MacDonald
Ken Williams [EMAIL PROTECTED] wrote:
 *build* directory already... as far as I understand, our Makefile.PL only
 needs to be generated in the *dist* directory.
 
 Yeah, that's true.
 
 Let me reconsider my reasoning here from scratch.  The original point 
 that Adam  Yves were making, IIUIC, was that distributions should 
 include a Makefile.PL.  If they don't have one at all, then of course 
 we don't need to worry about clobbering one!  So I'd be fine with 
 changing the default in this case to provide some flavor of Makefile.PL 
 generated in the dist directory.
 
 The main question would be what style to make it.  'traditional' is 
 accessible by more people, but will often be broken (if, e.g., there 
 are config questions or auto-sensing in the Build.PL they'll be lost to 
 the Makefile.PL), so I'd be inclined to choose 'small' or 'passthrough' 
 for this case.

I think passthrough is the way to go here. I also still think that
if we default in some way to generating a Makefile.PL, create_makefile_pl
should be extended to have an explicit skip option as well.

 That should make most people happy, no?

Sounds good to me. :-)

- Tyler


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread Ken Williams


On Feb 16, 2006, at 11:45 AM, Tyler MacDonald wrote:


I think passthrough is the way to go here. I also still think that
if we default in some way to generating a Makefile.PL, 
create_makefile_pl

should be extended to have an explicit skip option as well.


Definitely.  I'd just change the default to 'auto' (which means create 
a 'small' [or 'passthrough'] Makefile.PL if none already exists) 
though, and then the author can explicitly put create_makefile_pl = 
0 (or any other false value) in their Build.PL to shut it off.


If in the future we figure out how to auto-sense when we could create a 
'traditional' Makefile.PL that would be cool, but I don't really see it 
happening.  Too hard.


 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread John Peacock

demerphq wrote:

My understanding of this (and i hope im not putting words in Adams
mouth) is that anybody using an old CPAN can't install a distribution
that requires Module::Build unless a Makefile.PL is present. Since
this is a big chunk of the cpan's out there it affects a lot of users,
and in my experience is one of the reasons that people often get a bad
impression of MB on their first exposure as there is a good chance
that the first time they notice something uses MB will be when CPAN
fails to install because of the missing Makefile.pl


Let's be clear about the scope of responsibilities here.  Every time you 
start an install using a backrev'd CPAN, you are given instructions for 
updating CPAN itself.  The current CPAN handles MB just fine, thanks, so 
the core problem is sysadmins who refuse to upgrade their basic tools. 
If this reflects badly on M::B it is due to sloth and inertia, and that 
isn't something that adding a Makefile.PL is going to automatically fix.


Of course, there is also the far superior CPANPLUS, which deals with 
M::B even better...



IOW, no dist should ever be released to CPAN without a Makefile.PL and
MB should not allow anyone to create such a dist. There is no need to
make the Makefile.PL do any more than signal that MB needs to be
installed and then hand over to it to do the dirty work. Such an
implementation should work transparently on every CPAN ever released.


And who acts as gatekeeper?  PAUSE?  Module::Build itself???  This goes 
completely against the nature of CPAN, which is to accept all sorts of 
crap, with the good stuff eventually floating to the top (by being on a 
'use' line in every other module).


I would certainly accept a mandatory warning during './Build dist' if 
there was no Makefile.PL present, but I think that assuming that 
everyone wants to release to CPAN is grossly inappropriate.  I 
personally have released modules to CPAN lacking a Makefile.PL, but 
mostly because I forgot to add one (and since I now try to use 
Module::Starter::PBP, that isn't going to happen again).  I strongly 
support any author who wants to include only a Build.PL because they 
don't care if people who refuse to upgrade their core modules get 
burned. ;-)


John

--
John Peacock
Director of Information Research and Technology
Rowman  Littlefield Publishing Group
4501 Forbes Boulevard
Suite H
Lanham, MD  20706
301-459-3366 x.5010
fax 301-429-5748


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread Tyler MacDonald
John Peacock [EMAIL PROTECTED] wrote:
 if ($mb-overwrite_makefile()  -f $Makefile ) {
 my $answer = $mb-y_n(Found an existing Makefile.PL; overwrite?);
 if ($answer =~/y/i) {
 write_makefile;
 }
 }
 
 where overwrite_makefile is a package option passed to M::B::new().  I 
 did it this way so that
 
 a) the developer has to affirmatively choose that option;
 b) the developer has to _always_ hit 'Y' when running './Build distdir', 
 just in case he/she did something manually and forgot to turn off the 
 option.

So that's in there now?

BTW.. tsk tsk... y_n requires a default now. ;-)

- Tyler



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread Chris Dolan

On Feb 14, 2006, at 3:18 PM, John Peacock wrote:


Tyler MacDonald wrote:

Seriously though, it sounds like having at least a loud warning I
did not write this Makefile.PL, move it out of the way first is  
worthwhile.


Pseudocode:

if ($mb-overwrite_makefile()  -f $Makefile ) {
my $answer = $mb-y_n(Found an existing Makefile.PL;  
overwrite?);

if ($answer =~/y/i) {
write_makefile;
}
}

where overwrite_makefile is a package option passed to M::B::new 
().  I did it this way so that


a) the developer has to affirmatively choose that option;
b) the developer has to _always_ hit 'Y' when running './Build  
distdir', just in case he/she did something manually and forgot to  
turn off the option.


Ugh, I have to hit Y every time???  If you add the following to the  
conditional, I'd be happy:

   slurp($Makefile) !~ /auto.generated/is

Chris
--
Chris Dolan, Software Developer, Clotho Advanced Media Inc.
608-294-7900, fax 294-7025, 1435 E Main St, Madison WI 53703
vCard: http://www.chrisdolan.net/ChrisDolan.vcf

Clotho Advanced Media, Inc. - Creators of MediaLandscape Software  
(http://www.media-landscape.com/) and partners in the revolutionary  
Croquet project (http://www.opencroquet.org/)





Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread Chris Dolan

On Feb 14, 2006, at 2:40 PM, Tyler MacDonald wrote:


Well it would only clobber the file if it contained the
auto-generated line, so I think that's safe, but if you want to be
*really* paranoid, how about having the dist actions fail if you  
havent
specified a create_makfile_pl arg? (one of the exsitng ones or  
skip).


I just tested and CVS HEAD M::B happily overwrote a hand-made  
Makefile.PL when I added 'traditional' to Build.PL and ran Build  
distdir.  Luckily, I had it in SVN so it was an easy restore.


Chris
--
Chris Dolan, Software Developer, Clotho Advanced Media Inc.
608-294-7900, fax 294-7025, 1435 E Main St, Madison WI 53703
vCard: http://www.chrisdolan.net/ChrisDolan.vcf

Clotho Advanced Media, Inc. - Creators of MediaLandscape Software  
(http://www.media-landscape.com/) and partners in the revolutionary  
Croquet project (http://www.opencroquet.org/)





Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread Ken Williams


On Feb 16, 2006, at 2:05 PM, Chris Dolan wrote:

Attached below is a regexp-based solution that matches simple 
Build.PL files.  I submit this just for thought, not necessarily for 
inclusion in M::B.


Cool.  I wonder if Randy Sims (when he gets back from vacation) could 
run this against his mini-cpan area to get some statistics on the 
broader CPAN.  Or anyone else, if they're so inclined, certainly.


Perhaps this mode could be triggered by Ccreate_makefile_pl = 
'automatic'


Yeah.  As long as we're very strict in how we parse, i.e. any syntax 
errors according to our grammar for simple Build.PL files are fatal, 
this does seem like a good way to do things.


I would initially like to roll out the 'auto' default without any of 
this sensing on the Build.PL, but it's going to be good to have in our 
back pocket.  Thanks.


 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread demerphq
On 2/16/06, Ken Williams [EMAIL PROTECTED] wrote:
 Let me reconsider my reasoning here from scratch.  The original point
 that Adam  Yves were making, IIUIC, was that distributions should
 include a Makefile.PL.  If they don't have one at all, then of course
 we don't need to worry about clobbering one!  So I'd be fine with
 changing the default in this case to provide some flavor of Makefile.PL
 generated in the dist directory.

Yes that was my point.

 The main question would be what style to make it.  'traditional' is
 accessible by more people, but will often be broken (if, e.g., there
 are config questions or auto-sensing in the Build.PL they'll be lost to
 the Makefile.PL), so I'd be inclined to choose 'small' or 'passthrough'
 for this case.

 That should make most people happy, no?

In general yes. But I think its worth considering that traditional is
preferable. This

  http://perlmonks.org/index.pl?node_id=458282

argues that the traditional provides more flexibility for the end user.

Cheers,
yves

--
perl -Mre=debug -e /just|another|perl|hacker/


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread Ken Williams


On Feb 16, 2006, at 3:48 PM, demerphq wrote:


In general yes. But I think its worth considering that traditional is
preferable. This

  http://perlmonks.org/index.pl?node_id=458282

argues that the traditional provides more flexibility for the end user.


Yes.

 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm,and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-16 Thread Yitzchak Scott-Thoennes
On Thu, Feb 16, 2006 at 02:07:50PM +0100, Rafael Garcia-Suarez wrote:
 On 2/16/06, demerphq [EMAIL PROTECTED] wrote:
  ps: I'll go out on a limb here and say that MB should NOT be made core
  until it makes Makefile.PL production mandatory. And until it can

That doesn't make sense to me.  Alerting module authors to missing
Makefile.PLs is important only because of how many MB-less
installations there are out there; adding MB to the core can only end
up decreasing the number of such installations.
 
 My opinion : the functionality that's interesting to add in the core
 is to be able to run Build.PL, not to produce distros.

Agreed, but there's little point in separating them.

 On the other hand, if we begin to ship M::B with stable perls, a lot
 of people will keep perl's M::B and not upgrade it. So we'd better be
 sure it's pretty stable in terms of functionality and API. So I agree
 with you here.

Um.  Those same people aren't likely to install M::B in the first place.
I don't see how providing them with it (even if it will fall out of date)
hurts.

With respect to stability, I hope functionality continues to increase,
and that backwards-incompatible changes will be severely limited.  I
don't see how this is different from any other module already in the
core.

However, I hope you are only applying this reasoning to 5.8.x.  My
main reason for wanting M::B in the core for 5.9.x as soon as possible
is to increase the number of people forced to test it and help get it
working on non-major platforms.


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-15 Thread demerphq
On 2/15/06, Andreas J. Koenig [EMAIL PROTECTED] wrote:
  On Wed, 15 Feb 2006 13:29:34 +1100, Adam Kennedy [EMAIL PROTECTED] 
  said:

   I think I'm coming into this discussion late. =(  What do you mean
   by doesn't bootstrap?  M::B does indeed use itself to install
   itself, so you must have something else in mind.  Could you
   elaborate briefly to bring me up to date on this discussion?

Sure thing.

Module::Build is not (yet) a core module.

Thus, any CPAN distribution (other than MB itself with your extra
magic of course) that has ONLY got a Build.PL has an undeclared
non-core dependency, which will cause Build.PL to crash with an error.

CPAN.pm in particular, the CPAN client we ship in the core, does not
install Module::Build either, even when upgraded to the current
version.

So as a result, any MB-using dist cannot be installed on any current
production Perl. Installation requires an undocumented (to the
installer) undeclared non-core module MB to be hand-installed because
any of these dists will work.

 CPAN.pm 1.83_56 introduced a protection against this sometimes missing
 prerequisite declaration. 1.84 is really close to a release, so this
 gap is closed then.

Ive always had problems doing an upgrade using Bundle::CPAN on win32
and eventually stopped bothering. However i just took a moment to try.
Unfortunately it still chokes. :(

I say this here because I believe it is relevent. Win32 users almost
definately wont bother with Bundle::CPAN as they most likely have the
same experience that i have had, that its too much trouble to bother.
Although this latest error is different from earlier ones that I
recall where the failures were down to hard to install (on win32) XS
modules failing.

D:\ cpan
Terminal does not support AddHistory.

There seems to be running another CPAN process (pid 3024).  Contacting...
Other job not responding. Shall I overwrite the lockfile? (Y/N) [y] y

cpan shell -- CPAN exploration and modules installation (v1.7601)
ReadLine support available (try 'install Bundle::CPAN')

cpan install Bundle::CPAN
CPAN: Storable loaded ok
Going to read D:\home\.cpan5.8.x\Metadata
  Database was generated on Mon, 06 Feb 2006 02:17:31 GMT
Subroutine new redefined at E:/Perl/811/site/lib/LWP\UserAgent.pm line
34, FIN line 1.
Subroutine _request_sanity_check redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 113, FIN line 1.
Subroutine send_request redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 133, FIN line 1.
Subroutine prepare_request redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 239, FIN line 1.
Subroutine simple_request redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 268, FIN line 1.
Subroutine request redefined at E:/Perl/811/site/lib/LWP\UserAgent.pm
line 277, FIN line 1.
Subroutine get redefined at E:/Perl/811/site/lib/LWP\UserAgent.pm line
415, FIN line 1.
Subroutine post redefined at E:/Perl/811/site/lib/LWP\UserAgent.pm
line 423, FIN line 1.
Subroutine head redefined at E:/Perl/811/site/lib/LWP\UserAgent.pm
line 431, FIN line 1.
Subroutine _process_colonic_headers redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 439, FIN line 1.
Subroutine is_protocol_supported redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 493, FIN line 1.
Subroutine protocols_allowed redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 520, FIN line 1.
Subroutine protocols_forbidden redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 521, FIN line 1.
Subroutine requests_redirectable redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 522, FIN line 1.
Subroutine redirect_ok redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 526, FIN line 1.
Subroutine credentials redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 553, FIN line 1.
Subroutine get_basic_credentials redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 561, FIN line 1.
Subroutine agent redefined at E:/Perl/811/site/lib/LWP\UserAgent.pm
line 574, FIN line 1.
Subroutine _agent redefined at E:/Perl/811/site/lib/LWP\UserAgent.pm
line 586, FIN line 1.
Subroutine timeout redefined at E:/Perl/811/site/lib/LWP\UserAgent.pm
line 588, FIN line 1.
Subroutine from redefined at E:/Perl/811/site/lib/LWP\UserAgent.pm
line 589, FIN line 1.
Subroutine parse_head redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 590, FIN line 1.
Subroutine max_size redefined at E:/Perl/811/site/lib/LWP\UserAgent.pm
line 591, FIN line 1.
Subroutine max_redirect redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 592, FIN line 1.
Subroutine cookie_jar redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 595, FIN line 1.
Subroutine default_headers redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 609, FIN line 1.
Subroutine default_header redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 618, FIN line 1.
Subroutine conn_cache redefined at
E:/Perl/811/site/lib/LWP\UserAgent.pm line 624, FIN line 1.
Subroutine use_eval redefined at 

Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-15 Thread Adam Kennedy


I think I'm coming into this discussion late. =(  What do you mean by 
doesn't bootstrap?  M::B does indeed use itself to install itself, so 
you must have something else in mind.  Could you elaborate briefly to 
bring me up to date on this discussion?


Sure thing.

Module::Build is not (yet) a core module.

Thus, any CPAN distribution (other than MB itself with your extra magic 
of course) that has ONLY got a Build.PL has an undeclared non-core 
dependency, which will cause Build.PL to crash with an error.


CPAN.pm in particular, the CPAN client we ship in the core, does not 
install Module::Build either, even when upgraded to the current version.


So as a result, any MB-using dist cannot be installed on any current 
production Perl. Installation requires an undocumented (to the 
installer) undeclared non-core module MB to be hand-installed because 
any of these dists will work.


This is what I mean by bootstrapping.

The reason this is so bad is because of the most common failure modules.

This is typically someone installing something like RT, which recurses 
downwards two or three times, hits the MB error 500 lines into the 
output, continues to install whatever else it can find recursing 
upwards, until it gets to the end.


The error message failed to load Module::Build from which the user is 
supposed to realise they need to manually install Module::Build (or 
install directly via CPAN.pm) is buried somewhere 500 lines into a 1000 
line long output.


This is effectively impenetrable to anyone that isn't an author (and 
doesn't have this problem anyway).


This is the problem that I'd like to see fixed.

And while I'm trying very hard (I hope mostly successfully) to not say 
anything about MB's other properties (good or bad) other than this 
installation problem, let me add that just because some authors might 
like some feature of MB it doesn't mitigate the problem of (anything 
using) it not bootstrapping properly.


Adam K





At the very least the Makefile.pl could create a tiny makefile that
then runs Build.pl and Build as needed. If someone can explain why
this is impossible, then id like to hear it.


We already do that, using the 'passthrough' or 'small' options for 
auto-creating a Makefile.PL.  See the docs for Module::Build::Compat.


Module::Build itself also ships with such a Makefile.PL so that 
automated tools like CPAN(PLUS) can install it.


 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-15 Thread Rafael Garcia-Suarez
On 2/15/06, Adam Kennedy [EMAIL PROTECTED] wrote:
 But MB is going to go core real soon now though right? 5.8.9?

It's planned for the next 5.9, but I doubt new modules will go in the
maintainance track. (But I'm no authority on maint:)


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-15 Thread Adam Kennedy

My understanding of this (and i hope im not putting words in Adams
mouth) is that anybody using an old CPAN can't install a distribution
that requires Module::Build unless a Makefile.PL is present. Since
this is a big chunk of the cpan's out there it affects a lot of users,
and in my experience is one of the reasons that people often get a bad
impression of MB on their first exposure as there is a good chance
that the first time they notice something uses MB will be when CPAN
fails to install because of the missing Makefile.pl


Those words are fine to be put in my mouth, it pretty much covers it.

But I'll clarify old to include current. Because unless I missed it 
Module::Build isn't core yet, it's a seperate CPAN module. Hence why I 
said that it applies to any existing perl distribution.


And I'm also absolutely cool with doing whatever people like with third 
party non-CPAN module, because $we never have to deal with them and will 
never see people adding deps on them.


But MB is going to go core real soon now though right? 5.8.9?

Adam K


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-15 Thread Andreas J. Koenig
 On Wed, 15 Feb 2006 13:29:34 +1100, Adam Kennedy [EMAIL PROTECTED] said:

  I think I'm coming into this discussion late. =(  What do you mean
  by doesn't bootstrap?  M::B does indeed use itself to install
  itself, so you must have something else in mind.  Could you
  elaborate briefly to bring me up to date on this discussion?

   Sure thing.

   Module::Build is not (yet) a core module.

   Thus, any CPAN distribution (other than MB itself with your extra
   magic of course) that has ONLY got a Build.PL has an undeclared
   non-core dependency, which will cause Build.PL to crash with an error.

   CPAN.pm in particular, the CPAN client we ship in the core, does not
   install Module::Build either, even when upgraded to the current
   version.

   So as a result, any MB-using dist cannot be installed on any current
   production Perl. Installation requires an undocumented (to the
   installer) undeclared non-core module MB to be hand-installed because
   any of these dists will work.

CPAN.pm 1.83_56 introduced a protection against this sometimes missing
prerequisite declaration. 1.84 is really close to a release, so this
gap is closed then.

-- 
andreas


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-15 Thread Chris Dolan

On Feb 14, 2006, at 3:06 PM, Tyler MacDonald wrote:


Chris Dolan [EMAIL PROTECTED] wrote:

Well it would only clobber the file if it contained the
auto-generated line, so I think that's safe, but if you want to be
*really* paranoid, how about having the dist actions fail if you  
havent
specified a create_makfile_pl arg? (one of the exsitng ones or  
skip).

I just tested and CVS HEAD M::B happily overwrote a hand-made
Makefile.PL when I added 'traditional' to Build.PL and ran Build
distdir.  Luckily, I had it in SVN so it was an easy restore.


But that's exactly what you asked it to do. ;-)

Seriously though, it sounds like having at least a loud warning I
did not write this Makefile.PL, move it out of the way first is  
worthwhile.


- Tyler


I understand that.  I was simply saying that your assertion that it  
wouldn't clobber a file that lacked the auto-generated line was not  
the current reality.  It was unclear to me from that message whether  
you were discussing actual behavior or ideal behavior, so I tested it  
myself.  Sorry, I should have put a smiley after my SVN comment.  :-D


I like your proposed warning.

Chris
--
Chris Dolan, Software Developer, Clotho Advanced Media Inc.
608-294-7900, fax 294-7025, 1435 E Main St, Madison WI 53703
vCard: http://www.chrisdolan.net/ChrisDolan.vcf

Clotho Advanced Media, Inc. - Creators of MediaLandscape Software  
(http://www.media-landscape.com/) and partners in the revolutionary  
Croquet project (http://www.opencroquet.org/)





Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-15 Thread John Peacock
Andreas J. Koenig wrote:
 On Wed, 15 Feb 2006 13:29:34 +1100, Adam Kennedy [EMAIL PROTECTED] 
 said:
So as a result, any MB-using dist cannot be installed on any current
production Perl. Installation requires an undocumented (to the
installer) undeclared non-core module MB to be hand-installed because
any of these dists will work.
 
 CPAN.pm 1.83_56 introduced a protection against this sometimes missing
 prerequisite declaration. 1.84 is really close to a release, so this
 gap is closed then.

Actually, I was going to point out that I took one of the rare machines that I
have access to that isn't infected with my entire toolchain and installed
Bundle::CPAN.  The very last thing it installed was Module::Build itself; I was
trying to see how long the Bundle::CPAN that is distributed with CPAN has
included M::B, but search.cpan.org is having some issues at the present time. :(

John

-- 
John Peacock
Director of Information Research and Technology
Rowman  Littlefield Publishing Group
4720 Boston Way
Lanham, MD 20706
301-459-3366 x.5010
fax 301-429-5747


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-15 Thread John Peacock

Andreas J. Koenig wrote:

It entered 2005-12-19, short before 1.80_57. But note, that the
protection I was talking about is not the fact that M:B is in the
Bundle:CPAN. The protecion looks instead like so:

if (-f Build.PL  ! -f Makefile.PL  ! exists 
$req-{Module::Build}) {
$CPAN::Frontend-mywarn(  Warning: CPAN.pm discovered Module::Build as 
.
undeclared prerequisite.\n.
  Adding it now as a prerequisite.\n
   );


But I guess my point was big projects like RT (which is the one that 
Adam cited) should have a prominently displayed warning make sure your 
CPAN[PLUS] is up to date before trying to install.  Either updating 
CPAN (or preferably Bundle::CPAN) should be the first order of business 
and would prevent any bootstrap problems (unless you are stuck with 
Win32, that is).


John

--
John Peacock
Director of Information Research and Technology
Rowman  Littlefield Publishing Group
4501 Forbes Boulevard
Suite H
Lanham, MD  20706
301-459-3366 x.5010
fax 301-429-5748


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-15 Thread Andreas J. Koenig
 On Wed, 15 Feb 2006 13:47:08 +0100, demerphq [EMAIL PROTECTED] said:

   The bundle file D:\home\.cpan5.8.x\Bundle\CPAN.pm may be a broken
   bundlefile. It seems not to contain any bundle definition.
   Please check the file and if it is bogus, please delete it.
   Sorry for the inconvenience.

This has come up before. The explanation last time was that 1.76_01
had the bug and 1.84 doesn't have it. 1.76_01 installed the wrong
CPAN.pm file a a bundle (239k; the actual CPAN.pm module!)

If this is what's going on here, you'd remove the above mentioned
Bundle\CPAN.pm file, then do an install CPAN and a reload cpan and
then you should have success running the install Bundle::CPAN again.

Something like this should definitely work.


-- 
andreas


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-15 Thread Andreas J. Koenig
 On Wed, 15 Feb 2006 07:36:17 -0500, John Peacock [EMAIL PROTECTED] said:

 jp Andreas J. Koenig wrote:
  On Wed, 15 Feb 2006 13:29:34 +1100, Adam Kennedy [EMAIL PROTECTED] 
  said:
   So as a result, any MB-using dist cannot be installed on any current
   production Perl. Installation requires an undocumented (to the
   installer) undeclared non-core module MB to be hand-installed because
   any of these dists will work.
  
  CPAN.pm 1.83_56 introduced a protection against this sometimes missing
  prerequisite declaration. 1.84 is really close to a release, so this
  gap is closed then.

 jp Actually, I was going to point out that I took one of the rare machines 
that I
 jp have access to that isn't infected with my entire toolchain and installed
 jp Bundle::CPAN.  The very last thing it installed was Module::Build itself; 
I was
 jp trying to see how long the Bundle::CPAN that is distributed with CPAN has
 jp included M::B, but search.cpan.org is having some issues at the present 
time. :(

It entered 2005-12-19, short before 1.80_57. But note, that the
protection I was talking about is not the fact that M:B is in the
Bundle:CPAN. The protecion looks instead like so:

if (-f Build.PL  ! -f Makefile.PL  ! exists 
$req-{Module::Build}) {
$CPAN::Frontend-mywarn(  Warning: CPAN.pm discovered Module::Build as 
.
undeclared prerequisite.\n.
  Adding it now as a prerequisite.\n
   );


This code ensure that M:B gets installed right at the moment where it
is actually required.

-- 
andreas


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm,and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-15 Thread Ken Williams


On Feb 15, 2006, at 8:19 PM, Adam Kennedy wrote:

But now I'm just getting annoyed and I doubt I can contribute any 
further to this conversation without repeating myself or resorting to 
outright flaming, so I'll step out here.


Why do you think these threads keep happening on lists that AREN'T 
M::B's list?  It's very frustrating for me.  If there are problems we 
can solve in M::B, please bring them to our attention.


 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-14 Thread Ken Williams


On Feb 14, 2006, at 12:10 PM, John Peacock wrote:

I would certainly accept a mandatory warning during './Build dist' if 
there was no Makefile.PL present, but I think that assuming that 
everyone wants to release to CPAN is grossly inappropriate.


Yes, I was going to make that point too but I forgot.  CPAN isn't the 
whole world.



I personally have released modules to CPAN lacking a Makefile.PL, but 
mostly because I forgot to add one (and since I now try to use 
Module::Starter::PBP, that isn't going to happen again).  I strongly 
support any author who wants to include only a Build.PL because they 
don't care if people who refuse to upgrade their core modules get 
burned. ;-)


I agree on the personal rights aspect here. =)  I'd still recommend 
that people include a Makefile.PL, but we can't force it.  That would 
just mean people would have to find creative method to break the 
enforcement if they really know what they're doing.


 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-14 Thread demerphq
On 2/14/06, Ken Williams [EMAIL PROTECTED] wrote:

 On Feb 14, 2006, at 5:43 AM, demerphq wrote:

  On 2/14/06, Adam Kennedy [EMAIL PROTECTED] wrote:
  Yitzchak Scott-Thoennes wrote:
  On Sun, Feb 12, 2006 at 09:26:06PM -0800, Randal L. Schwartz wrote:
  chromatic == chromatic  [EMAIL PROTECTED] writes:
  chromatic On Sunday 12 February 2006 18:32, Randal L. Schwartz
  wrote:
  My prefer_installer is EUMM.  And the value of mbuild_install_arg
  shouldn't
  matter, because it should always be using EUMM, not MB.
  chromatic That's going to be difficult for distributions that only
  provide a Build.PL
  chromatic file.
 
  I recognize that, but (a) those distros should not exist, so that's
 
  A couple of months ago I would have agreed.  Now I'm not so sure.
  If you'd care to take time, I'd be interested in hearing your views
  on what level of MB support would be necessary before such distros
  should exist.
 
  For me it comes down to one simple structural problem (I consider
  things
  like PREFIX nigglies that can be fixed).
 
  Module::Build (specifically ONLY dists without a Makefile.PL) simply
  doesn't bootstrap.

 I think I'm coming into this discussion late. =(  What do you mean by
 doesn't bootstrap?  M::B does indeed use itself to install itself, so
 you must have something else in mind.  Could you elaborate briefly to
 bring me up to date on this discussion?

My understanding of this (and i hope im not putting words in Adams
mouth) is that anybody using an old CPAN can't install a distribution
that requires Module::Build unless a Makefile.PL is present. Since
this is a big chunk of the cpan's out there it affects a lot of users,
and in my experience is one of the reasons that people often get a bad
impression of MB on their first exposure as there is a good chance
that the first time they notice something uses MB will be when CPAN
fails to install because of the missing Makefile.pl

  At the very least the Makefile.pl could create a tiny makefile that
  then runs Build.pl and Build as needed. If someone can explain why
  this is impossible, then id like to hear it.

 We already do that, using the 'passthrough' or 'small' options for
 auto-creating a Makefile.PL.  See the docs for Module::Build::Compat.

 Module::Build itself also ships with such a Makefile.PL so that
 automated tools like CPAN(PLUS) can install it.

The point is that if you can get a Makefile.PL based script that can
get EUMM to produce a makefile that will then do the MB dance then
there should NEVER be a module that omits the Makefile.pl, and the
arguments that weve seen to date saying that there are circumstances
where such is ok are actually wrong.

IOW, no dist should ever be released to CPAN without a Makefile.PL and
MB should not allow anyone to create such a dist. There is no need to
make the Makefile.PL do any more than signal that MB needs to be
installed and then hand over to it to do the dirty work. Such an
implementation should work transparently on every CPAN ever released.

Yves


--
perl -Mre=debug -e /just|another|perl|hacker/


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-14 Thread Ken Williams


On Feb 14, 2006, at 12:36 PM, Tyler MacDonald wrote:


Could create_makefile_pl = passthrough Become
the default, and a new option, create_makefile_pl = skip be created 
to

satisfy those who wish to screw over legacy users? :)


If we did that, we'd screw over people who are already maintaining 
their Makefile.PL separately by hand.  Not everybody has as many 
modules to maintain as we do, Tyler. =)


 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-14 Thread Ken Williams


On Feb 14, 2006, at 5:43 AM, demerphq wrote:


On 2/14/06, Adam Kennedy [EMAIL PROTECTED] wrote:

Yitzchak Scott-Thoennes wrote:

On Sun, Feb 12, 2006 at 09:26:06PM -0800, Randal L. Schwartz wrote:

chromatic == chromatic  [EMAIL PROTECTED] writes:
chromatic On Sunday 12 February 2006 18:32, Randal L. Schwartz 
wrote:
My prefer_installer is EUMM.  And the value of mbuild_install_arg 
shouldn't

matter, because it should always be using EUMM, not MB.
chromatic That's going to be difficult for distributions that only 
provide a Build.PL

chromatic file.

I recognize that, but (a) those distros should not exist, so that's


A couple of months ago I would have agreed.  Now I'm not so sure.
If you'd care to take time, I'd be interested in hearing your views
on what level of MB support would be necessary before such distros
should exist.


For me it comes down to one simple structural problem (I consider 
things

like PREFIX nigglies that can be fixed).

Module::Build (specifically ONLY dists without a Makefile.PL) simply
doesn't bootstrap.


I think I'm coming into this discussion late. =(  What do you mean by 
doesn't bootstrap?  M::B does indeed use itself to install itself, so 
you must have something else in mind.  Could you elaborate briefly to 
bring me up to date on this discussion?




At the very least the Makefile.pl could create a tiny makefile that
then runs Build.pl and Build as needed. If someone can explain why
this is impossible, then id like to hear it.


We already do that, using the 'passthrough' or 'small' options for 
auto-creating a Makefile.PL.  See the docs for Module::Build::Compat.


Module::Build itself also ships with such a Makefile.PL so that 
automated tools like CPAN(PLUS) can install it.


 -Ken



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-14 Thread Tyler MacDonald
Ken Williams [EMAIL PROTECTED] wrote:
 If we did that, we'd screw over people who are already maintaining 
 their Makefile.PL separately by hand. 

OK... but if they are doing that, the Makefile.PL will be in their
*build* directory already... as far as I understand, our Makefile.PL only
needs to be generated in the *dist* directory.

The current behaviour is to not create a Makefile.PL during
./Build, only create it when distdir is run. However, the distdir
action creates Makefile.PL in the current directory and then copies it
over. 

The generated Makefile.PL's first line clearly says auto-generated
by Module::Build::Compat... s if somebody was maintaining a Makefile.PL
manually, we could easily auto-detect that by checking for the presence of
that line. Maybe echo a Big Fat Warning on the distdir action as well, if
they havent explicitly set create_makefile_pl = skip.

Do you think that would make everybody happy?

 Not everybody has as many  modules to maintain as we do, Tyler. =)

Hah, you're way ahead of me on that one. ;) What scares me is how
many *nearly* complete modules i have sitting in my CVS tree that need just
a few more changes to be ready... each night I load up one and add a few
more methods/test cases/etc and think that's the night it's going to be
ready to release just to find a whole days' worth of work I hadn't
considered...

- Tyler



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-14 Thread Tyler MacDonald
Chris Dolan [EMAIL PROTECTED] wrote:
Well it would only clobber the file if it contained the
 auto-generated line, so I think that's safe, but if you want to be
 *really* paranoid, how about having the dist actions fail if you  
 havent
 specified a create_makfile_pl arg? (one of the exsitng ones or  
 skip).
 I just tested and CVS HEAD M::B happily overwrote a hand-made
 Makefile.PL when I added 'traditional' to Build.PL and ran Build
 distdir.  Luckily, I had it in SVN so it was an easy restore.
 
  But that's exactly what you asked it to do. ;-)
 
  Seriously though, it sounds like having at least a loud warning I
 did not write this Makefile.PL, move it out of the way first is  
 worthwhile.
 
  - Tyler
 
 I understand that.  I was simply saying that your assertion that it  
 wouldn't clobber a file that lacked the auto-generated line was not  
 the current reality.  It was unclear to me from that message whether  
 you were discussing actual behavior or ideal behavior, so I tested it  
 myself.  Sorry, I should have put a smiley after my SVN comment.  :-D

Heh. This is all proposed behaviour. Everybody seems to agree the
current behaviour isn't ideal, so before I write a patch (looks like John
Peacock might have beat me too it anyway) I just wanted to be clear on the
solution. Bitching about an existing Makefile.PL seems to be the lowest
common denominator among all the ideas that have gone back and forth, so
that should definately be implemented first. What's still in the air;

- Whether or not we check for the auto-generated by MB::Compat
line

- Whether or not we add an explicit 'skip' argument to
create_makefile_pl, which follows through to;

- Whether or not we complain and/or fail to function if the module
developer has not specified create_makefile_pl at all.

Cheers,
Tyler


Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-14 Thread David Golden

Tyler MacDonald wrote:

Ken Williams [EMAIL PROTECTED] wrote:
If we did that, we'd screw over people who are already maintaining 
their Makefile.PL separately by hand. 


OK... but if they are doing that, the Makefile.PL will be in their
*build* directory already... as far as I understand, our Makefile.PL only
needs to be generated in the *dist* directory.

The current behaviour is to not create a Makefile.PL during
./Build, only create it when distdir is run. However, the distdir
action creates Makefile.PL in the current directory and then copies it
over. 


It's not so simple a change.  The Makefile.PL gets generated by 
distmeta, which distdir depends on.  distmeta also generates 
README and META.yml.


I tend to run distmeta before checking in a release, so I have exactly 
the Makefile.PL, README, and META.yml that get packaged up and uploaded 
to CPAN.


I don't think anything that could clobber files should be switched on by 
default.  That's just asking for trouble.


Regards,
David Golden



Re: [Module::Build] Re: something broken between Module::Build, CPAN.pm, and ExtUtils::MakeMaker in 5.8.8 for UINST=1

2006-02-14 Thread Tyler MacDonald
David Golden [EMAIL PROTECTED] wrote:
 It's not so simple a change.  The Makefile.PL gets generated by 
 distmeta, which distdir depends on.  distmeta also generates 
 README and META.yml.
 
 I tend to run distmeta before checking in a release, so I have exactly 
 the Makefile.PL, README, and META.yml that get packaged up and uploaded 
 to CPAN.
 
 I don't think anything that could clobber files should be switched on by 
 default.  That's just asking for trouble.

Well it would only clobber the file if it contained the
auto-generated line, so I think that's safe, but if you want to be
*really* paranoid, how about having the dist actions fail if you havent
specified a create_makfile_pl arg? (one of the exsitng ones or skip).

That way CPAN etc would not be affected (since they don't run the
'dist' action), but module developers would be forced to specify the
create_makefile_pl action before they uploaded a new release.

I see maintaining both your own Build.PL and Makefile.PL as a bit
of an edge case (not to mention a maintainer's nightmare), but there's gotta
be a way we can both support it and make the default Module::Build behaviour
friendly towards the CPAN.pm that's shipped with perl.

- Tyler