Recent Mk/bsd.perl.mk changes (r320679)

Jeremy Chadwick jdc at koitsu.org
Wed Jun 26 00:14:29 UTC 2013


(I am not subscribed to -ports so please keep me CC'd)

To the committers and reviewers of r320679:

http://svnweb.freebsd.org/ports?view=revision&revision=320679

The pathing change in bsd.perl.mk has broken things quite badly for
anyone who **does not** upgrade lang/perl* but chooses to upgrade a perl
module port (ex. p5-*) -- or even reinstall an existing one.  This
creates a very broken situation.  The issue is 100% reproducible;
simplest method:

pkg_add -r perl   (this will install perl-5.14.2_3.tbz)
svn up /usr/ports
cd /usr/ports/whatever/p5-whatever
make install
pkg_delete p5-whatever

What I'd like to know:

- Why the major.minor.patchlevel --> major.minor path change in the
first place.  I have never, ever seen this done anywhere on any *IX
system I've used.  Where's the justification?  Was this discussed on
some perl mailing list somewhere as a "new and better way"?  It's
essentially saying "x.y.z is always going to be compatible with x.y.z+1"
which is not true (particularly with XS, as I understand it).  Where
was this discussed publicly?

- Why bsd.perl.mk was changed how it was, i.e. why it didn't stick with
using the major.minor.patchlevel pathing scheme by default, and if one
of the newer perl versions was used (which would warrant the user having
to uninstall their perl, thus forced to rebuild/reinstall all their p5-*
stuff anyway), use the newer pathing scheme?  It could be dealt with
equivalently (pseudo-code per se) as:
  
	if ($PERL_VERSION =~ /^5\.12\.[5-9]/
	     or $PERL_VERSION =~ /^5\.14\.[4-9]/
	     or $PERL_VERSION =~ /^5\.16\.[3-9]/) {
		$use_newer_paths = 1;
	}
	else {
		$use_newer_paths = 0;
	}

The logic here could be modified (or inverted) if desired.  And this
framework would only have to be left in for a little while (maybe a few
years) until all the older FreeBSD versions had been officially EOL'd.
(Remember: those using EOL'd FreeBSD versions but with ports trees
updated past that EOL date are living dangerously, as no compatibility
is guaranteed -- this has come up many times on the lists, and even
somewhat recently).

You should have seen the look on my face when I went to update
p5-Mail-SpamAssassin (and nothing else) on my system and suddenly found
it shitting the bed, forcing me to "pkg_delete -af && rm -fr /usr/local"
and start over fresh due to leftover cruft populating /usr/local.

I say all this well aware of what ports/UPDATING said -- however the
instructions blindly make the assumption the person is building from
source or using pkg (not pkg_* tools).  The versions of perl on the
official package mirrors in Latest/ do not work properly with these
changes, and those are still packages which are **actively used**
during **present-day-supported** FreeBSD installations.  FreeBSD users
do expect to "pkg_add -r" something (which can also be done from the
installer on fresh installations), then install things from /usr/ports
with "make install"; this is normal and must be supported.

Something tells me this is one of those situations where if we still had
dougb@ he would have caught it in advance and yelled loudly.

-- 
| Jeremy Chadwick                                   jdc at koitsu.org |
| UNIX Systems Administrator                http://jdc.koitsu.org/ |
| Making life hard for others since 1977.             PGP 4BD6C0CB |



More information about the freebsd-ports mailing list