mercredi 25 juillet 2012

AIX, php-5.4 apache-2.4


Il reste encore quelques pièges dans cette compilation PHP sur AIX;

ceux dans lesquels on est déjà tombés :

Lors de la fabrication du makefile de php, libtool (ou un de ses amis), propose de linker en faisant :

BUILD_CLI = echo '\#! .' > php.sym && echo >>php.sym && nm -BCpg `echo $(PHP_GLO
BAL_OBJS) $(PHP_BINARY_OBJS) $(PHP_CLI_OBJS) | sed 's/\([A-Za-z0-9_]*\)\.lo/.li
bs\/\1.o/g'` | $(AWK) '{ if ((($$2 == "T") || ($$2 == "D") || ($$2 == "B")) && (
substr($$3,1,1) != ".")) { print $$3 } }' | sort -u >> php.sym && $(LIBTOOL) --m
ode=link $(CC) -export-dynamic $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS_P
ROGRAM) $(LDFLAGS) -Wl,-brtl -Wl,-bE:php.sym $(PHP_RPATHS) $(PHP_GLOBAL_OBJS)  $(PHP_CLI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $(SAPI_CLI_PATH)

(pour linux et solaris, ya plus simple)

alors, c'est pas mal, c'est bien, ya juste pour ext/xmlrpc/xmlrpc-epi-php.c que ça pose problème ; 
oui, il manque le traitement des fichiers avec un tiret ... du coup on cherche à linkr avec ext/xmlrpc/xmlrpc-epi/.libs/php.o 

sed -e 's/A-Za-z0-9_-*/A-Za-z0-9_-/' Makefile > Makefile.sedtmp ;
mv Makefile.sedtmp Makefile

et on remarque un autre truc, c'est que dans la deuxieme partie il a oublié $(PHP_BINARY_OBJS)
et on se retrouve avec un undefined de main/internal_functions_cli.lo : php_register_internal_extensions
bon ben il faut rajouter $(PHP_BINARY_OBJS) dans la liste ... bizarre hein, ils sont étourdis chez php ...
(BUILD_CLI et BUILD_CGI)

idem souci déjà vu, on ne peut linker mysql qu'avec sa librairie statique (.a et pas .so)

Nouveau soucis, lua ; lua ne fait pas souvent de releases mais avec sa dernière version il a bien foutu la merde en supprimant des appels basiques.
par exemple pour mod_security il faut faire : 

cat <ext/patch_modsec_src.sh

sed \
 -e '/return lua_load(L, dump_reader,/ s/script->name)/script->name,NULL)/' \
 -e '/lua_objlen/ s/lua_objlen(L, idx)/lua_rawlen(L, (idx))/' \
 -e 's/lua_open(/luaL_newstate(/' \
 -e 's/luaL_register(L, "m", mylib)/luaL_openlib(L, "m", mylib,0)/' \
 apache2/msc_lua.c > msc_lua.c.tmp
mv -f msc_lua.c.tmp apache2/msc_lua.c
EOT
oui, ils ont viré luaL_register et companie de 5.1 en faisant la version 5.2 ; ils ont pas compris le principe de la compatibilité ascendante. du coup dans apache mod_lua ne marche plus. bon il est en 'expérimental' donc tant pis.

httpd: Syntax error on line 116 of /logiciels/php/5.4.4/conf/httpd.conf: 
Cannot load /logiciels/php/5.4.4/modules/mod_lua.so into server: rtld: 0712-001 
Symbol luaL_register was referenced from module /logiciels/php/5.4.4/modules/mod_lua.so(), 
but a runtime definition of the symbol was not found. 



et enfin un bordel lorsqu'il veut charger la librairie iconv ; après quelques essais j'ai laissé tomber

et je compile avec --without-iconv (au lieu de --with-iconv-dir=.....)

Aucun commentaire: