# from Adam Kennedy # on Tuesday 17 April 2007 11:14 pm: >Eric Wilhelm wrote: >> Module::Build version y.yy required--this is only version x.xx >> >> even call-center-grade troubleshooting guides instruct the user to >> install version y.yy. Maybe it's not always that easy?
>Here is my standard non-trivial installation scenario. Any successful >toolchain change needs to be able to handle it. ... Wait. Why would a newbie be trying to install Jifty with an ancient toolchain? >As you can see, in the non-trivial toolchain case there is pretty much >zero chance anybody will ever see any error message. It should be the last message. Of course, I'm assuming that fatal errors are fatal. Is that not the case? If not, wtf? >The use Module::Build 0.28 might at least provide something of a >last-ditch case for ancient toolchain users, but it can't ever be more >than that, a last-ditch case. I think last-ditch might be fair enough here. At least, in solving these problems the *next* time we make them. 1. add configure_requires 2. use Module::Build 0.29; The configure_requires gets us a new M::B whenever we have a new enough CPAN*.pm. The use() with explicit version gets a M::B (or whatever) which is able to understand configure_requires() and double-check it at import(). If your tool missed the configure_requires, we die for lack of a new enough version with the obvious error that you need to install a newer M::B. Does that work for a forward-looking scheme? If so, let's put configure_requires in META.yml now. For the reverse-compatibility: I don't know. I don't think it's really part of this thread. The "code which magically upgrades your machine without asking, unless you don't want it to, because it reads your mind" thing is a bit tricky. I'm pretty certain we can't solve that. I'm still not sure what to do about the "creating Makefile.PL for you" bug. And, We can't assume that we're always running under CPAN*.pm. Thus, we can't just install a new CPAN*.pm while installing foo.pm. I don't think there's a great way out of that without a phone-home CPAN.pm (which of course, requires a time machine because releasing one now won't do.) The user has to realize that their current version isn't working anymore. If die()ing in the Build.PL won't work, what will? sendmail? Perhaps there's a "why your stupid idea won't work checklist" started somewhere? Please point me to it. --Eric -- "Beware of bugs in the above code; I have only proved it correct, not tried it." --Donald Knuth --------------------------------------------------- http://scratchcomputing.com ---------------------------------------------------