Hi Antoine, can you please push this into a bulk?
On (2017-07-02 19:52), Martijn van Duren wrote: > Hello ports@, > > Last couple of months I've been busy getting to know the OpenBSD ports > system and the php build environment. > The main reason being my need for functionality at my $DAYJOB which > isn't offered by the default php install on OpenBSD. Most notably php > 7.1 and chroot (the php function). > > During my quest I ended up touching about every part of the port and > I'm currently quite happy with the result, although there's still some > things I want to touch later on. > > Some of the highlights I've done: > - Remove PHP 5.5. It's dead upstream for almost a year, so there's no > need to keep it on OpenBSD. > - Clean up the CONFIGURE_ARGS. There were some arguments there that > were simply not in PHP anymore. > - Move some deprecated modules into the PHP 5.6 Makefile. This keeps > the Makefile.inc cleaner of if/else bloat. > - Replace the -fastcgi port with -cgi. -cgi is the official name and > for fastcgi needs -fpm is recommended. This avoids confusion. > - Move modules to their own subpackage where possible. I don't like my > clean php install having ftp or wddx. Let people make up their own mind. > - Remove unused dependencies (e.g. mariadb isn't needed when building > with mysqlnd) > - Move every SAPI to their own subpackage. People running -fpm don't > need mod_php or -cgi. > - Move the extension headers to their corresponding subpackage. > - Clean up the build environment. YACC=, USE_LIBTOOL, etc don't seem to > be needed (anymore). > - Clean up patches. Some are unneeded, redundant, superfluous so keep > it to a minimum for maintainability. > - Subpackages requiring another module have those dependencies. (e.g. > installing -pdo_mysql also pulls in -pdo and -mysqlnd) > - Install phar and disable it on sparc64. This should allow us to have > php on sparc64, without phar support. Untested for lack of hardware. > - Enable the chroot function by default. This function normally gets > disabled if any SAPI other than -cli, -cgi, or -embed is compiled. > I reckon that if the chroot function is usable the code is running as > root and you have bigger problems than a php server locking itself out > of your main filesystem. > - Allow phpize to work without --with-php-config. > - Try to rely on other packages where code would be otherwise compiled > in. E.g. devel/pcre for the pcre module and textproc/oniguruma for > mbstring. These libraries are also packaged inside PHP if not available > on the main system. > - Miscellaneous cleanup > > For the packages this means the following: > Removed: > - php-fastcgi > Added: > - php-apxs2 > - php-bcmath > - php-calendar > - php-cgi > - php-cli > - php-ctype > - php-dom > - php-enchant > - php-exif > - php-fileinfo > - php-fpm > - php-ftp > - php-gettext > - php-iconv > - php-json > - php-mbstring > - php-mysqlnd > - php-opcache > - php-pdo > - php-pdo_sqlite > - php-phar > - php-posix > - php-readline > - php-simplexml > - php-sockets > - php-sqlite3 > - php-sysvmsg > - php-sysvsem > - php-sysvshm > - php-tokenizer > - php-wddx > - php-xmlreader > - php-xmlwriter > Modules moved to shared components: > - bcmath > - calendar > - ctype > - dom > - exif > - fileinfo > - ftp > - gettext > - iconv > - json > - mbstring > - mysqlnd > - PDO > - pdo_sqlite > - Phar > - posix > - readline > - SimpleXML > - sockets > - sqlite3 > - sysvmsg > - sysvsem > - sysvshm > - tokenizer > - wddx > - xmlreader > - xmlwriter > Modules kept compiled in: > - Core (for obvious reasons) > - date (can't be build stand-alone) > - ereg (removed in php 7.0, not worth the effort, also pcre is in > default install) > - filter (can't be build stand-alone) > - hash (required to be built-in for phar hash-checking) > - libxml (can't be build stand-alone) > - openssl (allow tls as a Stream Socket Transport in a default install) > - pcre (can't be build stand-alone) > - Reflection (can't be build stand-alone) > - session (what's a webserver without sessions?) > - SPL (can't be build stand-alone) > - standard (for obvious reasons) > - xml (required for pear building. Should be turned into a module once > something like phpctl is in place) > - zlib (required for phar) > > When updating to the new packages I didn't encounter any problems, > except for the expected behaviour that some modules or SAPIs are now in > other packages, which could easily be covered with a current.html entry. > > Some things that I would like to realize once this gets accepted are: > - Allow easier module manipulation via an external tool. E.g. > "phpctl-5.6 enable pdo_mysql", or "phpctl-5.6 list | phpctl-7.1 load". > I'm not sure of the semantics and haven't started on this yet. But it > would solve some issues, like migration or automatic module enabling > during package building (-xml). > - Allow pecl modules to be built with multiple PHP versions. Right now > all pecl modules are only available for 5.6, but I could use some of > those on my 7.1 install, which I now have to built custom with my > revamped phpize, which is not ideal. > > The new layout requires a few tweaks in the pecl and pear department, > but nothing too fancy. See patch down below. > > Also, arguments can be made to move some packages back together. E.g. > -cli into -main. I'm not against it, but it seems better to me to start > from maximum subdivision and combine them where needed. > > As might be expected, I've been running with the 7.1 version of this > patch now for over 2 months without any issues (at least, that are > still left in this version). > > Finally some thanks are due to jasper@ and sthen@ for some handholding. > > Comments, questions, scoldings, OKs? > > martijn@ > > Index: www/pear/Makefile > =================================================================== > RCS file: /cvs/ports/www/pear/Makefile,v > retrieving revision 1.24 > diff -u -p -r1.24 Makefile > --- www/pear/Makefile 1 Apr 2016 18:46:06 -0000 1.24 > +++ www/pear/Makefile 2 Jul 2017 10:52:35 -0000 > @@ -23,8 +23,10 @@ PERMIT_PACKAGE_CDROM= Yes > MULTI_PACKAGES= -main -utils > > MODULES= lang/php > -BUILD_DEPENDS= ${_MODPHP_BUILD_DEPENDS} > -RUN_DEPENDS-main= www/pear,-utils > +BUILD_DEPENDS= ${_MODPHP_BUILD_DEPENDS} \ > + lang/php/${MODPHP_VERSION},-cli > +RUN_DEPENDS-main= www/pear,-utils \ > + lang/php/${MODPHP_VERSION},-cli > > # Most of pear have to live in /var/www where apache is chroot'ed to. > PREFIX-main= ${VARBASE}/www > @@ -32,7 +34,7 @@ PREFIX-utils= /usr/local > > NO_TEST= Yes > > -BUILD_DEPENDS= devel/p5-Expect > +BUILD_DEPENDS+= devel/p5-Expect > SUBST_VARS= MODPHP_BIN > > do-extract: > Index: mail/pecl-mailparse/Makefile > =================================================================== > RCS file: /cvs/ports/mail/pecl-mailparse/Makefile,v > retrieving revision 1.19 > diff -u -p -r1.19 Makefile > --- mail/pecl-mailparse/Makefile 19 Mar 2016 21:18:38 -0000 1.19 > +++ mail/pecl-mailparse/Makefile 2 Jul 2017 10:52:57 -0000 > @@ -16,6 +16,9 @@ WANTLIB = c > AUTOCONF_VERSION = 2.52 > AUTOMAKE_VERSION = 1.4 > > +RUN_DEPENDS= lang/php/${MODPHP_VERSION},-mbstring > +BUILD_DEPENDS= lang/php/${MODPHP_VERSION},-mbstring > + > MODULES = lang/php/pecl > > CONFIGURE_STYLE = gnu > Index: www/pecl-http/Makefile > =================================================================== > RCS file: /cvs/ports/www/./pecl-http/Makefile,v > retrieving revision 1.13 > diff -u -p -r1.13 Makefile > --- www/pecl-http/Makefile 8 Nov 2016 14:38:55 -0000 1.13 > +++ www/pecl-http/Makefile 2 Jul 2017 10:52:57 -0000 > @@ -20,12 +20,14 @@ MODULES= lang/php/pecl > CONFIGURE_STYLE= gnu > > RUN_DEPENDS+= www/pecl-raphf \ > - www/pecl-propro > + www/pecl-propro \ > + lang/php/${MODPHP_VERSION},-iconv > TEST_DEPENDS+= ${RUN_DEPENDS} > -BUILD_DEPENDS+= ${RUN_DEPENDS} > +BUILD_DEPENDS+= ${RUN_DEPENDS} \ > + lang/php/${MODPHP_VERSION},-iconv > LIB_DEPENDS= devel/gettext \ > devel/libidn \ > - net/curl > + net/curl \ > > TEST_EXTS+= -d extension_dir=${LOCALBASE}/lib/php-${MODPHP_VERSION}/modules > TEST_EXTS+= -d extension=raphf.so > Index: www/pecl-http/pkg/PLIST > =================================================================== > RCS file: /cvs/ports/www/./pecl-http/pkg/PLIST,v > retrieving revision 1.3 > diff -u -p -r1.3 PLIST > --- www/pecl-http/pkg/PLIST 1 Feb 2016 21:55:38 -0000 1.3 > +++ www/pecl-http/pkg/PLIST 2 Jul 2017 10:52:58 -0000 > @@ -1,37 +1,7 @@ > @comment $OpenBSD: PLIST,v 1.3 2016/02/01 21:55:38 sthen Exp $ > -@extra ${SYSCONFDIR}/php-${MODPHP_VERSION}/${MODULE_NAME}.ini > +@extra ${SYSCONFDIR}/php-${MODPHP_VERSION}/${MODULE_NAME}.ini > lib/php-${MODPHP_VERSION}/modules/${MODULE_NAME}.so > share/examples/php-${MODPHP_VERSION}/${MODULE_NAME}.ini > @sample ${SYSCONFDIR}/php-${MODPHP_VERSION}.sample/${MODULE_NAME}.ini > share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/ > share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_api.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_buffer.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_client.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_client_request.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_client_response.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_cookie.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_curl.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_encoding.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_env.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_env_request.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_env_response.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_etag.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_exception.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_filter.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_header.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_header_parser.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_info.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_message.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_message_body.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_message_parser.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_misc.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_negotiate.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_object.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_options.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_params.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_querystring.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_response_codes.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_url.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_utf8.h > -share/php-${MODPHP_VERSION}/include/ext/${MODULE_NAME}/php_${MODULE_NAME}_version.h