summaryrefslogtreecommitdiff
path: root/lang/parrot/patches
diff options
context:
space:
mode:
authorhe <he@pkgsrc.org>2009-04-14 23:50:19 +0000
committerhe <he@pkgsrc.org>2009-04-14 23:50:19 +0000
commite008bc975a5109ad7b74d391e2235ccf8f93fb8c (patch)
tree6267605b8bc2984b34c06cfa70fe86abf2df4e68 /lang/parrot/patches
parent028185d0a34f0877bf5ba841a9782f91376b592b (diff)
downloadpkgsrc-e008bc975a5109ad7b74d391e2235ccf8f93fb8c.tar.gz
Fix the detection and use of perldoc, so that this package can be
fully built and installed when the build is run as root. The reason this is problematical is that perldoc changes uid if run as root, to either 'nobody', 'nouser' or uid -2, for security reasons, and then cannot write files owned by root or create files in directories owned by root with 'normal' permissions. No revision bump as this should purely be a build fix.
Diffstat (limited to 'lang/parrot/patches')
-rw-r--r--lang/parrot/patches/patch-ad29
-rw-r--r--lang/parrot/patches/patch-ae15
2 files changed, 44 insertions, 0 deletions
diff --git a/lang/parrot/patches/patch-ad b/lang/parrot/patches/patch-ad
new file mode 100644
index 00000000000..2c4ba3ca97a
--- /dev/null
+++ b/lang/parrot/patches/patch-ad
@@ -0,0 +1,29 @@
+$NetBSD: patch-ad,v 1.3 2009/04/14 23:50:20 he Exp $
+
+Allow parrot to detect perldoc when run as root. Perldoc changes
+uid to 'nobody', 'nouser' or uid -2 when run as root, so it won't
+be able to write files created by root with mode 0600 (or create new
+files in directories owned by root mode 0755).
+
+--- config/auto/perldoc.pm.orig 2009-03-08 21:32:47.000000000 +0100
++++ config/auto/perldoc.pm
+@@ -38,7 +38,9 @@ sub runstep {
+
+ my $cmd = $conf->data->get_p5('scriptdirexp') . q{/perldoc};
+ my ( $fh, $filename ) = tempfile( UNLINK => 1 );
+- my $content = capture_output("$cmd -ud $filename perldoc") || undef;
++ my($stdout, $stderr, $retval) =
++ capture_output("$cmd -u perldoc > $filename");
++ my($content) = $retval ? undef : $stderr;
+
+ return 1 unless defined( $self->_initial_content_check($conf, $content) );
+
+@@ -68,7 +70,7 @@ E_NOTE
+ if ( $new_perldoc ) {
+ $TEMP_pod_build .= <<"END"
+ ops$slash$pod: ..${slash}src${slash}ops${slash}$ops
+-\t\$(PERLDOC) -ud ops${slash}$pod ..${slash}src${slash}ops${slash}$ops
++\t\$(PERLDOC) -u ..${slash}src${slash}ops${slash}$ops > ops${slash}$pod
+ \t\$(CHMOD) 0644 ops${slash}$pod
+
+ END
diff --git a/lang/parrot/patches/patch-ae b/lang/parrot/patches/patch-ae
new file mode 100644
index 00000000000..76ca257d4bc
--- /dev/null
+++ b/lang/parrot/patches/patch-ae
@@ -0,0 +1,15 @@
+$NetBSD: patch-ae,v 1.1 2009/04/14 23:50:20 he Exp $
+
+Perldoc's -d is incompatible with doing the build as root.
+
+--- config/gen/makefiles/docs.in.orig 2009-03-09 05:41:01.000000000 +0100
++++ config/gen/makefiles/docs.in
+@@ -37,7 +37,7 @@ doc-prep:
+ $(MKPATH) ops
+
+ packfile-c.pod: ../src/packfile.c
+-#IF(new_perldoc): $(PERLDOC) -ud packfile-c.pod ../src/packfile.c
++#IF(new_perldoc): $(PERLDOC) -u ../src/packfile.c > packfile-c.pod
+ #ELSE: $(PERLDOC) -u ../src/packfile.c > packfile-c.pod
+
+ clean: