php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #80402 configure filtering out -lpthread
Submitted: 2020-11-23 00:20 UTC Modified: 2020-11-26 10:57 UTC
From: bjornar dot ness at gmail dot com Assigned: nikic (profile)
Status: Closed Package: *Configuration Issues
PHP Version: Irrelevant OS: linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: bjornar dot ness at gmail dot com
New email:
PHP Version: OS:

 

 [2020-11-23 00:20 UTC] bjornar dot ness at gmail dot com
Description:
------------
php's configure script has multiple places where it filters out -lpthread from $LIBS
before ac_fn_c_try_link

This is likely ok for shared, but causes problems with static libs.
One example of this is when building openssl static.

# pkg-config openssl --libs

-L/usr/src/php-build/install/OpenSSL_1_1_1h/lib -lssl -lz -lcrypto -lpthread -ldl

Problem is, when configure tries to check this rule, it filters out some libs from
what it was told by pkg-config:

(looping through $XXXX_LIBS)
case $ac_ii in
c|c_r|pthread*) ;;
*)
 LIBS="$LIBS -l$ac_ii"
;;
esac
(end loop)

ac_fn_c_try_link

ac_fn_c_try_link basically does:

$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5

and in my case then, results in the following libs:

-lssl -lz -lcrypto -ldl

note -lpthread missing, and the test failing.

I have not managed to find a way around this without modifying the configure file, adding -lpthread where it needs to be.

The rest of the actual build is just fine after manually adding -lpthread to just the relevant tests.


Patches

Pull Requests

Pull requests:

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2020-11-23 01:19 UTC] bjornar dot ness at gmail dot com
The only, but ugly, way I have managed to find around this atm is:

LIBS="-lpthread" LDFLAGS="-Wl,--start-group" /path/to/configure
 [2020-11-24 11:06 UTC] nikic@php.net
Which PHP version are you using? (In particular wondering if you have https://github.com/php/php-src/commit/c518932c0326a938f0fd0254f2adb03b1cddfbca, which is in 7.4.)
 [2020-11-24 11:12 UTC] nikic@php.net
Ah no, that one was about -pthread, not -lpthread. I presume lpthread is getting stripped out by _PHP_ADD_LIBRARY_SKELETON. That logic was originally added 20 years ago with: https://github.com/php/php-src/commit/f9e375f493a1aeacbbcc8f2f00880d05b4ba7aaf

I have no idea why it is there.
 [2020-11-24 11:27 UTC] nikic@php.net
The following pull request has been associated:

Patch Name: Don't strip -lpthread
On GitHub:  https://github.com/php/php-src/pull/6450
Patch:      https://github.com/php/php-src/pull/6450.patch
 [2020-11-26 10:56 UTC] nikic@php.net
Automatic comment on behalf of nikita.ppv@gmail.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=ea372e74634f14bdb534f4921e1e325e3f589c8f
Log: Fix bug #80402: Don't strip -lpthread
 [2020-11-26 10:56 UTC] nikic@php.net
-Status: Open +Status: Closed
 [2020-11-26 10:57 UTC] nikic@php.net
-Assigned To: +Assigned To: nikic
 [2020-11-26 10:57 UTC] nikic@php.net
I've dropped the -lpthread stripping for now ... might have to revert is someone reports issues with that change.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Oct 27 16:01:27 2024 UTC