Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Sep 2000 02:15:39 +0200
From:      Neil Blakey-Milner <nbm@mithrandr.moria.org>
To:        Mark Ovens <marko@freebsd.org>
Cc:        Kris Kennaway <kris@freebsd.org>, David O'Brien <obrien@freebsd.org>, doc@freebsd.org, ben@FreeBSD.org
Subject:   Re: Guidelines for new port version variables
Message-ID:  <20000929021539.A98318@mithrandr.moria.org>
In-Reply-To: <20000928235603.C255@parish>; from marko@freebsd.org on Thu, Sep 28, 2000 at 11:56:03PM %2B0100
References:  <20000928120954.C89733@dragon.nuxi.com> <Pine.BSF.4.21.0009281414080.66918-100000@freefall.freebsd.org> <20000928235603.C255@parish>

next in thread | previous in thread | raw e-mail | index | archive | help

--mP3DRpeJDSE+ciuQ
Content-Type: text/plain; charset=us-ascii

On Thu 2000-09-28 (23:56), Mark Ovens wrote:
> > I need someone from the doc project to mark it up..I haven't heard
> > anything back however.
> > 
> 
> I'll do it. Please mail me a copy of the document that you are referring to.

Here's my quick-shot at it.

My brain isn't in docbook mode, so I probably misused or missed uses of
literal, quote, and so forth.

I'm pretty sure either Ben or Mark will remind me how this all works
again.

Neil
-- 
Neil Blakey-Milner
Sunesi Clinical Systems
nbm@mithrandr.moria.org

--mP3DRpeJDSE+ciuQ
Content-Type: text/plain; charset=us-ascii
Content-Description: porters-handbook.portrevision.patch
Content-Disposition: attachment; filename="porters-handbook.portrevision.patch"

Index: book.sgml
===================================================================
RCS file: /home/ncvs/doc/en_US.ISO_8859-1/books/porters-handbook/book.sgml,v
retrieving revision 1.129
diff -u -r1.129 book.sgml
--- book.sgml	2000/09/24 07:01:53	1.129
+++ book.sgml	2000/09/29 00:04:58
@@ -675,6 +675,223 @@
       </sect1>
 
       <sect1>
