Last modified: 2014-09-29 14:39:40 UTC

Wikimedia Bugzilla is closed!

Wikimedia migrated from Bugzilla to Phabricator. Bug reports are handled in Wikimedia Phabricator.
This static website is read-only and for historical purposes. It is not possible to log in and except for displaying bug reports and their history, links might be broken. See T65120, the corresponding Phabricator task for complete and up-to-date bug report information.
Bug 63120 - Set up automatic builds for extensions ported to HHVM
Set up automatic builds for extensions ported to HHVM
Status: RESOLVED FIXED
Product: Wikimedia
Classification: Unclassified
Continuous integration (Other open bugs)
unspecified
All All
: High enhancement (vote)
: ---
Assigned To: Antoine "hashar" Musso (WMF)
: hhvm
Depends on: 68256 68944
Blocks: 63138
  Show dependency treegraph
 
Reported: 2014-03-26 17:48 UTC by Ori Livneh
Modified: 2014-09-29 14:39 UTC (History)
11 users (show)

See Also:
Web browser: ---
Mobile Platform: ---
Assignee Huggle Beta Tester: ---


Attachments

Description Ori Livneh 2014-03-26 17:48:49 UTC
<http://hhvm-build.wmflabs.org/> is great. In addition to building HHVM, it should also build extensions ported to HHVM. There are instructions for building extension DSOs here: <https://github.com/facebook/hhvm/wiki/Extension-API#dynamically-loadable-objects>.
Comment 1 Antoine "hashar" Musso (WMF) 2014-03-31 09:25:58 UTC
Moving under continuous integration
Comment 2 Antoine "hashar" Musso (WMF) 2014-05-06 15:58:31 UTC
I don't mind helping with the Jenkins integration.  May I get:

- the git repo used for hhvm
- the git repos of each extensions
- how to build each extensions (hopefully they all use the exact same sequence)

From there we can get an integration job that will build hhvm and attempt to build each extensions whenever a change appear in hhvm or one of the ext.
Comment 3 Ori Livneh 2014-07-18 00:28:22 UTC
The integration job will need to run on a Trusty-based host.

To build:

- apt-get install apt-get install autoconf automake binutils-dev build-essential cmake g++ git \
  libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \
  libboost-system-dev libboost-thread-dev libbz2-dev libc-client-dev libldap2-dev \
  libc-client2007e-dev libcap-dev libcurl4-openssl-dev libdwarf-dev libelf-dev \
  libexpat-dev libgd2-xpm-dev libgoogle-glog-dev libgoogle-perftools-dev libicu-dev \
  libjemalloc-dev libmcrypt-dev libmemcached-dev libmysqlclient-dev libncurses-dev \
  libonig-dev libpcre3-dev libreadline-dev libtbb-dev libtool libxml2-dev zlib1g-dev \
  libevent-dev libmagickwand-dev libinotifytools0-dev libiconv-hook-dev libedit-dev \
  libiberty-dev libxslt1-dev ocaml-native-compilers \
  php5-imagick libyaml-dev hhvm hhvm-dev liblua5.1-dev
- cd path_to_extension_checkout
- hphpize
- cmake .
- make

The three extensions that we should do this for are:

* LuaSandbox: https://gerrit.wikimedia.org/r/p/mediawiki/php/luasandbox.git (also requires liblua5.1-dev)
* Wikidiff2: https://gerrit.wikimedia.org/r/p/mediawiki/php/wikidiff2.git
* FastStringSearch: https://gerrit.wikimedia.org/r/p/mediawiki/php/FastStringSearch.git
Comment 4 Antoine "hashar" Musso (WMF) 2014-07-21 13:26:20 UTC
Blocked by Bug 68256 - Jenkins: Set up integration slaves with Ubuntu Trusty
Comment 5 Antoine "hashar" Musso (WMF) 2014-07-21 18:06:27 UTC
Ori, can you craft a puppet class that provides all the packages?

You can add them to modules/contint/manifests/packages.pp , the class is included on all Jenkins slaves.

Regarding compilation, how do you get hhvm installed? Is that as simple as installing the hhvm debian package?   Can be added to modules/contint/manifests/package.pp as well though it will need a harness for Trusty.


The sequence is quite easy to reproduce in Jenkins Job Builder. We would need a new job template like '{name}-hhvm-build'.

I am wondering whether there are any tests suite included to ensure the result is usable.  I guess we would want to run MediaWiki core test suite under HHVM with the extensions.
Comment 6 Antoine "hashar" Musso (WMF) 2014-07-23 16:40:42 UTC
Also apt.wikimedia.org is missing the hhvm-dev which I believe provide hphpize.

