Bug 214943

Summary: lang/php70: Extensions fail to find dependencies when ZTS is enabled due to incorrect library path in LIB_DEPENDS check (LOCALBASE/lib/php/YYYYMMDD-zts)
Product: Ports & Packages Reporter: rainer
Component: Individual Port(s)Assignee: Torsten Zuehlsdorff <tz>
Status: Closed FIXED    
Severity: Affects Some People CC: ale, ohartmann, tz
Priority: --- Keywords: needs-patch, needs-qa
Version: LatestFlags: tz: maintainer-feedback+
tz: merge-quarterly-
Hardware: amd64   
OS: Any   

Description rainer 2016-11-30 08:15:02 UTC

    
Comment 1 rainer 2016-11-30 08:17:01 UTC
Hi,

e.g. php70-xmlreader complains:

====>> Building net/php70-xmlrpc
build started at Sun Nov 27 01:46:46 CET 2016
port directory: /usr/ports/net/php70-xmlrpc
building for: FreeBSD 11_0-amd64-2016Q4-php70-mariadb101-job-03 11.0-RELEASE-p3 FreeBSD 11.0-RELEASE-p3 amd64
maintained by: tz@FreeBSD.org
Makefile ident:      $FreeBSD: branches/2016Q4/net/php70-xmlrpc/Makefile 422569 2016-09-21 15:43:47Z tz $
Poudriere version: 3.1.14
Host OSVERSION: 1100122
Jail OSVERSION: 1100122

---Begin Environment---
SHELL=/bin/csh
UNAME_v=FreeBSD 11.0-RELEASE-p3
UNAME_r=11.0-RELEASE-p3
BLOCKSIZE=K
MAIL=/var/mail/root
STATUS=1
ARCH=amd64
SAVED_TERM=screen
MASTERMNT=/usr/local/poudriere/data/.m/11_0-amd64-2016Q4-php70-mariadb101/ref
UID=0
FORCE_PACKAGE=yes
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
_JAVA_VERSION_LIST_REGEXP=1.6\|1.7\|1.8\|1.6+\|1.7+\|1.8+
POUDRIERE_BUILD_TYPE=bulk
PKGNAME=php70-xmlrpc-7.0.13
OSREL=11.0
_OSRELEASE=11.0-RELEASE-p3
PYTHONBASE=/usr/local
OLDPWD=/
_SMP_CPUS=24
PWD=/usr/local/poudriere/data/.m/11_0-amd64-2016Q4-php70-mariadb101/ref/.p/pool
HAVE_COMPAT_IA32_KERN=YES OPSYS=FreeBSD
MASTERNAME=11_0-amd64-2016Q4-php70-mariadb101
SCRIPTPREFIX=/usr/local/share/poudriere
_JAVA_VENDOR_LIST_REGEXP=openjdk\|oracle\|sun
USER=root
HOME=/root
POUDRIERE_VERSION=3.1.14
SCRIPTPATH=/usr/local/share/poudriere/bulk.sh
CONFIGURE_MAX_CMD_LEN=262144
LIBEXECPREFIX=/usr/local/libexec/poudriere
LOCALBASE=/usr/local
PACKAGE_BUILDING=yes
_JAVA_OS_LIST_REGEXP=native\|linux
OSVERSION=1100122
---End Environment---

---Begin OPTIONS List---
---End OPTIONS List---

--CONFIGURE_ARGS--
--with-xmlrpc  --with-libxml-dir=/usr/local  --with-iconv-dir=/usr/local --with-php-config=/usr/local/bin/php-config --prefix=/usr/local ${_LATE_CONFIGURE_ARGS}
--End CONFIGURE_ARGS--

