Re: lang/perl5.36: update procedure written in UPDATING is not enough

From: Kevin Oberman <rkoberman_at_gmail.com>
Date: Sun, 22 Oct 2023 04:12:28 UTC
On Sat, Oct 21, 2023 at 5:10 PM Tatsuki Makino <tatsuki_makino@hotmail.com>
wrote:

> Helge Oldach wrote on 2023/10/21 14:49:
> > portupgrade -f `pkg query %ro-%rv lang/perl5.28`
>
> In the case of portmaster, it is portmaster -r perl5- .
> Reinstalling everything listed in `pkg info -q -r perl5` like this is
> overkill.
> Perhaps that is why the method that used to be "portmaster -r perl5-"
> (20141126) is now using "portmaster -f `pkg shlib -qR libperl.so.5.26`".
>
> Most of *.pm files installed in /usr/local/lib/perl5/site_perl/mach/5.36/
> use DynaLoader, so most ports that install it have a library linked to
> libperl.so.5.36.
> So, those ports are targeted for updating as per the procedure.
>
> Ports that are not targeted for updating in this procedure, but need to be
> reinstalled, seem to create a file named .packlist in
> /usr/local/lib/perl5/site_perl/mach/5.36/ directory.
> Port like p5-Text-CSV-2.03 (textproc/p5-Text-CSV) is such ports.
>
> Reinstalling all p5-* ports is slight but overkill.
> Port like p5-SGMLSpm-1.03_2 (textproc/p5-SGMLSpm) is such ports.
> It doesn't seem to have a file that involves the old version number.
> The only reason it doesn't have a .packlist could be because it hasn't
> been reinstalled in a long time :)
>
> Since perl scripts are byte-compiled and then executed, there should be no
> problem if a file in a running script is replaced.
> The new file will be used from the next run.
>
> Regards.
>

I think portmaster has a bug. As per the man page, the behavior of '-f'
matches the behavior of '-R -f".  Actually, I'm unclear on what the purpose
'-f' is. If you run portmaster with no options on a port that is up to
date, it still reinstalls it and has for a very long time, maybe always.


-- 
Kevin Oberman, Part time kid herder and retired Network Engineer
E-mail: rkoberman@gmail.com
PGP Fingerprint: D03FB98AFA78E3B78C1694B318AB39EF1B055683