Skip Menu |
Report information
Id: 125314
Status: resolved
Priority: 0/
Queue: perl5

Owner: Nobody
Requestors: alh <wolfsage [at] gmail.com>
glai [at] arubanetworks.com
Cc:
AdminCc:

Operating System: Linux
PatchStatus: (no value)
Severity: medium
Type: core
Perl Version: 5.20.1
Fixed In: (no value)

Attachments
0001-For-perl-126468-protect-quotes-in-ccflags.patch



To: perlbug [...] perl.org
Subject: Configuring with -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' broken in v5.22.0
From: "Matthew Horsfall (alh)" <wolfsage [...] gmail.com>
Date: Tue, 2 Jun 2015 15:12:18 -0400
Download (untitled) / with headers
text/plain 12.5k
This is a bug report for perl from wolfsage@gmail.com, generated with the help of perlbug 1.40 running under perl 5.20.1. ----------------------------------------------------------------- [Please describe your issue here] (Found by Infinity Interactive's https://twitter.com/tripside) On v5.22.0: mhorsfall@dumai:~/p5/perl$ cat INSTALL | grep LLIB | grep Acc sh Configure -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' mhorsfall@dumai:~/p5/perl$ sh Configure -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' -des [...] mhorsfall@dumai:~/p5/perl$ make -j 8 [...] In file included from perl.h:2687:0, from perl.c:33: perl.c: In function ‘S_init_perllib’: <command-line>:0:14: error: ‘usr’ undeclared (first use in this function) handy.h:368:30: note: in definition of macro ‘STR_WITH_LEN’ #define STR_WITH_LEN(s) ("" s ""), (sizeof(s)-1) ^ perl.c:4372:42: note: in expansion of macro ‘APPLLIB_EXP’ S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), ^ <command-line>:0:14: note: each undeclared identifier is reported only once for each function it appears in handy.h:368:30: note: in definition of macro ‘STR_WITH_LEN’ #define STR_WITH_LEN(s) ("" s ""), (sizeof(s)-1) ^ perl.c:4372:42: note: in expansion of macro ‘APPLLIB_EXP’ S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), ^ <command-line>:0:18: error: ‘libperl’ undeclared (first use in this function) handy.h:368:30: note: in definition of macro ‘STR_WITH_LEN’ #define STR_WITH_LEN(s) ("" s ""), (sizeof(s)-1) ^ perl.c:4372:42: note: in expansion of macro ‘APPLLIB_EXP’ S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), ^ handy.h:368:32: error: expected ‘)’ before string constant #define STR_WITH_LEN(s) ("" s ""), (sizeof(s)-1) ^ perl.c:4372:29: note: in expansion of macro ‘STR_WITH_LEN’ S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), ^ <command-line>:0:13: error: expected expression before ‘/’ token handy.h:368:45: note: in definition of macro ‘STR_WITH_LEN’ #define STR_WITH_LEN(s) ("" s ""), (sizeof(s)-1) ^ perl.c:4372:42: note: in expansion of macro ‘APPLLIB_EXP’ S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), ^ handy.h:368:32: error: expected ‘)’ before string constant #define STR_WITH_LEN(s) ("" s ""), (sizeof(s)-1) ^ perl.c:4476:29: note: in expansion of macro ‘STR_WITH_LEN’ S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), INCPUSH_ADD_OLD_VERS ^ <command-line>:0:13: error: expected expression before ‘/’ token handy.h:368:45: note: in definition of macro ‘STR_WITH_LEN’ #define STR_WITH_LEN(s) ("" s ""), (sizeof(s)-1) ^ perl.c:4476:42: note: in expansion of macro ‘APPLLIB_EXP’ S_incpush_use_sep(aTHX_ STR_WITH_LEN(APPLLIB_EXP), INCPUSH_ADD_OLD_VERS This used to work fine in v5.20.0. It looks like the surrounding quotes are being stripped when handed to cc in v5.22.0: echo @`sh cflags "optimize='-O2'" opmini.o` -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB opmini.c @cc -c -DPERL_CORE -DAPPLLIB_EXP=/usr/libperl -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 -O2 -Wall -Werror=declaration-after-statement -Wextra -Wc++-compat -Wwrite-strings -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB opmini.c Here's how it looks when it works: echo @`sh cflags "optimize='-O2'" opmini.o` -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB opmini.c @cc -c -DPERL_CORE -DAPPLLIB_EXP="/usr/libperl" -fwrapv -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 -O2 -Wall -ansi -W -Wextra -Wdeclaration-after-statement -Wendif-labels -Wc++-compat -Wwrite-strings -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB opmini.c A bisect: mhorsfall@dory:~/p5/perl$ ../perl3/Porting/bisect.pl --start=v5.20.0 --end=v5.22.0 -Accflags='-DAPPLLIB_EXP=\"...\"' -j 8 --test-build Led me to this: 57d2761b46edd92efa00f984cb9840506d3b6483 is the first bad commit commit 57d2761b46edd92efa00f984cb9840506d3b6483 Author: Jarkko Hietaniemi <jhi@iki.fi> Date: Mon Jun 16 08:32:48 2014 -0400 Allow cflags.SH edits to ccflags to stick. :100755 100755 524dab15ad4e2b691ae4d762aa8dadbdc0160f47 f9a3838d2e8db2fbddaeb39a26b9e66cf3676933 M cflags.SH bisect run success That took 381 seconds. [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=medium --- Site configuration information for perl 5.20.1: Configured by Debian Project at Fri Oct 10 14:16:26 UTC 2014. Summary of my perl5 (revision 5 version 20 subversion 1) configuration: Platform: osname=linux, osvers=3.2.0-37-generic, archname=x86_64-linux-gnu-thread-multi uname='linux batsu 3.2.0-37-generic #58-ubuntu smp thu jan 24 15:28:10 utc 2013 x86_64 x86_64 x86_64 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-Bsymbolic-functions -Wl,-z,relro -Dlddlflags=-shared -Wl,-Bsymbolic-functions -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.20 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.20 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.20 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.20.1 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.20.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.20.1 -des' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2 -g', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.9.1', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags =' -fstack-protector -L/usr/local/lib' libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=libc-2.19.so, so=so, useshrplib=true, libperl=libperl.so.5.20 gnulibc_version='2.19' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector' Locally applied patches: DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN. DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check. DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information. DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories. DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes. DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note that libperl-dev package is required for embedded linking DEBPKG:fixes/respect_umask - Respect umask during installation DEBPKG:debian/writable_site_dirs - Set umask approproately for site install directories DEBPKG:debian/extutils_set_libperl_path - EU:MM: set location of libperl.a under /usr/lib DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables written to the makefile DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets. DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor. DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy. DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable. DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need. DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/747628 Point users to Debian packages of deprecated core modules DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.20.1-1 in patchlevel.h DEBPKG:debian/skip-kfreebsd-crash - http://bugs.debian.org/628493 [perl #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags} DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure CPAN::Distribution with correct name of html2text DEBPKG:debian/perl5db-x-terminal-emulator.patch - http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm in perl5db.pl DEBPKG:debian/cpan-missing-site-dirs - http://bugs.debian.org/688842 Fix CPAN::FirstTime defaults with nonexisting site dirs if a parent is writable DEBPKG:fixes/memoize_storable_nstore - [rt.cpan.org #77790] http://bugs.debian.org/587650 Memoize::Storable: respect 'nstore' option not respected DEBPKG:debian/regen-skip - Skip a regeneration check in unrelated git repositories DEBPKG:fixes/regcomp-mips-optim - [perl #122817] http://bugs.debian.org/754054 Downgrade the optimization of regcomp.c on mips and mipsel due to a gcc-4.9 bug DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/758471 Pass LD settings through to subdirectories DEBPKG:fixes/perldoc-less-R - [rt.cpan.org #98636] http://bugs.debian.org/758689 Tell the 'less' pager to allow terminal escape sequences DEBPKG:fixes/hurd_test_todo_socket.t - [perl #122657] http://bugs.debian.org/758718 Disable failing GNU/Hurd test in t/io/socket.t DEBPKG:fixes/pod_man_reproducible_date - http://bugs.debian.org/759405 Support POD_MAN_DATE in Pod::Man for the left-hand footer DEBPKG:fixes/data_dump_infinite_recurse - [19be3be] don't recurse infinitely in Data::Dumper --- @INC for perl 5.20.1: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.20.1 /usr/local/share/perl/5.20.1 /usr/lib/x86_64-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl . --- Environment for perl 5.20.1: HOME=/home/mhorsfall LANG=en_US.UTF-8 LANGUAGE=en_US LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/home/mhorsfall/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games PERLDOC=-oman PERL_BADLANG (unset) SHELL=/bin/bash
To: "perlbug [...] perl.org" <perlbug [...] perl.org>
Subject: [rt.cpan.org #125314] A workaround
From: Gerald Lai <glai [...] arubanetworks.com>
Date: Tue, 27 Oct 2015 23:52:38 +0000
Download (untitled) / with headers
text/plain 943b
This issue has also been brought up at:


As mentioned, 57d2761b46edd92efa00f984cb9840506d3b6483 is the first bad commit. Diff at:



Removing $myccflags from cflags.SH is a workaround:

--- cflags.SH
+++ cflags.SH
@@ -17,7 +17,6 @@
 #
 # From this we initialise the following variables in the cflags script:
 #
-#   $myccflags (possibly edited version of $Config{ccflags})
 #   $warn
 #   $stdflags
 #   $extra
@@ -401,7 +400,6 @@
 # This file is generated by cflags.SH
 
 # Used to restore possible edits by cflags.SH.
-myccflags="$ccflags"
 # Extra warnings, used e.g. for gcc.
 warn="$warn"
 # Extra standardness.
@@ -426,7 +424,6 @@
                echo "Can't find config.sh."; exit 1
        fi
        . $TOP/config.sh
-        ccflags="$myccflags"  # Restore possible edits by cflags.SH.
        ;;
 esac

RT-Send-CC: perl5-porters [...] perl.org
Would the attached patch work for you?
RT-Send-CC: perl5-porters [...] perl.org
Would the attached patch work for you?
RT-Send-CC: perl5-porters [...] perl.org
Would the attached patch work for you?
Subject: 0001-For-perl-126468-protect-quotes-in-ccflags.patch
From 111bd177427ec912ef9d64a6d055ca5e9abc359d Mon Sep 17 00:00:00 2001 From: Jarkko Hietaniemi <jhi@iki.fi> Date: Wed, 28 Oct 2015 07:56:23 -0400 Subject: [PATCH] For perl #126468: protect quotes in ccflags. --- cflags.SH | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cflags.SH b/cflags.SH index f3e44ad..33c6c93 100755 --- a/cflags.SH +++ b/cflags.SH @@ -387,6 +387,9 @@ echo "cflags.SH: warn = $warn" # Code to set any extra flags here. extra='' +# Protect double or single quotes. +myccflags=`echo $ccflags | sed -e 's/"/\\\"/g' -e "s/'/\\\'/g"` + echo "Extracting cflags (with variable substitutions)" # This section of the file will have variable substitutions done on it. # Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!. @@ -401,7 +404,8 @@ $startsh # This file is generated by cflags.SH # Used to restore possible edits by cflags.SH. -myccflags="$ccflags" +myccflags="$myccflags" + # Extra warnings, used e.g. for gcc. warn="$warn" # Extra standardness. -- 2.6.0
RT-Send-CC: perl5-porters [...] perl.org
Could you try testing the suggested patch?
To: perlbug-followup [...] perl.org, Perl5 Porters <perl5-porters [...] perl.org>
From: "Matthew Horsfall (alh)" <wolfsage [...] gmail.com>
Subject: Re: [perl #125314] Configuring with -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' broken in v5.22.0
Date: Thu, 29 Oct 2015 07:57:29 -0400
Download (untitled) / with headers
text/plain 192b
On Thu, Oct 29, 2015 at 6:51 AM, Jarkko Hietaniemi via RT <perlbug-followup@perl.org> wrote: Show quoted text
> Could you try testing the suggested patch? >
Worked for me, thanks! -- Matthew Horsfall (alh)
To: "perlbug-followup [...] perl.org" <perlbug-followup [...] perl.org>, "perlbug [...] perl.org" <perlbug [...] perl.org>
Subject: [rt.cpan.org #125314] RE: [perl #125314] Configuring with -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' broken in v5.22.0
From: Gerald Lai <glai [...] arubanetworks.com>
Date: Thu, 29 Oct 2015 16:09:11 +0000
Download (untitled) / with headers
text/plain 407b
My reply did not seem to get through to Jarkko. Resending it. -Gerald Show quoted text
________________________________________ From: Gerald Lai Sent: Wednesday, October 28, 2015 10:06 AM To: perlbug-followup@perl.org Subject: RE: [perl #125314] Configuring with -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' broken in v5.22.0
> Would the attached patch work for you?
Yes, the attached patch works for me. Thanks, --Gerald
From: Gerald Lai <glai [...] arubanetworks.com>
Date: Wed, 28 Oct 2015 17:06:10 +0000
To: "perlbug-followup [...] perl.org" <perlbug-followup [...] perl.org>
Subject: RE: [perl #125314] Configuring with -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' broken in v5.22.0
Show quoted text
> Would the attached patch work for you?
Yes, the attached patch works for me. Thanks, --Gerald
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 136b
Excellent, thanks! Now in bleadperl as in 7bd81993, and candidated (if that's a word) for inclusion into 5.22.1. Marking as resolved.


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org