php74.extensions.iconv: fix error signalling
The configure script checks whether iconv supports errno. Unfortunately, on PHP < 8, the test program includes $PHP_ICONV_H_PATH, which defaults to FHS path so it fails to build:
conftest.c:13:10: fatal error: /usr/include/iconv.h: No such file or directory
13 | #include </usr/include/iconv.h>
| ^~~~~~~~~~~~~~~~~~~~~~
That causes the feature check to report a false negative, leading PHP to use a degraded code that returns PHP_ICONV_ERR_UNKNOWN when error occurs, breaking granular error handling in applications.
To prevent this, let’s just include <iconv.h>.
PHP 8 just uses include path so the detection works there: 7bd1d70341
(cherry picked from commit 024243bac4612c62ef5be676818ed2465edae27f)
This commit is contained in:
parent
075ab49dc2
commit
b39ac7cf2b
@ -322,10 +322,16 @@ lib.makeScope pkgs.newScope (self: with self; {
|
|||||||
configureFlags = [ "--with-gmp=${gmp.dev}" ]; }
|
configureFlags = [ "--with-gmp=${gmp.dev}" ]; }
|
||||||
{ name = "hash"; enable = lib.versionOlder php.version "7.4"; }
|
{ name = "hash"; enable = lib.versionOlder php.version "7.4"; }
|
||||||
{ name = "iconv";
|
{ name = "iconv";
|
||||||
configureFlags = if stdenv.isDarwin then
|
configureFlags = [
|
||||||
[ "--with-iconv=${libiconv}" ]
|
"--with-iconv${lib.optionalString stdenv.isDarwin "=${libiconv}"}"
|
||||||
else
|
];
|
||||||
[ "--with-iconv" ];
|
patches = lib.optionals (lib.versionOlder php.version "8.0") [
|
||||||
|
# Header path defaults to FHS location, preventing the configure script from detecting errno support.
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/fossar/nix-phps/raw/263861a8c9bdafd7abe44db6db4ef0179643680c/pkgs/iconv-header-path.patch";
|
||||||
|
sha256 = "7GHnEUu+hcsQ4h3itDwk6p46ZKfib9JZ2XpWlXrdn6E=";
|
||||||
|
})
|
||||||
|
];
|
||||||
doCheck = false; }
|
doCheck = false; }
|
||||||
{ name = "imap";
|
{ name = "imap";
|
||||||
buildInputs = [ uwimap openssl pam pcre' ];
|
buildInputs = [ uwimap openssl pam pcre' ];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user