PHP7.0 transition and possible dependencies/breakage

Nish Aravamudan nish.aravamudan at canonical.com
Fri Jan 15 22:40:15 UTC 2016


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



More information about the ubuntu-devel mailing list