--CONFIGURE_ENV--
XDG_DATA_HOME=/wrkdirs/usr/ports/net/php70-xmlrpc/work  XDG_CONFIG_HOME=/wrkdirs/usr/ports/net/php70-xmlrpc/work  HOME=/wrkdirs/usr/ports/net/php70-xmlrpc/work TMPDIR="/tmp" SHELL=/bin/sh CONFIG_SHELL=/bin/sh  AUTOCONF=/usr/local/bin/autoconf-2.69  AUTOCONF_DIR=/usr/local/share/autoconf-2.69  AUTOHEADER=/usr/local/bin/autoheader-2.69  AUTOIFNAMES=/usr/local/bin/ifnames-2.69  AUTOM4TE=/usr/local/bin/autom4te-2.69  AUTORECONF=/usr/local/bin/autoreconf-2.69  AUTOSCAN=/usr/local/bin/autoscan-2.69  AUTOUPDATE=/usr/local/bin/autoupdate-2.69  AUTOCONF_VERSION=2.69 CONFIG_SITE=/usr/ports/Templates/config.site lt_cv_sys_max_cmd_len=262144
--End CONFIGURE_ENV--

--MAKE_ENV--
XDG_DATA_HOME=/wrkdirs/usr/ports/net/php70-xmlrpc/work  XDG_CONFIG_HOME=/wrkdirs/usr/ports/net/php70-xmlrpc/work  HOME=/wrkdirs/usr/ports/net/php70-xmlrpc/work TMPDIR="/tmp" NO_PIE=yes MK_DEBUG_FILES=no MK_KERNEL_SYMBOLS=no SHELL=/bin/sh NO_LINT=YES  AUTOCONF=/usr/local/bin/autoconf-2.69  AUTOCONF_DIR=/usr/local/share/autoconf-2.69  AUTOHEADER=/usr/local/bin/autoheader-2.69  AUTOIFNAMES=/usr/local/bin/ifnames-2.69  AUTOM4TE=/usr/local/bin/autom4te-2.69  AUTORECONF=/usr/local/bin/autoreconf-2.69  AUTOSCAN=/usr/local/bin/autoscan-2.69  AUTOUPDATE=/usr/local/bin/autoupdate-2.69  AUTOCONF_VERSION=2.69 PREFIX=/usr/local  LOCALBASE=/usr/local  LIBDIR="/usr/lib"  CC="cc" CFLAGS="-O2 -pipe  -fstack-protector -fno-strict-aliasing"  CPP="cpp" CPPFLAGS=""  LDFLAGS=" -fstack-protector" LIBS=""  CXX="c++" CXXFLAGS="-O2 -pipe -fstack-protector -fno-strict-aliasing "  MANPREFIX="/usr/local" BSD_INSTALL_PROGRAM="install  -s -m 555"  BSD_INSTALL_LIB="install  -s -m 444"  BSD_INSTALL_SCRIPT="install  -m 555"  BSD_INSTALL_DATA="install  -m 0644"  BSD_INSTALL_MAN="install  -m 444"
--End MAKE_ENV--

--PLIST_SUB--
PHP_EXT_DIR=20151012
GTK2_VERSION="2.10.0"
GTK3_VERSION="3.0.0"
OSREL=11.0
PREFIX=%D
LOCALBASE=/usr/local
RESETPREFIX=/usr/local
PORTDOCS="@comment
"
PORTEXAMPLES=""
LIB32DIR=lib
DOCSDIR="share/doc/php70"
EXAMPLESDIR="share/examples/php70"
DATADIR="share/php70"
WWWDIR="www/php70"
ETCDIR="etc/php70"
--End PLIST_SUB--

--SUB_LIST--
PHP_EXT_DIR=20151012
PREFIX=/usr/local
LOCALBASE=/usr/local
DATADIR=/usr/local/share/php70
DOCSDIR=/usr/local/share/doc/php70
EXAMPLESDIR=/usr/local/share/examples/php70
WWWDIR=/usr/local/www/php70
ETCDIR=/usr/local/etc/php70
--End SUB_LIST--

---Begin make.conf---
USE_PACKAGE_DEPENDS=yes
BATCH=yes
WRKDIRPREFIX=/wrkdirs
PORTSDIR=/usr/ports
PACKAGES=/packages
DISTDIR=/distfiles
#### /usr/local/etc/poudriere.d/11_0-amd64-2016Q4-php70-mariadb101-make.conf ####
WITH_PKGNG=yes
INSTALL_NODEBUG="yes"
A4=yes
WITH_UTF8=yes
WITHOUT_X11=yes
WITHOUT_X=yes
OPTIONS_UNSET=X11

NO_PROFILE=true


