Php8.0
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
- √php8.0 in archive
- √php-defaults to 8.0
√php8.0 in main
Phase 1
- √php-pear
- √php-propro
- √php-msgpack
- php-apcu: built; in -proposed
transition blocked by 2 rdeps: php-doctrine-cache and symfony
- Might need to retrigger once symfony is in
Phase 2
- √php-apcu-bc: This can be dropped, nothing depends on it any longer.
'bc' stands for backwards-compatibility (for php5) and I've seen comments indicating an intent to stop providing that going forward. I haven't found a canonical link, but for example see https://lists.archlinux.org/pipermail/arch-dev-public/2021-January/030259.html
- Still pulled in for symfony 4... Presumably with symfony 5 this won't be needed.
- The php-doctrine-cache dependency can probably likewise go away but needs investigation.
- After that, file a bug report requesting removal, and contact an archive admin to process it.
- √php-igbinary
- √php-memcache: built; in -proposed
- Issues resolved. Should now migrate...
- √Migrated
Phase 3
- php-memcached: built; in -proposed
Blocked by php-doctrine-cache and symfony
- Might need to retrigger once symfony is in
- √php-redis
- php-amqp: built; in -proposed
Blocked by php-monolog and symfony
- Might need to retrigger once symfony is in
- php-guzzlehttp-promises: built; in -proposed
- Blocked by symfony
- Might need to retrigger once symfony is in
- √php-mockery
- √php-net-url2
- √php-raphf
Phase 4
- symfony: FTBFS
√Failures in ServerDumperTest::testDump and ConnectionTest::testDump tests
- √Version 4 isn't going to work with php8, we need version 5.
- √Sync'd in version 5
- √FTBFS due to missing build dep's php-twig-cssinliner-extra, php-twig-inky-extra, and php-twig-markdown-extra
- √I've disabled php-twig's testsuite so that we can skip its dependence on php-symfony-string. That should permit php-twig to build and enter -proposed; we then can rebuild symfony and get it in -proposed. After that succeeds we can restore php-twig's testsuite. See LP: #1929880.
- √Apparently there's another circular build dependency via indirect inclusion of symfony pieces
- √There are some data type issues affecting tests on arm platforms. Easiest solution probably just to do force-reset-test. LP: #1931893
- Need to verify it migrates now
- √php-doctrine-cache
- √php-cache-lite
- php-monolog:
- √4 test failures
- √"migrating php-monolog/2.2.0-1/amd64 to testing makes movim/0.17.1-1.1/amd64 uninstallable"
√apt-cache rdepends php-monolog shows movim is an rdepend, but the movim package's d/control makes no mention of php-monolog so not sure what's pulling that in except maybe php-symfony-console or composer?
- Might need to retrigger once symfony is in
- √php-lua
- php-phpdocumentor-reflection-docblock: built; in -proposed
- Blocked by symfony
- Might need to retrigger once symfony is in
- php-psr-log: built; in -proposed
- Blocked by symfony and php-monolog
- Might need to retrigger once symfony is in
- √phpmd
- √phpunit-comparator
- √php-ast
- √php-db
- √php-ds
- √php-excimer
- √php-facedetect
- √php-gearman
- √php-geoip
- √php-geos
- √php-gmagick
- √php-gnupg
- √php-league-commonmark
√php-luasandbox: FTBFS
- Various errors relating to TSRMLS_CC
- √Syn'd 4.0.1-1 from experimental. php8 supported was added in v4.
- √php-mailparse
- √php-mongodb
- √php-oauth
- √php-pcov: built; in -proposed
- Broken by php-codecoverage, which is still built for php7.4
- If anything requires phpunit-php-code-coverage, will need to pull a newer php-pcov
- √php-pinba
- √php-ps
- √php-psr
- √php-radius
- √php-rrd
- √php-sabredav
- √php-solr
- √php-ssh2
- √php-stomp
- √php-text-password
- √php-uploadprogress
- √php-uuid
- √php-wmerrors
- √php-yac
- √php-yaml
- √php-zmq
- √php-http-request2: FTFBS
- √Error: Call to undefined function get_magic_quotes_runtime()
- √php8 removes get_magic_* functions
- √Look if there is existing fix upstream or in debian for php8 compatibility
Yes, this is fixed in the 2.4.0 release, https://pear.php.net/package/HTTP_Request2/download/
- Debian doesn't appear to have a git repository for this package, and does not have 2.4.x available
- We may need to go ahead of Debian here
- √Fixed with patch from upstream as 2.3.0-1ubuntu6
- √owfs - needed swig updated, then nochange rebuild
- √pdepend
- √pear-channels
- √rss-bridge
- √uwsgi
- √uwsgi-plugin-php
- √libvirt-php
- √mapserver
- √sassphp
- √libguestfs
- √remctl
- √tideways
- √wikidiff2
- √xdebug
- √zeroc-ice: uploaded
- √php-pecl-http
- √php-crypt-gpg
- √php-amqplib
- √php-console-commandline
- √php-console-table
- √phpmyadmin-motranslator
- √php-http-request2
- √php-sabre-vobject
- √Hinted for force-reset-test (LP: #1931897)
- √Retriggered
- √Migrated
- √php-db: FTBFS
- √Deprecated upstream, but a couple packages still use it.
- √Hinted for force-reset-test (LP: #1932078)
- √Migrated
- √php-nesbot-carbon: FTBFS
- This can just be dropped
- LP: #1931914
- √Removed
- √shaarli
- Remove shaarli, php-oscarotero-gettext, and php-slim. These relate to the laravel/php-illuminate ecosystem
- LP: #1931913
- √Removed
- √php-slim
- Asked for removal; LP: #1931913.
- √Removed
- √php-pimple
Needs modified to work with php-psr-container >= 2
- Asked for removal; LP: #1931913.
- √Removed
- php-cache-integration-tests
- This has no autopkgtests so can't retrigger it, but it looks like it is breaking against symfony 4
- I did a nochange rebuild (0.17.0-1ubuntu2); if that doesn't work maybe retrigger once symfony finishes migration?
- √php-symfony-security-acl
- Class names are wrong, they've evidently changed. Worth looking upstream for fixes.
- Worst case, just disable the failing tests
Fixed tests & uploaded.
- php-fxsl
- Element 'phpunit', attribute 'strict': The attribute 'strict' is not allowed.
- PHP 8 changes how 'strict' is used, so this is probably another of those problems.
- Look in debian/upstream for fix first, else patch ourselves.
- √php-imagick
- 10 tests fail because s/Function/Method/ in assertion results.
- I *think* we can just patch the tests to change the expected test.
- uploaded a fix.
- php-mail
- Failures at first look don't sound like php8 compatibility issues, maybe regression?
- Hopefully there's a patch upstream, but worst case probably fine to disable test(s)
- √php-text-captcha/1.0.2-8
- php-zend-stdlib/3.3.1-3
- phpseclib/1.0.19-3
- Failed checking for identical strings
- Looks like the formatting simply changed, maybe not a valid fail.
- php-httpful: ppc64el
Httpful\Test\HttpfulTest::testHasProxyWithoutProxy - Failed asserting that true is false.
- Tried simple retrigger already, no go
- Look upstream for a patch
- Otherwise, maybe should be hinted force-reset-test on this arch?
- php-league-html-to-markdown: s390x
League\HTMLToMarkdown\Test\BinTest::testStdin - Failed asserting that 1 matches expected 0.
- Tried simple retrigger already, no go
- Look upstream for a patch
- Otherwise, maybe should be hinted force-reset-test on this arch?
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.
- kopano-webapp: rejected upload
- kopanocore: Usually only needs rebuilt for mysql changes
- php-cassandra - doesn't appear to be in archive since focal
- php-doctrine-cache-bundle - was dropped previously, since deprecated upstream
- php-smbclient - dropped from distro after bionic
- php-nrk-predis: Don't think this needs a rebuild...
- php-cache-integration-tests: Don't think this needs a rebuild...
- doctrine: Don't think this needs a rebuild...
- php-doctrine-bundle: Don't think this needs a rebuild...
- php-doctrine-data-fixtures: Don't think this needs a rebuild...
- php-email-validator: Don't think this needs a rebuild...
- php-friendsofphp-proxy-manager-lts: Don't think this needs a rebuild; purely virtual
- php-http-httplug: Don't think this needs a rebuild...
- php-masterminds-html5: Don't think this needs a rebuild...
- php-nyholm-psr7: Don't think this needs a rebuild...
- php-phpdocumentor-type-resolver: Don't think this needs a rebuild...
- php-hamcrest: Doesn't usually need to be rebuilt
- php-psr-container: Doesn't usually need to be rebuilt
- php-psr-http-client: Doesn't usually need to be rebuilt
- php-psr-link: Doesn't usually need to be rebuilt
- php-psr-simple-cache: Doesn't usually need to be rebuilt
- php-symfony-contracts: Doesn't usually need to be rebuilt
- php-symfony-polyfill: Doesn't usually need to be rebuilt
- php-symfony-security-acl: Doesn't usually need to be rebuilt
- php-twig: Doesn't usually need to be rebuilt
- cacti: Doesn't usually need to be rebuilt
- composer: Doesn't usually need to be rebuilt
- fusiondirectory: Doesn't usually need to be rebuilt
- gosa: Doesn't usually need to be rebuilt
Phase Last
- php-tijsverkoyen-css-to-inline-styles: Depends on symfony
ServerTeam/Transition/Php8.0 (last edited 2021-06-17 20:44:05 by utkarsh)