Bug #80585 [Com]: Compile error - iconv dose not support errno
Edit report at https://bugs.php.net/bug.php?id=80585&edit=1
ID: 80585
Comment by: omcoei at hi2 dot in
Reported by: tomas at rybarik dot com
Summary: Compile error - iconv dose not support errno
Status: No Feedback
Type: Bug
Package: *Compile Issues
Operating System: OracleLinux 7
PHP Version: 8.0.0
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Above was reproduced with GNU libiconv 1.16.
PHP apparently does not happy with the iconv 2.31 which comes from the package manager.
Previous Comments:
------------------------------------------------------------------------
[2022-02-06 10:30:34] omcoei at hi2 dot in
In PHP 8.1.2 ext iconv on Debian 11:
configure:4776: checking if iconv supports errno
configure:4805: cc -o conftest -I/usr/local/php8/include/php -I/usr/local/php8/include/php/main
-I/usr/local/php8/include/php/TSRM -I/usr/local/php8/include/php/Zend
-I/usr/local/php8/include/php/ext -I/usr/local/php8/include/php/ext/date/lib -I/usr/local/include
-O3 -march=native -Wl,-rpath,/usr/local/lib -L/usr/local/lib -liconv -liconv conftest.c
>&5
/usr/bin/ld: /tmp/ccrQZSHA.o: in function `main':
conftest.c:(.text.startup+0x13): undefined reference to `libiconv_open'
/usr/bin/ld: conftest.c:(.text.startup+0x34): undefined reference to `libiconv_close'
collect2: error: ld returned 1 exit status
configure:4805: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| #define HAVE_LIBICONV 1
| #define ICONV_ALIASED_LIBICONV 1
| #define HAVE_ICONV 1
| #define HAVE_GLIBC_ICONV 1
| #define PHP_ICONV_IMPL "glibc"
| /* end confdefs.h. */
|
| #include <iconv.h>
| #include <errno.h>
|
| int main() {
| iconv_t cd;
| cd = iconv_open( "*blahblah*", "*blahblahblah*" );
| if (cd == (iconv_t)(-1)) {
| if (errno == EINVAL) {
| return 0;
| } else {
| return 1;
| }
| }
| iconv_close( cd );
| return 2;
| }
|
configure:4812: result: no
configure:4814: error: iconv does not support errno
------------------------------------------------------------------------
[2021-11-21 04:22:13] php-bugs at lists dot php dot net
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.
------------------------------------------------------------------------
[2021-11-08 12:40:34] cmb@php.net
It has been a deliberate change to no longer support iconv(3)
implementations which do not set errno as of PHP 8.0.0[1], because
the fallback code was flawed, and such iconv(3) implementations
are not POSIX conformant anyway. Anyhow, this change will not be
reverted.
It is possible, though, that the detection of errno support is
flawed, or that something else with our configure scripts is not
quite right in this regard. However, without further information
(such as the respective part of config.log), we can't do anything
about this.
[1] <https://www.php.net/manual/en/migration80.incompatible.php#migration80.incompatible.iconv>
------------------------------------------------------------------------
[2021-03-09 22:47:48] guillaume-php at outters dot eu
Tomas, could you please tell us what error is logged in the config.log?
As suggested by cmg, this is a problem of detection; but in my case (FreeBSD 10.2, with
"hand"-compiled GNU iconv 1.16 without pkgconfig), the detection program had no problem,
rather it was its compile env that lacked a -liconv.
So this could be circumvented by running an:
export LDFLAGS="$LDFLAGS -liconv"
before the configure.
I _think_ that, like you, I had no problem compiling a PHP 7 in the same environment (so this detect
failure would be a configure regression); but I cannot be certain.
------------------------------------------------------------------------
[2021-01-18 08:49:15] shimozawa dot hiroki at misou dot co dot jp
I am also getting the same error.
Will it be fixed in the next version?
Reproduction procedure.
~~~
# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
# cd /usr/local/src/
# wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz
# tar zxvf ./libiconv-1.16.tar.gz
# cd libiconv-1.16
# ./configure --prefix=/usr
# make & make install
# iconv --version
iconv (GNU libiconv 1.16)
Copyright (C) 2000-2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
...
# cd /usr/local/src/php-8.0.1
# ./configure \
... \
... \
--with-iconv
...
...
checking for iconv support... yes
checking for iconv... yes
checking if iconv is glibc's... yes
checking if iconv supports errno... no
configure: error: iconv does not support errno
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=80585
--
Edit this bug report at https://bugs.php.net/bug.php?id=80585&edit=1
Thread (9 messages)