From owner-svn-ports-all@freebsd.org Tue Feb 21 18:19:24 2017 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 458B6CE8CA0; Tue, 21 Feb 2017 18:19:24 +0000 (UTC) (envelope-from tijl@freebsd.org) Received: from mailrelay110.isp.belgacom.be (mailrelay110.isp.belgacom.be [195.238.20.137]) (using TLSv1.2 with cipher RC4-SHA (128/128 bits)) (Client CN "relay.skynet.be", Issuer "GlobalSign Organization Validation CA - SHA256 - G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B58C911B9; Tue, 21 Feb 2017 18:19:20 +0000 (UTC) (envelope-from tijl@freebsd.org) X-Belgacom-Dynamic: yes X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2DoCQA7hKxY/0nD8VFeHAEBBAEBCgEBg?= =?us-ascii?q?1FRgRmOVZEkKQGSe4IPgg2GIgKCb0IWAQIBAQEBAQEBYiiEcQEFOhwjEAsYCSU?= =?us-ascii?q?PKh4GE4lysQiLPQEBAQEBAQQBAQEBASOLO4o5BZwLh3CKInaBEo8UiDWKcCYJK?= =?us-ascii?q?IEANCwIhQgdgWI/NYo6AQEB?= X-IPAS-Result: =?us-ascii?q?A2DoCQA7hKxY/0nD8VFeHAEBBAEBCgEBg1FRgRmOVZEkKQG?= =?us-ascii?q?Se4IPgg2GIgKCb0IWAQIBAQEBAQEBYiiEcQEFOhwjEAsYCSUPKh4GE4lysQiLP?= =?us-ascii?q?QEBAQEBAQQBAQEBASOLO4o5BZwLh3CKInaBEo8UiDWKcCYJKIEANCwIhQgdgWI?= =?us-ascii?q?/NYo6AQEB?= Received: from 73.195-241-81.adsl-dyn.isp.belgacom.be (HELO kalimero.tijl.coosemans.org) ([81.241.195.73]) by relay.skynet.be with ESMTP; 21 Feb 2017 19:19:12 +0100 Received: from kalimero.tijl.coosemans.org (kalimero.tijl.coosemans.org [127.0.0.1]) by kalimero.tijl.coosemans.org (8.15.2/8.15.2) with ESMTP id v1LIJ99b022069; Tue, 21 Feb 2017 19:19:10 +0100 (CET) (envelope-from tijl@FreeBSD.org) Date: Tue, 21 Feb 2017 19:19:09 +0100 From: Tijl Coosemans To: "Mikhail T." Cc: Mathieu Arnold , Jan Beich , 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> <17b5afa1-c0b4-a79e-aea1-d0ae918469e8@aldan.algebra.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Feb 2017 18:19:24 -0000 On Tue, 21 Feb 2017 11:24:07 -0500 "Mikhail T." 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.