Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Configuring with -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' broken in v5.22.0 [rt.cpan.org #125314] #14732

Closed
p5pRT opened this issue Jun 2, 2015 · 13 comments

Comments

@p5pRT
Copy link

p5pRT commented Jun 2, 2015

Migrated from rt.perl.org#125314 (status was 'resolved')

Searchable as RT125314$

@p5pRT
Copy link
Author

p5pRT commented Jun 2, 2015

From @wolfsage

Created by wolfsage@gmail.com

(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​:

  57d2761 is the first bad commit
  commit 57d2761
  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.

Perl Info

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

@p5pRT
Copy link
Author

p5pRT commented Oct 27, 2015

From glai@arubanetworks.com

This issue has also been brought up at​:

  gugod/App-perlbrew#466

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

  http​://www.nntp.perl.org/group/perl.perl5.changes/2014/06/msg41057.html

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

@p5pRT
Copy link
Author

p5pRT commented Oct 28, 2015

@jkeenan - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Oct 28, 2015

From @jhi

Would the attached patch work for you?

2 similar comments
@p5pRT
Copy link
Author

p5pRT commented Oct 28, 2015

From @jhi

Would the attached patch work for you?

@p5pRT
Copy link
Author

p5pRT commented Oct 28, 2015

From @jhi

Would the attached patch work for you?

@p5pRT
Copy link
Author

p5pRT commented Oct 28, 2015

From @jhi

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

@p5pRT
Copy link
Author

p5pRT commented Oct 29, 2015

From @jhi

Could you try testing the suggested patch?

@p5pRT
Copy link
Author

p5pRT commented Oct 29, 2015

From @wolfsage

On Thu, Oct 29, 2015 at 6​:51 AM, Jarkko Hietaniemi via RT
<perlbug-followup@​perl.org> wrote​:

Could you try testing the suggested patch?

Worked for me, thanks!

-- Matthew Horsfall (alh)

@p5pRT
Copy link
Author

p5pRT commented Oct 29, 2015

From glai@arubanetworks.com

My reply did not seem to get through to Jarkko. Resending it.

-Gerald
________________________________________
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

@p5pRT
Copy link
Author

p5pRT commented Oct 29, 2015

From glai@arubanetworks.com

Would the attached patch work for you?

Yes, the attached patch works for me.

Thanks,
--Gerald

@p5pRT
Copy link
Author

p5pRT commented Oct 29, 2015

From @jhi

Excellent, thanks!

Now in bleadperl as in 7bd8199, and candidated (if that's a word) for inclusion into 5.22.1.

Marking as resolved.

@p5pRT
Copy link
Author

p5pRT commented Oct 29, 2015

@jhi - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant