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

Reply via email to