Recent Mk/ changes (r320679)

Jeremy Chadwick jdc at
Wed Jun 26 06:12:35 UTC 2013

On Wed, Jun 26, 2013 at 09:42:37AM +0400, Andrej Zverev wrote:
> Hello, and first please accept my apologies for this situation.

Understood, I just hope this can get addressed/fixed sooner than later,
because what we have right now is reproducible breakage.  :-)

> > 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
> As I know we are never supported mixing of ports and packages.
> If you initially installed something from package and decide to use
> ports in this case better to rebuild all or stay with packages.

And here is where you are sadly mistaken.  While I cannot find any sort
of official statement on the "mixing of the two", the fact of the matter
is (and possibly you did not know this -- I'm not sure) that packages
are built **from** ports ("make package" does the magic).  This is
confirmed as well:

Please be aware when I say "package" I am talking about the .tbz balls
utilised by the base system's pkg_* tools (not pkg(8)) and used by the
OS installer and so on.  For pkg(8) I believe poudriere is used to make
the packages.  I don't use/can't speak about pkg(8) et al.

For both pkg_* tools and ports, both use the same default base path
(/usr/local), **and** both register their bits in /var/db/pkg.

Package installation does not utilise any part of the ports/Mk/*
framework, but that isn't anything new -- it's been like that since at
least the 2.2.x days, possibly earlier.

So in summary, when making changes to ports/Mk/*, you really have to
think about the combination of the two, and make sure you don't break
anything when changing key pieces of those framework bits.

> > 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?
> I don't want to start yet another bikeshed here. Maybe link above will
> make some things more clear to you.

Thanks -- I wasn't aware of the freebsd-perl mailing list.

I just finished reading the entire thread.  The justification seems to
be "because Fedora and Debian do it" (that's the best I can find).
Okay, fine/great/whatever -- I guess that's a form of justification,
just not one I was hoping for.  I won't dwell on this at this point -- I
got the answer I was looking for.

I see no actual harm in moving to major.minor, but the issue here is
that backwards compatibility in Mk/ for existing perl

Many people, for example, do not want to build from source -- so
they pkg_add -r X, then build other bits/pieces related to X from
ports/source.  Even more people do this for OpenOffice/LibreOffice or
whatever it's called today ( :-) ).

This "combination" needs to be supported.  I know it hurts to have to
retain backwards compatibility, but it's necessary given how all of this
was designed.

Such backwards compatibility could be removed, as I said, once
sufficient time has passed, particularly once the FreeBSD versions
shipping with a ports tree snapshot with perl versions older than those
in r320679 have been EOL'd.  After that you could remove the framework
and cite EOL on such support.  This is normal too -- for example on
occasion FreeBSD [67].x people show up on -ports and complain that
something won't build/some part of the Mk/* framework is broken for
them, and EOL is the proper response to that.

I know this probably won't hold any ground because I'm not one any
longer, but I was a FreeBSD ports committer myself some years ago (~5),
so please don't think that I'm just flying off the handle without some
existing familiarity with things.

If there is truly going to be a "split" between ports and packages
in this way, then someone needs to start doing SVN tagging/branches
for major changes like this.

| Jeremy Chadwick                                   jdc at |
| UNIX Systems Administrator       |
| Making life hard for others since 1977.             PGP 4BD6C0CB |

More information about the freebsd-ports mailing list