Hello ports@, This diff moves phar to its own subpackage, which requires quite a bit of changes: - Since -phar breaks sparc64, allow it to be disabled - For specifying what package doesn't build on a certain architecture I use NOT_FOR_ARCHS-phar (BROKEN- doesn't work on subpackages) - To determine if a package is built I require BUILD_PACKAGES, which in turn requires bsd.port.arch.mk to be loaded earlier. - MULTI_PACKAGES (and by extend PHP_EXTENSIONS) need to be defined before bsd.port.arch.mk is loaded to have the full list.
I don't know on what component HPPA fails, but this platform might also benefit from this trick. I don't have the machine to test it though. As for the other changes: - Install phar-${PV} similar to php-config-${PV} - Install the phar manpage - Move the phar headers to the phar subpackage This also requires the addition of the phar module as a runtime dependency on icinga-web, drush, nextcloud, owncloud and composer. I'm just not sure (except for composer) how optional the use of the phar extension is. If people who are more familiar with these tools could shed some light on this it'd be welcome. Comments, thoughts, scoldings, testings on sparc64, other ways to set this up, OKs? martijn@ Index: lang/php/Makefile.inc =================================================================== RCS file: /cvs/ports/lang/php/Makefile.inc,v retrieving revision 1.103 diff -u -p -a -u -r1.103 Makefile.inc --- lang/php/Makefile.inc 8 May 2018 12:04:55 -0000 1.103 +++ lang/php/Makefile.inc 8 May 2018 15:26:51 -0000 @@ -110,6 +110,10 @@ TEST_TARGET= test TEST_FLAGS= NO_INTERACTION=1 SAPI+= -main -cgi +PHP_EXTENSIONS+= -bz2 -curl -dba -gd -gmp -intl -imap -ldap -mcrypt \ + -mysqli -odbc -pcntl -pdo_mysql -pdo_pgsql -pgsql \ + -phar -pspell -shmop -soap -snmp -pdo_dblib -tidy \ + -xmlrpc -xsl -zip ZEND_EXTENSIONS+= -opcache MULTI_PACKAGES+= ${SAPI} ${PHP_EXTENSIONS} @@ -122,34 +126,36 @@ LIB_DEPENDS$i+= devel/gettext \ textproc/libxml .endfor +# +# Broken section +# Use *_FOR_ARCHS, since BROKEN doesn't work for subpackages +# + +.include <bsd.port.arch.mk> # # Loadable php extensions by name that are included in all versions # # bz2 -PHP_EXTENSIONS+= -bz2 COMMENT-bz2= bzip2 compression extensions for php CONFIGURE_ARGS+= --with-bz2=shared,${LOCALBASE} LIB_DEPENDS-bz2= archivers/bzip2 WANTLIB-bz2= bz2>=10 pthread # curl -PHP_EXTENSIONS+= -curl COMMENT-curl= curl URL library extensions for php CONFIGURE_ARGS+= --with-curl=shared,${LOCALBASE} LIB_DEPENDS-curl= net/curl WANTLIB-curl= pthread crypto nghttp2 ssl z curl>=2 # dba -PHP_EXTENSIONS+= -dba COMMENT-dba= dba GDBM access extensions for php CONFIGURE_ARGS+= --enable-dba=shared --with-gdbm=${LOCALBASE} LIB_DEPENDS-dba= databases/gdbm WANTLIB-dba= gdbm>=2 pthread # gd -PHP_EXTENSIONS+= -gd COMMENT-gd= image manipulation extensions for php LIB_DEPENDS-gd= graphics/jpeg \ graphics/png @@ -167,14 +173,12 @@ CONFIGURE_ARGS+= --with-gd=shared \ --with-xpm-dir=${X11BASE} # gmp -PHP_EXTENSIONS+= -gmp COMMENT-gmp= gmp math library support for php CONFIGURE_ARGS+= --with-gmp=shared,${LOCALBASE} LIB_DEPENDS-gmp= devel/gmp WANTLIB-gmp= gmp>=4 pthread # intl -PHP_EXTENSIONS+= -intl COMMENT-intl= intl library support for php CONFIGURE_ARGS+= --enable-intl=shared \ --with-icu-dir=${LOCALBASE} @@ -185,7 +189,6 @@ WANTLIB-intl= icudata icui18n icuio icu WANTLIB-intl+= ${COMPILER_LIBCXX} m # imap -PHP_EXTENSIONS+= -imap COMMENT-imap= imap, pop3 and nntp extensions for php CONFIGURE_ARGS+= --with-imap=shared,${LOCALBASE} \ --with-imap-ssl @@ -193,119 +196,110 @@ LIB_DEPENDS-imap= mail/alpine,-c-client WANTLIB-imap= pthread crypto ssl c-client>=5 # ldap -PHP_EXTENSIONS+= -ldap COMMENT-ldap= ldap protocol extensions for php CONFIGURE_ARGS+= --with-ldap=shared,${LOCALBASE} LIB_DEPENDS-ldap= databases/openldap WANTLIB-ldap= pthread ldap>=2 lber # mcrypt -PHP_EXTENSIONS+= -mcrypt COMMENT-mcrypt= mcrypt encryption/decryption extensions for php CONFIGURE_ARGS+= --with-mcrypt=shared,${LOCALBASE} LIB_DEPENDS-mcrypt= security/libmcrypt devel/libtool,-ltdl WANTLIB-mcrypt= mcrypt ltdl>=1 pthread # mysqli -PHP_EXTENSIONS+= -mysqli COMMENT-mysqli= mysql database access extensions for php CONFIGURE_ARGS+= --with-mysqli=shared,${LOCALBASE}/bin/mysql_config LIB_DEPENDS-mysqli= databases/mariadb WANTLIB-mysqli= crypto m pthread ssl z lib/mysql/mysqlclient # odbc -PHP_EXTENSIONS+= -odbc COMMENT-odbc= odbc database access extensions for php CONFIGURE_ARGS+= --with-iodbc=shared,${LOCALBASE} LIB_DEPENDS-odbc= databases/iodbc WANTLIB-odbc= iodbc>=2 pthread iodbcinst # pcntl -PHP_EXTENSIONS+= -pcntl COMMENT-pcntl= PCNTL extensions for php CONFIGURE_ARGS+= --enable-pcntl=shared LIB_DEPENDS-pcntl= WANTLIB-pcntl= pthread # pdo-mysql -PHP_EXTENSIONS+= -pdo_mysql COMMENT-pdo_mysql= PDO mysql database access extensions for php CONFIGURE_ARGS+= --with-pdo-mysql=shared,${LOCALBASE} LIB_DEPENDS-pdo_mysql= databases/mariadb WANTLIB-pdo_mysql= crypto m pthread ssl z lib/mysql/mysqlclient # pdo-pgsql -PHP_EXTENSIONS+= -pdo_pgsql COMMENT-pdo_pgsql= PDO database access extensions for php CONFIGURE_ARGS+= --with-pdo-pgsql=shared,${LOCALBASE} LIB_DEPENDS-pdo_pgsql= databases/postgresql WANTLIB-pdo_pgsql= pq>=2 pthread # pgsql -PHP_EXTENSIONS+= -pgsql COMMENT-pgsql= pgsql database access extensions for php CONFIGURE_ARGS+= --with-pgsql=shared,${LOCALBASE} LIB_DEPENDS-pgsql= databases/postgresql WANTLIB-pgsql= pq>=2 pthread +# phar +COMMENT-phar= phar archive abstraction extensions for php +.if ${BUILD_PACKAGES:M-phar} +CONFIGURE_ARGS+= --enable-phar=shared +.else +CONFIGURE_ARGS+= --disable-phar +.endif + # pspell -PHP_EXTENSIONS+= -pspell COMMENT-pspell= pspell library extensions for php CONFIGURE_ARGS+= --with-pspell=shared,${LOCALBASE} LIB_DEPENDS-pspell= textproc/aspell/core WANTLIB-pspell= aspell>=16 pspell>=16 pthread # shmop -PHP_EXTENSIONS+= -shmop COMMENT-shmop= shared memory extensions for php CONFIGURE_ARGS+= --enable-shmop=shared,${LOCALBASE} LIB_DEPENDS-shmop= WANTLIB-shmop= pthread # soap -PHP_EXTENSIONS+= -soap COMMENT-soap= SOAP functions for php CONFIGURE_ARGS+= --enable-soap=shared,${LOCALBASE} LIB_DEPENDS-soap= textproc/libxml WANTLIB-soap= iconv m pthread z xml2>=8 lzma # snmp -PHP_EXTENSIONS+= -snmp COMMENT-snmp= snmp protocol extensions for php CONFIGURE_ARGS+= --with-snmp=shared,${LOCALBASE} LIB_DEPENDS-snmp= net/net-snmp WANTLIB-snmp= crypto m netsnmp>=6.2 pthread # pdo-dblib -PHP_EXTENSIONS+= -pdo_dblib COMMENT-pdo_dblib= PDO DB-LIB support for php CONFIGURE_ARGS+= --with-pdo-dblib=shared,${LOCALBASE} LIB_DEPENDS-pdo_dblib= databases/freetds WANTLIB-pdo_dblib= sybdb>=6 pthread # tidy -PHP_EXTENSIONS+= -tidy COMMENT-tidy= tidy HTML cleaner bindings CONFIGURE_ARGS+= --with-tidy=shared,${LOCALBASE} LIB_DEPENDS-tidy= www/tidyp WANTLIB-tidy= tidyp pthread # xml-rpc -PHP_EXTENSIONS+= -xmlrpc COMMENT-xmlrpc= XML RPC functions for php CONFIGURE_ARGS+= --with-xmlrpc=shared LIB_DEPENDS-xmlrpc= textproc/libxml WANTLIB-xmlrpc= iconv m z xml2>=8 pthread lzma # xsl -PHP_EXTENSIONS+= -xsl COMMENT-xsl= XSL functions for php CONFIGURE_ARGS+= --with-xsl=shared --enable-dom LIB_DEPENDS-xsl= textproc/libxslt WANTLIB-xsl= m xml2 xslt>=3 exslt pthread # zip -PHP_EXTENSIONS+= -zip COMMENT-zip= zip functions for php CONFIGURE_ARGS+= --enable-zip=shared,${LOCALBASE} LIB_DEPENDS-zip= @@ -353,6 +347,10 @@ post-install: ${PREFIX}/${APACHE_MODULE_SUBDIR}/ ${INSTALL_DATA_DIR} ${WRKINST}/${CHROOT_DIR}/conf/php-${PV}.sample ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/php-${PV} +.if ${BUILD_PACKAGES:M-phar} + ${INSTALL_PROGRAM} ${WRKBUILD}/ext/phar/phar.phar ${PREFIX}/bin/phar-${PV} + ${INSTALL_MAN} ${WRKBUILD}/ext/phar/phar.1 ${PREFIX}/man/man1/phar-${PV}.1 +.endif ${INSTALL_PROGRAM} ${WRKBUILD}/sapi/cli/php ${PREFIX}/bin/php-${PV} ${INSTALL_PROGRAM} ${WRKBUILD}/sapi/cgi/php-cgi ${PREFIX}/bin/php-cgi-${PV} # Make sure that php-cgi.1 still just sources php.1 when importing a new major version. @@ -372,10 +370,12 @@ post-install: ${PREFIX}/share/examples/php-${PV}/php.conf .for m in ${PHP_EXTENSIONS:S/-//g} +.if ${BUILD_PACKAGES:M-${m}} ${INSTALL_DATA} ${WRKBUILD}/modules/${m}.so \ ${PREFIX}/${MODULES_SUBDIR}/${m}.so echo "extension=${m}.so" > \ ${PREFIX}/share/examples/php-${PV}/${m}.ini +.endif .endfor .for m in ${ZEND_EXTENSIONS:S/-//g} ${INSTALL_DATA} ${WRKBUILD}/modules/${m}.so \ Index: lang/php/5.6/Makefile =================================================================== RCS file: /cvs/ports/lang/php/5.6/Makefile,v retrieving revision 1.62 diff -u -p -a -u -r1.62 Makefile --- lang/php/5.6/Makefile 8 May 2018 12:04:55 -0000 1.62 +++ lang/php/5.6/Makefile 8 May 2018 15:26:51 -0000 @@ -4,7 +4,7 @@ BROKEN-alpha= pcre_jit_compile.c:65:2: e PV= 5.6 V= ${PV}.35 -REVISION-main= 0 +REVISION= 1 MASTER_SITES0= https://download.suhosin.org/ Index: lang/php/5.6/pkg/PLIST-phar =================================================================== RCS file: lang/php/5.6/pkg/PLIST-phar diff -N lang/php/5.6/pkg/PLIST-phar --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lang/php/5.6/pkg/PLIST-phar 8 May 2018 15:26:51 -0000 @@ -0,0 +1,11 @@ +@comment $OpenBSD$ +@option no-default-conflict +@option is-branch +@conflict php-phar->=5.6,<5.7 +bin/phar-${PV} +@man man/man1/phar-${PV}.1 +lib/php-${PV}/modules/phar.so +share/examples/php-${PV}/phar.ini +@sample ${SYSCONFDIR}/php-${PV}.sample/phar.ini +share/php-${PV}/include/ext/phar/ +share/php-${PV}/include/ext/phar/php_phar.h Index: lang/php/7.0/Makefile =================================================================== RCS file: /cvs/ports/lang/php/7.0/Makefile,v retrieving revision 1.46 diff -u -p -a -u -r1.46 Makefile --- lang/php/7.0/Makefile 8 May 2018 12:17:32 -0000 1.46 +++ lang/php/7.0/Makefile 8 May 2018 15:26:51 -0000 @@ -1,10 +1,11 @@ # $OpenBSD: Makefile,v 1.46 2018/05/08 12:17:32 martijn Exp $ -BROKEN-sparc64= SIGBUS during phar generation +# SIGBUS during phar generation +NOT_FOR_ARCHS-phar= sparc64 PV= 7.0 V= ${PV}.29 -REVISION= 1 +REVISION= 2 BUILD_DEPENDS+= devel/bison Index: lang/php/7.0/pkg/PLIST-main =================================================================== RCS file: /cvs/ports/lang/php/7.0/pkg/PLIST-main,v retrieving revision 1.6 diff -u -p -a -u -r1.6 PLIST-main --- lang/php/7.0/pkg/PLIST-main 25 Apr 2017 11:21:14 -0000 1.6 +++ lang/php/7.0/pkg/PLIST-main 8 May 2018 15:26:51 -0000 @@ -253,8 +253,6 @@ share/php-${PV}/include/ext/pdo/ share/php-${PV}/include/ext/pdo/php_pdo.h share/php-${PV}/include/ext/pdo/php_pdo_driver.h share/php-${PV}/include/ext/pdo/php_pdo_error.h -share/php-${PV}/include/ext/phar/ -share/php-${PV}/include/ext/phar/php_phar.h share/php-${PV}/include/ext/session/ share/php-${PV}/include/ext/session/mod_files.h share/php-${PV}/include/ext/session/mod_user.h Index: lang/php/7.0/pkg/PLIST-phar =================================================================== RCS file: lang/php/7.0/pkg/PLIST-phar diff -N lang/php/7.0/pkg/PLIST-phar --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lang/php/7.0/pkg/PLIST-phar 8 May 2018 15:26:51 -0000 @@ -0,0 +1,11 @@ +@comment $OpenBSD$ +@option no-default-conflict +@option is-branch +@conflict php-phar->=7.0,<7.1 +bin/phar-${PV} +@man man/man1/phar-${PV}.1 +lib/php-${PV}/modules/phar.so +share/examples/php-${PV}/phar.ini +@sample ${SYSCONFDIR}/php-${PV}.sample/phar.ini +share/php-${PV}/include/ext/phar/ +share/php-${PV}/include/ext/phar/php_phar.h Index: lang/php/files/DESCR-phar =================================================================== RCS file: lang/php/files/DESCR-phar diff -N lang/php/files/DESCR-phar --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lang/php/files/DESCR-phar 8 May 2018 15:26:51 -0000 @@ -0,0 +1,9 @@ +The phar extension provides a way to put entire PHP applications into +a single file called a "phar" (PHP Archive) for easy distribution and +installation. In addition to providing this service, the phar +extension also provides a file-format abstraction method for creating +and manipulating tar and zip files through the PharData class, much as +PDO provides a unified interface for accessing different databases. +Unlike PDO, which cannot convert between different databases, Phar +also can convert between tar, zip and phar file formats with a single +line of code. see Phar::convertToExecutable() for one example. Index: net/icinga/web/Makefile =================================================================== RCS file: /cvs/ports/net/icinga/web/Makefile,v retrieving revision 1.36 diff -u -p -r1.36 Makefile --- net/icinga/web/Makefile 20 Dec 2017 15:11:20 -0000 1.36 +++ net/icinga/web/Makefile 8 May 2018 15:44:57 -0000 @@ -5,6 +5,7 @@ COMMENT = web UI for icinga GH_ACCOUNT = Icinga GH_PROJECT = icinga-web GH_TAGNAME = v1.14.1 +REVISION= 0 MODULES= lang/php @@ -13,6 +14,7 @@ COMMON = www/pear \ RUN_DEPENDS = ${COMMON_DEPENDS} \ lang/php/${MODPHP_VERSION},-gd \ + lang/php/${MODPHP_VERSION},-phar \ lang/php/${MODPHP_VERSION},-xsl \ php-pdo_mysql-${MODPHP_VSPEC}|php-pdo_pgsql-${MODPHP_VSPEC}:lang/php/${MODPHP_VERSION},-pdo_mysql \ net/icinga/core \ Index: www/drush//Makefile =================================================================== RCS file: /cvs/ports/www/drush/Makefile,v retrieving revision 1.11 diff -u -p -r1.11 Makefile --- www/drush//Makefile 27 Feb 2016 17:15:24 -0000 1.11 +++ www/drush//Makefile 8 May 2018 15:45:21 -0000 @@ -7,6 +7,7 @@ CATEGORIES = www devel V= 8.0.3 DISTNAME= drush-$V EXTRACT_SUFX= -deps.tar.xz +REVISION= 0 HOMEPAGE= http://www.drush.org/ @@ -19,7 +20,8 @@ MODULES= lang/php PERMIT_PACKAGE_CDROM= Yes NO_BUILD= Yes -RUN_DEPENDS= archivers/gtar +RUN_DEPENDS= archivers/gtar \ + lang/php/${MODPHP_VERSION},-phar SUBST_VARS= MODPHP_BIN do-install: Index: www/nextcloud//Makefile =================================================================== RCS file: /cvs/ports/www/nextcloud/Makefile,v retrieving revision 1.12 diff -u -p -r1.12 Makefile --- www/nextcloud//Makefile 27 Apr 2018 09:15:07 -0000 1.12 +++ www/nextcloud//Makefile 8 May 2018 15:45:51 -0000 @@ -5,6 +5,7 @@ COMMENT= easy and universal access to s V= 13.0.2 DISTNAME= nextcloud-${V} EXTRACT_SUFX= .tar.bz2 +REVISION= 0 CATEGORIES= www @@ -39,6 +40,7 @@ MAJOR= ${VR:R} SUBST_VARS= INSTDIR TINSTDIR MODPHP_BIN VR MAJOR RUN_DEPENDS= lang/php/${MODPHP_VERSION},-gd \ + lang/php/${MODPHP_VERSION},-phar \ lang/php/${MODPHP_VERSION},-zip # http user authentication Index: www/owncloud//Makefile =================================================================== RCS file: /cvs/ports/www/owncloud/Makefile,v retrieving revision 1.123 diff -u -p -r1.123 Makefile --- www/owncloud//Makefile 28 Apr 2018 09:07:06 -0000 1.123 +++ www/owncloud//Makefile 8 May 2018 15:46:04 -0000 @@ -5,6 +5,7 @@ COMMENT= easy and universal access to s V= 10.0.8 DISTNAME= owncloud-${V} EXTRACT_SUFX= .tar.bz2 +REVISION= 0 CATEGORIES= www @@ -38,6 +39,7 @@ VR= ${V:R} SUBST_VARS= INSTDIR TINSTDIR MODPHP_BIN VR RUN_DEPENDS= lang/php/${MODPHP_VERSION},-gd \ + lang/php/${MODPHP_VERSION},-phar \ lang/php/${MODPHP_VERSION},-zip # http user authentication Index: www/composer//Makefile =================================================================== RCS file: /cvs/ports/www/composer/Makefile,v retrieving revision 1.5 diff -u -p -r1.5 Makefile --- www/composer//Makefile 2 Mar 2018 17:24:55 -0000 1.5 +++ www/composer//Makefile 8 May 2018 15:46:15 -0000 @@ -6,11 +6,14 @@ CATEGORIES= www devel V= 1.6.3 EPOCH= 0 +REVISION= 0 MASTER_SITES= https://getcomposer.org/download/$V/ DISTNAME= composer-$V DISTFILES= composer-$V{composer}.phar EXTRACT_SUFX= .phar EXTRACT_ONLY= + +RUN_DEPENDS= lang/php/${MODPHP_VERSION},-phar HOMEPAGE= https://getcomposer.org/