svn commit: r50190 - head/en_US.ISO8859-1/books/porters-handbook/porting-samplem

Mathieu Arnold <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.doc
Message-ID <[email protected]>
Author: mat
Date: Fri Apr 21 13:42:12 2017
New Revision: 50190
URL: https://svnweb.freebsd.org/changeset/doc/50190

Log:
  Add a section about the order the variables must come in a Makefile.
  
  Reviewed by:	wblock
  Sponsored by:	Absolight
  Differential Revision:	https://reviews.freebsd.org/D10224

Modified:
  head/en_US.ISO8859-1/books/porters-handbook/porting-samplem/chapter.xml

Modified: head/en_US.ISO8859-1/books/porters-handbook/porting-samplem/chapter.xml
==============================================================================
--- head/en_US.ISO8859-1/books/porters-handbook/porting-samplem/chapter.xml	Fri Apr 21 13:42:08 2017	(r50189)
+++ head/en_US.ISO8859-1/books/porters-handbook/porting-samplem/chapter.xml	Fri Apr 21 13:42:12 2017	(r50190)
@@ -98,4 +98,369 @@ pre-install:
 [and then the epilogue]
 
 .include &lt;bsd.port.mk&gt;</programlisting>
+
+  <sect1 xml:id="porting-samplem-order">
+    <title>Order of Variables in Port Makefiles</title>
+
+    <para>The first sections of the <filename>Makefile</filename>
+      must always come in the same order.  This standard makes it so
+      everyone can easily read any port without having to search for
+      variables in a random order.</para>
+
+    <para>The first line of a <filename>Makefile</filename> is always
+      a comment containing the <application>Subversion</application>
+      version control ID, followed by an empty line.  In new ports, it
+      looks like this:</para>
+
+    <programlisting># &dollar;FreeBSD&dollar;
+&nbsp;</programlisting>
+
+    <para>In existing ports, <application>Subversion</application>
+      has expanded it to look like this:</para>
+
+    <programlisting># &dollar;FreeBSD: head/ports-mgmt/pkg/Makefile 437007 2017-03-26 21:25:47Z bapt &dollar;
+&nbsp;</programlisting>
+
+    <note>
+      <para>The sections and variables described here are mandatory in
+	a ordinary port.  In a slave port, many sections variables and
+	can be skipped.</para>
+    </note>
+
+    <important>
+      <para>Each following block must be separated from the previous
+	block by a single blank line.</para>
+
+      <para>In the following blocks, only set the variables that are
+	required by the port.  Define these variables in the order
+	they are shown here.</para>
+    </important>
+
+    <sect2 xml:id="porting-samplem-portname">
+      <title><varname>PORTNAME</varname> Block</title>
+
+      <para>This block is the most important.  It defines the port
+	name, version, distribution file location, and category.  The
+	variables must be in this order:</para>
+
+      <itemizedlist>
+	<listitem>
+	  <para><link
+	      linkend="makefile-portname"><varname>PORTNAME</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-portname"><varname>PORTVERSION</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-distversion"><varname>DISTVERSIONPREFIX</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-distversion"><varname>DISTVERSION</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-distversion"><varname>DISTVERSIONSUFFIX</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-portrevision"><varname>PORTREVISION</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-portepoch"><varname>PORTEPOCH</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-categories"><varname>CATEGORIES</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-master_sites"><varname>MASTER_SITES</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-master_sites-shorthand"><varname>MASTER_SITE_SUBDIR</varname></link>
+	    (deprecated)</para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="porting-pkgnameprefix-suffix"><varname>PKGNAMEPREFIX</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="porting-pkgnameprefix-suffix"><varname>PKGNAMESUFFIX</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-distversion"><varname>DISTNAME</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-extract_sufx"><varname>EXTRACT_SUFX</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-distfiles-definition"><varname>DISTFILES</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-dist_subdir"><varname>DIST_SUBDIR</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-extract_only"><varname>EXTRACT_ONLY</varname></link></para>
+	</listitem>
+      </itemizedlist>
+
+      <important>
+	<para>Only one of <varname>PORTVERSION</varname> and
+	  <varname>DISTVERSION</varname> can be used.</para>
+      </important>
+    </sect2>
+
+    <sect2 xml:id="porting-samplem-patch">
+      <title><varname>PATCHFILES</varname> Block</title>
+
+      <para>This block is optional.  The variables are:</para>
+
+      <itemizedlist>
+	<listitem>
+	  <para><link
+	      linkend="porting-patchfiles"><varname>PATCH_SITES</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="porting-patchfiles"><varname>PATCHFILES</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="porting-patchfiles"><varname>PATCH_DIST_STRIP</varname></link></para>
+	</listitem>
+      </itemizedlist>
+    </sect2>
+
+    <sect2 xml:id="porting-samplem-maintainer">
+      <title><varname>MAINTAINER</varname> Block</title>
+
+      <para>This block is mandatory.  The variables are:</para>
+
+      <itemizedlist>
+	<listitem>
+	  <para><link
+	      linkend="makefile-maintainer"><varname>MAINTAINER</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-comment"><varname>COMMENT</varname></link></para>
+	</listitem>
+      </itemizedlist>
+    </sect2>
+
+    <sect2 xml:id="porting-samplem-license">
+      <title><varname>LICENSE</varname> Block</title>
+
+      <para>This block is optional, although it is highly recommended.
+	The variables are:</para>
+
+      <itemizedlist>
+	<listitem>
+	  <para><link
+	      linkend="licenses-license"><varname>LICENSE</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="licenses-license_comb"><varname>LICENSE_COMB</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="licenses-license_groups"><varname>LICENSE_GROUPS</varname></link>
+	    or
+	    <varname>LICENSE_GROUPS_<replaceable>NAME</replaceable></varname></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="licenses-license_name"><varname>LICENSE_NAME</varname></link>
+	    or
+	    <varname>LICENSE_NAME_<replaceable>NAME</replaceable></varname></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="licenses-license_text"><varname>LICENSE_TEXT</varname></link>
+	    or
+	    <varname>LICENSE_TEXT_<replaceable>NAME</replaceable></varname></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="licenses-license_file"><varname>LICENSE_FILE</varname></link>
+	    or
+	    <varname>LICENSE_FILE_<replaceable>NAME</replaceable></varname></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="licenses-license_perms"><varname>LICENSE_PERMS</varname></link>
+	    or
+	    <varname>LICENSE_PERMS_<replaceable>NAME</replaceable></varname></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="licenses-license_distfiles"><varname>LICENSE_DISTFILES</varname></link>
+	    or
+	    <varname>LICENSE_DISTFILES_<replaceable>NAME</replaceable></varname></para>
+	</listitem>
+      </itemizedlist>
+
+      <para>If there are multiple licenses, sort the different
+	LICENSE_<replaceable>VAR</replaceable>_<replaceable>NAME</replaceable>
+	variables by license name.</para>
+    </sect2>
+
+    <sect2 xml:id="porting-samplem-depends">
+      <title>The Dependencies Block</title>
+
+      <para>This block is optional.  The variables are:</para>
+
+      <itemizedlist>
+	<listitem>
+	  <para><link
+	      linkend="makefile-fetch_depends"><varname>FETCH_DEPENDS</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-extract_depends"><varname>EXTRACT_DEPENDS</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-patch_depends"><varname>PATCH_DEPENDS</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-build_depends"><varname>BUILD_DEPENDS</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-lib_depends"><varname>LIB_DEPENDS</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <para><link
+	      linkend="makefile-run_depends"><varname>RUN_DEPENDS</varname></link></para>
+	</listitem>
+
+	<listitem>
+	  <!-- FIXME: write a section about tests -->
+	  <para><varname>TEST_DEPENDS</varname></para>
+	</listitem>
+      </itemizedlist>
+    </sect2>
+
+    <sect2 xml:id="porting-samplem-uses">
+      <title><varname>USES</varname> and
+	<varname>USE_<replaceable>x</replaceable></varname></title>
+
+      <para>Start this section with defining <varname>USES</varname>,
+	and then possible
+	<varname>USE_<replaceable>x</replaceable></varname>.</para>
+
+      <para>Keep related variables close together.  For example, if
+	using <link
+	  linkend="makefile-master_sites-github"><varname>USE_GITHUB</varname></link>,
+	always put the
+	<varname>GH_<replaceable>*</replaceable></varname> variables
+	right after it.</para>
+    </sect2>
+
+    <sect2 xml:id="porting-samplem-options">
+      <title>Options</title>
+
+      <para>If the port uses the <link
+	  linkend="makefile-options">options framework</link>, define
+	<varname>OPTIONS_DEFINE</varname> and
+	<varname>OPTIONS_DEFAULT</varname> first, then the other
+	<varname>OPTIONS_<replaceable>*</replaceable></varname>
+	variables first, then the
+	<varname><replaceable>*</replaceable>_DESC</varname>
+	descriptions, then the options helpers.  Try and sort all of
+	those alphabetically.</para>
+    </sect2>
+
+    <sect2 xml:id="porting-samplem-rest">
+      <title>The Rest of the Variables</title>
+
+      <para>And then, the rest of the variables that are not
+	mentioned in the previous blocks.</para>
+    </sect2>
+
+    <sect2 xml:id="porting-samplem-targets">
+      <title>The Targets</title>
+
+      <para>After all the variables are defined, the optional
+	&man.make.1; targets can be defined.  Keep
+	<literal>pre-<replaceable>*</replaceable></literal> before
+	<literal>post-<replaceable>*</replaceable></literal> and in
+	the same order as the different stages run:</para>
+
+      <itemizedlist>
+	<listitem>
+	  <para><varname>fetch</varname></para>
+	</listitem>
+
+	<listitem>
+	  <para><varname>extract</varname></para>
+	</listitem>
+
+	<listitem>
+	  <para><varname>patch</varname></para>
+	</listitem>
+
+	<listitem>
+	  <para><varname>configure</varname></para>
+	</listitem>
+
+	<listitem>
+	  <para><varname>build</varname></para>
+	</listitem>
+
+	<listitem>
+	  <para><varname>install</varname></para>
+	</listitem>
+
+	<listitem>
+	  <para><varname>test</varname></para>
+	</listitem>
+      </itemizedlist>
+    </sect2>
+  </sect1>
 </chapter>
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-doc-all
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.