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


Reply via email to