PHP 8.0 transition plan

Hi devs, For impish the server team will be transitioning PHP to 8.0 over the coming weeks. (LP: #1927264)

Since version 7.0, upstream PHP has adopted a regular release cadence, with one release per year. Each release is supported for 2 years, plus a third year of security critical fixes. PHP 8.0 was available last cycle but since changes from 7.4 to 8.0 were significant, we opted to postpone it to the 21.10 cycle and focused instead on resolving some phpunit 8.5->9.5 transition troubles. Landing PHP 8.0 this cycle will enable it to receive testing in a release prior to 22.04 LTS.

As mentioned, php8.0 itself is already available in Debian and has been set as the default php in experimental since December, and in unstable since Feb 20th, 2021.

Debian provides multiple php releases to users simultaneously, but in Ubuntu we provide a single version. So currently Debian provides php8.0 as the default, as well as php7.x, for users to select between.

During hirsute, php8.0 was auto-sync'd in from debian and we manually removed it since we planned to provide php7.4 alone. Thus, our transition process in impish will begin by reverting this and allowing php8.0 to start syncing in.

The next step will be to sync php-defaults 82 in place of our current php-defaults 76ubuntu1. The Ubuntu delta was already taken by Debian in php-defaults 80, so can be dropped in favor of a sync. This will set php8.0 as the default php version for impish, thus starting the actual transition.

Most or all of the PHP stack will need rebuilt at this point. This is phased due to package dependencies - for the php7.4 transition we started with php-propro, php-apcu, and php-msgpack; followed by php-apcu-bc, php-imagick, and php-igbinary; and then the rest of the stack. I anticipate php8.0's transition will proceed similarly.

Typically during php transitions, packages will fail to build or fail autopkgtests. Deprecated functionality has been a common case and likely will be so for php8.0 as well. There may also be phpunit-related issues in packages that didn't get re-built or re-tested since phpunit 9.5 transitioned.

Phase 0

Phase 1

Phase 2

Phase 3

Phase 4

php7.4 removal request

Filed @ LP: #1927264. php-defaults won't migrate while php7.4 is still in the archive, but I'm not certain if we first need to resolve all the other issues. In any case, we're close and this would be good to touch base with AA about now.

To Review

Some of these are binary packages provided by common source packages. Some may not really need rebuilt.

Phase Last

ServerTeam/Transition/Php8.0 (last edited 2021-06-17 20:44:05 by utkarsh)