Index: head/en_US.ISO8859-1/books/porters-handbook/order/chapter.xml
===================================================================
--- head/en_US.ISO8859-1/books/porters-handbook/order/chapter.xml (revision 50619)
+++ head/en_US.ISO8859-1/books/porters-handbook/order/chapter.xml (revision 50620)
@@ -1,460 +1,469 @@
Order of Variables in Port MakefilesThe first sections of the Makefile
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.The first line of a Makefile is always
a comment containing the Subversion
version control ID, followed by an empty line. In new ports, it
looks like this:# $FreeBSD$
In existing ports, Subversion
has expanded it to look like this:# $FreeBSD: head/ports-mgmt/pkg/Makefile 437007 2017-03-26 21:25:47Z bapt $
The sections and variables described here are mandatory in
a ordinary port. In a slave port, many sections variables and
can be skipped.Each following block must be separated from the previous
block by a single blank line.In the following blocks, only set the variables that are
required by the port. Define these variables in the order
they are shown here.PORTNAME BlockThis block is the most important. It defines the port
name, version, distribution file location, and category. The
variables must be in this order:PORTNAMEPORTVERSIONDISTVERSIONPREFIXDISTVERSIONDISTVERSIONSUFFIXPORTREVISIONPORTEPOCHCATEGORIESMASTER_SITESMASTER_SITE_SUBDIR
(deprecated)PKGNAMEPREFIXPKGNAMESUFFIXDISTNAMEEXTRACT_SUFXDISTFILESDIST_SUBDIREXTRACT_ONLYOnly one of PORTVERSION and
DISTVERSION can be used.PATCHFILES BlockThis block is optional. The variables are:PATCH_SITESPATCHFILESPATCH_DIST_STRIPMAINTAINER BlockThis block is mandatory. The variables are:MAINTAINERCOMMENTLICENSE BlockThis block is optional, although it is highly recommended.
The variables are:LICENSELICENSE_COMBLICENSE_GROUPS
or
LICENSE_GROUPS_NAMELICENSE_NAME
or
LICENSE_NAME_NAMELICENSE_TEXT
or
LICENSE_TEXT_NAMELICENSE_FILE
or
LICENSE_FILE_NAMELICENSE_PERMS
or
LICENSE_PERMS_NAMELICENSE_DISTFILES
or
LICENSE_DISTFILES_NAMEIf there are multiple licenses, sort the different
LICENSE_VAR_NAME
variables by license name.Generic
BROKEN/IGNORE/DEPRECATED
MessagesThis block is optional. The variables are:DEPRECATEDEXPIRATION_DATEFORBIDDENBROKEN
- BROKEN_*
+ BROKEN_*IGNORE
- IGNORE_*
+ IGNORE_*
- ONLY_FOR_ARCHS
+ ONLY_FOR_ARCHS
- ONLY_FOR_ARCHS_REASON*
+ ONLY_FOR_ARCHS_REASON*
- NOT_FOR_ARCHS
+ NOT_FOR_ARCHS
- NOT_FOR_ARCHS_REASON*
+ NOT_FOR_ARCHS_REASON*BROKEN*
and IGNORE*
can be any generic variables, for example,
IGNORE_amd64,
BROKEN_FreeBSD_10,
BROKEN_SSL, etc.If the port is marked BROKEN when some conditions are
met, and such conditions can only be tested after including
bsd.port.options.mk or
bsd.port.pre.mk, then those variables
should be set later, in .The Dependencies BlockThis block is optional. The variables are:FETCH_DEPENDSEXTRACT_DEPENDSPATCH_DEPENDSBUILD_DEPENDSLIB_DEPENDSRUN_DEPENDSTEST_DEPENDSUSES and
USE_xStart this section with defining USES,
and then possible
USE_x.Keep related variables close together. For example, if
using USE_GITHUB,
always put the
GH_* variables
right after it.Standard bsd.port.mk VariablesThis section block is for variables that can be defined in
bsd.port.mk that do not belong in any
of the previous section blocks.
- Order is not important, however try to keep similar variables together.
- For example uid and gid variables USERS and GROUPS.
- Configuration variables CONFIGURE_* and
- *_CONFIGURE. List of files, and directories
- PORTDOCS and PORTEXAMPLES.
+ Order is not important, however try to keep similar
+ variables together. For example uid and gid variables
+ USERS and GROUPS.
+ Configuration variables
+ CONFIGURE_* and
+ *_CONFIGURE. List
+ of files, and directories PORTDOCS and
+ PORTEXAMPLES.OptionsIf the port uses the options framework, define
OPTIONS_DEFINE and
OPTIONS_DEFAULT first, then the other
OPTIONS_*
variables first, then the
*_DESC
descriptions, then the options helpers. Try and sort all of
those alphabetically.The Rest of the VariablesAnd then, the rest of the variables that are not
mentioned in the previous blocks.The TargetsAfter all the variables are defined, the optional
&man.make.1; targets can be defined. Keep
pre-* before
post-* and in
the same order as the different stages run:fetchextractpatchconfigurebuildinstalltest
Index: head/en_US.ISO8859-1/books/porters-handbook/porting-samplem/chapter.xml
===================================================================
--- head/en_US.ISO8859-1/books/porters-handbook/porting-samplem/chapter.xml (revision 50619)
+++ head/en_US.ISO8859-1/books/porters-handbook/porting-samplem/chapter.xml (revision 50620)
@@ -1,115 +1,115 @@
A Sample MakefileHere is a sample Makefile that can be
used to create a new port. Make sure to remove all the extra
comments (ones between brackets).The format shown is the recommended one for ordering
- variables, empty lines between sections, and so on. This format is
- designed so that the most important information is easy to locate.
- We recommend using
+ variables, empty lines between sections, and so on. This format
+ is designed so that the most important information is easy to
+ locate. We recommend using
portlint to check the
Makefile.[the header...just to make it easier for us to identify the ports.]
# $FreeBSD$
[ ^^^^^^^^^ This will be automatically replaced with RCS ID string by SVN
when it is committed to our repository. If upgrading a port, do not alter
this line back to "$FreeBSD$". SVN deals with it automatically.]
[section to describe the port itself and the master site - PORTNAME
and PORTVERSION are always first, followed by CATEGORIES,
and then MASTER_SITES, which can be followed by MASTER_SITE_SUBDIR.
PKGNAMEPREFIX and PKGNAMESUFFIX, if needed, will be after that.
Then comes DISTNAME, EXTRACT_SUFX and/or DISTFILES, and then
EXTRACT_ONLY, as necessary.]
PORTNAME= xdvi
PORTVERSION= 18.2
CATEGORIES= print
[do not forget the trailing slash ("/")!
if not using MASTER_SITE_* macros]
MASTER_SITES= ${MASTER_SITE_XCONTRIB}
MASTER_SITE_SUBDIR= applications
PKGNAMEPREFIX= ja-
DISTNAME= xdvi-pl18
[set this if the source is not in the standard ".tar.gz" form]
EXTRACT_SUFX= .tar.Z
[section for distributed patches -- can be empty]
PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/
PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz
[If the distributed patches were not made relative to ${WRKSRC},
this may need to be tweaked]
PATCH_DIST_STRIP= -p1
[maintainer; *mandatory*! This is the person who is volunteering to
handle port updates, build breakages, and to whom a users can direct
questions and bug reports. To keep the quality of the Ports Collection
as high as possible, we do not accept new ports that are assigned to
"ports@FreeBSD.org".]
MAINTAINER= asami@FreeBSD.org
COMMENT= DVI Previewer for the X Window System
[license -- should not be empty]
LICENSE= BSD2CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
[dependencies -- can be empty]
RUN_DEPENDS= gs:print/ghostscript
[If it requires GNU make, not /usr/bin/make, to build...]
USES= gmake
[If it is an X application and requires "xmkmf -a" to be run...]
USES= imake
[If the source is obtained from github, remove MASTER_SITE* and...]
USE_GITHUB= yes
GH_ACCOUNT= example
[this section is for other standard bsd.port.mk variables that do not]
belong to any of the above]
[If it asks questions during configure, build, install...]
IS_INTERACTIVE= yes
[If it extracts to a directory other than ${DISTNAME}...]
WRKSRC= ${WRKDIR}/xdvi-new
[If it requires a "configure" script generated by GNU autoconf to be run]
GNU_CONFIGURE= yes
[et cetera.]
[If it requires options, this section is for options]
OPTIONS_DEFINE= DOCS EXAMPLES FOO
OPTIONS_DEFAULT= FOO
[If options will change the files in plist]
OPTIONS_SUB=yes
FOO_DESC= Enable foo support
FOO_CONFIGURE_ENABLE= foo
[non-standard variables to be used in the rules below]
MY_FAVORITE_RESPONSE= "yeah, right"
[then the special rules, in the order they are called]
pre-fetch:
i go fetch something, yeah
post-patch:
i need to do something after patch, great
pre-install:
and then some more stuff before installing, wow
[and then the epilogue]
.include <bsd.port.mk>