#APACHE_PORT=www/apache24
DEFAULT_VERSIONS=php=7.0 mysql=10.1m apache=2.4 ruby=2.3 pgsql=9.5 perl5=5.24 python=2.7

# deprecated:
NOPORTDOCS=yes
OPTIONS_UNSET=DOCS

#SUEXEC_DOCROOT=/home
#SUEXEC_UIDMIN=80
#SUEXEC_GIDMIN=80

DISABLE_MAKE_JOBS=poudriere
---End make.conf---
=======================<phase: check-sanity   >============================
/!\ WARNING /!\
You are using the following deprecated options: NOPORTDOCS
If you added them on the command line, you should replace them by
WITH="" WITHOUT="DOCS"

If they are global options set in your make.conf, you should replace them with:
OPTIONS_UNSET=DOCS

If they are local to this port, you should use:
net_php70-xmlrpc_UNSET=DOCS

===>  License PHP301 accepted by the user
===========================================================================
=======================<phase: pkg-depends    >============================
===>   php70-xmlrpc-7.0.13 depends on file: /usr/local/sbin/pkg - not found
===>   Installing existing package /packages/All/pkg-1.8.8.txz
[11_0-amd64-2016Q4-php70-mariadb101-job-03] Installing pkg-1.8.8...
[11_0-amd64-2016Q4-php70-mariadb101-job-03] Extracting pkg-1.8.8: .......... done
===>   php70-xmlrpc-7.0.13 depends on file: /usr/local/sbin/pkg - found
===>   Returning to build of php70-xmlrpc-7.0.13
===========================================================================
=======================<phase: fetch-depends  >============================
===========================================================================
=======================<phase: fetch          >============================
/!\ WARNING /!\
You are using the following deprecated options: NOPORTDOCS
If you added them on the command line, you should replace them by
WITH="" WITHOUT="DOCS"

If they are global options set in your make.conf, you should replace them with:
OPTIONS_UNSET=DOCS

If they are local to this port, you should use:
net_php70-xmlrpc_UNSET=DOCS

===>  License PHP301 accepted by the user
===> Fetching all distfiles required by php70-xmlrpc-7.0.13 for building
===========================================================================
=======================<phase: checksum       >============================
/!\ WARNING /!\
You are using the following deprecated options: NOPORTDOCS
If you added them on the command line, you should replace them by
WITH="" WITHOUT="DOCS"

If they are global options set in your make.conf, you should replace them with:
OPTIONS_UNSET=DOCS

If they are local to this port, you should use:
net_php70-xmlrpc_UNSET=DOCS

===>  License PHP301 accepted by the user
===> Fetching all distfiles required by php70-xmlrpc-7.0.13 for building
=> SHA256 Checksum OK for php-7.0.13.tar.xz.
===========================================================================
=======================<phase: extract-depends>============================
===========================================================================
=======================<phase: extract        >============================
/!\ WARNING /!\
You are using the following deprecated options: NOPORTDOCS
If you added them on the command line, you should replace them by
WITH="" WITHOUT="DOCS"

If they are global options set in your make.conf, you should replace them with:
OPTIONS_UNSET=DOCS

If they are local to this port, you should use:
net_php70-xmlrpc_UNSET=DOCS

