ID: 14048
Updated by: sniper
Reported By: [EMAIL PROTECTED]
Old Status: Open
Status: Feedback
Bug Type: Unknown/Other Function
Operating System: BSD/OS 4.x
PHP Version: 4.0.6
New Comment:

Please list shortly what does not work in latest snapshot.

--Jani


Previous Comments:
------------------------------------------------------------------------

[2001-11-13 23:28:43] [EMAIL PROTECTED]

Hi,

for a number of releases I've dealt with some known issues, but felt it's time to 
summarize them here, since I think I've pretty much got them all, including the fixes.

1) Native make + gnu make
For some reason, php is the only package, that manages to override the variable 
MAKE=/path/to/make as well as the make in the PATH setting. If you keep the native 
make (which is sensible, for it's best used for creating a new kernel), but you have 
your own make compiled in your own dirs, then make doesn't work. The reason is, the 
old include format. I use this perlscript 'makefix.pl' to fix the issues:
#!/perl/bin/perl

use Getopt::Long;

my $dir=$ENV{'HOME'}.'/_src/php-4.0.4pl1';

GetOptions(
        'dir=s'         =>      \$dir);


chdir($dir) || die "Can't change to $dir\n$!\n";

open(FILE, './makefix.lst') || die "Please create the list first, with:\nfind -x . 
-exec grep -l -E '\\.include \\\"' {} \\; >./makefix.lst";
@files = <FILE>;
close(FILE);

for $i (0..$#files) {
        $fix = $files[$i];
        next if $fix =~ /\.bak$/;
        chomp($fix);
        $bak = $fix . '.bak';
        system("cp $fix $bak");
        print STDOUT "Trying $bak and $fix....";
        open(BAK, $bak) || die "cant open $bak\n$!\n";
        open(FIX, ">$fix") || die "cant open $fix\n$!\n";
        while(<BAK>) {
                chomp;
                s/^\.include \"([^\"]+)\"\s?$/include $1/;
                print FIX $_;
                print FIX "\n";
        }
        close(BAK);
        close(FIX);
        print STDOUT "fixed.\n";
}
exit(0);

It can probably be done more easily, but it works.

2) INET_* functions
Are native for BSDi and don't need a library. Secondly, they complain without the 
right headers. Here's a snippet from the Bind configure script, on how to _correctly_ 
test for these functions:
------------------------------------------------------------
echo $ac_n "checking for inet_aton""... $ac_c" 1>&6
echo "configure:3901: checking for inet_aton" >&5
cat > conftest.$ac_ext <<EOF
#line 3903 "configure"
#include "confdefs.h"

#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main() {
struct in_addr in; inet_aton(0, &in); return (0);
; return 0; }
EOF
------------------------------------------------------------

The native bind on BSDi does have __inet_aton in libbind, but it's static, so PHP 
complains and you need to edit config.h and Zend/Makefile to get rid of it.

Secondly - bind 9.x requires not only libbind but libisc as well, so any tests for 
-lbind will always fail, if you've upgraded your named package.

3) res_search
Is also native on BSDi. I don't have a definite fix, since I'm no C-programmer, but I 
just add these lines to the end of main/php_config.h.in to work around it:

#ifdef __bsdi__
        #define HAVE_RES_SEARCH 1
#endif

man 3 res_search says:
DEPRECATED
     #include <sys/types.h>
     #include <netinet/in.h>
     #include <arpa/nameser.h>
     #include <resolv.h>
...
     res_search(const char *dname, int class, type, u_char *answer, int anslen);

4) Iconv and XSLT
Below is a typical diff for any section in configure trying to find iconv for the XSLT 
section:
------------------------------------------------------------
    found_iconv=no
!   echo $ac_n "checking for iconv_open in -lc""... $ac_c" 1>&6
! echo "configure:48789: checking for iconv_open in -lc" >&5
  ac_lib_var=`echo c'_'iconv_open | sed 'y%./+-%__p_%'`
  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_save_LIBS="$LIBS"
! LIBS="-lc  $LIBS"
  cat > conftest.$ac_ext <<EOF
  #line 48797 "configure"
  #include "confdefs.h"
--- 48784,48797 ----


    found_iconv=no
!   echo $ac_n "checking for iconv_open in -liconv""... $ac_c" 1>&6
! echo "configure:48789: checking for iconv_open in -liconv" >&5
  ac_lib_var=`echo c'_'iconv_open | sed 'y%./+-%__p_%'`
  if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
    echo $ac_n "(cached) $ac_c" 1>&6
  else
    ac_save_LIBS="$LIBS"
! LIBS="-liconv  $LIBS"
  cat > conftest.$ac_ext <<EOF
  #line 48797 "configure"
  #include "confdefs.h"
------------------------------------------------------------
It will do this correctly for --with-iconv, but later on when iconv is specified with 
xslt, it breaks. There are several sections in the configure script and I usually fix 
them all just to spare me the havoc of find out which is called and why.

I hope you can address these issues before 4.0.7 release.

As a side note:
The latest snapshots work correctly with make as always, but then the release versions 
don't.

------------------------------------------------------------------------



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


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to