Should be added to modules/contint/manifests/packages.pp as well.
Comment 7 Antoine "hashar" Musso (WMF) 2014-07-23 16:45:05 UTC
(In reply to Antoine "hashar" Musso from comment #6)
> Also apt.wikimedia.org is missing the hhvm-dev which I believe provide
> hphpize.
> 
> Should be added to modules/contint/manifests/packages.pp as well.

The Jenkins slaves in labs are currently running Ubuntu Precise. That is why the packages are not available.
Comment 8 Gerrit Notification Bot 2014-07-31 13:46:28 UTC
Change 150813 had a related patch set uploaded by Hashar:
hhvm: create module + list all dev dependencies

https://gerrit.wikimedia.org/r/150813
Comment 9 Gerrit Notification Bot 2014-07-31 14:18:05 UTC
Change 150820 had a related patch set uploaded by Hashar:
Build PHP extension with HHVM

https://gerrit.wikimedia.org/r/150820
Comment 10 Gerrit Notification Bot 2014-07-31 14:23:40 UTC
Change 150822 had a related patch set uploaded by Hashar:
Build PHP extension with HHVM (non voting)

https://gerrit.wikimedia.org/r/150822
Comment 11 Gerrit Notification Bot 2014-07-31 14:24:33 UTC
Change 150822 merged by jenkins-bot:
Build PHP extension with HHVM (non voting)

https://gerrit.wikimedia.org/r/150822
Comment 12 Antoine "hashar" Musso (WMF) 2014-07-31 14:29:44 UTC
A first build: https://integration.wikimedia.org/ci/job/php-FastStringSearch-hhvm-build/1/console

00:00:05.874 cc1plus: error: /root/hhvm/joe/hhvm: Permission denied

:-D
Comment 13 Antoine "hashar" Musso (WMF) 2014-07-31 19:23:17 UTC
Ori quoted a discussion from Giuseppe:

> hphpize adds to the list of paths it configures the $PWD at the time of building
> so when people try to use hphpize from the package I built, cmake complains it
> cannot find /root/joe/hhvm

Sounds like an upstream issue.
Comment 14 Antoine "hashar" Musso (WMF) 2014-07-31 19:35:58 UTC
Forked the issue to Bug 68944 - hphpize inject $PWD used at time of building to HHVM_INCLUDE_DIRS
Comment 15 Gerrit Notification Bot 2014-08-01 08:20:53 UTC
Change 150820 merged by jenkins-bot:
Build PHP extension with HHVM

https://gerrit.wikimedia.org/r/150820
Comment 16 Gerrit Notification Bot 2014-08-01 08:22:58 UTC
Change 151034 had a related patch set uploaded by Hashar:
Make hhvm-build jobs voting

https://gerrit.wikimedia.org/r/151034
Comment 17 Gerrit Notification Bot 2014-08-01 08:24:03 UTC
Change 151034 merged by jenkins-bot:
Make hhvm-build jobs voting

https://gerrit.wikimedia.org/r/151034
Comment 18 Antoine "hashar" Musso (WMF) 2014-08-19 14:24:21 UTC
The patches above create the Jenkins jobs + Zuul configuration.  They are running and voting.

Of the two blockers:

Bug 68944 - hphpize inject $PWD used at time of building to HHVM_INCLUDE_DIRS

> worked around using sed


Bug 68256 - Jenkins: Set up integration slaves with Ubuntu Trusty 

> it is not complete yet, but in a state that has hhvm and hhvm-dev deployed
Comment 19 Daniel Zahn 2014-09-10 01:46:48 UTC
how come this is resolved but there is still this unmerged?

https://gerrit.wikimedia.org/r/#/c/150813/4

is it unneeded or maybe the bug not really resolved yet?
Comment 20 Andre Klapper 2014-09-22 10:55:25 UTC
Hashar? ^
Comment 21 Antoine "hashar" Musso (WMF) 2014-09-22 12:27:33 UTC
Change https://gerrit.wikimedia.org/r/#/c/150813/4 installs HHVM development packages which are needed to compile extensions.

One of the first patchset has been installed on the contint puppetmaster in labs which thus provided the package and solve this bug.


The change is pending review, I have amended on Giuseppe suggestion to automatically determine the list of package to install instead of having to manually maintain a list of them in a puppet manifest (which is what is currently deployed).

I have marked the bug fixed to avoid cluttering my bug lists since the issue is effectively fixed.
Comment 22 Gerrit Notification Bot 2014-09-29 13:58:03 UTC
Change 150813 merged by Giuseppe Lavagetto:
hhvm: create module + list all dev dependencies

https://gerrit.wikimedia.org/r/150813
Comment 23 Antoine "hashar" Musso (WMF) 2014-09-29 14:39:40 UTC
The hhvm build deps have some conflict/cycle with libjpeg62 and libjpeg8 which do not play well together. Filled as https://bugzilla.wikimedia.org/show_bug.cgi?id=71413

Note You need to log in before you can comment on or make changes to this bug.


Navigation
Links