+	<title><makevar>PORTREVISION</makevar> and
+	  <makevar>PORTEPOCH</makevar></title>
+
+	<sect2>
+	  <title><makevar>PORTREVISION</makevar></title>
+
+	  <para>The <makevar>PORTREVISION</makevar> variable is a
+	    monotonically increasing value which is reset to 0 with
+	    every increase of <makevar>PORTVERSION</makevar> (i.e.
+	    every time a new official vendor release is made), and
+	    appended to the package name if non-zero.
+	    <makevar>PORTREVISION</makevar> is increased each time a
+	    change is made to the FreeBSD port which significantly
+	    affects the content or stucture of the derived
+	    package.</para>
+
+	  <para>Examples of when PORTREVISION should be bumped:</para>
+
+	  <itemizedlist>
+	    <listitem>
+	      <para>Addition of patches to correct security
+		vulnerabilities, bugs, or to add new functionality to
+		the FreeBSD port.</para>
+	    </listitem>
+
+	    <listitem>
+	      <para>Changes to the port makefile to enable or disable
+		compile-time options in the package.</para>
+	    </listitem>
+
+	    <listitem>
+	      <para>Changes in the packing list or the install-time
+		behaviour of the package (e.g. change to a script
+		which generates initial data for the package, like ssh
+		host keys).</para>
+	    </listitem>
+
+	    <listitem>
+	      <para>Version bump of a port's shared library dependency
+		(in this case, someone trying to install the old
+		package after installing a newer version of the
+		dependency will fail since it will look for the old
+		libfoo.x instead of libfoo.(x+1)).</para>
+	    </listitem>
+
+	    <listitem>
+	      <para>Silent changes to the port distfile which have
+		significant functional differences, i.e. changes to
+		the distfile requiring a correction to files/md5 with
+		no corresponding change to
+		<makevar>PORTVERSION</makevar>, where a <command>diff
+		  -ru</command> of the old and new versions shows
+		non-trivial changes to the code.</para>
+	    </listitem>
+	  </itemizedlist>
+
+	  <para>Examples of changes which do not require a
+	    <makevar>PORTREVISION</makevar> bump:</para>
+
+	  <itemizedlist>
+	    <listitem>
+	      <para>Style changes to the port skeleton with no
+		functional change to what appears in the resulting
+		package.</para>
+	    </listitem>
+
+	    <listitem>
+	      <para>Changes to <makevar>MASTER_SITES</makevar> or
+		other functional changes to the port which do not
+		effect the resulting package.</para>
+	    </listitem>
+
+	    <listitem>
+	      <para>Trivial patches to the distfile such as correction
+		of typos, which are not important enough that users of
+		the package should go to the trouble of
+		upgrading.</para>
+	    </listitem>
+
+	    <listitem>
+	      <para>Build fixes which cause a package to become
+		compilable where it was previously failing (as long as
+		the changes do not introduce any functional change on
+		any other platforms on which the port did previously
+		build). Since <makevar>PORTREVISION</makevar> reflects
+		the content of the package, if no package was
+		previously buildable then there is no need to increase
+		<makevar>PORTREVISION</makevar> to mark a
+		change.</para>
+	    </listitem>
+	  </itemizedlist>
+
+	  <para>A rule of thumb is to ask yourself whether a change
+	    committed to a port is something which someone, somewhere,
+	    would benefit from having (either because of an
+	    enhancement, fix, or by virtue that the new package will
+	    actually work for them). If yes, the
+	    <makevar>PORTREVISION</makevar> should be bumped so that
+	    automated tools (e.g.  <command>pkg_version</command>)
+	    will hilight the fact that a new package is
+	    available.</para>
+	</sect2>
+
+	<sect2>
+	  <title><makevar>PORTEPOCH</makevar></title>
+
+	  <para>From time to time a software vendor or FreeBSD porter
+	    will do something silly and release a version of their
+	    software which is actually numerically less than the
+	    previous version. An example of this is a port which goes
+	    from foo-20000801 to foo-1.0 (the former will be
+	    incorrectly treated as a newer version since 20000801 is a
+	    numerically greater value than 1).</para>
+
+	  <para>In situations such as this, the
+	    <makevar>PORTEPOCH</makevar> version should be increased.
+	    If <makevar>PORTEPOCH</makevar> is nonzero it is appended
+	    to the package name as described in section 0 above.
+	    <makevar>PORTEPOCH</makevar> is never decreased or reset
+	    to zero, because that would cause comparison to a package
+	    from an earlier epoch to fail (i.e. the package would not
+	    be detected as out of date): the new version number (e.g.
+	    <literal>1.0,1</literal> in the above example) is still
+	    numerically less than the previous version (2000801), but
+	    the <literal>,1</literal> suffix is treated specially by
+	    automated tools and found to be greater than the implied
+	    suffix ",0" on the earlier package)</para>
+
+	  <para>It is expected that <makevar>PORTEPOCH</makevar> will
+	    not be used for the majority of ports, and that sensible
+	    use of <makevar>PORTVERSION</makevar> can often pre-empt
+	    it becoming necessary if a future release of the software
+	    should change the version structure. However, care is
+	    needed by FreeBSD porters when a vendor release is made
+	    without an official version number - such as a code
+	    "snapshot" release.  The temptation is to label the
+	    release with the release date, which will cause problems
+	    as in the example above when a new "official" release is
+	    made.</para>
+
+	  <para>For example, if a snapshot release is made on the date
+	    20000917, and the previous version of the software was
+	    version 1.2, the snapshot release should be given a
+	    <makevar>PORTVERSION</makevar> of 1.2.20000917 or similar,
+	    not 20000917, so that the succeeding release, say 1.3, is
+	    still a numerically greater value.</para>
+	</sect2>
+
+	<sect2>
+	  <title>Example of <makevar>PORTREVISION</makevar> and
+	    <makevar>PORTEPOCH</makevar> usage</title>
+
+	  <para>The gtkmumble port, version 0.10, is committed to the
+	    ports collection.</para>
+
+	  <programlisting>
+PORTNAME=	gtkmumble
+PORTVERSION=	0.10</programlisting>
+
+	  <para><makevar>PKGNAME</makevar> becomes
+	    <literal>gtkmumble-0.10</literal>.</para>
+
+	  <para>A security hole is discovered which requires a local
+	    FreeBSD patch. <makevar>PORTREVISION</makevar> is bumped
+	    accordingly.</para>
+
+	  <programlisting>
+PORTNAME=	gtkmumble
+PORTVERSIOn=	0.10
+PORTREVISION=	1</programlisting>
+
+	  <para><makevar>PKGNAME</makevar> becomes
+	    <literal>gtkmumble-0.10_1</literal></para>
+
+	  <para>A new version is released by the vendor, numbered 0.2
+	    (it turns out the author actually intended
+	    <literal>0.10</literal> to actually mean
+	    <literal>0.1.0</literal>, not <quote>what comes after
+	      0.9</quote> - oops, too late now). Since the new minor
+	    version <literal>2</literal> is numerically less than the
+	    previous version <literal>10</literal> the
+	    <makevar>PORTEPOCH</makevar> must be bumped to manually
+	    force the new package to be detected as "newer". Since it
+	    is a new vendor release of the code,
+	    <makevar>PORTREVISION</makevar> is reset to 0 (or removed
+	    from the makefile).</para>
+
+	  <programlisting>
+PORTNAME=	gtkmumble
+PORTVERSION=	0.2
+PORTEPOCH=	1</programlisting>
+
+	  <para><makevar>PKGNAME</makevar> becomes
+	    <literal>gtkmumble-0.2,1</literal></para>
+
+	  <para>The next release is 0.3. Since
+	    <makevar>PORTEPOCH</makevar> never decreases, the version
+	    variables are now:</para>
+	    
+	  <programlisting>
+PORTNAME=	gtkmumble
+PORTVERSION=	0.3
+PORTEPOCH=	1</programlisting>
+
+	  <para><makevar>PKGNAME</makevar> becomes
+	    <literal>gtkmumble-0.3,1</literal></para>
+
+	  <para>Note that if <makevar>PORTEPOCH</makevar> were reset
+	    to <literal>0</literal> with this upgrade, someone who had
+	    installed the gtkmumble-0.10_1 package would not detect
+	    the gtkmumble-0.3 package as newer, since
+	    <literal>3</literal> is still numerically less than
+	    <literal>10</literal>.</para>
+	</sect2>
+      </sect1>
+
+      <sect1>
         <title><makevar>PKGNAMEPREFIX</makevar> and <makevar>PKGNAMESUFFIX</makevar></title>
 
 	<para>Two optional variables, <makevar>PKGNAMEPREFIX</makevar> and

--mP3DRpeJDSE+ciuQ--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-doc" in the body of the message




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