"portmaster -r perl" rebuild almost everything, including apache24, php53 etc.

Kevin Oberman rkoberman at gmail.com
Sat Jun 22 23:32:34 UTC 2013

On Sat, Jun 22, 2013 at 2:32 AM, Miroslav Lachman <000.fbsd at quip.cz> wrote:

> Lev Serebryakov wrote:
>> Hello, Boris.
>> You wrote 22 июня 2013 г., 12:32:29:
>>     Is it ok?
>>> BS>  Technically "portmaster -r perl" rebuild all that depends on perl.
>> BS>  So you get what you asked for.
>> BS>  Should almost whole ports be rebuilded at a minor perl upgrade is
>> BS>  another question. And I think that the most resent change in perl
>>    I'm surprised, that so many ports, which doesn't contain any perl
>>   code after build (like apache24 and php) depends on perl in runtime.
>>   Why? I understand, why all p5-* or nod_perl should be rebuild, but
>>   why php53 should!? For example, php53 doesn't contains perl
>>   dependency directly. Ok, it depend on apache24 in my configuration,
>>   let see at apache24. It has USE_PERL5=yes. Let check, does it need it
>>   at runtime.
>> % cd /usr/ports/www/apache24
>> % grep \\.pm pkg-plist
>> % pkg info -lg apache\* | grep -E '/usr/local/(bin|sbin|lib|**libexec)'
>> | xargs ldd | grep perl
>> ldd: /usr/local/libexec/apache22/**httpd.exp: not a dynamic executable
>> ldd: /usr/local/sbin/apachectl: not a dynamic executable
>> ldd: /usr/local/sbin/apxs: not a dynamic executable
>> ldd: /usr/local/sbin/dbmmanage: not a dynamic executable
>> ldd: /usr/local/sbin/envvars: not a dynamic executable
>> ldd: /usr/local/sbin/split-logfile: not a dynamic executable
>> % grep perl /usr/local/sbin/apachectl /usr/local/sbin/apxs
>> /usr/local/sbin/dbmmanage /usr/local/sbin/envvars
>> /usr/local/sbin/split-logfile
>> /usr/local/sbin/apxs:#!/usr/**bin/perl -w
>> /usr/local/sbin/apxs:
>> # perl variable.
>> /usr/local/sbin/dbmmanage:#!/**usr/bin/perl
>> /usr/local/sbin/dbmmanage:# http://www.perl.com/CPAN/**
>> modules/by-module/HTTPD/HTTPD-**Tools-x.xx.tar.gz<http://www.perl.com/CPAN/modules/by-module/HTTPD/HTTPD-Tools-x.xx.tar.gz>
>> /usr/local/sbin/split-logfile:**#!/usr/bin/perl
>> %
>>   Ok, apache24 need perl for its scripts and only for scripts, not for
>> perl modules! Should we rebuild it on perl upgrade? I don't think so.
>> Should we rebuild php53, which doesn't depends on these scripts, on
>> perl upgrade? I'm sure, we shouldn't. Should we rebuild phpMyAdmin or
>> Roundcube, pure-php software on perl upgrade!? IT IS MADNESS!
> It is an issue for a long time and can be partially fixed by
> EXPLICIT_PACKAGE_DEPENDS=true in make.conf
> Then you will have recorded direct depencencies only.
> Miroslav Lachman

The problem is that many ports that contain no perl are dependent on
another port that DOES require perl. And '-r' catches all of them.
EXPLICIT_PACKAGE_DEPENDS=true results in only recording immediate
dependencies,but has negative impacts in that rebuilds in cases when you
suspect some dependency needs fixing, it may well not be found any more.

For perl I routinely recommend "portmaster p5-" to catch almost everything
and then examining /usr/local/lib/perl5/site_perl for the old version to
catch what is left. It is not hard to create a perl module that adds some
different directory to @INC, but that is considered bad form.

For shareable library version bumps, "pkg_libchk -o" can be used to find
explicit dependencies so you can just rebuild these. I've posted details to
this list several times. Google "oberman png pkg_libchk"
R. Kevin Oberman, Network Engineer
E-mail: rkoberman at gmail.com

More information about the freebsd-ports mailing list