Subject: Re: When has a binary package changed?
To: None <joerg@britannica.bec.de>
From: Todd Vierling <tv@duh.org>
List: tech-pkg
Date: 11/17/2005 12:23:16
On Thu, 17 Nov 2005, joerg@britannica.bec.de wrote:

> > In which cases do we consider a binary package to be changed?
>
> When the content or the behaviour of the binary package changed,
> the revision should be bumped. This includes the requirement that a
> binary package could be build before the change, or at least installed.

I would like to take it a slight step further.  Binary packages cannot
necessarily be built if the PLIST is wrong, but the package can still be
installed and registered (and thus be part of a DEPENDS) if built from
source.  This is a special, but not uncommon, case.

I think the definition can be made a little more general, while preserving
the intent of "don't bump it if you only made a platform build", by
rewording this as:

  PKGREVISION should be bumped when a package changes in a way that affects
  any installed file or OS-level change on any platform, where the package
  was previously installable from source on that platform; and when criteria
  for runtime dependencies change for dependents of that package.

I'm very careful not even to mention binary packages.  Binpkgs make changes
as a proper subset of the changes that happen when "make install" is done
from source.  So, the better superset to examine for the PKGREVISION
criterion is "make install", not a binpkg.

Some clarifying examples for this definition follow, which are my opinions
(and the rules I've lived by), but may be used for codifying a set of rules.
I have included a few important out-clauses below to cover our infrequent
pkgsrc infrastructure changes.

  * Changes to installed files include file contents and filesystem
    attributes (owner/mode), even if the file is autogenerated by a script
    and therefore not recorded in the PLIST.  If the installation and/or
    deinstallation process or script is changed in a way that is
    functionally identical to previous installations, a PKGREVISION bump is
    not required.

  * OS-level changes are scripts or @[un]exec directives that affect files
    and resources not controlled by pkgsrc.  For instance, /etc/shells is
    commonly modified by shell packages; and adding a user (or changing the
    default username of an added user) in a package changes the system user
    database.

  * Dependency changes occur when a DEPENDS changes in a package, or a
    BUILDLINK_DEPENDS or BUILDLINK_RECOMMENDED changes in a buildlink3 file
    directly included by a package.  Indirect buildlink3 inclusions are not
    covered, as they do not affect direct dependency information; and a bump
    is also not required if a BUILDLINK_DEPENDS is bumped such that it is
    still "less" than an also-present BUILDLINK_RECOMMENDED.

  * Infrastructure changes that affect packages in any of these ways also
    require bumps unless the cost of finding or bumping affected packages is
    considered too high versus the installed userbase.  For instance, the
    libtool shared library name change in 2004 did warrant a bump (via
    BUILDLINK_RECOMMENDED changes, which provided a user-specifiable
    workaround) -- however, no bump was done for a change to libtool
    affecting a hard-to-identify subset of shared libraries on Interix only.

-- 
-- Todd Vierling <tv@duh.org> <tv@pobox.com> <todd@vierling.name>