Upstream-Status:Inappropriate [debian patch] Subject: Various debian-specific ExtUtils changes * Respect umask during installation, and set as appropriate for each of perl, vendor and site (policy requires group writable site dirs). * Don't install .packlist or perllocal.pod for perl or vendor. * Fiddle with *PREFIX and variables written to the makefile so that install directories may be changed when make is run by passing PREFIX= to the "make install" command (used when packaging modules). * Set location of libperl.a to /usr/lib. * Note that libperl-dev package is required for embedded linking. * Change install target dependencies to facilitate parallel makes. --- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm | 12 +++--- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm | 44 +++++----------------- cpan/ExtUtils-MakeMaker/t/INST.t | 4 +-- cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t | 10 +++--- dist/ExtUtils-Install/lib/ExtUtils/Install.pm | 18 +++++----- lib/ExtUtils/Embed.pm | 3 ++ 6 files changed, 34 insertions(+), 57 deletions(-) diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm index 4905aeb..a80ac20 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm @@ -701,8 +701,6 @@ all POD files in MAN1PODS and MAN3PODS. sub manifypods_target { my($self) = shift; - my $man1pods = ''; - my $man3pods = ''; my $dependencies = ''; # populate manXpods & dependencies: @@ -718,7 +716,7 @@ END foreach my $section (qw(1 3)) { my $pods = $self->{"MAN${section}PODS"}; push @man_cmds, $self->split_command(<{SITEPREFIX} ||= $sprefix; $self->{VENDORPREFIX} ||= $vprefix; - # Lots of MM extension authors like to use $(PREFIX) so we - # put something sensible in there no matter what. - $self->{PREFIX} = '$('.uc $self->{INSTALLDIRS}.'PREFIX)'; + my $p = $self->{PREFIX} = $self->{PERLPREFIX}; + for my $t (qw/PERL SITE VENDOR/) + { + $self->{"${t}PREFIX"} =~ s!^\Q$p\E(?=/|$)!\$(PREFIX)!; + } } my $arch = $Config{archname}; diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm index 239d6df..940de38 100644 --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm @@ -2046,9 +2046,7 @@ doc__install : doc_site_install $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site pure_perl_install :: all - $(NOECHO) $(MOD_INSTALL) \ - read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ - write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ + $(NOECHO) umask 022; $(MOD_INSTALL) \ $(INST_LIB) $(DESTINSTALLPRIVLIB) \ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \ $(INST_BIN) $(DESTINSTALLBIN) \ @@ -2060,7 +2058,7 @@ pure_perl_install :: all pure_site_install :: all - $(NOECHO) $(MOD_INSTALL) \ + $(NOECHO) umask 02; $(MOD_INSTALL) \ read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ write }.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \ $(INST_LIB) $(DESTINSTALLSITELIB) \ @@ -2073,9 +2071,7 @@ pure_site_install :: all }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{ pure_vendor_install :: all - $(NOECHO) $(MOD_INSTALL) \ - read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ - write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \ + $(NOECHO) umask 022; $(MOD_INSTALL) \ $(INST_LIB) $(DESTINSTALLVENDORLIB) \ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \ $(INST_BIN) $(DESTINSTALLVENDORBIN) \ @@ -2084,37 +2080,19 @@ pure_vendor_install :: all $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) doc_perl_install :: all - $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) - -$(NOECHO) $(DOC_INSTALL) \ - "Module" "$(NAME)" \ - "installed into" "$(INSTALLPRIVLIB)" \ - LINKTYPE "$(LINKTYPE)" \ - VERSION "$(VERSION)" \ - EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ doc_site_install :: all - $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) - -$(NOECHO) $(DOC_INSTALL) \ + $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod + -$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH) + -$(NOECHO) umask 02; $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLSITELIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ + >> }.$self->catfile('$(DESTINSTALLSITEARCH)','perllocal.pod').q{ doc_vendor_install :: all - $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod - -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) - -$(NOECHO) $(DOC_INSTALL) \ - "Module" "$(NAME)" \ - "installed into" "$(INSTALLVENDORLIB)" \ - LINKTYPE "$(LINKTYPE)" \ - VERSION "$(VERSION)" \ - EXE_FILES "$(EXE_FILES)" \ - >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ }; @@ -2123,13 +2101,12 @@ uninstall :: uninstall_from_$(INSTALLDIRS)dirs $(NOECHO) $(NOOP) uninstall_from_perldirs :: - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ uninstall_from_sitedirs :: $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ uninstall_from_vendordirs :: - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ + }; join("",@m); @@ -2402,7 +2379,7 @@ MAP_PRELIBS = $Config{perllibs} $Config{cryptlib} ($lperl = $libperl) =~ s/\$\(A\)/$self->{LIB_EXT}/; } unless ($libperl && -f $lperl) { # Ilya's code... - my $dir = $self->{PERL_SRC} || "$self->{PERL_ARCHLIB}/CORE"; + my $dir = $self->{PERL_SRC} || "/usr/lib"; $dir = "$self->{PERL_ARCHLIB}/.." if $self->{UNINSTALLED_PERL}; $libperl ||= "libperl$self->{LIB_EXT}"; $libperl = "$dir/$libperl"; @@ -2998,8 +2975,7 @@ sub prefixify { print STDERR " prefixify $var => $path\n" if $Verbose >= 2; print STDERR " from $sprefix to $rprefix\n" if $Verbose >= 2; - if( $self->{ARGS}{PREFIX} && - $path !~ s{^\Q$sprefix\E\b}{$rprefix}s ) + if( $path !~ s{^\Q$sprefix\E\b}{$rprefix}s && $self->{ARGS}{PREFIX} ) { print STDERR " cannot prefix, using default.\n" if $Verbose >= 2; diff --git a/cpan/ExtUtils-MakeMaker/t/INST.t b/cpan/ExtUtils-MakeMaker/t/INST.t index 8a140eb..cf1410e 100755 --- a/cpan/ExtUtils-MakeMaker/t/INST.t +++ b/cpan/ExtUtils-MakeMaker/t/INST.t @@ -59,9 +59,7 @@ isa_ok( $mm, 'ExtUtils::MakeMaker' ); is( $mm->{NAME}, 'Big::Dummy', 'NAME' ); is( $mm->{VERSION}, 0.01, 'VERSION' ); -my $config_prefix = $Config{installprefixexp} || $Config{installprefix} || - $Config{prefixexp} || $Config{prefix}; -is( $mm->{PERLPREFIX}, $config_prefix, 'PERLPREFIX' ); +is( $mm->{PERLPREFIX}, '$(PREFIX)', 'PERLPREFIX' ); is( !!$mm->{PERL_CORE}, !!$ENV{PERL_CORE}, 'PERL_CORE' ); diff --git a/cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t b/cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t index 8bb9db8..316546d 100755 --- a/cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t +++ b/cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t @@ -10,7 +10,7 @@ BEGIN { } use strict; -use Test::More tests => 52; +use Test::More tests => 47; use MakeMaker::Test::Utils; use MakeMaker::Test::Setup::BFD; use ExtUtils::MakeMaker; @@ -56,16 +56,16 @@ like( $stdout->read, qr{ Writing\ $Makefile\ for\ Big::Dummy\n }x ); -is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' ); +#is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' ); isa_ok( $mm, 'ExtUtils::MakeMaker' ); is( $mm->{NAME}, 'Big::Dummy', 'NAME' ); is( $mm->{VERSION}, 0.01, 'VERSION' ); -foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) { - unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ ); -} +#foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) { +# unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ ); +#} my $PREFIX = File::Spec->catdir('foo', 'bar'); diff --git a/dist/ExtUtils-Install/lib/ExtUtils/Install.pm b/dist/ExtUtils-Install/lib/ExtUtils/Install.pm index da58365..d6d5c11 100644 --- a/dist/ExtUtils-Install/lib/ExtUtils/Install.pm +++ b/dist/ExtUtils-Install/lib/ExtUtils/Install.pm @@ -468,7 +468,7 @@ sub _can_write_dir { =pod -=item _mkpath($dir,$show,$mode,$verbose,$dry_run) +=item _mkpath($dir,$show,$verbose,$dry_run) Wrapper around File::Path::mkpath() to handle errors. @@ -485,13 +485,13 @@ writable. =cut sub _mkpath { - my ($dir,$show,$mode,$verbose,$dry_run)=@_; + my ($dir,$show,$verbose,$dry_run)=@_; if ( $verbose && $verbose > 1 && ! -d $dir) { $show= 1; - printf "mkpath(%s,%d,%#o)\n", $dir, $show, $mode; + printf "mkpath(%s,%d)\n", $dir, $show; } if (!$dry_run) { - if ( ! eval { File::Path::mkpath($dir,$show,$mode); 1 } ) { + if ( ! eval { File::Path::mkpath($dir,$show); 1 } ) { _choke("Can't create '$dir'","$@"); } @@ -796,7 +796,7 @@ sub install { #XXX OS-SPECIFIC _chdir($cwd); } foreach my $targetdir (sort keys %check_dirs) { - _mkpath( $targetdir, 0, 0755, $verbose, $dry_run ); + _mkpath( $targetdir, 0, $verbose, $dry_run ); } foreach my $found (@found_files) { my ($diff, $ffd, $origfile, $mode, $size, $atime, $mtime, @@ -810,7 +810,7 @@ sub install { #XXX OS-SPECIFIC $targetfile= _unlink_or_rename( $targetfile, 'tryhard', 'install' ) unless $dry_run; } elsif ( ! -d $targetdir ) { - _mkpath( $targetdir, 0, 0755, $verbose, $dry_run ); + _mkpath( $targetdir, 0, $verbose, $dry_run ); } print "Installing $targetfile\n"; @@ -850,7 +850,7 @@ sub install { #XXX OS-SPECIFIC if ($pack{'write'}) { $dir = install_rooted_dir(dirname($pack{'write'})); - _mkpath( $dir, 0, 0755, $verbose, $dry_run ); + _mkpath( $dir, 0, $verbose, $dry_run ); print "Writing $pack{'write'}\n" if $verbose; $packlist->write(install_rooted_file($pack{'write'})) unless $dry_run; } @@ -1190,7 +1190,7 @@ be prepended as a directory to each installed file (and directory). sub pm_to_blib { my($fromto,$autodir,$pm_filter) = @_; - _mkpath($autodir,0,0755); + _mkpath($autodir,0); while(my($from, $to) = each %$fromto) { if( -f $to && -s $from == -s $to && -M $to < -M $from ) { print "Skip $to (unchanged)\n"; @@ -1213,7 +1213,7 @@ sub pm_to_blib { # we wont try hard here. its too likely to mess things up. forceunlink($to); } else { - _mkpath(dirname($to),0,0755); + _mkpath(dirname($to),0); } if ($need_filtering) { run_filter($pm_filter, $from, $to); diff --git a/lib/ExtUtils/Embed.pm b/lib/ExtUtils/Embed.pm index 24ae909..12d421d 100644 --- a/lib/ExtUtils/Embed.pm +++ b/lib/ExtUtils/Embed.pm @@ -305,6 +305,9 @@ and extensions in your C/C++ applications. Typically, an application B will invoke ExtUtils::Embed functions while building your application. +Note that on Debian systems the B package is required for +compiling applications which embed an interpreter. + =head1 @EXPORT ExtUtils::Embed exports the following functions: -- tg: (c823880..) debian/extutils_hacks (depends on: upstream) '#n269'>269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387