On Tue, Apr 05, 2005 at 11:44:34AM +0200, Rafael Garcia-Suarez wrote:
> Well, after a bit of tracking, I notice this new comment in
> MM_Any::clean() :
>
> # XXX normally this would be a good idea, but the Perl core sets
> # INST_LIB = ../../lib rather than actually installing the files.
> # So a "make clean" in an ext/ directory would blow away lib.
> # Until the core is adjusted let's leave this out.
> # push @dirs, qw($(INST_ARCHLIB) $(INST_LIB)
> # $(INST_BIN) $(INST_SCRIPT)
> # $(INST_MAN1DIR) $(INST_MAN3DIR)
> # $(INST_LIBDIR) $(INST_ARCHLIBDIR) $(INST_AUTODIR)
> # $(INST_STATIC) $(INST_DYNAMIC) $(INST_BOOT)
> # );
>
> (The second problem I reported is a side-effect of the first.)
>
> So I'm guessing that clean() was refactored in something less forgiving,
> and that the special-casing for the core was accidentally removed. I'm a
> bit lost in the huge diff between the core's current makemaker and 6.27,
> so any hint is welcome...
Yes, clean just blindly blows away "./blib" but that's not very accurate
since all the INST_ things (which are normally all in blib) can be
redefined as Perl does. I was going to use the actual values for
INST_ until I realized this would delete lib/ in the core and probably
cause similar problems in other large systems.
What it looks like I missed is $(INST_ARCHLIBDIR) and $(INST_AUTODIR)
(ie. where all the XS modules in ext/ go). They used to be cleaned
separately from blib, presumably as an exception for the core.
Attached patch should fix it.
=== lib/ExtUtils/MM_Any.pm
==================================================================
--- lib/ExtUtils/MM_Any.pm (revision 4360)
+++ lib/ExtUtils/MM_Any.pm (local)
@@ -771,6 +771,10 @@
my @dirs = qw($(DISTVNAME));
my @files = qw($(FIRST_MAKEFILE) $(MAKEFILE_OLD));
+ # Special exception for the perl core where INST_* is not in blib.
+ # This cleans up the files built from the ext/ directory (all XS).
+ push @dirs, qw($(INST_AUTODIR) $(INST_ARCHAUTODIR)) if $self->{PERL_CORE};
+
if( $self->has_link_code ){
push @files, qw($(OBJECT));
}