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

Reply via email to