Enable 64bit HipHop VM development in OpenEmbedded

Registered by Anmar Oueja

FaceBook HipHop Virtual Machine v8 (64bit) development is part of the Linaro Enterprise Group scope of work. Currently, OpenEmbedded is the main Linaro distribution used for all v8 development. To facilitate HHVM v8 development, list of required packages must be met (https://github.com/facebook/hiphop-php/). This BP captures the work items needed to meet these requirements.

Blueprint information

Fathi Boudra
Anmar Oueja
Series goal:
Milestone target:
milestone icon 13.04
Started by
Marcin Juszkiewicz
Completed by
Fathi Boudra


[leif, 2013-01-28] TBB builds on AArch64, but fails test suite. GDB issue hampering progress.

[anmar, 2013-01-07] google-perftools seems to only need integration into the OE build since Leif already built it for ARM v8. TBB port to v8 seems trivial as well. Marcin created two bugs to capture the issue.

[hrw, 2013-01-08] Leif built it for armhf. Cyrus-sasl2 is needed for SASL2 support in libmemcached (if we need this at that step cause it builds without it as well).

[asac 2013-01-08] work items are not complete; this should capture all work needed to get all build requirements into the OE image and also include the work items needed so our hiphopvm efforts can start porting/developing. On top acceptance and headline as well as roadmap ID are missing.

[hrw 2013-01-08] building libmcrypt has some libtool problem - asked on OE ML.

[hrw 2013-01-11] tbb and gperftools marked as BLOCKED due to linked bugs. Added google-glog to list of dependencies and built. All new recipes are in meta-aarch64 layer in recipes-extra subdirectories.

[hrw 2013-01-15] First attempts to build hiphopvm. Found few new dependencies - one of them is libunwind which lacks AArch64 support. Bug reported and linked.

[hrw 2013-01-17] both elfutils and libdwarf provide dwarf.h include. Due to that I have problem with adding hhvm build dependencies into image. Will solve it somehow.

[hrw 2013-01-22] As Owen does not have experience with OpenEmbedded I will create cross toolchain environment (OE based) for him with all HHVM dependencies inside. So just install, grab hiphopvm sources and get to porting.

[hrw 2013-01-24] Built HHVM meta toolchain. It works but cmake has problems finding OpenSSL and libcap. http://people.linaro.org/~hrw/oe/hhvm/ - will write doc today/tomorrow.

[hrw 2013-01-31] Moved all not done work items to 13.02, marked already finished ones as done. Linaro-image-sdk has now all HHVM build dependencies and we have meta-toolchain-hhvm which provides cross compiler with all of them as well - Owen is using it for his porting work.

[hrw 2013-02-05] As Anmar asked me that on IRC I decided to add it here. Libdwarf conflict is due to a way how OE chains dependencies: libdwarf-dev req libelf-dev (from elfutils) which depends on elfutils-dev which depends on libdw-dev which conflicts with libdwarf-dev. Under Debian/Ubuntu there is no elfutils-dev so no such problem.

[hrw 2013-02-20] New SDK on http://people.linaro.org/~hrw/oe/hhvm/ - tbb without Leif's patch so slow-as-hell but working fallback will be used.

[hrw 2013-02-22] cleaned WIs, mark 'build hhvm' as Owen's.

[hrw 2013-03-14] sorted out dwarf.h conflict with BAD_RRECOMMENDS use. Need to provide updated SDK. Also need to merge elfutils change into OE (sent to ML).

[fboudra, 2013-03-29] Bump to 13.04 and lower the priority from Essential to Medium. AFAIU, current OE build allows Owen to work on HHVM. Remaining work is mostly maintenance. Does it makes sense to keep this blueprint open instead of marking it implemented as the goal is reached
: 64bit HipHop VM development is enabled? Opinions?

[hrw 2013-04-09] http://people.linaro.org/~hrw/oe/hhvm/ got new SDK build. libdwarf includes are in /usr/include/libdwarf/ directory like it is done in Fedora.

[hrw 2013-04-11] As this BP was about enabling development of HHVM we think it is done. Merging of components used for it was moved to https://blueprints.launchpad.net/linaro-oe/+spec/merge-armv8-support BP instead.


Headline: Provide HHVM requirements in the OpenEmbedded build for porting and optimization purposes
Acceptance: dwarfutils, libmcrypt, cyrus-sasl2, libmemcached, memcached, onig, google-perftools,tbb built and integrated into OE build
Roadmap id: CARD-327


Work Items

Work items for 13.01:
identify all requirements: DONE
build dwarfutils: DONE
build libmcrypt: DONE
build libmemcached: DONE
build memcached: DONE
build onig: DONE
build google-glog: DONE
build libevent 1.4.14b with Facebook patch: DONE
mark libdwarf as optional (JIT requirement): DONE
mark libunwind as optional (JIT requirement): DONE
mark google-perftools as optional: DONE
build tbb: DONE
create image with all hhvm requirements and SDK: DONE
create meta-toolchain-hhvm: DONE

Work items for 13.02:
merge onig into OE: DONE
find a solution to solve conflict between libdw/libdwarf sharing dwarf.h: DONE
resurrect cyrus-sasl2: DONE
merge cyrus-sasl2 into OE: DONE
remove (broken) aarch64 patch from tbb to use slow fallback: DONE
provide sdk with unpatched tbb: DONE
polish all recipes (add descriptions, homepage etc): DONE

Work items for 13.03:
update HHVM SDK to give dwarf.h in proper place: DONE
merge onig fix into OE: DONE

Work items for 13.04:
merge libmemcached related endianess settings into OE: DONE
merge libmcrypt into OE: DONE
merge tbb into OE: DONE
merge libunwind into OE: DONE
merge gperftools into OE: DONE
build libunwind: POSTPONED
build gperftools: POSTPONED

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.