Friday 15 January 2016

PHP7.0 transition and possible dependencies/breakage

Hello devs!

I have been looking into the realities/implications of moving from
PHP5.6 to PHP7.0 in main for Xenial.

tl;dr: The biggest issue is probably lack of PHP7.0 SWIG bindings. As
far as I can tell, no packages in main itself actually require them, but
there are many in universe:
php5-exactimage
php5-gdcm
php5-vtkgdcm
php5-geos
libgv-php5
php-kolab
php-kolabformat
php5-mapscript
php5-ming
libow-php5
libownet-php
php5-librdf
All of these PHP bindings would break/be disabled, which in turn might
lead to some dependency breakage (e.g., debian-gis depends on
php5-mapscript).

What are people's thoughts on this?

* Is removing SWIG bindings for PHP tenable, full-stop?

* If we were to go down the road of moving to PHP7.0, what would be the
preferred way to break the packages that depend on PHP bindings (or
generate them with SWIG). With my proposed change to swig below, any
attempt to generate PHP bindings will error out, which would cause build
breakage (I think). So we could change some source packages to no try
and SWIG PHP bindings, in the hopes that we could turn them back on once
SWIG gets updated... but that might mean some packages are not
installable for some time (from universe)?

Now to the details:

As far as main is concerned, the following packages are/could be
affected/moved, along with my notes:

swig
While not technically dependent on PHP, amongst the SWIG
bindings are those for PHP. As of right now
(https://github.com/swig/swig/issues/571), there is no traction
yet on upstream SWIG gaining PHP7.0 support. So, in the
short-term, our proposal is to disable the PHP bindings for
SWIG. I will explain per-package where that will have an effect.
dh-php5
This would be removed from main (it is replaced by dh-php in
universe, as well, which would move to main).
dh-php
Move to main, provides PHP dependencies in misc:Depends, e.g.
src:dpkg
No changes needed (xenial+1 can remove Breaks entries).
src:jquery-goodies
libjs-jquery-jfeed Recommends php5 (so would recommend php
instead)
Query: I noted that libjs-jquery-jush mentions providing syntax
highlighting for PHP ("complete PHP syntax"). Should we, in this
process, verify that jquery-goodies in Xenial will support all
of the PHP7.0 syntax (theoretically there isn't a huge change in
the language, but in practice...). That is, as part of the
process, how far should I go down the hole(s) of verifying
functional equivalence.
nagios3
nagios3-cgi Depends on libapache2-mod-php5 | php5 | php5-cgi
We would migrate these Depends to the generic php packages.
libapache2-mod-php5
php5
php5-cgi
php5-cli
php5-common
php5-curl
php5-dbg
php5-dev
php5-gd
php5-gmp
php5-json
php5-ldap
php5-mysql
php5-odbc
php5-pgsql
php5-pspell
php5-readline
php5-recode
php5-snmp
php5-sqlite
php5-tidy
php5-xmlrcp
php5-xsl
These would be removed from main, and replaced by binaries from
src:php7.0.
php7.0
libapache2-mode-php7.0
php7.0-cgi
php7.0-cli
php7.0-curl
php7.0-common
php7.0-dev
php7.0-fpm
php7.0-dbg
php7.0-phpdbg
php7.0-gd
php7.0-gmp
php7.0-json
php7.0-ldap
php7.0-mysql
php7.0-odbc
php7.0-pgsql
php7.0-pspell
php7.0-readline
php7.0-recode
php7.0-snmp
php7.0-sqlite
php7.0-tidy
php7.0-xmlrcp
php7.0-xsl
Promote to main. We might also consider promoting the virtual
php* packages that will facilitate dependencies going forward
(and all of which currently depend on the php7.0-variants).
src:php-json
Remove the src:php-json package and add a php-json to
src:php7.0. src:php7.0 already generates php7.0-json.
pkg-php-tools
Currently being updated for PHP7.0 by the Debian
maintainer(s). Needed for dh_phppear (${phppear:Debian-Depends},
e.g)
php-pear
New package in Debian (php-pear used to be generated by
src:php5, but is now independent). Needed for PEAR support.

I'm still working through the many packages in universe and multiverse
that would be affected, but they seem to be in the following categories:

a) written in PHP (so they'll hopefully successfully rebuild once they
depend on php* (which is satisified by php7.0 from universe currently)
rather than php5*

b) packaged PEAR modules, which should successfully no-op rebuild once
we have an updated php-pear and pkg-php-tools.

c) packaged SWIG bindings:
php5-exactimage
php5-gdcm
php5-vtkgdcm
php5-geos
libgv-php5
php-kolab
php-kolabformat
php5-mapscript
php5-ming
libow-php5
libownet-php
php5-librdf

Thanks,
Nish

--
Nishanth Aravamudan
Ubuntu Server
Canonical Ltd

--
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel