#35288 [Opn]: make test fails on FreeBSD

2005-12-01 Thread webmaster at negeta dot com
 ID:   35288
 User updated by:  webmaster at negeta dot com
 Reported By:  webmaster at negeta dot com
 Status:   Open
 Bug Type: ICONV related
 Operating System: FreeBSD 5.4
-PHP Version:  5.1.0
+PHP Version:  5.1.1
 New Comment:

I specified the path of iconv explicitly.
I ran './configure --with-iconv=/usr/local',
and HAVE_LIBICONV was defined.
'libiconv' comes before 'iconv' when the path is specified.
But above priority is inverted when the path is not specified.
I was able to avoid this problem by using this difference.

I hope 'libiconv' comes before 'iconv' automatically
on the system that has both functions.
But, I will back out this problem if this difference
was designed for changing priority of them manually.


Previous Comments:


[2005-11-23 13:51:20] webmaster at negeta dot com

FreeBSD base system has no iconv library
which is usable by other executable.
FreeBSD does not contain the glibc,
and libiconv.so is not installed in base system.

I found '/usr/include/sys/iconv.h',
but it is used by some kernel modules.
Conflict will not occur because PHP does not
include sys/iconv.h.

I removed libiconv and ran './configure',
then following error occured:

% tail -15 config.log
configure:19817: gcc -o conftest -g -O2   -R/usr/local/lib
-L/usr/local/lib conftest.c

 -lm  -lxml2 -lz -liconv -lm 15
/usr/bin/ld: cannot find -liconv
configure: failed program was:
#line 19806 configure
#include confdefs.h


char xmlInitParser();
int main() {
  xmlInitParser();
  return 0;
}



[2005-11-23 09:29:38] [EMAIL PROTECTED]

So you didn't read the comment above those checks?
Try removing that libiconv you installed and try again.
And make sure the installation of libiconv did NOT write over the
system iconv.h !!!




[2005-11-21 17:49:34] webmaster at negeta dot com

I ran ./configure

I only installed libiconv-1.9.2 from FreeBSD ports
'converters/libiconv.'

libiconv has C function iconv in 'lib/iconv.c', 
and alias name libiconv is defined in 'include/iconv.h.'
And a program can use iconv as libiconv.

'configure' detects function iconv first.
And it detects libiconv when iconv was not found.
And HAVE_ICONV is defined and HAVE_LIBICONV is not defined.

When 'ext/iconv/iconv.c :line 68' is compiled,
PHP_NAMED_FE(iconv,php_if_iconv, ...
is understood as
PHP_NAMED_FE(libiconv,php_if_iconv, ...
by compiler. Because
#ifdef HAVE_LIBICONV
#undef iconv
#endif
skips undefine iconv.

To solve this, I thought that HAVE_LIBICONV is necessary.
I read acinclude.m4, and found the order of iconv and libiconv.

If 'configure' detect libiconv first,
then it will define HAVE_ICONV and HAVE_LIBICONV.
And if system has only iconv, then it will not define HAVE_LIBICONV.

Maybe Linux system is not influenced by this problem.
Because these system has iconv of glibc, and there is no libiconv.



[2005-11-21 16:06:49] [EMAIL PROTECTED]

What was the configure line used? 
And where exactly is iconv AND libiconv defined in your system? Do you
have 2 different implementations installed under same prefix? If you
do, this is not PHP bug and not possible to solve with that patch.



[2005-11-21 05:35:31] webmaster at negeta dot com

 0. C function iconv is exist, and libiconv is not.
It's not correct and my mistake.
Both functions are available in my system.

Please check libiconv before checking iconv.
Then HAVE_ICONV and HAVE_LIBICONV are defined by configure,
and the problem is not reproduce in my system.

Please commit this patch if it looks like good.
http://www.negeta.com/misc/acinclude.m4.patch



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
http://bugs.php.net/35288

-- 
Edit this bug report at http://bugs.php.net/?id=35288edit=1


#35288 [Opn]: make test fails on FreeBSD

2005-11-20 Thread webmaster at negeta dot com
 ID:   35288
 User updated by:  webmaster at negeta dot com
 Reported By:  webmaster at negeta dot com
 Status:   Open
 Bug Type: ICONV related
 Operating System: FreeBSD 5.4
 PHP Version:  5.1.0RC6
 New Comment:

 0. C function iconv is exist, and libiconv is not.
It's not correct and my mistake.
Both functions are available in my system.

Please check libiconv before checking iconv.
Then HAVE_ICONV and HAVE_LIBICONV are defined by configure,
and the problem is not reproduce in my system.

Please commit this patch if it looks like good.
http://www.negeta.com/misc/acinclude.m4.patch


Previous Comments:


[2005-11-20 11:32:23] webmaster at negeta dot com

Only HAVE_ICONV is exist in my system.

Thank you for your patch, but it is not solve the problem.
This patch is not undef `iconv' when HAVE_LIBICONV is not defined.

As a test, I deleted first #ifdef HAVE_LIBICONV and #endif,
it force undef 'iconv', and problem was not reproduce.
But I can't estimate about side-effect on other system.



[2005-11-19 21:41:37] [EMAIL PROTECTED]

Also, is HAVE_BSD_ICONV defined on your system?



[2005-11-19 21:37:17] [EMAIL PROTECTED]

Try the following patch:
http://bb.prohost.org/patch/iconv.txt



[2005-11-19 17:55:52] webmaster at negeta dot com

I found how this problem occurs on my env.

0. C function iconv is exist, and libiconv is not.
1. configure detects #define HAVE_ICONV 1
  and HAVE_LIBICONV is not defined.
2. #define iconv libiconv in /usr/local/include/iconv.h line 80.
3. #undef iconv is not execute in ext/iconv/iconv.c line 55.
4. `libiconv' links to php_if_iconv in ext/iconv/iconv.c line 68. PHP
function libiconv is created.



[2005-11-19 14:28:02] [EMAIL PROTECTED]

Can't reproduce.
# ./sapi/cli/php -r 'iconv();'

Warning: iconv() expects exactly 3 parameters, 0 given in Command line
code on line 1
# uname -r
5.4-STABLE



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
http://bugs.php.net/35288

-- 
Edit this bug report at http://bugs.php.net/?id=35288edit=1