On 02/12/23 21:37, Michael Grimm wrote:
Hi,
I am following the git repository for ports and using poudriere to compile
those.
Today I stumbled over:
20231125:
AFFECTS: users of lang/php81
AUTHOR: b...@freebsd.org
The default version of PHP has been switched from 8.1 to 8.2.
[…]
I had had the following definition for default php version in my poudriere
make.conf:
DEFAULT_VERSIONS+= php=81 […]
Now, I *removed* 'php=81' from DEFAULT_VERSIONS and ended up with the following
errors from poudriere:
Warning: (local/wpm): Error: local/wpm depends on nonexistent origin
'lang/php8.2-extensions';
Please contact maintainer of the port to fix
this.
Warning: (mail/roundcube@php8.2): Error: Invalid FLAVOR 'php8.2' for
mail/roundcube
Error: Fatal errors encountered gathering ports metadata
Understandable to me because all relevant ports are named as 'php82'...
I do have that local port local/wpm defined as follows:
[…]
RUN_DEPENDS+= php${
}-extensions>0:${PORTSDIR}/lang/php${PHP_DEFAULT}-extensions
RUN_DEPENDS+=
roundcube-php${PHP_DEFAULT}>0:${PORTSDIR}/mail/roundcube@php${PHP_DEFAULT}
[…]
Adding 'DEFAULT_VERSIONS+= php=82 […]' to my poudriere make.conf resolves this
issue.
It looks like $PHP_DEFAULT in port definition without 'DEFAULT_VERSIONS+=
php=82' in make.conf translates to an erroneous 'php8.2' and runs into errors.
Whereas the explicit definition of 'DEFAULT_VERSIONS+= php=82' in make.conf is
resulting in a $PHP_DEFAULT translating to 'php82' which successfully compiles
those ports without complaints.
I really don't understand what I am doing wrong. And I would appreciate if
someone could explain it to me.
AFAIK to depend on php components younshould leverage USES=php, and
define the actual required modules in USE_PHP.
If your port only works with some PHP versions you should list the
unsupported ones in IGNORE_WITH_PHP.
Depending on php-extensions is not really good practice, since what is
actually installed by it depends on options. It really is just a
convenience metaport for final users.
Anyway PHP_DEFAULT is defined in the framework Makefiles, so to use that
variable you need to put it after ".include <bsd.port.pre.mk>". But I
don't think that's the best strategy, you'd be better off leveraging
USES=php and flavorizing your port, using PHP_VER.
Not many live examples in the ports tree, but maybe you can find some
inspiration in some of these Makefiles:
databases/pear-DoctrineDBAL/Makefile
devel/php-composer/Makefile
Hope this information helps.
--
Guido Falsi <m...@madpilot.net>