Re: keeping old php74 in poudriere

From: Miroslav Lachman <000.fbsd_at_quip.cz>
Date: Tue, 21 Feb 2023 19:24:52 UTC
On 21/02/2023 19:16, void wrote:

> basically i need to keep php74 and all the extensions for a machine
> I have to look after. Would the correct approach be to use an overlay?
> If this is the correct approach, do I need to:
> 
> 1. make a ports tree that has php74 etc in it, such as 2202Q4, and then:
> 
> [a] remove the whole tree apart from the relevant ports
> [b] as [a] but also remove things at the top level like Mk/*
> [c] keep the whole 2022Q4 tree, and use that as the overlay.
> [d] if [c] then how would the overlay be referenced? From the top of the 
> tree, or does there need to be one overlay for each port?
> 
> 2. not use an overlay but to use some other method?

It depends on how long you will to support it and if you just want to 
build fixes for vulnerable ports or you want to have everything new 
except PHP 7.4.
I needed to keep PHP 5.6 in the past so I forked the latest ports tree 
with PHP 5.6 and merged fixes for individual ports from time to time 
(like newer version of Apache, fixed version of cURL etc.). This works 
well for a relatively long time.

If you need everything new and just an old PHP 7.4, you can use 
overlays. Overlay directory will contain only the ports you want to add 
(and probably Mk/bsd.default-versions.mk + Mk/Uses/php.mk

The overlay directory must be registered ports tree in poudriere so 
created it with command

   poudriere ports -c -p php74_overlay -f /poudriere/ports/php74_overlay 
-m null

Then you will need to copy each port (PHP extension) you want to keep 
building, eg.:

archivers/php74-phar
archivers/php74-zip
converters/php74-iconv
converters/php74-mbstring
databases/php74-mysqli
databases/php74-pdo
databases/php74-pdo_mysql
devel/php-composer2
devel/php74-gettext
devel/php74-intl
devel/php74-readline
devel/php74-tokenizer
ftp/php74-curl
ftp/php74-ftp
lang/php74
mail/php74-imap
net/php74-sockets
security/pecl-mcrypt
security/pecl-ssh2
www/php74-opcache
www/php74-session

Then you can bulk build everything you have listed in "php74" (you can 
name the file different).
Use you correct names for -j, -z and -p.

This will work in my environment where jail is named 12_3_amd64 and 
ports tree is current quarterly ~ 2023Q1
   poudriere bulk -j 12_3_amd64 -z php74 -p 2023Q1 -f 
/usr/local/etc/poudriere.d/pkglists/php74 -O php74_overlay

I didn't tested this setup with PHP 7.4 but used something like this 
with different version of PHP 8.1 than what was in ports tree.

Kind regards
Miroslav Lachman