Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Feb 2017 19:19:09 +0100
From:      Tijl Coosemans <tijl@FreeBSD.org>
To:        "Mikhail T." <mi+thun@aldan.algebra.com>
Cc:        Mathieu Arnold <mat@FreeBSD.org>, Jan Beich <jbeich@freebsd.org>, ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   Re: Misuse of PORTREVISION (Re: svn commit: r434379 - head/multimedia/x265)
Message-ID:  <20170221191909.1639f628@kalimero.tijl.coosemans.org>
In-Reply-To: <17b5afa1-c0b4-a79e-aea1-d0ae918469e8@aldan.algebra.com>
References:  <20170218210541.82AA915F6@freefall.freebsd.org> <f23cecfc-d669-e62b-1916-1e16e66fb3eb@aldan.algebra.com> <a9be8749-360f-15fb-aa75-93a378371c51@FreeBSD.org> <d5e81c35-41fe-4f5c-4f45-e069d93ce911@aldan.algebra.com> <fee7b990-45db-1e52-22d8-fb1b21e9c030@FreeBSD.org> <17b5afa1-c0b4-a79e-aea1-d0ae918469e8@aldan.algebra.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 21 Feb 2017 11:24:07 -0500 "Mikhail T." <mi+thun@aldan.algebra.com> wrote:
> On 21.02.2017 11:16, Mathieu Arnold wrote:
>> When using poudriere, you do not need to bump PORTREVISION, it will
>> rebuild everything that needs rebuilding, and then, when you run pkg
>> upgrade, pkg will force the reinstallation of packages because a
>> dependencing shlib version was changed.  
> I thought so, thanks for the confirmation.
>> Like I said, the problem is only with portmaster and portupgrade, not
>> all our tools. I have used poudriere + pkg upgrade exclusively for 3+
>> years, and never had a problem shlib version changes.  
> Why then is the bumping of PORTREVISION still mandatory? We are 
> pessimizing things for the users of correctly-functioning tools to help 
> those using the broken ones. And ensure, the broken tools will never be 
> fixed all along.

We do still support regular "make install clean" right?  Doing a
PORTREVISION bump is the way we inform users to rebuild that port.
Without that they would have to look for library version changes all the
time.

The ports tree is a layer around upstream build systems.  If we're going
to require additional layers like poudriere to actually use the ports
tree, then the ports tree is a failure or at least lacking functionality.

Poudriere does not rebuild everything that needs to be rebuilt by the way.
It just always rebuilds everything, full stop.

The only proper way (imho) to avoid PORTREVISION bumps on dependent ports
is to put rebuild signals in the port Makefile, perhaps like this:

VERSION=0
AGE=0

On every backwards compatible update, increment both VERSION and AGE.
On every incompatible update, increment VERSION and set AGE=0.

A package that depends on a version older than VERSION-AGE needs to be
rebuilt.

This can be refined further:
(This is how libtool deals with library versions.)

VERSION=0
AGE=0
REVISION=0

On every minor update that does not add new functionality that dependent
ports would have to be rebuilt for to use it, increment REVISION.
On every backwards compatible update that adds new functionality that
dependent ports need to be rebuilt for to use it, increment VERSION and
AGE and set REVISION=0.
On every incompatible update, increment VERSION and set AGE=0 and
REVISION=0.

A package that depends on a version older than VERSION-AGE needs to be
rebuilt.
A package that depends on a version older than VERSION may be rebuilt
to pick up new functionality.

Poudriere could also use such information to be a bit smarter about what
it rebuilds.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170221191909.1639f628>