===>  License PHP301 accepted by the user
===> Fetching all distfiles required by php70-xmlrpc-7.0.13 for building
===>  Extracting for php70-xmlrpc-7.0.13
=> SHA256 Checksum OK for php-7.0.13.tar.xz.
===========================================================================
=======================<phase: patch-depends  >============================
===========================================================================
=======================<phase: patch          >============================
===>  Patching for php70-xmlrpc-7.0.13
===>  Applying FreeBSD patches for php70-xmlrpc-7.0.13
===========================================================================
=======================<phase: build-depends  >============================
===>   php70-xmlrpc-7.0.13 depends on file: /usr/local/bin/phpize - not found
===>   Installing existing package /packages/All/php70-7.0.13.txz
[11_0-amd64-2016Q4-php70-mariadb101-job-03] Installing php70-7.0.13...
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Installing libxml2-2.9.4...
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Extracting libxml2-2.9.4: .......... done
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Installing pcre-8.39...
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Extracting pcre-8.39: .......... done
[11_0-amd64-2016Q4-php70-mariadb101-job-03] Extracting php70-7.0.13: .......... done
===>   php70-xmlrpc-7.0.13 depends on file: /usr/local/bin/phpize - found
===>   Returning to build of php70-xmlrpc-7.0.13
===>   php70-xmlrpc-7.0.13 depends on file: /usr/local/bin/autoconf-2.69 - not found
===>   Installing existing package /packages/All/autoconf-2.69_1.txz
[11_0-amd64-2016Q4-php70-mariadb101-job-03] Installing autoconf-2.69_1...
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Installing indexinfo-0.2.5...
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Extracting indexinfo-0.2.5: .... done
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Installing autoconf-wrapper-20131203...
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Extracting autoconf-wrapper-20131203: ........ done
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Installing perl5-5.24.1.r4...
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Extracting perl5-5.24.1.r4: .......... done
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Installing m4-1.4.17_1,1...
[11_0-amd64-2016Q4-php70-mariadb101-job-03] `-- Extracting m4-1.4.17_1,1: .......... done
[11_0-amd64-2016Q4-php70-mariadb101-job-03] Extracting autoconf-2.69_1: .......... done
Message from perl5-5.24.1.r4:
The /usr/bin/perl symlink has been removed starting with Perl 5.20.
For shebangs, you should either use:

#!/usr/local/bin/perl

or

#!/usr/bin/env perl

The first one will only work if you have a /usr/local/bin/perl,
the second will work as long as perl is in PATH.
===>   php70-xmlrpc-7.0.13 depends on file: /usr/local/bin/autoconf-2.69 - found
===>   Returning to build of php70-xmlrpc-7.0.13
===>   php70-xmlrpc-7.0.13 depends on file: /usr/local/lib/php/20151012/xml.so - not found
===>   Installing existing package /packages/All/php70-xml-7.0.13.txz
[11_0-amd64-2016Q4-php70-mariadb101-job-03] Installing php70-xml-7.0.13...
[11_0-amd64-2016Q4-php70-mariadb101-job-03] Extracting php70-xml-7.0.13: ........ done
Message from php70-xml-7.0.13:
****************************************************************************

The following line has been added to your /usr/local/etc/php/ext-20-xml.ini
configuration file to automatically load the installed extension:

extension=xml.so

****************************************************************************
===>   php70-xmlrpc-7.0.13 depends on file: /usr/local/lib/php/20151012/xml.so - not found
*** Error code 1

Stop.
make: stopped in /usr/ports/net/php70-xmlrpc
====>> Cleaning up wrkdir
===>  Cleaning for php70-xmlrpc-7.0.13
build of net/php70-xmlrpc ended at Sun Nov 27 01:47:37 CET 2016
build time: 00:00:51
!!! build failure encountered !!!


because the path is somewhat different if you have ZTS enabled.

root@bsd1-build-prod:/usr/local/poudriere/data/packages/11_0-amd64-2016Q4-php70-mariadb101/All # tar -Jtvf php70-xml-7.0.13.txz
-rw-r--r--  0 root   wheel    1348 Jan  1  1970 +COMPACT_MANIFEST
-rw-r--r--  0 root   wheel    2670 Jan  1  1970 +MANIFEST
-rw-r--r--  0 root   wheel     185 Nov 27 00:45 /usr/local/share/licenses/php70-xml-7.0.13/catalog.mk
-rw-r--r--  0 root   wheel      70 Nov 27 00:45 /usr/local/share/licenses/php70-xml-7.0.13/LICENSE
-rw-r--r--  0 root   wheel    3218 Nov 27 00:45 /usr/local/share/licenses/php70-xml-7.0.13/PHP301
-r--r--r--  0 root   wheel   52664 Nov 27 00:45 /usr/local/lib/php/20151012-zts/xml.so
-rw-r--r--  0 root   wheel    4640 Nov 27 00:45 /usr/local/include/php/ext/xml/php_xml.h
-rw-r--r--  0 root   wheel     313 Nov 27 00:45 /usr/local/include/php/ext/xml/config.h
-rw-r--r--  0 root   wheel    6493 Nov 27 00:45 /usr/local/include/php/ext/xml/expat_compat.h
-rw-r--r--  0 root   wheel      17 Nov 27 00:45 /usr/local/etc/php/ext-20-xml.ini


I think this has happened before, but I can't remember what fixed it.
Comment 2 Kubilay Kocak freebsd_committer freebsd_triage 2016-11-30 09:54:14 UTC
@Rainer, Using "category/port:" in this case "lang/php70:" at the beginning of a Summary/Title when creating a new issue ensures that it gets assigned to the correct MAINTAINER automatically.

Please also include long bodies of text (like build or error logs, configuration files, etc) as attachments instead of pasting them as comments, as it makes the issue much easier to follow.
Comment 3 rainer 2016-11-30 10:51:50 UTC
I'm really sorry.
I hit "return" too early and the PR was nearly empty.
Then, I was a bit in a hurry to fill it with actual data...
Comment 4 Torsten Zuehlsdorff freebsd_committer freebsd_triage 2016-12-01 15:11:16 UTC
Thanks for the report, i will have a look at it!
Comment 5 rainer 2016-12-06 11:19:34 UTC
Also found this:

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=214979
Comment 6 O. Hartmann 2016-12-06 14:49:35 UTC
See also Bug 214979 for lang/php56. It seems to be the same issue when used with poudriere.
Comment 7 O. Hartmann 2016-12-06 14:51:10 UTC
Ups, sorry, didn't see that some has already referenced the PR I filed.

The problem occurs in my case when ports are build via poudriere. Building ports manually do not show the incident.
Comment 8 rainer 2016-12-09 16:52:30 UTC
Was not fixed by recent update to 7.0.14.
Unfortunately.

Alternatively, somebody tell me if I can stop using the ZTS option when I'm using PHP-FPM (which I do, exclusively).
Documentation about when the ZTS-option is needed is very scarce.
Comment 9 rainer 2016-12-20 21:59:06 UTC
I found a solution for this (it's mentioned in bsd.php.mk)

One needs to add WITH_MPM=event
to the make.conf file of the build.

Then it works.

Maybe this can somehow be added to the port itself?
Comment 10 Torsten Zuehlsdorff freebsd_committer freebsd_triage 2016-12-21 08:32:35 UTC
(In reply to rainer from comment #9)

> I found a solution for this (it's mentioned in bsd.php.mk)

And i found the exact same solution 1 hour ago and was so happy. Now you were faster. :D

But i will take your suggestion and add a notice to the port. Nobody should need to dig into the framework code to find the answer.
Comment 11 rainer 2016-12-21 08:44:53 UTC
It's mentioned here:

https://github.com/miwi-fbsd/miwi-ports/issues/7

(bottom).

I knew I had seen it before. But I didn't need the option with Apache 2.2.
With Apache 2.2 being on the way out, I finally needed to switch to Apache 2.4...

Thanks for maintaining the php7 port.
Comment 12 Torsten Zuehlsdorff freebsd_committer freebsd_triage 2016-12-21 08:48:45 UTC
Interesting, i grepped it from here:
http://svn.freebsd.org/ports/head/Mk/Uses/php.mk

Will add a message today, so hopefully the confusion goes away. :) Thanks for your help!
Comment 13 commit-hook freebsd_committer freebsd_triage 2016-12-21 10:11:43 UTC
A commit references this bug:

Author: tz
Date: Wed Dec 21 10:10:58 UTC 2016
New revision: 429051
URL: https://svnweb.freebsd.org/changeset/ports/429051

Log:
  lang/php70: add notice for poudriere build when ZTS is enabled

  Without adding WITH_MPM=event into make.conf the build will fail
  when using poudriere. This is currently documentend in /Mk/Uses/php.mk.
  Since users do not investigate the framework code, we add the
  notice to avoid future confusion.

  PR:          214943
  Reported by: rainer@ultra-secure.de, ohartmann@walstatt.org
  Approved by: mentors (implicit)

Changes:
  head/lang/php70/pkg-message.mod
Comment 14 Torsten Zuehlsdorff freebsd_committer freebsd_triage 2016-12-21 10:13:47 UTC
Message committed, thanks for your help! :)