On Mon, Dec 22, 2003 at 01:15:10PM -0800, Stas Bekman wrote: > This is Apache::Scoreboard for httpd-2.0 (mod_perl 2.0). > > You will still need Apache-Scoreboard-0.10 for mod_perl > 1.0 and its apps. CPAN will now always try to install > Apache-Scoreboard-2.xx, even when you want it to install > Apache-Scoreboard-0.10. Go and tell CPAN maintainers that > you don't like it and ask them to work on a solution that > will allow several generations of modules with the same > name coexist happily on CPAN. Until masses will start > complaining I don't see this being resolved.
This seems like a difficult problem to solve, in the short term - one consideration CPAN must take into account is that one doesn't want multiple *non-cooperative* versions of the same module which might arise from different people unknowingly using the same module name. This could be solved by only allowing generations to those registered in some group account, but it becomes involved .... What might help, again for the short term, is some variation of the following ... We can't do anything about mod_perl 1 modules, and there's no problem for packages that work with both mod_perl 1 and 2, or have versions bundled in the same package for each. So the main problem is for mod_perl 2 specific modules that have the same name as a previous (non-compatible) mod_perl 1 version. What about for these: - place the modules that conflict with previous mod_perl 1 modules in some directory that PAUSE won't index. I think currently PAUSE ignores a blib/ directory - one could, as a hack, use this, and then have Makefile.PL move all the files under blib/ into a corresponding lib/ tree. However, it might be relatively easy to have the PAUSE maintainers agree to some conventional name of a directory that the indexer won't descend into. One can use the DIR attribute of ExtUtils::MakeMaker to tell WriteMakefile() that modules are to be found in this directory. - for a module, eg, Apache::Foo, in a mod_perl 2 package, make up a placeholder like Apache2::Foo that just has a NAME pod section, giving the name and abstract of the module, and register Apache2::Foo with PAUSE. Apache2::Foo would not have any code - it's purpose is just to be used in a PREREQ_PM when one wants the mod_perl 2 version of Apache::Foo in the mod_perl 2 package. Since the indexer hasn't seen the Apache::Foo in the mod_perl 2 package, using Apache::Foo in a PREREQ_PM will fetch the older Apache::Foo mod_perl 1 version. -- best regards, randy -- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html