Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F135705434
D10370.id27374.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
7 KB
Referenced Files
None
Subscribers
None
D10370.id27374.diff
View Options
Index: en_US.ISO8859-1/books/porters-handbook/makefiles/chapter.xml
===================================================================
--- en_US.ISO8859-1/books/porters-handbook/makefiles/chapter.xml
+++ en_US.ISO8859-1/books/porters-handbook/makefiles/chapter.xml
@@ -1539,7 +1539,8 @@
<varname>DISTNAME</varname> defaults to
<literal>${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}</literal>,
and <varname>DISTVERSION</varname> defaults to
- <literal>${PORTVERSION}</literal> so override it
+ <literal>${PORTVERSION}</literal> so override
+ <varname>DISTNAME</varname>
only if necessary. <varname>DISTNAME</varname> is only used
in two places. First, the distribution file list
(<varname>DISTFILES</varname>) defaults to
@@ -1551,23 +1552,179 @@
<para>Some vendor's distribution names which do not fit into the
<literal>${PORTNAME}-${PORTVERSION}</literal>-scheme can be
handled automatically by setting
- <varname>DISTVERSION</varname>.
- <varname>PORTVERSION</varname> will be derived from it
- automatically.</para>
+ <varname>DISTVERSIONPREFIX</varname>,
+ <varname>DISTVERSION</varname>, and
+ <varname>DISTVERSIONSUFFIX</varname>.
+ <varname>PORTVERSION</varname> will be derived from
+ <varname>DISTVERSION</varname> automatically.</para>
- <note>
+ <important>
<para>Only one of <varname>PORTVERSION</varname> and
<varname>DISTVERSION</varname> can be set at a time. If
<varname>DISTVERSION</varname> does not derive a correct
<varname>PORTVERSION</varname>, do not use
- <varname>DISTVERSION</varname>, set
- <varname>PORTVERSION</varname> to the right value and set
- <varname>DISTNAME</varname> with <varname>PORTNAME</varname>
- with either some computation of
- <varname>PORTVERSION</varname> or the verbatim upstream
- version.</para>
- </note>
+ <varname>DISTVERSION</varname>.</para>
+ </important>
+
+ <para>If the upstream version scheme can be derived into a
+ ports-compatible version scheme, set some variable to the
+ upstream version, <emphasis>do not</emphasis> use
+ <varname>DISTVERSION</varname> as the variable name. Set
+ <varname>PORTVERSION</varname> to the computed version based
+ on the variable you
+ created, and set <varname>DISTNAME</varname> accordingly.</para>
+
+ <para>If the upstream version scheme cannot easily be coerced
+ into a ports-compatible value, set
+ <varname>PORTVERSION</varname> to a sensible value, and set
+ <varname>DISTNAME</varname> with <varname>PORTNAME</varname>
+ with the verbatim upstream version.</para>
+
+ <example xml:id="makefile-distversion-ex1">
+ <title>Deriving <varname>PORTVERSION</varname> Manually</title>
+
+ <para><application>BIND9</application> uses a version scheme
+ that is not compatible with the ports versions (it has
+ <literal>-</literal> in its versions) and cannot be derived
+ using <varname>DISTVERSION</varname> because after the 9.9.9
+ release, it will release a <quote>patchlevels</quote> in the
+ form of <literal>9.9.9-P1</literal>. DISTVERSION would
+ translate that into <literal>9.9.9.p1</literal>, which, in
+ the ports versioning scheme means 9.9.9 pre-release 1, which
+ is before 9.9.9 and not after. So
+ <varname>PORTVERSION</varname> is manually derived from an
+ <varname>ISCVERSION</varname> variable in order to output
+ <literal>9.9.9p1</literal>.</para>
+
+ <para>The order into which the ports framework, and pkg, will
+ sort versions is checked using the <literal>-t</literal>
+ argument of &man.pkg-version.8;:</para>
+
+ <screen>&prompt.user; <userinput>pkg version -t 9.9.9 9.9.9.p1</userinput>
+> <co xml:id="distversion-ex1-gt"/>
+&prompt.user; <userinput>pkg version -t 9.9.9 9.9.9p1</userinput>
+< <co xml:id="distversion-ex1-lt"/></screen>
+
+ <calloutlist>
+ <callout arearefs="distversion-ex1-gt">
+ <para>The <literal>></literal> sign means that the
+ first argument passed to <literal>-t</literal> is
+ greater than the second argument.
+ <literal>9.9.9</literal> is after
+ <literal>9.9.9.p1</literal>.</para>
+ </callout>
+
+ <callout arearefs="distversion-ex1-lt">
+ <para>The <literal><</literal> sign means that the
+ first argument passed to <literal>-t</literal> is less
+ than the second argument. <literal>9.9.9</literal> is
+ before <literal>9.9.9p1</literal>.</para>
+ </callout>
+ </calloutlist>
+
+ <para>In the ports <filename>Makefile</filename>, it is
+ achieved by:</para>
+
+ <programlisting>PORTNAME= bind
+PORTVERSION= ${ISCVERSION:S/-P/P/:S/b/.b/:S/a/.a/:S/rc/.rc/} <co xml:id="distversion-ex1-portversion"/>
+CATEGORIES= dns net ipv6
+MASTER_SITES= ISC/bind9/${ISCVERSION} <co xml:id="distversion-ex1-master_sites"/>
+PKGNAMESUFFIX= 99
+DISTNAME= ${PORTNAME}-${ISCVERSION} <co xml:id="distversion-ex1-distname"/>
+
+MAINTAINER= mat@FreeBSD.org
+COMMENT= BIND DNS suite with updated DNSSEC and DNS64
+
+LICENSE= ISCL
+
+# ISC releases things like 9.8.0-P1 or 9.8.1rc1, which our versioning doesn't like
+ISCVERSION= 9.9.9-P6 <co xml:id="distversion-ex1-iscversion"/></programlisting>
+
+ <calloutlist>
+ <callout arearefs="distversion-ex1-iscversion">
+ <para>Define upstream version in
+ <varname>ISCVERSION</varname>, with a comment saying
+ <emphasis>why</emphasis> it is needed.</para>
+ </callout>
+
+ <callout arearefs="distversion-ex1-portversion">
+ <para>Use <varname>ISCVERSION</varname> to get a
+ ports-compatible <varname>PORTVERSION</varname>.</para>
+ </callout>
+
+ <callout arearefs="distversion-ex1-master_sites">
+ <para>Use <varname>ISCVERSION</varname> directly to get
+ the correct <acronym>URL</acronym> for fetching the
+ distribution file.</para>
+ </callout>
+
+ <callout arearefs="distversion-ex1-distname">
+ <para>Use <varname>ISCVERSION</varname> directly to name
+ the distribution file.</para>
+ </callout>
+ </calloutlist>
+ </example>
+
+ <example xml:id="makefile-distversion-ex2">
+ <title>Derive <varname>DISTNAME</varname> From
+ <varname>PORTVERSION</varname></title>
+
+ <para>From time to time, the distribution file name has little
+ or no relation to the version of the software.</para>
+
+ <para>In <package role="port">comms/kermit</package>, only the
+ last element of the version is present in the distribution
+ file:</para>
+
+ <programlisting>PORTNAME= kermit
+PORTVERSION= 9.0.304
+CATEGORIES= comms ftp net
+MASTER_SITES= ftp://ftp.kermitproject.org/kermit/test/tar/
+DISTNAME= cku${PORTVERSION:E}-dev20 <co xml:id="distversion-ex2-distname"/></programlisting>
+
+ <calloutlist>
+ <callout arearefs="distversion-ex2-distname">
+ <para>The <literal>:E</literal> &man.make.1; modifier
+ returns the suffix of the variable, in this case,
+ <literal>304</literal>. The distribution file is
+ correctly generated as
+ <literal>cku304-dev20.tar.gz</literal>.</para>
+ </callout>
+ </calloutlist>
+ </example>
+ <example xml:id="makefile-distversion-ex3">
+ <title>Exotic Case 1</title>
+
+ <para>Sometimes, there is no relation between the software
+ name, its version, and the distribution file it is
+ distributed in.</para>
+
+ <para>From <package
+ role="port">audio/libworkman</package>:</para>
+
+ <programlisting>PORTNAME= libworkman
+PORTVERSION= 1.4
+CATEGORIES= audio
+MASTER_SITES= LOCAL/jim
+DISTNAME= ${PORTNAME}-1999-06-20</programlisting>
+ </example>
+
+ <example xml:id="makefile-distversion-ex4">
+ <title>Exotic Case 2</title>
+
+ <para>In <package role="port">comms/librs232</package>, the
+ distribution file is not versionned, so using <link
+ linkend="makefile-dist_subdir"><varname>DIST_SUBDIR</varname></link>
+ is needed:</para>
+
+ <programlisting>PORTNAME= librs232
+PORTVERSION= 20160710
+CATEGORIES= comms
+MASTER_SITES= http://www.teuniz.net/RS-232/
+DISTNAME= RS-232
+DIST_SUBDIR= ${PORTNAME}-${PORTVERSION}</programlisting>
+ </example>
<table frame="none" pgwide="0">
<title>Examples of <varname>DISTVERSION</varname> and the
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Nov 13, 1:47 AM (1 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25239832
Default Alt Text
D10370.id27374.diff (7 KB)
Attached To
Mode
D10370: Expand on DISTVERSION and add examples.
Attached
Detach File
Event Timeline
Log In to Comment