Page MenuHomePhabricator

Prepare packages and production images for ICU 72 upgrade
Closed, ResolvedPublic

Description

High-level draft procedure:

  • Create component/php83-icu72 for bullseye
  • Create a pbuilder hook for using component/php83-icu72
  • Build coinstallable libicu72 / libicu72-dev backport and libxml2, include in component/php83-icu72
  • Include libpcre2 10.42 backport in component/php83-icu72 (see, e.g., pcre2-php83-bullseye update)
  • Build PHP 8.3 packages for inclusion into component/php83-icu72 (using the above hook to install the appropriate ICU, libxml2, and libpcre2), mirroring the existing content of component/php83 [0]
  • Fork the php8.3 production images (e.g., as php8.3-icu72) and configure to use the new component

This gets us to the point where we're able to turn up a temporary shellbox instance for remote collation.

See T345561 for prior art from the ICU 67 upgrade.

[0] Note: This includes applying patches to the mail extension that have been backported from 8.5.

Event Timeline

Raine triaged this task as Medium priority.Mar 4 2026, 9:08 PM
Raine added a project: Essential-Work.
Raine moved this task from Inbox to In Progress on the ServiceOps new board.

Change #1248701 had a related patch set uploaded (by Muehlenhoff; author: Muehlenhoff):

[operations/puppet@production] Create component/php83-icu72

https://gerrit.wikimedia.org/r/1248701

Change #1248701 merged by Muehlenhoff:

[operations/puppet@production] Create component/php83-icu72

https://gerrit.wikimedia.org/r/1248701

