Building Hiphop-php Gotcha
Tonight I’ve delved into the world of Facebook’s HipHop for PHP. Let me early on point out that I’m not doing so because I believe that I will need it any time soon, but I am convinced that I without a shadow of a doubt will be approached by customers who think they do, and I rather not have opinions or advise against things I haven’t tried myself or at least have a very good understanding of.
Unfortunately I set about this task on an RHEL 5.4 box, and it hasn’t been a walk in the park. Quite a few dependencies were out of date or didn’t exist in the repositories, libicu, boost, onig, tbb etc.
Though, CMake did a good job of telling me what was wrong, so it wasn’t a huge
deal, I just compiled the missing pieces from source and put them in
$CMAKE_PREFIX_PATH
. One thing CMake didn’t pick up on however, was that the
flex version shipped with current RHEL is rather outdated. Once I thought I had
everything configured, I set about the compilation, and my joy was swiftly
abrupted by this:
1 2 3 |
|
Not entirely sure what it was actually doing here, I took the shortcut of
replacing /usr/bin/flex with a shell script which just exited after putting $@
in a file in /tmp/ and re-ran make
. Looking in the resulting file, this is
the argument flex is given:
1 2 3 |
|
To me that looks quite valid, and there’s certainly no single – in that command line.
Long story short, flex introduced –header-file
in a relatively “recent” version
(2.5.33 it seems, but I may be wrong on that one, doesn’t matter). Unlike most
other programs (using getopt), it won’t tell you Invalid option
‘–header-file’
. So after compiling a newer version of flex, I was sailing
again.