On Sun, Jul 02, 2017 at 07:56:50PM +0200, Robert Nagy wrote: > Hi > > Antoine, can you please push this into a bulk?
If I could have a full diff, that'd make it easier. I am a bit worried about dependant ports, we are going to look deep into them to add missing php modules because of the split. > > 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 > > -- Antoine