This is a live mirror of the Perl 5 development currently hosted at
Get ‘./miniperl -Ilib -T’ working
authorFather Chrysostomos <>
Sun, 31 Aug 2014 20:11:03 +0000 (13:11 -0700)
committerFather Chrysostomos <>
Sun, 31 Aug 2014 21:12:35 +0000 (14:12 -0700)
If the first directory included via -I contains,
then miniperl will try to load it at startup.  This allows the build
process to access all the necessary directories, because fills in @INC.

This was not working under taint mode, making it a pain for me to
diagnose tainting bugs with miniperl (which builds faster than perl
proper, obviously).

It failed because is loaded with generated code that
does ‘do "lib/"’ (where ‘lib’ is taken from -Ilib),
but do-file searches @INC, which does not include the current direc-
tory under taint mode.

The easiest solution here is to add ‘./’ to the beginning of the path.
It is unlikely that anyone is using miniperl -I/... (with an absolute
path), and miniperl is only supposed to be used for building or devel-
oping perl, anyway.


diff --git a/perl.c b/perl.c
index 8df24db..4af5348 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -2070,7 +2070,9 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit)
                it should be reported immediately as a build failure.  */
            (void)Perl_av_create_and_unshift_one(aTHX_ &PL_preambleav,
-        "BEGIN { do {local $!; -f q%c%"SVf"/} and do q%c%"SVf"/ || die $@ }",
+                               "BEGIN { do {local $!; -f q%c./%"SVf
+                               "/} and do q%c./%"SVf
+                               "/ || die $@ }",
                                                               0, SVfARG(*inc0), 0,
                                                               0, SVfARG(*inc0), 0));