-
Notifications
You must be signed in to change notification settings - Fork 558
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
24e16d7 broke g++ build on FreeBSD-11.0 #15984
Comments
From @jkeenanSummary: A commit to Perl 5 blead in December 2016 made it impossible to build Preliminary remarks: 1. The default C-compiler on FreeBSD-11.0 is clang, not g++. When I 2. Hence, what I report below is an edge case that we should explore Bug report: At the point when perl-5.24.0 was released, perl could have been built Bisection indicates that the following is the first bad commit: ##### regexec.c: Make isFOO_lc() non-static The immediately preceding commit would be: ##### utf8.c: White space, comments only If I were to configure at ddb6593 as follows: ##### ... and then call 'make -j${TEST_JOBS} test_harness'. Perl would build If I now were to advance to commit ##### make: stopped in /usr/home/jkeenan/gitwork/perl2 make: stopped in /usr/home/jkeenan/gitwork/perl2 So this is a regression between 5.24 and 5.26. However, since it is a Thank you very much. |
From @jkeenanSummary of my perl5 (revision 5 version 25 subversion 9) configuration: Characteristics of this binary (from libperl): |
From @jkeenanext/re/re_exec.c:9753:Perl__is_grapheme(pTHX_ const U8 * strbeg, const U8 * s, const U8 * strend, const UV cp) |
From @craigberryOn Sat, May 20, 2017 at 10:54 PM, James E Keenan
Surely this was fixed by: commit 9637d2a Don't define Perl_isFOO_lc in the regex extension. Otherwise it ends up multiply defined, which annoys the VMS linker Can you you either do another bisect that starts from there or at |
The RT System itself - Status changed from 'new' to 'open' |
From @jkeenanOn Sun, 21 May 2017 13:11:38 GMT, craig.a.berry@gmail.com wrote:
I am attaching the log of 'make' (gzipped) that I got when compiling blead with g++ yesterday. Blead was probably at 2c4393c at that point. Thank you very much. |
From @jkeenan |
From @jkeenanOn Sun, 21 May 2017 13:11:38 GMT, craig.a.berry@gmail.com wrote:
Using this function to configure: ##### ... I tried to build perl at commit 9637d2a and got the same, "multiple definition of `Perl__is_grapheme'" build failure as previous posted. See attachment for gzipped output of 'make' at this revision. Thank you very much. |
From @craigberryOn Sun, May 21, 2017 at 11:24 AM, James E Keenan via RT
How do you mean "the same"? Previously it was Perl_isFOO_lc that was Inline Patchdiff --git a/regexec.c b/regexec.c
index 0b5c847f1c..ea52477781 100644
--- a/regexec.c
+++ b/regexec.c
@@ -9708,6 +9708,8 @@ S_to_byte_substr(pTHX_ regexp *prog)
return TRUE;
}
+#ifndef PERL_IN_XSUB_RE
+
bool
Perl__is_grapheme(pTHX_ const U8 * strbeg, const U8 * s, const U8 *
- /* |
From @jkeenanOn Mon, 22 May 2017 01:32:07 GMT, craig.a.berry@gmail.com wrote:
Your patch -- which I've pushed in the smoke-me/jkeenan/131337-craig branch -- does enable 'make' to complete when g++ is the C-compiler on FreeBSD-11.0. However, there is a persistent test failure in t/re/regexp_nonull.t (http://perl5.test-smoke.org/report/55820) -- a failure which that branch does not get when compiling with g++ on Linux (http://perl5.test-smoke.org/report/55823). I am attaching: * the gzipped log of 'make' for that build; * the ./perl -Ilib -V output for that build; * the output for "cd t; ./perl harness -v re/regexp_nonull.t; cd -" for that build * and by way of contrast, the output for "cd t; ./perl harness -v re/regexp_nonull.t; cd -" on FreeBSD-11.0 but using the regular configuration style with 'clang'. Thank you very much. -- |
From @jkeenanCan't locate XS/APItest.pm in @INC (you may need to install the XS::APItest module) (@INC contains: ../lib) at re/regexp_nonull.t line 10. Test Summary Report re/regexp_nonull.t (Wstat: 512 Tests: 0 Failed: 0) |
From @jkeenanSummary of my perl5 (revision 5 version 26 subversion 0) configuration: Characteristics of this binary (from libperl): |
From @jkeenanre/regexp_nonull.t .. |
From @jkeenanOn Mon, 22 May 2017 13:08:13 GMT, jkeenan wrote:
It appears that when, on FreeBSD-11.0, I configure with g++ in the smoke-me/jkeenan/131337-craig branch, the perl that gets built does not have XS::APItest. If, in a "regular_configure" of perl on this platform -- i.e., building with the default C-compiler clang -- at the end of 'make test_prep' I issue this command: ##### ... I get these results: ##### However, if I build with g++ instead, I only get these results: ##### I don't know why this is happening. Perhaps it is a different bug. Thank you very much. -- |
From @jkeenanOn Mon, 22 May 2017 14:11:58 GMT, jkeenan wrote:
If there is an additional bug, it probably occurs much earlier -- in the configure stage. I am attaching the config.sh for blead built with my regular configuration command ... ##### ... and for the smoke-me/jkeenan/131337-craig branch built as follows: ##### If you grep for '_ext=', the differences are startling. regular_configure has a long list of libraries, including XS/APItest, as the value for 'dynamic_ext'. gpp_configure has an empty string for 'dynamic_ext'. In regular_configure, 'static_ext' has a value of a single whitespace. In gpp_configure, 'static_ext' has a long list of libraries which does not include XS/APItest. In regular_configure, 'XS/APItest' can be found in the values for 'dynamic_ext', 'extensions' and 'known_extensions'. In gpp_configure, 'XS/APItest' is found only in 'known_extensions'. Can anyone offer some insight into this? Thank you very much. -- |
From @LeontOn Mon, May 22, 2017 at 5:09 PM, James E Keenan via RT <
Yeah, the long list of .a files in the original post looked strange to me. Leon |
From @jkeenanOn Mon, 22 May 2017 17:03:43 GMT, LeonT wrote:
$ grep -n usedl *.config.sh So, 'undef' in the g++ case. |
From @jkeenanOn Mon, 22 May 2017 17:26:44 GMT, jkeenan wrote:
This is starting to look like a "Linux vs FreeBSD" case. If in my FreeBSD-10.3 VM (which is having its own problems with a g++ build; see RT #131336) I do a regular_configure in blead and then a gpp_configure in the smoke-me/jkeenan/131337-craig branch, I observe the same differences as I do in my FreeBSD-11.0 VM. In 10.3 in the branch, 'usedl' is 'undef', 'dynamic_ext' is '', 'static_ext' has many libraries but not XS/APItest. However, when on Linux I configure like this: ##### ... I get a "more plausible" config.sh: ##### Thank you very much. -- |
From @jkeenanOn Mon, 22 May 2017 17:49:51 GMT, jkeenan wrote:
After much experimentation, this is what I have got somewhat working. On FreeBSD-11.0, in the smoke-me/jkeenan/131337-craig branch, I configure as follows: ##### That populates config.sh as in attachment 131337.better.config.sh.txt. 'make' and 'make test_harness' complete successfully. But this begs the question: Why on FreeBSD --but not on Linux -- does a request to build with g++ require command-line switches 'usedl' and 'dlsrc' to be populated? I have stared at the relevant code in ./Configure but cannot figure out the answer. Thank you very much. |
From @jkeenan17:config_args='-des -Dusedevel -Duseithreads -Doptimize=-O2 -pipe -fstack-protector -fno-strict-aliasing -Dcc=g++ -Dusedl -Ddlsrc=dl_dlopen.xs' |
From @LeontOn Mon, May 22, 2017 at 9:59 PM, James E Keenan via RT <
The hints for linux mention that "If using g++, the Configure scan for Leon |
From @jkeenanOn Mon, 22 May 2017 21:07:39 GMT, LeonT wrote:
That looks promising. See https://perl5.git.perl.org/perl.git/commitdiff/48e836997 -- |
From @jkeenanOn Tue, 23 May 2017 02:15:19 GMT, jkeenan wrote:
Applied to blead in these commits: ##### When building with g++ on FreeBSD, explicitly set 'usedl' and 'dlsrc'. commit 66c5e3f Patch suggested by Craig Berry for RT 131337. See http://perl5.test-smoke.org/report/56009 Marking ticket Resolved. -- |
@jkeenan - Status changed from 'open' to 'resolved' |
From @doughera88On Mon, Jun 05, 2017 at 06:05:07AM -0700, James E Keenan via RT wrote:
I pushed a slightly simpler version that forces Configure to find commit 2c8efe4 Simpler hints fix for [perl #131337]. Having found dlopen(), the values of usedl=define and dlsrc=dl_dlopen.xs (I've also attached the patch here to record it in RT -- I meant to do The ticket should still stay Resolved. -- |
From @doughera88freebsd-hints.patchcommit 2c8efe4079b75c61cf34425054539a9c24913e9f
Author: Andy Dougherty <doughera@lafayette.edu>
Date: Mon Jun 12 08:02:10 2017 -0400
Simpler hints fix for [perl #131337].
The Configure scan fails to find dlopen() with g++. Explicitly making
it availble allows Configure to default to using dynamic loading, but
still allows the user to override and use static loading.
diff --git a/hints/freebsd.sh b/hints/freebsd.sh
index fc6d73f..b3422c9 100644
--- a/hints/freebsd.sh
+++ b/hints/freebsd.sh
@@ -322,10 +322,12 @@ d_printf_format_null='undef'
d_uselocale='undef'
# https://rt.perl.org/Ticket/Display.html?id=131337
+# Reported in 11.0-CURRENT with g++-4.8.5:
+# If using g++, the Configure scan for dlopen() fails.
+# Easier for now to just to forcibly set it.
case "$cc" in
*g++*)
- usedl='define'
- dlsrc='dl_dlopen.xs'
+ d_dlopen='define'
;;
esac
|
Migrated from rt.perl.org#131337 (status was 'resolved')
Searchable as RT131337$
The text was updated successfully, but these errors were encountered: