From: Michael G. Schwern Date: Thu, 11 Apr 2002 01:25:26 +0000 (-0400) Subject: MakeMaker 5.55_03 -> 5.90_01 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=5c1614949255df89962f262d24ea42500b6e5948;p=p5sagit%2Fp5-mst-13.2.git MakeMaker 5.55_03 -> 5.90_01 Message-ID: <20020411052525.GA17038@blackrider> p4raw-id: //depot/perl@15856 --- diff --git a/MANIFEST b/MANIFEST index f917d39..9c69348 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1016,6 +1016,7 @@ lib/ExtUtils/t/Embed.t See if ExtUtils::Embed and embedding works lib/ExtUtils/t/hints.t See if hint files are honored. lib/ExtUtils/t/Installed.t See if ExtUtils::Installed works lib/ExtUtils/t/INST.t Check MakeMaker INST_* macros +lib/ExtUtils/t/INST_PREFIX.t See if MakeMaker can apply PREFIXs lib/ExtUtils/t/Manifest.t See if ExtUtils::Manifest works lib/ExtUtils/t/Mkbootstrap.t See if ExtUtils::Mkbootstrap works lib/ExtUtils/t/MM_BeOS.t See if ExtUtils::MM_BeOS works diff --git a/lib/ExtUtils/Changes b/lib/ExtUtils/Changes index f364669..cfbb0a0 100644 --- a/lib/ExtUtils/Changes +++ b/lib/ExtUtils/Changes @@ -1,3 +1,31 @@ +5.90_01 Thu Apr 11 01:11:54 EDT 2002 + [[ API Changes ]] + * Implementation of the new PREFIX logic. + * Added new INSTALL targets: + INSTALLSITEBIN + INSTALLSITEMAN1DIR INSTALLSITEMAN3DIR + INSTALLVENDORMAN1DIR INSTALLVENDORMAN3DIR + INSTALLVENDORBIN INSTALLVENDORLIB INSTALLVENDORARCH + SITEPREFIX VENDORPREFIX + * INSTALLDIRS=site now properly using $Config{siteprefixexp} + (Thieved from Debian. Thanks!) + * Added INSTALLDIRS=vendor & support for vendor directories + (Thieved from Debian. Thanks!) + + [[ Bug Fixes ]] + - nmake syntax nits from Mattia Barbon + - ExtUtils::Packlist fix for files with spaces in them from Jan Dubois + (bleadperl@15800) + - Old, old, old dmake bug in MM_Win32->pm_to_blib fixed by Nick + (bleadperl 15847) + + [[ Internals ]] + - Purging leftover PDP compiler flags. + +5.55_03 Sat Apr 6 21:57:01 EST 2002 + - Reversing "fix" for RT 444. It wasn't really fixed and it + caused havoc with Compress::Zlib and Tk. + 5.55_02 Sat Apr 6 03:09:15 EST 2002 [[ Bug Fixes ]] - Craig Berry fixed install on VMS (again, I munged the last patch) @@ -6,10 +34,12 @@ - For some reason MM_VMS was using $Config{arch} instead of $Config{archname} - Fix (well, hack) for creating ABSPERL on VMS. + - Quieting some warnings revealed by ExtUtils::Constant + - test_via_script had a typo and forgot INST_ARCHLIB [[ Test Fixes ]] - INST.t has to tell MakeMaker it's in the PERL_CORE - - INST_LIB doesn't change if it's in the core + - Fixing expected values of INST_* when building the core. 5.55_01 Thu Apr 4 23:58:06 EST 2002 [[ API Changes ]] @@ -219,7 +249,7 @@ 5.48_04 Mon Jan 21 19:28:38 EST 2002 - No longer requiring Test::More - Now tested to work with a clean 5.6.1 - - Stripped out $Revision: 1.48 $ based $VERSIONs. + - Stripped out $Revision based $VERSIONs. - Rolled in patches from p5p, vmsperl & VOS (14325, 14338, 14360, 14364) * hint files now run in a safer context. Only $self is available. - ExtUtils::testlib now provides absolute paths into @INC. diff --git a/lib/ExtUtils/MM_Cygwin.pm b/lib/ExtUtils/MM_Cygwin.pm index 0192836..48e0995 100644 --- a/lib/ExtUtils/MM_Cygwin.pm +++ b/lib/ExtUtils/MM_Cygwin.pm @@ -27,8 +27,6 @@ sub cflags { CCFLAGS = $self->{CCFLAGS} OPTIMIZE = $self->{OPTIMIZE} PERLTYPE = $self->{PERLTYPE} -LARGE = $self->{LARGE} -SPLIT = $self->{SPLIT} }; } diff --git a/lib/ExtUtils/MM_NW5.pm b/lib/ExtUtils/MM_NW5.pm index 6652fbb..1759eb2 100644 --- a/lib/ExtUtils/MM_NW5.pm +++ b/lib/ExtUtils/MM_NW5.pm @@ -73,7 +73,7 @@ sub const_cccmd { return '' unless $self->needs_linking(); return $self->{CONST_CCCMD} = q{CCCMD = $(CC) $(INC) $(CCFLAGS) $(OPTIMIZE) \\ - $(PERLTYPE) $(LARGE) $(SPLIT) $(MPOLLUTE) \\ + $(PERLTYPE) $(MPOLLUTE) \\ -DVERSION="$(VERSION)" -DXS_VERSION="$(XS_VERSION)"}; } diff --git a/lib/ExtUtils/MM_Unix.pm b/lib/ExtUtils/MM_Unix.pm index 9fbd2fa..b106ab2 100644 --- a/lib/ExtUtils/MM_Unix.pm +++ b/lib/ExtUtils/MM_Unix.pm @@ -13,11 +13,13 @@ use DirHandle; use strict; use vars qw($VERSION @ISA $Is_Mac $Is_OS2 $Is_VMS $Is_Win32 $Is_Dos $Is_VOS - $Verbose %pm %static $Xsubpp_Version); + $Verbose %pm %static $Xsubpp_Version + %Config_Override + ); use ExtUtils::MakeMaker qw($Verbose neatvalue); -$VERSION = '1.20_01'; +$VERSION = '1.30_01'; require ExtUtils::MM_Any; @ISA = qw(ExtUtils::MM_Any); @@ -479,17 +481,23 @@ sub constants { for $tmp (qw/ AR_STATIC_ARGS NAME DISTNAME NAME_SYM VERSION - VERSION_SYM XS_VERSION INST_BIN INST_LIB - INST_ARCHLIB INST_SCRIPT PREFIX INSTALLDIRS - INSTALLPRIVLIB INSTALLARCHLIB INSTALLSITELIB - INSTALLSITEARCH INSTALLBIN INSTALLSCRIPT PERL_LIB - PERL_ARCHLIB SITELIBEXP SITEARCHEXP LIBPERL_A MYEXTLIB + VERSION_SYM XS_VERSION + INST_ARCHLIB INST_SCRIPT INST_BIN INST_LIB + INSTALLDIRS + PREFIX SITEPREFIX VENDORPREFIX + INSTALLPRIVLIB INSTALLSITELIB INSTALLVENDORLIB + INSTALLARCHLIB INSTALLSITEARCH INSTALLVENDORARCH + INSTALLBIN INSTALLSITEBIN INSTALLVENDORBIN INSTALLSCRIPT + PERL_LIB PERL_ARCHLIB + SITELIBEXP SITEARCHEXP + LIBPERL_A MYEXTLIB FIRST_MAKEFILE MAKE_APERL_FILE PERLMAINCC PERL_SRC PERL_INC PERL FULLPERL PERLRUN FULLPERLRUN PERLRUNINST FULLPERLRUNINST ABSPERL ABSPERLRUN ABSPERLRUNINST FULL_AR PERL_CORE NOOP NOECHO - / ) { + / ) + { next unless defined $self->{$tmp}; # pathnames can have sharp signs in them; escape them so @@ -521,7 +529,8 @@ MM_VERSION = $ExtUtils::MakeMaker::VERSION for $tmp (qw/ FULLEXT BASEEXT PARENT_NAME DLBASE VERSION_FROM INC DEFINE OBJECT LDFROM LINKTYPE PM_FILTER - / ) { + / ) + { next unless defined $self->{$tmp}; push @m, "$tmp = $self->{$tmp}\n"; } @@ -537,9 +546,12 @@ MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})." "; for $tmp (qw/ - INST_MAN1DIR INSTALLMAN1DIR MAN1EXT - INST_MAN3DIR INSTALLMAN3DIR MAN3EXT - /) { + INST_MAN1DIR MAN1EXT + INSTALLMAN1DIR INSTALLSITEMAN1DIR INSTALLVENDORMAN1DIR + INST_MAN3DIR MAN3EXT + INSTALLMAN3DIR INSTALLSITEMAN3DIR INSTALLVENDORMAN3DIR + /) + { next unless defined $self->{$tmp}; push @m, "$tmp = $self->{$tmp}\n"; } @@ -547,7 +559,8 @@ MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})." for $tmp (qw( PERM_RW PERM_RWX ) - ) { + ) + { my $method = lc($tmp); # warn "self[$self] method[$method]"; push @m, "$tmp = ", $self->$method(), "\n"; @@ -1857,88 +1870,160 @@ sub init_INSTALL { } } - # we have to look at the relation between $Config{prefix} and the - # requested values. We're going to set the $Config{prefix} part of - # all the installation path variables to literally $(PREFIX), so - # the user can still say make PREFIX=foo - my($configure_prefix) = $Config{'prefix'}; - $configure_prefix = VMS::Filespec::unixify($configure_prefix) if $Is_VMS; - $self->{PREFIX} ||= $configure_prefix; - - - my($search_prefix, $replace_prefix); - # If the prefix contains perl, Configure shapes the tree as follows: - # perlprefix/lib/ INSTALLPRIVLIB - # perlprefix/lib/pod/ - # perlprefix/lib/site_perl/ INSTALLSITELIB - # perlprefix/bin/ INSTALLBIN - # perlprefix/man/ INSTALLMAN1DIR - # else - # prefix/lib/perl5/ INSTALLPRIVLIB - # prefix/lib/perl5/pod/ - # prefix/lib/perl5/site_perl/ INSTALLSITELIB - # prefix/bin/ INSTALLBIN - # prefix/lib/perl5/man/ INSTALLMAN1DIR - # - # The above results in various kinds of breakage on various - # platforms, so we cope with it as follows: if prefix/lib/perl5 - # or prefix/lib/perl5/man exist, we'll replace those instead - # of /prefix/{lib,man} - - $replace_prefix = '$(PREFIX)'; - for my $install_variable (qw/INSTALLBIN INSTALLSCRIPT/) - { - $self->prefixify($install_variable,$configure_prefix,$replace_prefix); + # There are no Config.pm defaults for these. + $Config_Override{installsiteman1dir} = + "$Config{siteprefixexp}/man/man\$(MAN1EXT)"; + $Config_Override{installsiteman3dir} = + "$Config{siteprefixexp}/man/man\$(MAN3EXT)"; + $Config_Override{installvendorman1dir} = + "$Config{vendorprefixexp}/man/man\$(MAN1EXT)"; + $Config_Override{installvendorman3dir} = + "$Config{vendorprefixexp}/man/man\$(MAN3EXT)"; + + my $iprefix = $Config{installprefixexp} || ''; + my $vprefix = $Config{vendorprefixexp} || $iprefix; + my $sprefix = $Config{siteprefixexp} || ''; + + my $u_prefix = $self->{PREFIX} || ''; + my $u_sprefix = $self->{SITEPREFIX} || $u_prefix; + my $u_vprefix = $self->{VENDORPREFIX} || $u_prefix; + + $self->{PREFIX} ||= $u_prefix || $iprefix; + $self->{SITEPREFIX} ||= $u_sprefix || $sprefix; + $self->{VENDORPREFIX} ||= $u_vprefix || $vprefix; + + my $arch = $Config{archname}; + my $version = $Config{version}; + + # default style + my $libstyle = 'lib/perl5'; + my $manstyle = ''; + + if( $self->{LIBSTYLE} ) { + $libstyle = $self->{LIBSTYLE}; + $manstyle = $self->{LIBSTYLE} eq 'lib/perl5' ? 'lib/perl5' : ''; + } + + my %bin_layouts = + ( + bin => { s => $iprefix, + r => '$(PREFIX)', + d => 'bin' }, + vendorbin => { s => $vprefix, + r => '$(VENDORPREFIX)', + d => 'bin' }, + sitebin => { s => $sprefix, + r => '$(SITEPREFIX)', + d => 'bin' }, + script => { s => $iprefix, + r => '$(PREFIX)', + d => 'bin' }, + ); + + my %man_layouts = + ( + man1dir => { s => $iprefix, + r => '$(PREFIX)', + d => 'man/man$(MAN1EXT)', + style => $manstyle, }, + siteman1dir => { s => $sprefix, + r => '$(SITEPREFIX)', + d => 'man/man$(MAN1EXT)', + style => $manstyle, }, + vendorman1dir => { s => $vprefix, + r => '$(VENDORPREFIX)', + d => 'man/man$(MAN1EXT)', + style => $manstyle, }, + + man3dir => { s => $iprefix, + r => '$(PREFIX)', + d => 'man/man$(MAN3EXT)', + style => $manstyle, }, + siteman3dir => { s => $sprefix, + r => '$(SITEPREFIX)', + d => 'man/man$(MAN3EXT)', + style => $manstyle, }, + vendorman3dir => { s => $vprefix, + r => '$(VENDORPREFIX)', + d => 'man/man$(MAN3EXT)', + style => $manstyle, }, + ); + + my %lib_layouts = + ( + privlib => { s => $iprefix, + r => '$(PREFIX)', + d => '', + style => $libstyle, }, + vendorlib => { s => $vprefix, + r => '$(VENDORPREFIX)', + d => '', + style => $libstyle, }, + sitelib => { s => $sprefix, + r => '$(SITEPREFIX)', + d => 'site_perl', + style => $libstyle, }, + + archlib => { s => $iprefix, + r => '$(PREFIX)', + d => "$version/$arch", + style => $libstyle }, + vendorarch => { s => $vprefix, + r => '$(VENDORPREFIX)', + d => "$version/$arch", + style => $libstyle }, + sitearch => { s => $sprefix, + r => '$(SITEPREFIX)', + d => "site_perl/$version/$arch", + style => $libstyle }, + ); + + + # Special case for LIB. + if( $self->{LIB} ) { + foreach my $var (keys %lib_layouts) { + my $Installvar = uc "install$var"; + + if( $var =~ /arch/ ) { + $self->{$Installvar} ||= + File::Spec->catdir($self->{LIB}, $Config{archname}); + } + else { + $self->{$Installvar} ||= $self->{LIB}; + } + } } - my $funkylibdir = File::Spec->catdir($configure_prefix,"lib","perl5"); - $funkylibdir = '' unless -d $funkylibdir; - $search_prefix = $funkylibdir || - File::Spec->catdir($configure_prefix,"lib"); - if ($self->{LIB}) { - $self->{INSTALLPRIVLIB} = $self->{INSTALLSITELIB} = $self->{LIB}; - $self->{INSTALLARCHLIB} = $self->{INSTALLSITEARCH} = - File::Spec->catdir($self->{LIB},$Config{'archname'}); - } - else { - if (-d File::Spec->catdir($self->{PREFIX},"lib","perl5")) { - $replace_prefix = File::Spec->catdir(qq[\$\(PREFIX\)],"lib", - "perl5"); + my %layouts = (%bin_layouts, %man_layouts, %lib_layouts); + while( my($var, $layout) = each(%layouts) ) { + my($s, $r, $d, $style) = @{$layout}{qw(s r d style)}; + + print STDERR "Prefixing $var\n" if $Verbose >= 2; + + my $installvar = "install$var"; + my $Installvar = uc $installvar; + next if $self->{$Installvar}; + + if( $r ) { + $d = "$style/$d" if $style; + $self->prefixify($installvar, $s, $r, $d); } else { - $replace_prefix = File::Spec->catdir(qq[\$\(PREFIX\)],"lib"); - } - for my $install_variable (qw/ - INSTALLPRIVLIB - INSTALLARCHLIB - INSTALLSITELIB - INSTALLSITEARCH - /) - { - $self->prefixify($install_variable,$search_prefix,$replace_prefix); + $self->{$Installvar} = $Config_Override{$installvar} || + $Config{$installvar}; } + + print STDERR " $Installvar == $self->{$Installvar}\n" + if $Verbose >= 2; } - my $funkymandir = File::Spec->catdir($configure_prefix,"lib","perl5","man"); - $funkymandir = '' unless -d $funkymandir; - $search_prefix = $funkymandir || File::Spec->catdir($configure_prefix,"man"); - if (-d File::Spec->catdir($self->{PREFIX},"lib","perl5", "man")) { - $replace_prefix = File::Spec->catdir(qq[\$\(PREFIX\)],"lib", "perl5", "man"); - } - else { - $replace_prefix = File::Spec->catdir(qq[\$\(PREFIX\)],"man"); - } - for my $install_variable (qw/ - INSTALLMAN1DIR - INSTALLMAN3DIR - /) - { - $self->prefixify($install_variable,$search_prefix,$replace_prefix); - } + + $self->{PREFIX} ||= $iprefix; return 1; } + =item init_PERL $mm->init_PERL; @@ -2059,6 +2144,8 @@ install_perl :: all pure_perl_install doc_perl_install install_site :: all pure_site_install doc_site_install +install_vendor :: all pure_vendor_install doc_vendor_install + pure_install :: pure_$(INSTALLDIRS)_install doc_install :: doc_$(INSTALLDIRS)_install @@ -2090,13 +2177,22 @@ pure_site_install :: write }.File::Spec->catfile('$(INSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \ $(INST_LIB) $(INSTALLSITELIB) \ $(INST_ARCHLIB) $(INSTALLSITEARCH) \ - $(INST_BIN) $(INSTALLBIN) \ + $(INST_BIN) $(INSTALLSITEBIN) \ $(INST_SCRIPT) $(INSTALLSCRIPT) \ - $(INST_MAN1DIR) $(INSTALLMAN1DIR) \ - $(INST_MAN3DIR) $(INSTALLMAN3DIR) + $(INST_MAN1DIR) $(INSTALLSITEMAN1DIR) \ + $(INST_MAN3DIR) $(INSTALLSITEMAN3DIR) }.$self->{NOECHO}.q{$(WARN_IF_OLD_PACKLIST) \ }.File::Spec->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{ +pure_vendor_install :: + }.$self->{NOECHO}.q{$(MOD_INSTALL) \ + $(INST_LIB) $(INSTALLVENDORLIB) \ + $(INST_ARCHLIB) $(INSTALLVENDORARCH) \ + $(INST_BIN) $(INSTALLVENDORBIN) \ + $(INST_SCRIPT) $(INSTALLSCRIPT) \ + $(INST_MAN1DIR) $(INSTALLVENDORMAN1DIR) \ + $(INST_MAN3DIR) $(INSTALLVENDORMAN3DIR) + doc_perl_install :: -}.$self->{NOECHO}.q{$(MKPATH) $(INSTALLARCHLIB) -}.$self->{NOECHO}.q{$(DOC_INSTALL) \ @@ -2115,7 +2211,9 @@ doc_site_install :: LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.File::Spec->catfile('$(INSTALLARCHLIB)','perllocal.pod').q{ + >> }.File::Spec->catfile('$(INSTALLSITEARCH)','perllocal.pod').q{ + +doc_vendor_install :: }; @@ -3076,23 +3174,24 @@ simply use '/home/foo/man/man1'. sub prefixify { my($self,$var,$sprefix,$rprefix,$default) = @_; - my $path = $self->{uc $var} || $Config{lc $var}; + my $path = $self->{uc $var} || + $Config_Override{lc $var} || $Config{lc $var}; - print STDERR "Prefixing $var=$path\n" if $Verbose >= 2; - print STDERR " from $sprefix to $rprefix\n" + print STDERR " prefixify $var=$path\n" if $Verbose >= 2; + print STDERR " from $sprefix to $rprefix\n" if $Verbose >= 2; $path = VMS::Filespec::unixpath($path) if $Is_VMS; unless( $path =~ s,^\Q$sprefix\E(?=/|\z),$rprefix,s ) { - print STDERR " cannot prefix, using default.\n" if $Verbose >= 2; - print STDERR " no default!\n" if $Verbose >= 2; + print STDERR " cannot prefix, using default.\n" if $Verbose >= 2; + print STDERR " no default!\n" if !$default && $Verbose >= 2; $path = File::Spec->catdir($rprefix, $default) if $default; } - print " now $path\n" if $Verbose >= 2; + print " now $path\n" if $Verbose >= 2; return $self->{uc $var} = $path; } diff --git a/lib/ExtUtils/MM_VMS.pm b/lib/ExtUtils/MM_VMS.pm index bb38b8b..be012ea 100644 --- a/lib/ExtUtils/MM_VMS.pm +++ b/lib/ExtUtils/MM_VMS.pm @@ -422,11 +422,14 @@ sub constants { foreach $macro ( qw [ - INST_BIN INST_SCRIPT INST_LIB INST_ARCHLIB INSTALLPRIVLIB - INSTALLARCHLIB INSTALLSCRIPT INSTALLBIN PERL_LIB PERL_ARCHLIB - PERL_INC PERL_SRC FULLEXT INST_MAN1DIR INSTALLMAN1DIR - INST_MAN3DIR INSTALLMAN3DIR INSTALLSITELIB INSTALLSITEARCH - SITELIBEXP SITEARCHEXP ] ) { + INST_BIN INST_SCRIPT INST_LIB INST_ARCHLIB + INSTALLPRIVLIB INSTALLSITELIB INSTALLVENDORLIB + INSTALLARCHLIB INSTALLSITEARCH INSTALLVENDORARCH + INSTALLBIN INSTALLSITEBIN INSTALLVENDORBIN INSTALLSCRIPT + INSTALLMAN1DIR INSTALLSITEMAN1DIR INSTALLVENDORMAN1DIR + INSTALLMAN3DIR INSTALLSITEMAN3DIR INSTALLVENDORMAN3DIR + PERL_LIB PERL_ARCHLIB + PERL_INC PERL_SRC FULLEXT ] ) { next unless defined $self->{$macro}; $self->{$macro} = $self->fixpath($self->{$macro},1); } @@ -442,15 +445,21 @@ sub constants { } foreach $macro (qw/ - AR_STATIC_ARGS NAME DISTNAME NAME_SYM VERSION VERSION_SYM XS_VERSION - INST_BIN INST_LIB INST_ARCHLIB INST_SCRIPT PREFIX - INSTALLDIRS INSTALLPRIVLIB INSTALLARCHLIB INSTALLSITELIB - INSTALLSITEARCH INSTALLBIN INSTALLSCRIPT PERL_LIB - PERL_ARCHLIB SITELIBEXP SITEARCHEXP LIBPERL_A MYEXTLIB + AR_STATIC_ARGS NAME DISTNAME NAME_SYM VERSION VERSION_SYM + XS_VERSION + INST_BIN INST_LIB INST_ARCHLIB INST_SCRIPT + INSTALLDIRS + PREFIX SITEPREFIX VENDORPREFIX + INSTALLPRIVLIB INSTALLSITELIB INSTALLVENDORLIB + INSTALLARCHLIB INSTALLSITEARCH INSTALLVENDORARCH + INSTALLBIN INSTALLSITEBIN INSTALLVENDORBIN INSTALLSCRIPT + PERL_LIB PERL_ARCHLIB + SITELIBEXP SITEARCHEXP + LIBPERL_A MYEXTLIB FIRST_MAKEFILE MAKE_APERL_FILE PERLMAINCC PERL_SRC PERL_VMS PERL_INC PERL FULLPERL PERLRUN FULLPERLRUN PERLRUNINST - FULLPERLRUNINST ABSPERL ABSPERLRUN ABSPERLRUNINST - PERL_CORE NOECHO NOOP + FULLPERLRUNINST ABSPERL ABSPERLRUN ABSPERLRUNINST + PERL_CORE NOECHO NOOP / ) { next unless defined $self->{$macro}; push @m, "$macro = $self->{$macro}\n"; @@ -520,7 +529,10 @@ MAN3PODS = ',$self->wraplist(sort keys %{$self->{MAN3PODS}}),' '; for my $tmp (qw/ - INST_MAN1DIR INSTALLMAN1DIR MAN1EXT INST_MAN3DIR INSTALLMAN3DIR MAN3EXT + INST_MAN1DIR MAN1EXT + INSTALLMAN1DIR INSTALLSITEMAN1DIR INSTALLVENDORMAN1DIR + INST_MAN3DIR MAN3EXT + INSTALLMAN3DIR INSTALLSITEMAN3DIR INSTALLVENDORMAN3DIR /) { next unless defined $self->{$tmp}; push @m, "$tmp = $self->{$tmp}\n"; @@ -669,8 +681,6 @@ sub cflags { CCFLAGS = $self->{CCFLAGS} OPTIMIZE = $self->{OPTIMIZE} PERLTYPE = $self->{PERLTYPE} -SPLIT = -LARGE = }; } @@ -1676,14 +1686,24 @@ pure_site_install :: $(NOECHO) $(PERLRUN) "-MFile::Spec" -e "print 'write '.File::Spec->catfile('$(INSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').' '" >>.MM_tmp $(NOECHO) $(PERL) -e "print '$(INST_LIB) $(INSTALLSITELIB) '" >>.MM_tmp $(NOECHO) $(PERL) -e "print '$(INST_ARCHLIB) $(INSTALLSITEARCH) '" >>.MM_tmp - $(NOECHO) $(PERL) -e "print '$(INST_BIN) $(INSTALLBIN) '" >>.MM_tmp + $(NOECHO) $(PERL) -e "print '$(INST_BIN) $(INSTALLSITEBIN) '" >>.MM_tmp $(NOECHO) $(PERL) -e "print '$(INST_SCRIPT) $(INSTALLSCRIPT) '" >>.MM_tmp - $(NOECHO) $(PERL) -e "print '$(INST_MAN1DIR) $(INSTALLMAN1DIR) '" >>.MM_tmp - $(NOECHO) $(PERL) -e "print '$(INST_MAN3DIR) $(INSTALLMAN3DIR) '" >>.MM_tmp + $(NOECHO) $(PERL) -e "print '$(INST_MAN1DIR) $(INSTALLSITEMAN1DIR) '" >>.MM_tmp + $(NOECHO) $(PERL) -e "print '$(INST_MAN3DIR) $(INSTALLSITEMAN3DIR) '" >>.MM_tmp $(MOD_INSTALL) <.MM_tmp $(NOECHO) Delete/NoLog/NoConfirm .MM_tmp; $(NOECHO) $(WARN_IF_OLD_PACKLIST) ].File::Spec->catfile($self->{PERL_ARCHLIB},'auto',$self->{FULLEXT},'.packlist').q[ +pure_vendor_install :: + $(NOECHO) $(PERL) -e "print '$(INST_LIB) $(INSTALLVENDORLIB) '" >>.MM_tmp + $(NOECHO) $(PERL) -e "print '$(INST_ARCHLIB) $(INSTALLVENDORARCH) '" >>.MM_tmp + $(NOECHO) $(PERL) -e "print '$(INST_BIN) $(INSTALLVENDORBIN) '" >>.MM_tmp + $(NOECHO) $(PERL) -e "print '$(INST_SCRIPT) $(INSTALLSCRIPT) '" >>.MM_tmp + $(NOECHO) $(PERL) -e "print '$(INST_MAN1DIR) $(INSTALLVENDORMAN1DIR) '" >>.MM_tmp + $(NOECHO) $(PERL) -e "print '$(INST_MAN3DIR) $(INSTALLVENDORMAN3DIR) '" >>.MM_tmp + $(MOD_INSTALL) <.MM_tmp + $(NOECHO) Delete/NoLog/NoConfirm .MM_tmp; + # Ditto doc_perl_install :: $(NOECHO) $(PERL) -e "print 'Module $(NAME)|installed into|$(INSTALLPRIVLIB)|'" >.MM_tmp @@ -1708,6 +1728,8 @@ q% $(NOECHO) $(PERL) -e "print q[@ARGV=split(/\\|/,);]" >.MM2_tmp $(NOECHO) $(PERL) .MM2_tmp <.MM_tmp >>%.File::Spec->catfile($self->{INSTALLARCHLIB},'perllocal.pod').q[ $(NOECHO) Delete/NoLog/NoConfirm .MM_tmp;,.MM2_tmp; +doc_vendor_install :: + ]; push @m, q[ diff --git a/lib/ExtUtils/MM_Win32.pm b/lib/ExtUtils/MM_Win32.pm index 662820d..1ee5fec 100644 --- a/lib/ExtUtils/MM_Win32.pm +++ b/lib/ExtUtils/MM_Win32.pm @@ -182,13 +182,17 @@ sub constants { my(@m,$tmp); for $tmp (qw/ - AR_STATIC_ARGS NAME DISTNAME NAME_SYM VERSION - VERSION_SYM XS_VERSION INST_BIN INST_LIB - INST_ARCHLIB INST_SCRIPT PREFIX INSTALLDIRS - INSTALLPRIVLIB INSTALLARCHLIB INSTALLSITELIB - INSTALLSITEARCH INSTALLBIN INSTALLSCRIPT PERL_LIB - PERL_ARCHLIB SITELIBEXP SITEARCHEXP LIBPERL_A MYEXTLIB + VERSION_SYM XS_VERSION + INST_BIN INST_LIB INST_ARCHLIB INST_SCRIPT + INSTALLDIRS + PREFIX SITEPREFIX VENDORPREFIX + INSTALLPRIVLIB INSTALLSITELIB INSTALLVENDORLIB + INSTALLARCHLIB INSTALLSITEARCH INSTALLVENDORARCH + INSTALLBIN INSTALLSITEBIN INSTALLVENDORBIN INSTALLSCRIPT + PERL_LIB PERL_ARCHLIB + SITELIBEXP SITEARCHEXP + LIBPERL_A MYEXTLIB FIRST_MAKEFILE MAKE_APERL_FILE PERLMAINCC PERL_SRC PERL_INC PERL FULLPERL PERLRUN FULLPERLRUN PERLRUNINST FULLPERLRUNINST ABSPERL ABSPERLRUN ABSPERLRUNINST @@ -237,8 +241,10 @@ MAN3PODS = ".join(" \\\n\t", sort keys %{$self->{MAN3PODS}})." "; for $tmp (qw/ - INST_MAN1DIR INSTALLMAN1DIR MAN1EXT - INST_MAN3DIR INSTALLMAN3DIR MAN3EXT + INST_MAN1DIR MAN1EXT + INSTALLMAN1DIR INSTALLSITEMAN1DIR INSTALLVENDORMAN1DIR + INST_MAN3DIR MAN3EXT + INSTALLMAN3DIR INSTALLSITEMAN3DIR INSTALLVENDORMAN3DIR /) { next unless defined $self->{$tmp}; push @m, "$tmp = $self->{$tmp}\n"; diff --git a/lib/ExtUtils/MakeMaker.pm b/lib/ExtUtils/MakeMaker.pm index 075049d..e7b9571 100644 --- a/lib/ExtUtils/MakeMaker.pm +++ b/lib/ExtUtils/MakeMaker.pm @@ -2,10 +2,10 @@ BEGIN {require 5.004;} package ExtUtils::MakeMaker; -$VERSION = "5.55_02"; +$VERSION = "5.90_01"; $Version_OK = "5.49"; # Makefiles older than $Version_OK will die # (Will be checked from MakeMaker version 4.13 onwards) -($Revision = substr(q$Revision: 1.33 $, 10)) =~ s/\s+$//; +($Revision = substr(q$Revision: 1.37 $, 10)) =~ s/\s+$//; require Exporter; use Config; @@ -117,19 +117,22 @@ sub full_setup { EXCLUDE_EXT EXE_FILES FIRST_MAKEFILE FULLPERL FULLPERLRUN FULLPERLRUNINST FUNCLIST H IMPORTS - INC INCLUDE_EXT INSTALLARCHLIB INSTALLBIN INSTALLDIRS - INSTALLMAN1DIR - INSTALLMAN3DIR INSTALLPRIVLIB INSTALLSCRIPT INSTALLSITEARCH - INSTALLSITELIB INST_ARCHLIB INST_BIN INST_LIB - INST_MAN1DIR INST_MAN3DIR INST_SCRIPT LDFROM LIB LIBPERL_A LIBS + INST_ARCHLIB INST_SCRIPT INST_BIN INST_LIB + INSTALLDIRS + PREFIX SITEPREFIX VENDORPREFIX + INSTALLPRIVLIB INSTALLSITELIB INSTALLVENDORLIB + INSTALLARCHLIB INSTALLSITEARCH INSTALLVENDORARCH + INSTALLBIN INSTALLSITEBIN INSTALLVENDORBIN INSTALLSCRIPT + PERL_LIB PERL_ARCHLIB + SITELIBEXP SITEARCHEXP + INC INCLUDE_EXT LDFROM LIB LIBPERL_A LIBS LINKTYPE MAKEAPERL MAKEFILE MAN1PODS MAN3PODS MAP_TARGET MYEXTLIB PERL_MALLOC_OK NAME NEEDS_LINKING NOECHO NORECURS NO_VC OBJECT OPTIMIZE PERL PERLMAINCC - PERLRUN PERLRUNINST PERL_ARCHLIB PERL_CORE - PERL_LIB PERL_SRC PERM_RW PERM_RWX + PERLRUN PERLRUNINST PERL_CORE + PERL_SRC PERM_RW PERM_RWX PL_FILES PM PM_FILTER PMLIBDIRS POLLUTE PPM_INSTALL_EXEC - PPM_INSTALL_SCRIPT PREFIX - PREREQ_FATAL PREREQ_PM PREREQ_PRINT PRINT_PREREQ + PPM_INSTALL_SCRIPT PREREQ_FATAL PREREQ_PM PREREQ_PRINT PRINT_PREREQ SKIP TYPEMAPS VERSION VERSION_FROM XS XSOPT XSPROTOARG XS_VERSION clean depend dist dynamic_lib linkext macro realclean tool_autosplit @@ -915,14 +918,15 @@ counterparts. Which counterparts are chosen depends on the setting of INSTALLDIRS according to the following table: INSTALLDIRS set to - perl site + perl site vendor - INST_ARCHLIB INSTALLARCHLIB INSTALLSITEARCH - INST_LIB INSTALLPRIVLIB INSTALLSITELIB - INST_BIN INSTALLBIN - INST_SCRIPT INSTALLSCRIPT - INST_MAN1DIR INSTALLMAN1DIR - INST_MAN3DIR INSTALLMAN3DIR + PREFIX SITEPREFIX VENDORPREFIX + INST_ARCHLIB INSTALLARCHLIB INSTALLSITEARCH INSTALLVENDORARCH + INST_LIB INSTALLPRIVLIB INSTALLSITELIB INSTALLVENDORLIB + INST_BIN INSTALLBIN INSTALLSITEBIN INSTALLVENDORBIN + INST_SCRIPT INSTALLSCRIPT INSTALLSCRIPT INSTALLSCRIPT + INST_MAN1DIR INSTALLMAN1DIR INSTALLSITEMAN1DIR INSTALLVENDORMAN1DIR + INST_MAN3DIR INSTALLMAN3DIR INSTALLSITEMAN3DIR INSTALLVENDORMAN3DIR The INSTALL... macros in turn default to their %Config ($Config{installprivlib}, $Config{installarchlib}, etc.) counterparts. @@ -1306,34 +1310,30 @@ directory if INSTALLDIRS is set to perl. =item INSTALLBIN -Directory to install binary files (e.g. tkperl) into. +Directory to install binary files (e.g. tkperl) into if +INSTALLDIRS=perl. =item INSTALLDIRS -Determines which of the two sets of installation directories to -choose: installprivlib and installarchlib versus installsitelib and -installsitearch. The first pair is chosen with INSTALLDIRS=perl, the -second with INSTALLDIRS=site. Default is site. +Determines which of the sets of installation directories to choose: +perl, site or vendor. Defaults to site. =item INSTALLMAN1DIR -This directory gets the man pages at 'make install' time. Defaults to -$Config{installman1dir}. - -If set to 'none', no man 1 pages will be installed. - =item INSTALLMAN3DIR -This directory gets the man pages at 'make install' time. Defaults to -$Config{installman3dir}. +These directories get the man pages at 'make install' time if +INSTALLDIRS=perl. Defaults to $Config{installman*dir}. -If set to 'none', no man 3 pages will be installed. +If set to 'none', no man pages will be installed. =item INSTALLPRIVLIB Used by 'make install', which copies files from INST_LIB to this directory if INSTALLDIRS is set to perl. +Defaults to $Config{installprivlib}. + =item INSTALLSCRIPT Used by 'make install' which copies files from INST_SCRIPT to this @@ -1344,11 +1344,50 @@ directory. Used by 'make install', which copies files from INST_ARCHLIB to this directory if INSTALLDIRS is set to site (default). +=item INSTALLSITEBIN + +Used by 'make install', which copies files from INST_BIN to this +directory if INSTALLDIRS is set to site (default). + =item INSTALLSITELIB Used by 'make install', which copies files from INST_LIB to this directory if INSTALLDIRS is set to site (default). +=item INSTALLSITEMAN1DIR + +=item INSTALLSITEMAN3DIR + +These directories get the man pages at 'make install' time if +INSTALLDIRS=site (default). Defaults to +$(SITEPREFIX)/man/man$(MAN*EXT). + +If set to 'none', no man pages will be installed. + +=item INSTALLVENDORARCH + +Used by 'make install', which copies files from INST_ARCHLIB to this +directory if INSTALLDIRS is set to vendor. + +=item INSTALLVENDORBIN + +Used by 'make install', which copies files from INST_BIN to this +directory if INSTALLDIRS is set to vendor. + +=item INSTALLVENDORLIB + +Used by 'make install', which copies files from INST_LIB to this +directory if INSTALLDIRS is set to vendor. + +=item INSTALLVENDORMAN1DIR + +=item INSTALLVENDORMAN3DIR + +These directories get the man pages at 'make install' time if +INSTALLDIRS=vendor. Defaults to $(VENDORPREFIX)/man/man$(MAN*EXT). + +If set to 'none', no man pages will be installed. + =item INST_ARCHLIB Same as INST_LIB for architecture dependent files. @@ -1676,6 +1715,8 @@ which should be sensible for your platform. If you specify LIB or any INSTALL* variables they will not be effected by the PREFIX. +Defaults to $Config{installprefixexp}. + =item PREREQ_PM Hashref: Names of modules that need to be available to run this @@ -1714,6 +1755,12 @@ RedHatism for C. The output format is different, though: perl(A::B)>=Vers1 perl(C::D)>=Vers2 ... +=item SITEPREFIX + +Like PREFIX, but only for the site install locations. + +Defaults to PREFIX (if set) or $Config{siteprefixexp} + =item SKIP Arrayref. E.g. [qw(name1 name2)] skip (do not write) sections of the @@ -1730,6 +1777,12 @@ precedence. A typemap in the current directory has highest precedence, even if it isn't listed in TYPEMAPS. The default system typemap has lowest precedence. +=item VENDORPREFIX + +Like PREFIX, but only for the vendor install locations. + +Defaults to PREFIX (if set) or $Config{vendorprefixexp} + =item VERSION Your version number for distributing the package. This defaults to @@ -1751,7 +1804,7 @@ MakeMaker object. The following lines will be parsed o.k.: $VERSION = '1.00'; *VERSION = \'1.01'; - ( $VERSION ) = '$Revision: 1.33 $ ' =~ /\$Revision:\s+([^\s]+)/; + ( $VERSION ) = '$Revision: 1.37 $ ' =~ /\$Revision:\s+([^\s]+)/; $FOO::VERSION = '1.10'; *FOO::VERSION = \'1.11'; our $VERSION = 1.2.3; # new for perl5.6.0 diff --git a/lib/ExtUtils/t/INST.t b/lib/ExtUtils/t/INST.t index 2d28104..60480cb 100644 --- a/lib/ExtUtils/t/INST.t +++ b/lib/ExtUtils/t/INST.t @@ -1,7 +1,7 @@ #!/usr/bin/perl -w # Wherein we ensure the INST_* and INSTALL* variables are set correctly -# according to the values of PREFIX, SITEPREFIX, INSTALLDIRS, etc... +# in a default Makefile.PL run # # Essentially, this test is a Makefile.PL. diff --git a/lib/ExtUtils/t/INST_PREFIX.t b/lib/ExtUtils/t/INST_PREFIX.t new file mode 100644 index 0000000..bb3b1b7 --- /dev/null +++ b/lib/ExtUtils/t/INST_PREFIX.t @@ -0,0 +1,99 @@ +#!/usr/bin/perl -w + +# Wherein we ensure the INST_* and INSTALL* variables are set correctly +# when various PREFIX variables are set. +# +# Essentially, this test is a Makefile.PL. + +BEGIN { + if( $ENV{PERL_CORE} ) { + chdir 't' if -d 't'; + @INC = ('../lib', 'lib'); + } + else { + unshift @INC, 't/lib'; + } +} + +use strict; +use Test::More tests => 24; +use MakeMaker::Test::Utils; +use ExtUtils::MakeMaker; +use File::Spec; +use TieOut; +use Config; + +$ENV{PERL_CORE} ? chdir '../lib/ExtUtils/t' : chdir 't'; + +perl_lib; + +$| = 1; + +my $Makefile = makefile_name; +my $Curdir = File::Spec->curdir; +my $Updir = File::Spec->updir; + +ok( chdir 'Big-Fat-Dummy', "chdir'd to Big-Fat-Dummy" ) || + diag("chdir failed: $!"); + +my $stdout = tie *STDOUT, 'TieOut' or die; +my $mm = WriteMakefile( + NAME => 'Big::Fat::Dummy', + VERSION_FROM => 'lib/Big/Fat/Dummy.pm', + PREREQ_PM => {}, + PERL_CORE => $ENV{PERL_CORE}, + PREFIX => 'foo/bar', +); +like( $stdout->read, qr{ + Writing\ $Makefile\ for\ Big::Fat::Liar\n + Big::Fat::Liar's\ vars\n + INST_LIB\ =\ \S+\n + INST_ARCHLIB\ =\ \S+\n + Writing\ $Makefile\ for\ Big::Fat::Dummy\n +}x ); +undef $stdout; +untie *STDOUT; + +isa_ok( $mm, 'ExtUtils::MakeMaker' ); + +is( $mm->{NAME}, 'Big::Fat::Dummy', 'NAME' ); +is( $mm->{VERSION}, 0.01, 'VERSION' ); + +is( $mm->{PREFIX}, 'foo/bar', 'PREFIX' ); + +is( !!$mm->{PERL_CORE}, !!$ENV{PERL_CORE}, 'PERL_CORE' ); + +my($perl_src, $mm_perl_src); +if( $ENV{PERL_CORE} ) { + $perl_src = File::Spec->catdir($Updir, $Updir, $Updir, $Updir); + $perl_src = File::Spec->canonpath($perl_src); + $mm_perl_src = File::Spec->canonpath($mm->{PERL_SRC}); +} +else { + $mm_perl_src = $mm->{PERL_SRC}; +} + +is( $mm_perl_src, $perl_src, 'PERL_SRC' ); + + +# Every INSTALL* variable must start with some PREFIX. +my @Perl_Install = qw(archlib privlib bin script + man1dir man3dir); +my @Site_Install = qw(sitearch sitelib sitebin + siteman1dir siteman3dir); +my @Vend_Install = qw(vendorarch vendorlib vendorbin + vendorman1dir vendorman3dir); + +foreach my $var (@Perl_Install) { + like( $mm->{uc "install$var"}, qr/^\$\(PREFIX\)/, "PREFIX + $var" ); +} + +foreach my $var (@Site_Install) { + like( $mm->{uc "install$var"}, qr/^\$\(SITEPREFIX\)/, + "SITEPREFIX + $var" ); +} + +foreach my $var (@Vend_Install) { + like( $mm->{uc "install$var"}, qr/^\$\(VENDORPREFIX\)/, + "VENDORPREFIX + $var" ); +} diff --git a/lib/ExtUtils/t/MM_Cygwin.t b/lib/ExtUtils/t/MM_Cygwin.t index 42d3949..74aef67 100644 --- a/lib/ExtUtils/t/MM_Cygwin.t +++ b/lib/ExtUtils/t/MM_Cygwin.t @@ -15,7 +15,7 @@ use Test::More; BEGIN { if ($^O =~ /cygwin/i) { - plan tests => 15; + plan tests => 13; } else { plan skip_all => "This is not cygwin"; } @@ -57,15 +57,11 @@ my $ccflags = $Config{useshrplib} eq 'true' ? ' -DUSEIMPORTLIB' : ''; $args->cflags(<{CFLAGS}, qr/OPTIMIZE = opt/, '... should set OPTIMIZE' ); like( $args->{CFLAGS}, qr/PERLTYPE = pt/, '... should set PERLTYPE' ); -like( $args->{CFLAGS}, qr/LARGE = lg/, '... should set LARGE' ); -like( $args->{CFLAGS}, qr/SPLIT = split/, '... should set SPLIT' ); like( $args->{CFLAGS}, qr/CCFLAGS = $ccflags/, '... should set CCFLAGS' ); # test manifypods diff --git a/lib/ExtUtils/t/MM_Unix.t b/lib/ExtUtils/t/MM_Unix.t index 994eca3..92083f0 100644 --- a/lib/ExtUtils/t/MM_Unix.t +++ b/lib/ExtUtils/t/MM_Unix.t @@ -18,7 +18,7 @@ BEGIN { plan skip_all => 'Non-Unix platform'; } else { - plan tests => 107; + plan tests => 108; } } @@ -142,7 +142,7 @@ ok ( join (' ', $class->dist_basics()), 'distclean :: realclean distcheck'); ############################################################################### # has_link_code tests -my $t = {}; bless $t,$class; +my $t = bless { NAME => "Foo" }, $class; $t->{HAS_LINK_CODE} = 1; is ($t->has_link_code(),1,'has_link_code'); is ($t->{HAS_LINK_CODE},1); @@ -221,3 +221,14 @@ foreach (qw/ export_list perl_archive perl_archive_after/) } +{ + $t->{CCFLAGS} = '-DMY_THING'; + $t->{LIBPERL_A} = 'libperl.a'; + $t->{LIB_EXT} = '.a'; + local $t->{NEEDS_LINKING} = 1; + $t->cflags(); + + # Brief bug where CCFLAGS was being blown away + is( $t->{CCFLAGS}, '-DMY_THING', 'cflags retains CCFLAGS' ); +} + diff --git a/lib/ExtUtils/t/prefixify.t b/lib/ExtUtils/t/prefixify.t index ba2851b..3e22606 100644 --- a/lib/ExtUtils/t/prefixify.t +++ b/lib/ExtUtils/t/prefixify.t @@ -19,6 +19,6 @@ my $mm = bless {}, 'MM'; my $default = File::Spec->catdir(qw(this that)); $mm->prefixify('installbin', 'wibble', 'something', $default); - + is( $mm->{INSTALLBIN}, File::Spec->catdir('something', $default), 'prefixify w/defaults');