Date: Fri, 03 Mar 2017 08:00:19 +0100 From: Harry Schmalzbauer <freebsd@omnilan.de> To: Mathieu Arnold <mat@FreeBSD.org> Cc: perl@FreeBSD.org Subject: Re: PERL5_DEFAULT != PERL5_DEFAULT depending on 'pwd' Message-ID: <58B91483.6030701@omnilan.de> In-Reply-To: <b49a7df6-9de0-456e-3007-34e6d1ec6c4f@FreeBSD.org> References: <58B864BC.1020501@omnilan.de> <58B86D2E.3070108@omnilan.de> <b49a7df6-9de0-456e-3007-34e6d1ec6c4f@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Bezüglich Mathieu Arnold's Nachricht vom 03.03.2017 00:15 (localtime): > Le 02/03/2017 à 20:06, Harry Schmalzbauer a écrit : >> Bezüglich Harry Schmalzbauer's Nachricht vom 02.03.2017 19:30 (localtime): >>> hello, >>> >>> currently I'm trying to track the following problem: >>> >>> : cd /usr/ports/print/texinfo && make -VPERL5_DEFAULT >>> 5.24 >>> >>> : cd /usr/ports/lang/perl5.24/ && make -VPERL5_DEFAULT >>> 5.20 >>> >>> ??? >>> Any hints? >> direct caus was the file /tmp/PERL5_DEFAULT, which contained >> PERL5_DEFAULT=5.20. >> >> But I have absolutely no idea why/how this was created and why it only >> affects when pwd=lang/perl5.?? >> >> Still investigating.... > > TL;DR: You can remove that file. > > The idea is that if you add to your make.conf > DEFAULT_VERSIONS=perl5=5.22, install lang/perl5.22, and then remove > DEFAULT_VERSIONS, Perl 5.22 will still be the default, because it is the > installed version, and not 5.24 that is defined as the default in > bsd.default-versions.mk. Thank you very much for your explanation. I've had a quick look into bsd.default-versions.mk and found $_PERL5_FROM_BIN, so the above is clear. > Now, if you upgrade lang/perl5.22 from ports, either manually, or with > tools like portupgrade or portmaster, at one point, it removes the old > version, and installs the new one. The problem is that when the old > version has been removed, the default Perl version reverts back to 5.24, > and when lang/perl5.22 is installed again, it installs itself as a non > default version (which, for example, will not install > /usr/local/bin/perl) and you end up with a broken system. To mitigate > that problem, during the build, all lang/perl5.* ports store the current > default version, and use that stored value when installing, so that it > does not change mid-flight. Now I know what it is good for :-) To my environment: It's a plain building jail. I haven't defined any PER5_VER(SION), it gets just installed as build-depends. The dependency-installation (and removal) is probably done multiple times (during batch package building). So if I consider your last scenario, 'make deinstall' would be the target where /tmp/PERL5_DEFAULT could be created. But I think 'make (post-)install' can/should/must remove it, which didn't happen in my case. That seems to be a problem, because /tmp/PERL5_DEFAULT doesn't affect any other dependency-check outside lang/perl5.??. Not to mention "daily_clean_tmps_enable=yes" or md-backed /tmp... I haven't figured out which port insisted on 5.20. Like mentioned I haven't set any PERL5-related demand, so PERL5_DEFAULT=5.20 shouldn't have appeared anywhere. Unfortunately I don't have time to reproduce and figure out what's happening in which order to run into that dependency inconsitency. But I guess removing /tmp/PERL5_DEFAULT is the real fix. Thanks, -harry
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?58B91483.6030701>