The only problem with this is that it only deals with CPAN.pm itself.
The problem with locked files is wider than this.
Imagine for example that you have Windows mod_perl or some other
long-running program holding a lock on the modules.
I had a similar idea last week, where maybe we could have CPAN.pm's
module loader copy the files into a temp directory and load those ones.
But unfortunately I think that isn't a good long term solution. Assuming
we can reach the point where Win32 Perl (with CPAN.pm) is much much more
common, we will end up with services and other things, and dealing just
with CPAN.pm's own file locks aren't quite enough.
The new ExtUtils::Install does really do the right thing though, and
Win32 Perl is much more upgradable that any others, most 5.005
installations are in places like Irix these days.
So I'd like to see where we get to once the new ExtUtils::Install is out
and we can install properly, and then if there are still problems after
that, we take the next step.
Adam K
David Golden wrote:
Philippe M. Chiasson wrote:
The main reason this is hapenning is that it's not currently possible
to update
CORE packages in ActivePerl, so any module that depends on a CORE
package can
be suffering from this. This problem will persist until it becomes
possible to
update core packages in ActivePerl.
It's certainly not an ideal situation, but unless somebody can point
out an
easier solution, this is where we are at.
I had one of those shower epiphanies this morning. While it's only a
concept at this point, I thought I would put it to the group for more
experienced minds to consider.
As I understand from comments in
http://use.perl.org/comments.pl?sid=30312 the big problem with upgrading
core modules for Windows (ActiveState, VanillaPerl, etc.) is that
Windows won't delete open files. Thus any core files (particularly *.dll
files) in use by PPM/cpan.pm can't be replaced.
So why not bundle a snapshot of all the module dependencies for
PPM/cpan.pm into a separate directory and put that at the start of @INC
when running PPM/cpan.pm?
That way, other than the core perl executable, the upgrade tools
wouldn't be using any core modules directly -- only the ones bundled
snapshot. If I understand correctly, that should allow core modules to
be upgraded.
There's still a bit of a bootstrap problem for upgrading PPM/cpan.pm
themselves or any of their dependencies. However, even that might be
avoided if the snapshot (including updates to PPM/cpan.pm) were
updated/created on the fly by a batch file prior to executing PPM/cpan.pm.
I'm sure moving to this approach would mean changes at various points in
the toolchain -- particularly in how the PPM and cpan batch files
operate -- but it would avoid more complicated approaches requiring
changes in the Windows registry in order to finish upgrades during a
reboot.
Thoughts and feedback welcome.
Regards,
David Golden