Affichage des articles dont le libellé est mac OS X. Afficher tous les articles
Affichage des articles dont le libellé est mac OS X. Afficher tous les articles

mardi 30 novembre 2010

compiling php extension under Mac OS X 10.5

Today, I installed the amazing Xdebug PHP extension and had some troubles making it running under my Apache2 installation. This short blog post is intended to keep track of the issue and might help other people encountering a similar issue.


Firstly, the symptoms : xdebug loads correctly under CLI (ie PHP launched from shell) since it shows the "with Xdebug v2.1.0". Under apache2, it reports a cryptic error:
Failed loading /usr/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so:  (null)
On for a debugging session!

Firsty, my computer run Mac OS X 10.5.8 updated as of 11/30/2010 and I rely on Apple tools to develop PHP scripts. This mean:
  • PHP 5.2.14 (built: Oct  6 2010 16:57:10) 
  • Apache 2.2.14
  • phpize --version reports:
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
I compiled Xdebug using the usual steps:
  • wget
  • tar -xvzf
  • cd xdebug2.1
  • /usr/bin/phpize
  • ./configure && make
  • sudo cp ./modules/xdebug.so ...
  • sudo apachectl restart

After some googling, I found the solution in a blog post by Patrick Gibson. Here is the lame copy pasting :

MACOSX_DEPLOYMENT_TARGET=10.5 \
CFLAGS='-arch i386 -arch x86_64 -arch ppc7400 -arch ppc64' \
LDFLAGS='-arch i386 -arch x86_64 -arch ppc7400 -arch ppc64' \
CXXFLAGS='-arch i386 -arch x86_64 -arch ppc7400 -arch ppc64' \
./configure --enable-xdebug
The above environment variables are used to instruct configure and make that a multiple architecture library should be build. I then did the usual make, copy and Apache restart. Et Voilà! Problem fixed.

I am not sure what is the real cause of the issue, probably related to the Apache2 libphp5.so.

Last step was to report the issue:

I have contacted Xdebug author Derick on irc, since this issue can probably get handle by tweaking the configure script. After a quick bug report, it is an issue with Mac OS X phpize which does not include the MACOSX_DEPLOYMEN_TARGET environment variable nor the CFLAGS, LDFLAGSn CXXFLAGS needed to build a multi architecture library. Basically not an issue with Xdebug itself.

Hence this blog post to make sure I remember the above compilation FLAGS.


vendredi 16 avril 2010

... des commandes MacPorts les plus utiles

Le projet MacPorts est un projet de la communauté open-source pour compiler, installer et mettre à jour facilement un large panel de logiciels open source. On peut le rapprocher d'un dépot Debian pour Mac OS X. Ce billet présente les commandes les plus utiles ce qui me servira de référence dans le futur.

-d : option permettant un affichage plus verbeux.
  • port selfupdate : mise à jour du dépot
  • port list outdated : liste ensuite les paquets à mettre à jour
  • port upgrade outdated : mise à jour de ces paquets
Par défaut, lorsqu'on met à jour un paquet, port ne le supprime pas mais le marque inactif. Le pseudo paquet "inactive" permet de s'en occuper :
  • port list inactive : liste ces paquets inactifs
  • port uninstall inactive : désinstalle les paquets inactifs
Pour éviter cette manipulation, on peut mettre à jour un paquet avec le switch -u afin d'éliminer les anciennes versions :
  • port -u upgrade
Et bien sur port search pour voir ce que l'on peut ensuite installer avec port install .

Enfin, mac port ne supprime pas les anciennes versions : il se contente de les désactiver. De même, la compilation des paquets laisse des traces. On veillera donc à faire régulièrement le ménage :
  • port clean --all installed
  • port uninstall inactive
Simple non ? :)


Sinon, il existe des GUI permettant de tout gérer à la souris : Porticus et Pallet.