When the app servers were migrated from precise to trusty, the ICU version from precise (48) was built for trusty-wikimedia and HHVM built against it. (trusty and jessie both used ICU 52, so that wasn't necessary for that migration). stretch ships ICU 57 and to untangle the update of the app server base OS from the collation update, I created a co-installable icu52 source package to investigate further. However, it's a lot more complicated in stretch compared to what was done in precise:
The problem is that there's two additional libraries which are used by HHVM which themselves use ICU, i.e. they would also need to be rebuilt against ICU 52: libxml2-dev and libboost-regex-dev. The problem is these two libraries (in particular libxml2) are also used outside of HHVM. If we proceed this upgrade path, I think this would involve:
- create a separate repo section like hhvm
- rebuild src:icu52 in the icu52 hhvm section
- rebuild libxml2 and boost-regex against libicu52-dev and add to hhvm section
- rebuild HHVM in hhvm section against libicu52
This means that on all app servers (and the related roles like deployment servers), we'd use different builds of libxml and boost-regex than on the rest of the production cluster. That's still preferable to using these modified libs fleet-wide (especially since those deviations from the standard Debian package set are temporary).
But there's also a second potential upgrade path:
Build a backport of libicu57 for jessie and perform the collation migration while the app servers are running jessie. In jessie libxml doesn't link against ICU yet (that change was made in 2.9.2+dfsg1-3, so in the jessie->stretch development time frame), which has less inter-dependencies. When the migration to ICU 57 is complete, we could upgrade the app servers to an ICU build which runs the pristine ICU as shipped in stretch.
I'll prepare a test backport of ICU 57 from stretch for jessie and will test an HHVM 3.18 build on jessie against that build (boost-regex might still be an issue, needs to be tested).
I can't really estimate the collation changes between 52 and 57, according to http://site.icu-project.org/download that includes a bump from Unicode 6.3 to 8.0 among other changes.