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
This commit is contained in:
Jan Tojnar 2021-05-23 00:10:02 +02:00
parent c912d30f65
commit 024243bac4
No known key found for this signature in database
GPG Key ID: 7FAB2A15F7A607A4

View File

@ -322,10 +322,16 @@ lib.makeScope pkgs.newScope (self: with self; {
configureFlags = [ "--with-gmp=${gmp.dev}" ]; }
{ name = "hash"; enable = lib.versionOlder php.version "7.4"; }
{ name = "iconv";
configureFlags = if stdenv.isDarwin then
[ "--with-iconv=${libiconv}" ]
else
[ "--with-iconv" ];
configureFlags = [
"--with-iconv${lib.optionalString stdenv.isDarwin "=${libiconv}"}"
];
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; }
{ name = "imap";
buildInputs = [ uwimap openssl pam pcre' ];