Mentioned in SAL (#wikimedia-operations) [2026-03-06T11:53:21Z] <moritzm> uploaded icu 72.1-3+deb12u1~wmf11u1 to component/php83-icu72 T419058 (backport of ICU 72 from Bookworm to Bullseye, built to be co-installable with the native ICU from Bullseye)

Change #1248797 had a related patch set uploaded (by Muehlenhoff; author: Muehlenhoff):

[operations/puppet@production] Add a pbuilder hook to build against the ICU72 backport

https://gerrit.wikimedia.org/r/1248797

Change #1248797 merged by Muehlenhoff:

[operations/puppet@production] Add a pbuilder hook to build against the ICU72 backport

https://gerrit.wikimedia.org/r/1248797

Change #1249522 had a related patch set uploaded (by Scott French; author: Scott French):

[operations/puppet@production] aptrepo: add pcre2 updates for component/php83-icu72

https://gerrit.wikimedia.org/r/1249522

Raine moved this task from Backlog to Radar on the User-Raine board.

Change #1249980 had a related patch set uploaded (by Scott French; author: Scott French):

[operations/docker-images/production-images@master] php8.3-icu72: Clone php8.3 image stack

https://gerrit.wikimedia.org/r/1249980

Change #1249981 had a related patch set uploaded (by Scott French; author: Scott French):

[operations/docker-images/production-images@master] php8.3-icu72: Create new ICU 72 flavored image stack

https://gerrit.wikimedia.org/r/1249981

Mentioned in SAL (#wikimedia-operations) [2026-03-11T13:58:04Z] <moritzm> uploaded libxml2 2.9.10+dfsg-6.7+deb11u9+wmf11u1 to component/php83-icu72 for bullseye-wikimedia (special build of libxml with ICU disabled to ensure co-installabiliy between icu 67 and icu 72) T419058

Change #1249522 merged by Scott French:

[operations/puppet@production] aptrepo: add pcre2 updates for component/php83-icu72

https://gerrit.wikimedia.org/r/1249522

Mentioned in SAL (#wikimedia-operations) [2026-03-11T14:53:26Z] <swfrench-wmf> updated component/php83-icu72 with libpcre2 10.42-1~wmf11+1 from apt-staging - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T01:03:09Z] <swfrench-wmf> reprepro include php8.3_8.3.30-1+icu72+wmf11u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T01:08:28Z] <swfrench-wmf> reprepro include php-defaults_94+icu72+wmf11u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T01:13:49Z] <swfrench-wmf> reprepro include dh-php_5.5+icu72+wmf11u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T01:47:01Z] <swfrench-wmf> reprepro include php-apcu_5.1.24-1+icu72+wmf11u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T01:49:17Z] <swfrench-wmf> reprepro include php-msgpack_3.0.0-1+icu72+wmf11u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T02:03:00Z] <swfrench-wmf> reprepro include php-igbinary_3.2.16-4+icu72+wmf11u1 into component/php83-icu72 - T419058

Alright, all packages have been built. Not all of them have been included yet - only the ones necessary to satisfy inter-package build dependencies.

On Thursday, I'll include what remains and smoke-test the php8.3-icu72 image stack, verifying that the expected packages are installed and DSOs resolved as expected for the modules present.

It works! The new packages support Unicode 15 now:

root@9925ee83f992:/# php -r "var_dump(IntlChar::getUnicodeVersion());"
array(4) {

[0]=>
int(15)
[1]=>
int(0)
[2]=>
int(0)
[3]=>
int(0)

}

One thing we could still fix maybe is the versioning, though. I didn't think about it earlier:
We went from 8.3.30-1+wmf11u2 -> 8.3.30-1+icu72+wmf11u1 (but +icu actually sorts lower than +wmf). It's not an issue for the container deployments, but will mean special handling on deployment-prep.

We could instead move from 8.3.30-1+wmf11u2 -> 8.3.30-1+wmf11u2+icu72u1, that would sort properly. But I'm also not sure to which extent deployment-prep will actually follow the ICU migration, so that might not be an issue?

Change #1251101 had a related patch set uploaded (by Scott French; author: Scott French):

[operations/puppet@production] aptrepo: Temporarily remove php83-icu72 and references

https://gerrit.wikimedia.org/r/1251101

Change #1251101 merged by Scott French:

[operations/puppet@production] aptrepo: Temporarily remove php83-icu72 and references

https://gerrit.wikimedia.org/r/1251101

Change #1251105 had a related patch set uploaded (by Scott French; author: Scott French):

[operations/puppet@production] Revert "aptrepo: Temporarily remove php83-icu72 and references"

https://gerrit.wikimedia.org/r/1251105

Change #1251105 merged by Scott French:

[operations/puppet@production] Revert "aptrepo: Temporarily remove php83-icu72 and references"

https://gerrit.wikimedia.org/r/1251105

Mentioned in SAL (#wikimedia-operations) [2026-03-12T15:19:42Z] <moritzm> reuploadd libxml2 2.9.10+dfsg-6.7+deb11u9+wmf11u1 and 72.1-3+deb12u1~wmf11u1 to component/php83-icu72 for bullseye-wikimedia T419058

Thanks, @MoritzMuehlenhoff!

Recapping discussion out of band:

We decided to switch versioning scheme to append the +icu72u local-suffix, rather than use it as a prefix to the local-suffix (which will prove challenging for upgrading hosts - e.g., the deployment host - to the new packages).

In order to do so, we deleted and re-created the component, and builds are now running again using the less-awkward versioning scheme.

Mentioned in SAL (#wikimedia-operations) [2026-03-12T16:36:16Z] <swfrench-wmf> reprepro include php8.3_8.3.30-1+wmf11u2+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T16:40:58Z] <swfrench-wmf> reprepro include php-defaults_94+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T16:43:43Z] <swfrench-wmf> reprepro include dh-php_5.5+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T16:50:19Z] <swfrench-wmf> reprepro include php-apcu_5.1.24-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T16:58:02Z] <swfrench-wmf> reprepro include php-msgpack_3.0.0-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Scott_French changed the task status from Open to In Progress.Mar 12 2026, 5:12 PM

Mentioned in SAL (#wikimedia-operations) [2026-03-12T18:02:07Z] <swfrench-wmf> reprepro include php-igbinary_3.2.16-4+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:03:28Z] <swfrench-wmf> reprepro include php-excimer_1.2.5-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:03:45Z] <swfrench-wmf> reprepro include php-imagick_3.7.0-13+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:03:59Z] <swfrench-wmf> reprepro include php-luasandbox_4.1.2-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:04:18Z] <swfrench-wmf> reprepro include php-memcached_3.3.0-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:04:30Z] <swfrench-wmf> reprepro include php-pcov_1.0.12-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:04:46Z] <swfrench-wmf> reprepro include php-redis_6.2.0-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:05:04Z] <swfrench-wmf> reprepro include php-uuid_1.3.0-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:05:18Z] <swfrench-wmf> reprepro include php-wmerrors_2.0.0-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:05:31Z] <swfrench-wmf> reprepro include php-xhprof_2.3.10-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:05:42Z] <swfrench-wmf> reprepro include php-yaml_2.2.4-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:05:54Z] <swfrench-wmf> reprepro include wikidiff2_1.14.1-2+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Mentioned in SAL (#wikimedia-operations) [2026-03-12T19:06:07Z] <swfrench-wmf> reprepro include xdebug_3.4.4-1+wmf11u1+icu72u1 into component/php83-icu72 - T419058

Change #1249981 merged by Scott French:

[operations/docker-images/production-images@master] php8.3-icu72: Create new ICU 72 flavored image stack

https://gerrit.wikimedia.org/r/1249981

Change #1249980 abandoned by Scott French:

[operations/docker-images/production-images@master] php8.3-icu72: Clone php8.3 image stack

Reason:

Squashed into I36783434c37b0aa46435a80dee3fad2668bef428

https://gerrit.wikimedia.org/r/1249980

All packages have been rebuilt with the +icu72u local-suffix and included in component/php83-icu72, and the php8.3-icu72 image stack has now been built and published as well.

> docker run --entrypoint /usr/bin/php docker-registry.wikimedia.org/php8.3-icu72-fpm-multiversion-base:8.3.30-1 -i | grep ^ICU
ICU version => 72.1
ICU Data version => 72.1
ICU TZData version => 2022e
ICU Unicode version => 15.0

See also this gerrit comment for other basic verification steps.

I believe that's all that's covered here, and we should be good to proceed with creating the necessary Shellbox image variant based on these images (i.e., mirroring prod83).

@Raine - Let me know if you need a hand or additional set of eyes with any of that.