View | Details | Raw Unified | Return to bug 53422
Collapse All | Expand All

(-)book.sgml (-103 / +301 lines)
Lines 42-51 Link Here
42
  </bookinfo>
42
  </bookinfo>
43
43
44
44
45
    <chapter id="why-port">
46
      <title>Introduction</title>
47
48
      <para>The FreeBSD ports collection is the way almost everyone
49
	installs applications ("ports") on FreeBSD.  Like everything
50
	else about FreeBSD, it is primarily a volunteer effort.
51
	It's important to keep this in mind when reading this
52
	document.</para>
53
54
      <para>In FreeBSD, anyone may submit a new port, or volunteer
55
	to maintain an existing port if it is unmaintained&mdash;you
56
	do not need any special commit privileges to do so.
57
	Over time, if you gain experience and respect within the
58
	developer community, you may eventually gain a ports
59
	"commit bit" and thus become a ports "committer"
60
	&mdash;someone who has the right to commit to the FreeBSD
61
	ports CVS tree.</para>
62
63
      <para>A typical problem, however, is that there are many
64
	more people who want to add new ports than to maintain
65
	existing ports, and many more people who want to maintain
66
	existing ports than who want to serve as ports committers.
67
	Please keep this in mind when deciding whether to port
68
	something in the first place&mdash;it does not make the project
69
	overall look good to have ports in the tree that do not
70
	work because they are no longer maintained.</para>
71
    </chapter>
72
45
    <chapter id="own-port">
73
    <chapter id="own-port">
46
      <title>Making a port yourself</title>
74
      <title>Making a port yourself</title>
47
75
48
      <para>So, now you are interested in making your own port or
76
      <para>So, you are still interested in making your own port or
49
        upgrading an existing one?  Great!</para>
77
        upgrading an existing one?  Great!</para>
50
78
51
      <para>What follows are some guidelines for creating a new port for
79
      <para>What follows are some guidelines for creating a new port for
Lines 64-71 Link Here
64
        <para>Only a fraction of the variables
96
        <para>Only a fraction of the variables
65
          (<makevar><replaceable>VAR</replaceable></makevar>) that can be
97
          (<makevar><replaceable>VAR</replaceable></makevar>) that can be
66
          overridden are mentioned in this document.  Most (if not all)
98
          overridden are mentioned in this document.  Most (if not all)
67
	  are documented at the start of <filename>bsd.port.mk</filename>.
99
	  are documented at the start of <filename>bsd.port.mk</filename>;
68
	  This file uses a non-standard tab setting.
100
	  the others probably ought to be.
101
	  Note that this file uses a non-standard tab setting:
69
	  <application>Emacs</application> and
102
	  <application>Emacs</application> and
70
	  <application>Vim</application> should recognize the setting on
103
	  <application>Vim</application> should recognize the setting on
71
	  loading the file.  Both &man.vi.1; and
104
	  loading the file.  Both &man.vi.1; and
Lines 79-85 Link Here
79
      <title>Quick Porting</title>
112
      <title>Quick Porting</title>
80
113
81
      <para>This section tells you how to do a quick port.  In many cases, it
114
      <para>This section tells you how to do a quick port.  In many cases, it
82
        is not enough, but we will see.</para>
115
        is not sufficient, so you will have to read further on into
116
        the document.</para>
83
117
84
      <para>First, get the original tarball and put it into
118
      <para>First, get the original tarball and put it into
85
        <makevar>DISTDIR</makevar>, which defaults to
119
        <makevar>DISTDIR</makevar>, which defaults to
Lines 134-140 Link Here
134
          <filename>pkg-descr</filename> and
168
          <filename>pkg-descr</filename> and
135
          <filename>pkg-plist</filename>.  Their
169
          <filename>pkg-plist</filename>.  Their
136
          <filename>pkg-</filename> prefix distinguishes them from
170
          <filename>pkg-</filename> prefix distinguishes them from
137
          other files.</para>
171
          other files.  (Note: the former
172
          <filename>pkg-comment</filename> files have now been folded
173
          into the <filename>Makefile</filename>s themselves as the
174
          one-line <literal>COMMENT</literal> variable and are
175
          thus deprecated.  Please make sure your port does not
176
          include them.)</para>
138
177
139
        <sect2>
178
        <sect2>
140
          <title><filename>pkg-descr</filename></title>
179
          <title><filename>pkg-descr</filename></title>
Lines 497-504 Link Here
497
            make sure all  the stages up to that one are completed and call
536
            make sure all  the stages up to that one are completed and call
498
            the real targets or scripts, and they are not intended to be
537
            the real targets or scripts, and they are not intended to be
499
            changed.  If you want to fix the extraction, fix
538
            changed.  If you want to fix the extraction, fix
500
            <maketarget>do-extract</maketarget>, but never ever touch
539
            <maketarget>do-extract</maketarget>, but never ever change
501
            <maketarget>extract</maketarget>!</para>
540
            the way <maketarget>extract</maketarget> operates!</para>
502
        </note>
541
        </note>
503
542
504
        <para>Now that you understand what goes on when the user types
543
        <para>Now that you understand what goes on when the user types
Lines 516-531 Link Here
516
          <emphasis>mainstream</emphasis> sources when and where you
555
          <emphasis>mainstream</emphasis> sources when and where you
517
          can.</para>
556
          can.</para>
518
557
558
        <para>You will need to set the variable <makevar>MASTER_SITES</makevar>
559
          to reflect where the original tarball resides.  You will find
560
          convenient shorthand definitions for most mainstream sites
561
          in <filename>bsd.sites.mk</filename>.  Please use these
562
          sites&mdash;and the associated definitions&mdash;if
563
          at all possible, to help avoid the problem of having the same
564
          information repeated over again many times in the source base.
565
          As these sites tend to change over time, this becomes a
566
          maintainence nightmare for everyone involved.</para>
567
519
        <para>If you cannot find a FTP/HTTP site that is well-connected to the
568
        <para>If you cannot find a FTP/HTTP site that is well-connected to the
520
          net, or can only find sites that have irritatingly non-standard
569
          net, or can only find sites that have irritatingly non-standard
521
          formats, you might want to put a copy on a reliable FTP or HTTP
570
          formats, you might want to put a copy on a reliable FTP or HTTP
522
          server that you control (e.g., your home page).  Make sure you set
571
          server that you control (e.g., your home page).</para>
523
          <makevar>MASTER_SITES</makevar> to reflect your choice.</para>
524
572
525
        <para>If you cannot find somewhere convenient and reliable to put the
573
        <para>If you cannot find somewhere convenient and reliable to put the
526
          distfile
574
          distfile
527
          we can <quote>house</quote> it ourselves
575
          we can <quote>house</quote> it ourselves
528
          on <hostid>ftp.FreeBSD.org</hostid>.
576
          on <hostid>ftp.FreeBSD.org</hostid>; however, this is the
577
          least-preferred solution, as files housed there tend to get stale.
529
          The distfile must be placed into
578
          The distfile must be placed into
530
          <filename>~/public_distfiles/</filename> of someone's
579
          <filename>~/public_distfiles/</filename> of someone's
531
          <hostid>freefall</hostid> account.
580
          <hostid>freefall</hostid> account.
Lines 535-543 Link Here
535
          <makevar>MASTER_SITE_SUBDIR</makevar> to their
584
          <makevar>MASTER_SITE_SUBDIR</makevar> to their
536
          <hostid>freefall</hostid> username.</para>
585
          <hostid>freefall</hostid> username.</para>
537
586
538
        <para>If your port's distfile changes all the time for no good reason,
587
        <para>If your port's distfile changes all the time without any
588
          kind of version update by the author,
539
          consider putting the distfile in your home page and listing it as
589
          consider putting the distfile in your home page and listing it as
540
          the first <makevar>MASTER_SITES</makevar>.  This will prevent users
590
          the first <makevar>MASTER_SITES</makevar>.  (It is too bad we
591
          cannot always talk port authors out of doing this, because it
592
          really helps to establish some kind of source code control, but
593
          alas this is not always easy).   Hosting your own version will
594
          prevent users
541
          from getting <errorname>checksum mismatch</errorname> errors, and
595
          from getting <errorname>checksum mismatch</errorname> errors, and
542
          also reduce the workload of maintainers of our FTP site.  Also, if
596
          also reduce the workload of maintainers of our FTP site.  Also, if
543
          there is only one master site for the port, it is recommended that
597
          there is only one master site for the port, it is recommended that
Lines 583-590 Link Here
583
637
584
        <para>In the preparation of the port, files that have been added or
638
        <para>In the preparation of the port, files that have been added or
585
          changed can be picked up with a recursive &man.diff.1;
639
          changed can be picked up with a recursive &man.diff.1;
586
          for later feeding to &man.patch.1;.  Each set of patches you
640
          for later feeding to &man.patch.1;.
587
          wish to apply should be collected into a file named
641
          Each set of patches you wish to apply should be collected
642
          into a file named
588
          <filename>patch-<replaceable>*</replaceable></filename> where
643
          <filename>patch-<replaceable>*</replaceable></filename> where
589
          <replaceable>*</replaceable> denotes the sequence in which the
644
          <replaceable>*</replaceable> denotes the sequence in which the
590
          patches will be applied &mdash; these are done in
645
          patches will be applied &mdash; these are done in
Lines 644-655 Link Here
644
        <title>Handling user input</title>
699
        <title>Handling user input</title>
645
700
646
        <para>If your port requires user input to build, configure, or install,
701
        <para>If your port requires user input to build, configure, or install,
647
          then set <makevar>IS_INTERACTIVE</makevar> in your <filename>Makefile</filename>.  This
702
          you must set <makevar>IS_INTERACTIVE</makevar> in your Makefile.  This
648
          will allow <quote>overnight builds</quote> to skip your port if the
703
          will allow <quote>overnight builds</quote> to skip your port if the
649
          user sets the variable <envar>BATCH</envar> in his environment (and
704
          user sets the variable <envar>BATCH</envar> in his environment (and
650
          if the user sets the variable <envar>INTERACTIVE</envar>, then
705
          if the user sets the variable <envar>INTERACTIVE</envar>, then
651
          <emphasis>only</emphasis> those ports requiring interaction are
706
          <emphasis>only</emphasis> those ports requiring interaction are
652
          built).</para>
707
          built).  This will save a lot of wasted time on the set of
708
          machines that continually build ports (see below).</para>
653
709
654
        <para>It is also recommended that if there are reasonable default
710
        <para>It is also recommended that if there are reasonable default
655
          answers to the questions, you check the
711
          answers to the questions, you check the
Lines 669-674 Link Here
669
        and sections in that template to make your port easier for others to
725
        and sections in that template to make your port easier for others to
670
        read.</para>
726
        read.</para>
671
727
728
      <important>
729
	<para>There are a large number of port <literal>Makefile</literal>s
730
        in the ports collection that get the ordering of these variables
731
        wrong.  Please do not blindly copy other <literal>Makefile</literal>s
732
        from other ports without checking the order of these variables;
733
        this just encourages wider propogation of bad usage in the source
734
        base.  If in doubt of what the <quote>canonical order</quote> of the
735
        variables ought to be, try to follow the order in
736
        <filename>bsd.port.mk</filename>.  (In fact blindly copying
737
        other <literal>Makefile</literal>s may encourage even worse
738
        brokenness that just the ordering of the variables!)</para>
739
      </important>
740
672
      <para>Now, consider the following problems in sequence as you design
741
      <para>Now, consider the following problems in sequence as you design
673
        your new <filename>Makefile</filename>:</para>
742
        your new <filename>Makefile</filename>:</para>
674
743
Lines 805-814 Link Here
805
	  </itemizedlist>
874
	  </itemizedlist>
806
875
807
	  <para>A rule of thumb is to ask yourself whether a change
876
	  <para>A rule of thumb is to ask yourself whether a change
808
	    committed to a port is something which someone, somewhere,
877
	    committed to a port is something which everyone
809
	    would benefit from having (either because of an
878
	    would benefit from having (either because of an
810
	    enhancement, fix, or by virtue that the new package will
879
	    enhancement, fix, or by virtue that the new package will
811
	    actually work for them). If yes, the
880
	    actually work at all), and weigh that against that fact
881
	    that it will cause everyone who regularly updates their
882
	    ports tree to be compelled to update. If yes, the
812
	    <makevar>PORTREVISION</makevar> should be bumped so that
883
	    <makevar>PORTREVISION</makevar> should be bumped so that
813
	    automated tools (e.g.  &man.pkg.version.1;)
884
	    automated tools (e.g.  &man.pkg.version.1;)
814
	    will highlight the fact that a new package is
885
	    will highlight the fact that a new package is
Lines 830-836 Link Here
830
	    <makevar>PORTEPOCH</makevar> version should be increased.
901
	    <makevar>PORTEPOCH</makevar> version should be increased.
831
	    If <makevar>PORTEPOCH</makevar> is nonzero it is appended
902
	    If <makevar>PORTEPOCH</makevar> is nonzero it is appended
832
	    to the package name as described in section 0 above.
903
	    to the package name as described in section 0 above.
833
	    <makevar>PORTEPOCH</makevar> is never decreased or reset
904
	    <makevar>PORTEPOCH</makevar> must never be decreased or reset
834
	    to zero, because that would cause comparison to a package
905
	    to zero, because that would cause comparison to a package
835
	    from an earlier epoch to fail (i.e. the package would not
906
	    from an earlier epoch to fail (i.e. the package would not
836
	    be detected as out of date): the new version number (e.g.
907
	    be detected as out of date): the new version number (e.g.
Lines 840-845 Link Here
840
	    automated tools and found to be greater than the implied
911
	    automated tools and found to be greater than the implied
841
	    suffix <literal>,0</literal> on the earlier package.</para>
912
	    suffix <literal>,0</literal> on the earlier package.</para>
842
913
914
	  <para>Dropping or resetting <makevar>PORTEPOCH</makevar>
915
	    incorrectly is a common error in the ports collection and leads
916
	    to no end of grief; if you do not understand the above discussion,
917
	    please keep after it until you do, or ask questions on
918
	    the mailing lists.</para>
919
843
	  <para>It is expected that <makevar>PORTEPOCH</makevar> will
920
	  <para>It is expected that <makevar>PORTEPOCH</makevar> will
844
	    not be used for the majority of ports, and that sensible
921
	    not be used for the majority of ports, and that sensible
845
	    use of <makevar>PORTVERSION</makevar> can often pre-empt
922
	    use of <makevar>PORTVERSION</makevar> can often pre-empt
Lines 890-896 Link Here
890
	    <literal>0.1.0</literal>, not <quote>what comes after
967
	    <literal>0.1.0</literal>, not <quote>what comes after
891
	      0.9</quote> - oops, too late now). Since the new minor
968
	      0.9</quote> - oops, too late now). Since the new minor
892
	    version <literal>2</literal> is numerically less than the
969
	    version <literal>2</literal> is numerically less than the
893
	    previous version <literal>10</literal> the
970
	    previous version <literal>10</literal>, the
894
	    <makevar>PORTEPOCH</makevar> must be bumped to manually
971
	    <makevar>PORTEPOCH</makevar> must be bumped to manually
895
	    force the new package to be detected as <quote>newer</quote>. Since it
972
	    force the new package to be detected as <quote>newer</quote>. Since it
896
	    is a new vendor release of the code,
973
	    is a new vendor release of the code,
Lines 921-927 Link Here
921
              installed the <literal>gtkmumble-0.10_1</literal> package would not detect
998
              installed the <literal>gtkmumble-0.10_1</literal> package would not detect
922
              the <literal>gtkmumble-0.3</literal> package as newer, since
999
              the <literal>gtkmumble-0.3</literal> package as newer, since
923
              <literal>3</literal> is still numerically less than
1000
              <literal>3</literal> is still numerically less than
924
              <literal>10</literal>.</para>
1001
              <literal>10</literal>.  This is the whole point of
1002
              <makevar>PORTEPOCH</makevar> in the first place.</para>
1003
1004
            <para>Yes, this is subtle, but again, do not fiddle with
1005
              the setting of <makevar>PORTEPOCH</makevar> until you
1006
              understand this!</para>
925
	  </note>
1007
	  </note>
926
        </sect3>
1008
        </sect3>
927
      </sect2>
1009
      </sect2>
Lines 937-947 Link Here
937
          <literal>${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}</literal>.
1019
          <literal>${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}</literal>.
938
          Make sure this conforms to our <link
1020
          Make sure this conforms to our <link
939
          linkend="porting-pkgname">guidelines for a good package
1021
          linkend="porting-pkgname">guidelines for a good package
940
          name</link>.  In particular, you are not allowed to use a
1022
          name</link>.  In particular, you are <emphasis>not</emphasis> allowed to use a
941
          hyphen (<literal>-</literal>) in
1023
          hyphen (<literal>-</literal>) in
942
          <makevar>PORTVERSION</makevar>.  Also, if the package name
1024
          <makevar>PORTVERSION</makevar>.  Also, if the package name
943
          has the <replaceable>language-</replaceable> or the
1025
          has the <replaceable>language-</replaceable> or the
944
          <replaceable>-compiled.specifics</replaceable> part, use
1026
          <replaceable>-compiled.specifics</replaceable> part (see below), use
945
          <makevar>PKGNAMEPREFIX</makevar> and
1027
          <makevar>PKGNAMEPREFIX</makevar> and
946
          <makevar>PKGNAMESUFFIX</makevar>, respectively.  Do not make
1028
          <makevar>PKGNAMESUFFIX</makevar>, respectively.  Do not make
947
          them part of <makevar>PORTNAME</makevar>.</para>
1029
          them part of <makevar>PORTNAME</makevar>.</para>
Lines 952-958 Link Here
952
1034
953
      <para>The following are the conventions you should follow in naming your
1035
      <para>The following are the conventions you should follow in naming your
954
        packages.  This is to have our package directory easy to scan, as
1036
        packages.  This is to have our package directory easy to scan, as
955
        there are already lots and lots of packages and users are going to
1037
        there are already thousands of packages and users are going to
956
        turn away if they hurt their eyes!</para>
1038
        turn away if they hurt their eyes!</para>
957
1039
958
      <para>The package name should look like
1040
      <para>The package name should look like
Lines 1216-1231 Link Here
1216
        <para>If your port truly belongs to something that is different from
1298
        <para>If your port truly belongs to something that is different from
1217
          all the existing ones, you can even create a new category name.  In
1299
          all the existing ones, you can even create a new category name.  In
1218
          that case, please send mail to the &a.ports; to propose a new
1300
          that case, please send mail to the &a.ports; to propose a new
1219
          category.</para>
1301
          category.  However, in general, until there are more than a
1302
          handful of ports which could be reclassified into the category
1303
          you propose, you will probably be turned down.</para>
1304
1305
        <para>(Aside: occasionally someone proposes redoing the categories
1306
          as either a 2-level structure, or some other kind of keyword
1307
          structure.  To date, nothing has come of any of these proposals,
1308
          because while they are very easy to make, the effort involved to
1309
          retrofit the entire existing ports collection with any kind of
1310
          reorganization is daunting to say the very least.  Please read
1311
          the history of these proposals in the past mailing lists before
1312
          you post this idea; further, you should be prepared to be
1313
          challenged to offer some kind of working prototype.)</para>
1220
      </sect2>
1314
      </sect2>
1221
1315
1222
      <sect2 id="porting-categories">
1316
      <sect2 id="porting-categories">
1223
        <title>Current list of categories</title>
1317
        <title>Current list of categories</title>
1224
1318
1225
        <para>First, this is the current list of port categories.  Those
1319
        <para>Here is the current list of port categories.  Those
1226
          marked with an asterisk (<literal>*</literal>) are
1320
          marked with an asterisk (<literal>*</literal>) are
1227
          <emphasis>virtual</emphasis> categories&mdash;those that do not have
1321
          <emphasis>virtual</emphasis> categories&mdash;those that do not have
1228
          a corresponding subdirectory in the ports tree.</para>
1322
          a corresponding subdirectory in the ports tree.  They are only
1323
          used as secondary categories, and only for search purposes.</para>
1229
1324
1230
        <note>
1325
        <note>
1231
          <para>For non-virtual categories, you will find a one-line
1326
          <para>For non-virtual categories, you will find a one-line
Lines 1251-1257 Link Here
1251
1346
1252
              <row>
1347
              <row>
1253
                <entry><filename>afterstep*</filename></entry>
1348
                <entry><filename>afterstep*</filename></entry>
1254
                <entry>Ports to support the AfterStep window manager.</entry>
1349
                <entry>Ports to support the
1350
                  <ulink url="http://www.afterstep.org">
1351
                  AfterStep</ulink> window manager.</entry>
1255
              </row>
1352
              </row>
1256
1353
1257
              <row>
1354
              <row>
Lines 1291-1298 Link Here
1291
1388
1292
              <row>
1389
              <row>
1293
                <entry><filename>comms</filename></entry>
1390
                <entry><filename>comms</filename></entry>
1294
                <entry>Communication software.  Mostly software to talk to
1391
                <entry>Communication software.  (Mostly software to talk to
1295
                  your serial port.</entry>
1392
                  your serial port.)</entry>
1296
              </row>
1393
              </row>
1297
1394
1298
              <row>
1395
              <row>
Lines 1313-1329 Link Here
1313
1410
1314
              <row>
1411
              <row>
1315
                <entry><filename>devel</filename></entry>
1412
                <entry><filename>devel</filename></entry>
1316
                <entry>Development utilities.  Do not put libraries here just
1413
                <entry>Development utilities.  (Note: do not put libraries here just
1317
                  because they are libraries&mdash;unless they truly do not
1414
                  because they are libraries&mdash;unless they truly do not
1318
                  belong anywhere else, they should not be in this
1415
                  belong anywhere else, they should not be in this
1319
                  category.</entry>
1416
                  category.)</entry>
1320
              </row>
1417
              </row>
1321
1418
1322
              <row>
1419
              <row>
1323
                <entry><filename>editors</filename></entry>
1420
                <entry><filename>editors</filename></entry>
1324
                <entry>General editors.  Specialized editors go in the section
1421
                <entry>General editors.  (Specialized editors go in the section
1325
                  for those tools (e.g., a mathematical-formula editor will go
1422
                  for those tools (e.g., a mathematical-formula editor will go
1326
                  in <filename>math</filename>).</entry>
1423
                  in <filename>math</filename>) ).</entry>
1327
              </row>
1424
              </row>
1328
1425
1329
              <row>
1426
              <row>
Lines 1333-1344 Link Here
1333
1430
1334
              <row>
1431
              <row>
1335
                <entry><filename>emulators</filename></entry>
1432
                <entry><filename>emulators</filename></entry>
1336
                <entry>Emulators for other operating systems.  Terminal
1433
                <entry>Emulators for other operating systems.  (Terminal
1337
                  emulators do <emphasis>not</emphasis> belong
1434
                  emulators do <emphasis>not</emphasis> belong
1338
                  here&mdash;X-based ones should go to
1435
                  here&mdash;X-based ones should go to
1339
                  <filename>x11</filename> and text-based ones to either
1436
                  <filename>x11</filename> and text-based ones to either
1340
                  <filename>comms</filename> or <filename>misc</filename>,
1437
                  <filename>comms</filename> or <filename>misc</filename>,
1341
                  depending on the exact functionality.</entry>
1438
                  depending on the exact functionality.)</entry>
1342
              </row>
1439
              </row>
1343
1440
1344
              <row>
1441
              <row>
Lines 1353-1362 Link Here
1353
1450
1354
              <row>
1451
              <row>
1355
                <entry><filename>ftp</filename></entry>
1452
                <entry><filename>ftp</filename></entry>
1356
                <entry>FTP client and server utilities.  If your
1453
                <entry>FTP client and server utilities.  (If your
1357
                  port speaks both FTP and HTTP, put it in
1454
                  port speaks both FTP and HTTP, put it in
1358
                  <filename>ftp</filename> with a secondary
1455
                  <filename>ftp</filename> with a secondary
1359
                  category of <filename>www</filename>.</entry>
1456
                  category of <filename>www</filename>.)</entry>
1360
              </row>
1457
              </row>
1361
1458
1362
              <row>
1459
              <row>
Lines 1371-1378 Link Here
1371
1468
1372
              <row>
1469
              <row>
1373
                <entry><filename>gnome*</filename></entry>
1470
                <entry><filename>gnome*</filename></entry>
1374
                <entry>Ports from the GNU Object Model Environment (GNOME)
1471
                <entry>Ports from the
1375
                  Project.</entry>
1472
                  <ulink url="http://www.gnome.org">GNOME
1473
                  project</ulink>.</entry>
1376
              </row>
1474
              </row>
1377
1475
1378
              <row>
1476
              <row>
Lines 1417-1424 Link Here
1417
1515
1418
              <row>
1516
              <row>
1419
                <entry><filename>kde*</filename></entry>
1517
                <entry><filename>kde*</filename></entry>
1420
                <entry>Ports from the K Desktop Environment (KDE)
1518
                <entry>Ports from the
1421
                  Project.</entry>
1519
                  <ulink url="http://www.kde.org">K Desktop Environment (KDE)
1520
                  Project</ulink>.</entry>
1422
              </row>
1521
              </row>
1423
1522
1424
              <row>
1523
              <row>
Lines 1455-1466 Link Here
1455
              <row>
1554
              <row>
1456
                <entry><filename>misc</filename></entry>
1555
                <entry><filename>misc</filename></entry>
1457
                <entry>Miscellaneous utilities&mdash;basically things that
1556
                <entry>Miscellaneous utilities&mdash;basically things that
1458
                  do not belong anywhere else.  This is the only category
1557
                  do not belong anywhere else.  (This is the only category
1459
                  that should not appear with any other non-virtual category.
1558
                  that should not appear with any other non-virtual category.
1460
                  If you have <literal>misc</literal> with something else in
1559
                  If you have <literal>misc</literal> with something else in
1461
                  your <makevar>CATEGORIES</makevar> line, that means you can
1560
                  your <makevar>CATEGORIES</makevar> line, that means you can
1462
                  safely delete <literal>misc</literal> and just put the port
1561
                  safely delete <literal>misc</literal> and just put the port
1463
                  in that other subdirectory!</entry>
1562
                  in that other subdirectory!  Also note: if at all possible,
1563
                  try to find a better category for your port than
1564
                  <filename>misc</filename>; ports tend to get overlooked
1565
                  in here.)</entry>
1464
              </row>
1566
              </row>
1465
1567
1466
              <row>
1568
              <row>
Lines 1480-1491 Link Here
1480
1582
1481
              <row>
1583
              <row>
1482
                <entry><filename>offix*</filename></entry>
1584
                <entry><filename>offix*</filename></entry>
1483
                <entry>Ports from the OffiX suite.</entry>
1585
                <entry>Ports from the
1586
                  <ulink url="http://leb.net/OffiX/">OffiX</ulink> suite.</entry>
1484
              </row>
1587
              </row>
1485
1588
1486
              <row>
1589
              <row>
1487
                <entry><filename>palm</filename></entry>
1590
                <entry><filename>palm</filename></entry>
1488
                <entry>Software support for the Palm(tm) series.</entry>
1591
                <entry>Software support for the
1592
                  <ulink url="http://www.palm.com/">Palm(tm)</ulink> series.</entry>
1489
              </row>
1593
              </row>
1490
1594
1491
              <row>
1595
              <row>
Lines 1495-1511 Link Here
1495
1599
1496
              <row>
1600
              <row>
1497
                <entry><filename>perl5*</filename></entry>
1601
                <entry><filename>perl5*</filename></entry>
1498
                <entry>Ports that require <literal>perl</literal> version 5 to run.</entry>
1602
                <entry>Ports that require <command>perl</command> version 5 to run.</entry>
1499
              </row>
1603
              </row>
1500
1604
1501
              <row>
1605
              <row>
1502
                <entry><filename>picobsd</filename></entry>
1606
                <entry><filename>picobsd</filename></entry>
1503
                <entry>Ports to support PicoBSD.</entry>
1607
                <entry>Ports to support
1608
                  <ulink url="http://people.FreeBSD.org/~picobsd/">
1609
                  PicoBSD</ulink>.</entry>
1504
              </row>
1610
              </row>
1505
1611
1506
              <row>
1612
              <row>
1507
                <entry><filename>plan9*</filename></entry>
1613
                <entry><filename>plan9*</filename></entry>
1508
                <entry>Various programs from Plan9.</entry>
1614
                <entry>Various programs from
1615
                  <ulink url="http://www.cs.bell-labs.com/plan9dist/">
1616
                  Plan9</ulink>.</entry>
1509
              </row>
1617
              </row>
1510
1618
1511
              <row>
1619
              <row>
Lines 1515-1527 Link Here
1515
1623
1516
              <row>
1624
              <row>
1517
                <entry><filename>print</filename></entry>
1625
                <entry><filename>print</filename></entry>
1518
                <entry>Printing software.  Desktop publishing tools
1626
                <entry>Printing software.  (Desktop publishing tools
1519
                  (previewers, etc.) belong here too.</entry>
1627
                  (previewers, etc.) belong here too.)</entry>
1520
              </row>
1628
              </row>
1521
1629
1522
              <row>
1630
              <row>
1523
                <entry><filename>python*</filename></entry>
1631
                <entry><filename>python*</filename></entry>
1524
                <entry>Software related to the Python language.</entry>
1632
                <entry>Software related to the
1633
                  <ulink url="http://www.python.org/">Python</ulink>
1634
                   language.</entry>
1525
              </row>
1635
              </row>
1526
1636
1527
              <row>
1637
              <row>
Lines 1584-1591 Link Here
1584
1694
1585
              <row>
1695
              <row>
1586
                <entry><filename>textproc</filename></entry>
1696
                <entry><filename>textproc</filename></entry>
1587
                <entry>Text processing utilities.  It does not include
1697
                <entry>Text processing utilities.  (This does not include
1588
                  desktop publishing tools, which go to <filename>print</filename>.</entry>
1698
                  desktop publishing tools, which should go to
1699
                  <filename>print</filename>.)</entry>
1589
              </row>
1700
              </row>
1590
1701
1591
              <row>
1702
              <row>
Lines 1636-1654 Link Here
1636
1747
1637
              <row>
1748
              <row>
1638
                <entry><filename>www</filename></entry>
1749
                <entry><filename>www</filename></entry>
1639
                <entry>Software related to the World Wide Web.  HTML language
1750
                <entry>Software related to the World Wide Web.  (HTML language
1640
                  support belongs here too.</entry>
1751
                  support belongs here too.)</entry>
1641
              </row>
1752
              </row>
1642
1753
1643
              <row>
1754
              <row>
1644
                <entry><filename>x11</filename></entry>
1755
                <entry><filename>x11</filename></entry>
1645
                <entry>The X Window System and friends.  This category is only
1756
                <entry>The X Window System and friends.  (This category is only
1646
                  for software that directly supports the window system.  Do not
1757
                  for software that directly supports the window system.  Do not
1647
                  put regular X applications here.  If your port is an X
1758
                  put regular X applications here; most of them should go
1759
                  into other <filename>x11-*</filename> categories (see below).
1760
                  Note: if your port <emphasis>is</emphasis> an X
1648
                  application, define <makevar>USE_XLIB</makevar> (implied by
1761
                  application, define <makevar>USE_XLIB</makevar> (implied by
1649
                  <makevar>USE_IMAKE</makevar>) and put it in the appropriate
1762
                  <makevar>USE_IMAKE</makevar>) ).</entry>
1650
                  categories.  Also, many of them go into other
1651
                  <filename>x11-*</filename> categories (see below).</entry>
1652
              </row>
1763
              </row>
1653
1764
1654
              <row>
1765
              <row>
Lines 1683-1689 Link Here
1683
1794
1684
              <row>
1795
              <row>
1685
                <entry><filename>zope*</filename></entry>
1796
                <entry><filename>zope*</filename></entry>
1686
                <entry>Zope support.</entry>
1797
                <entry><ulink url="http://www.zope.org/">Zope</ulink>
1798
                   support.</entry>
1687
              </row>
1799
              </row>
1688
            </tbody>
1800
            </tbody>
1689
          </tgroup>
1801
          </tgroup>
Lines 1709-1719 Link Here
1709
          <listitem>
1821
          <listitem>
1710
            <para>Specific categories win over less-specific ones.  For
1822
            <para>Specific categories win over less-specific ones.  For
1711
              instance, an HTML editor should be listed as <filename>www
1823
              instance, an HTML editor should be listed as <filename>www
1712
                editors</filename>, not the other way around.  Also, you do not
1824
                editors</filename>, not the other way around.  Also, you should
1713
              need to list <filename>net</filename> when the port belongs to
1825
              not list <filename>net</filename> when the port belongs to
1714
              any of <filename>irc</filename>, <filename>mail</filename>,
1826
              any of <filename>irc</filename>, <filename>mail</filename>,
1715
              <filename>mbone</filename>, <filename>news</filename>,
1827
              <filename>mbone</filename>, <filename>news</filename>,
1716
              <filename>security</filename>, or <filename>www</filename>.</para>
1828
              <filename>security</filename>, or <filename>www</filename>, as
1829
              <filename>net</filename> is included implicitly.</para>
1717
          </listitem>
1830
          </listitem>
1718
1831
1719
          <listitem>
1832
          <listitem>
Lines 1743-1750 Link Here
1743
        <para>If you are not sure about the category, please put a comment to
1856
        <para>If you are not sure about the category, please put a comment to
1744
          that effect in your &man.send-pr.1; submission so we can
1857
          that effect in your &man.send-pr.1; submission so we can
1745
          discuss it before we import it.  If you are a committer, send a note
1858
          discuss it before we import it.  If you are a committer, send a note
1746
          to the &a.ports; so we can discuss it first&mdash;too often new ports are
1859
          to the &a.ports; so we can discuss it first.  Too often, new ports are
1747
          imported to the wrong category only to be moved right away.</para>
1860
          imported to the wrong category only to be moved right away.
1861
          This causes unneccessary, and undesired, bloat in the master
1862
          source repository.</para>
1748
      </sect2>
1863
      </sect2>
1749
    </sect1>
1864
    </sect1>
1750
1865
Lines 1800-1808 Link Here
1800
1915
1801
        <para>It is recommended that you put multiple sites on this list,
1916
        <para>It is recommended that you put multiple sites on this list,
1802
          preferably from different continents.  This will safeguard against
1917
          preferably from different continents.  This will safeguard against
1803
          wide-area network problems, and we are even planning to add support
1918
          wide-area network problems.  (We are hoping to add support
1804
          for automatically determining the closest master site and fetching
1919
          for automatically determining the closest master site and fetching
1805
          from there!</para>
1920
          from there in the future; having multiple sites will go
1921
          a long way towards helping this effort.)</para>
1806
1922
1807
        <para>If the original tarball is part of one of the popular
1923
        <para>If the original tarball is part of one of the popular
1808
          archives such as X-contrib, GNU, or Perl CPAN, you may be able
1924
          archives such as X-contrib, GNU, or Perl CPAN, you may be able
Lines 1848-1855 Link Here
1848
	  neither of these are set then <makevar>EXTRACT_SUFX</makevar>
1964
	  neither of these are set then <makevar>EXTRACT_SUFX</makevar>
1849
	  defaults to <literal>.tar.gz</literal>.</para>
1965
	  defaults to <literal>.tar.gz</literal>.</para>
1850
1966
1851
	<para>You never need to set both <makevar>EXTRACT_SUFX</makevar> and
1967
        <note>
1852
	  <makevar>DISTFILES</makevar>.</para>
1968
	  <para>You never need to set both <makevar>EXTRACT_SUFX</makevar> and
1969
	    <makevar>DISTFILES</makevar>.</para>
1970
        </note>
1853
      </sect2>
1971
      </sect2>
1854
1972
1855
      <sect2>
1973
      <sect2>
Lines 1937-1942 Link Here
1937
	  sites and subdirectories
2055
	  sites and subdirectories
1938
	  (<literal>MASTER_SITES:n</literal>)</title>
2056
	  (<literal>MASTER_SITES:n</literal>)</title>
1939
2057
2058
	<para>(Consider this to be a somewhat <quote>advanced topic</quote>;
2059
	  those new to this document may wish to skip this section at first).
2060
	  </para>
2061
1940
	<para>This section has information on the fetching mechanism
2062
	<para>This section has information on the fetching mechanism
1941
	  known as both <literal>MASTER_SITES:n</literal> and
2063
	  known as both <literal>MASTER_SITES:n</literal> and
1942
	  <literal>MASTER_SITES_NN</literal>.  We will refer to this
2064
	  <literal>MASTER_SITES_NN</literal>.  We will refer to this
Lines 2609-2614 Link Here
2609
        <para>Set your mail-address here.  Please.  <!-- smiley
2731
        <para>Set your mail-address here.  Please.  <!-- smiley
2610
          --><emphasis>:-)</emphasis></para>
2732
          --><emphasis>:-)</emphasis></para>
2611
2733
2734
        <para>The format used should be <literal>user@hostname.domain</literal>.
2735
          Please do not include any descriptive text such as your real
2736
          name in this entry&mdash;that merely confuses
2737
          <filename>bsd.port.mk</filename>.  Instead, put that information
2738
          into your <filename>pkg-descr</filename>.</para>
2739
2612
        <para>For a detailed description of the responsibilities of maintainers,
2740
        <para>For a detailed description of the responsibilities of maintainers,
2613
          refer to the <ulink url="../developers-handbook/policies.html#POLICIES-MAINTAINER">MAINTAINER on
2741
          refer to the <ulink url="../developers-handbook/policies.html#POLICIES-MAINTAINER">MAINTAINER on
2614
            Makefiles</ulink> section.</para>
2742
            Makefiles</ulink> section.</para>
Lines 2620-2626 Link Here
2620
        <para>This is a one-line description of the port.
2748
        <para>This is a one-line description of the port.
2621
          <emphasis>Please</emphasis> do not include the package name (or
2749
          <emphasis>Please</emphasis> do not include the package name (or
2622
          version number of the software) in the comment.  The comment
2750
          version number of the software) in the comment.  The comment
2623
          should begin with a capital, and end without a period.  Here
2751
          should begin with a capital, end without a period, and
2752
          should not be surrounded by quotes.  Here
2624
          is an example:</para>
2753
          is an example:</para>
2625
2754
2626
        <programlisting>COMMENT=       A cat chasing a mouse all over the screen</programlisting>
2755
        <programlisting>COMMENT=       A cat chasing a mouse all over the screen</programlisting>
Lines 2910-2916 Link Here
2910
          <para>When you type <command>make clean</command>, its dependencies
3039
          <para>When you type <command>make clean</command>, its dependencies
2911
            are automatically cleaned too.  If you do not wish this to happen,
3040
            are automatically cleaned too.  If you do not wish this to happen,
2912
            define the variable <makevar>NOCLEANDEPENDS</makevar> in your
3041
            define the variable <makevar>NOCLEANDEPENDS</makevar> in your
2913
            environment.</para>
3042
            environment.  This may be particularly desireable if the
3043
            port has something that takes a long time to rebuild in its
3044
            dependency list, such as KDE, GNOME, Apache, and so forth.</para>
2914
3045
2915
          <para>To depend on another port unconditionally, use the
3046
          <para>To depend on another port unconditionally, use the
2916
            variable <makevar>${NONEXISTENT}</makevar> as the first field 
3047
            variable <makevar>${NONEXISTENT}</makevar> as the first field 
Lines 2969-2981 Link Here
2969
	<makevar>WANT_IMLIB</makevar>, and
3100
	<makevar>WANT_IMLIB</makevar>, and
2970
	<makevar>WANT_GNOME</makevar>.</para>
3101
	<makevar>WANT_GNOME</makevar>.</para>
2971
      </sect2>
3102
      </sect2>
3103
3104
      <sect2>
3105
        <title>Circular dependencies are fatal</title>
3106
3107
        <important>
3108
          <para>Do not introduce any circular dependencies into the
3109
          ports tree!</para>
3110
        </important>
3111
3112
        <para>The ports building technology does not tolerate
3113
          circular dependencies.  If you introduce one, you will have
3114
          someone, somewhere in the world, whose FreeBSD installation will
3115
          break almost immediately, with many others quickly to follow.
3116
          These can really be hard to detect, especially with,
3117
          for instance, the GNOME libraries.  If in doubt, before
3118
          you make that change, make sure you have done the following:
3119
          <command>cd /usr/ports; make index</command>.  That process
3120
          can be quite slow on older machines, but you may be able to
3121
          save a large number of people&mdash;including yourself&mdash;
3122
          a lot of grief in the process.</para>
3123
      </sect2>
2972
    </sect1>
3124
    </sect1>
2973
3125
2974
    <sect1 id="makefile-wrkdir">
3126
    <sect1 id="makefile-wrkdir">
2975
      <title>Specifying the working directory</title>
3127
      <title>Specifying the working directory</title>
2976
3128
2977
      <para>Each port is extracted in to a working directory, which must be
3129
      <para>Each port is extracted in to a working directory, which must be
2978
	writable.  The ports system assumes that the
3130
	writable.  The ports system defaults to having the
2979
	<makevar>DISTFILES</makevar> unpack in to a directory called
3131
	<makevar>DISTFILES</makevar> unpack in to a directory called
2980
	<literal>${DISTNAME}</literal>.  In other words, if you have
3132
	<literal>${DISTNAME}</literal>.  In other words, if you have
2981
	set:</para>
3133
	set:</para>
Lines 2987-2993 Link Here
2987
	<filename>foo-1.0</filename>, and the rest of the files are located
3139
	<filename>foo-1.0</filename>, and the rest of the files are located
2988
	under that directory.</para>
3140
	under that directory.</para>
2989
3141
2990
      <para>There are a number of variables you can set if that is not the
3142
      <para>There are a number of variables you can override if that is not the
2991
	case.</para>
3143
	case.</para>
2992
3144
2993
      <sect2>
3145
      <sect2>
Lines 3164-3171 Link Here
3164
3316
3165
	<para>This variable indicates that although we are allowed to generate
3317
	<para>This variable indicates that although we are allowed to generate
3166
	  binary packages, we are not allowed to put those packages, or the
3318
	  binary packages, we are not allowed to put those packages, or the
3167
	  port's <makevar>DISTFILES</makevar>, on to CDROM for resale.  The
3319
	  port's <makevar>DISTFILES</makevar>, onto a CDROM (or DVD-ROM)
3168
	  <makevar>DISTFILES</makevar> will still be available via FTP.</para>
3320
	  for resale.  The
3321
	  <makevar>DISTFILES</makevar> will still be available via FTP
3322
	  (or HTTP if you set it up that way.)</para>
3169
3323
3170
	<para><makevar>NO_PACKAGE</makevar> and <makevar>NO_CDROM</makevar>
3324
	<para><makevar>NO_PACKAGE</makevar> and <makevar>NO_CDROM</makevar>
3171
	  can be set simultaneously.</para>
3325
	  can be set simultaneously.</para>
Lines 3176-3186 Link Here
3176
3330
3177
	<para>Set this variable if the application's license also forbids us
3331
	<para>Set this variable if the application's license also forbids us
3178
	  from mirroring the application's <makevar>DISTFILES</makevar> via
3332
	  from mirroring the application's <makevar>DISTFILES</makevar> via
3179
	  FTP.</para>
3333
	  FTP (or HTTP if you set it up that way.)</para>
3180
3334
3181
	<para>Also set this if the application's license has general
3335
	<para>Also set this if the application's license has general
3182
	  restrictions on who may use it, e.g. the application is for
3336
	  restrictions on who may use it, e.g. the application is for
3183
	  non-commercial use only.</para>
3337
	  non-commercial use only.</para>
3338
3339
	<para>Note that the port committer should add an entry to
3340
	  <filename>/usr/ports/LEGAL</filename> describing exactly
3341
	  what the restriction entails.</para>
3184
      </sect2>
3342
      </sect2>
3185
3343
3186
      <sect2>
3344
      <sect2>
Lines 3563-3593 Link Here
3563
    <sect1 id="using-bison">
3721
    <sect1 id="using-bison">
3564
      <title>Using Bison</title>
3722
      <title>Using Bison</title>
3565
3723
3566
      <para></para>
3724
      <para>This section is yet to be written.</para>
3567
    </sect1>
3725
    </sect1>
3568
3726
3569
    <sect1 id="using-java">
3727
    <sect1 id="using-java">
3570
      <title>Using Java</title>
3728
      <title>Using Java</title>
3571
3729
3572
      <para></para>
3730
      <para>This section is yet to be written.</para>
3573
    </sect1>
3731
    </sect1>
3574
3732
3575
    <sect1 id="using-python">
3733
    <sect1 id="using-python">
3576
      <title>Using Python</title>
3734
      <title>Using Python</title>
3577
3735
3578
      <para></para>
3736
      <para>This section is yet to be written.</para>
3579
    </sect1>
3737
    </sect1>
3580
3738
3581
    <sect1 id="using-emacs">
3739
    <sect1 id="using-emacs">
3582
      <title>Using Emacs</title>
3740
      <title>Using Emacs</title>
3583
3741
3584
      <para></para>
3742
      <para>This section is yet to be written.</para>
3585
    </sect1>
3743
    </sect1>
3586
3744
3587
    <sect1 id="using-ruby">
3745
    <sect1 id="using-ruby">
3588
      <title>Using Ruby</title>
3746
      <title>Using Ruby</title>
3589
3747
3590
      <para></para>
3748
      <para>This section is yet to be written.</para>
3591
    </sect1>
3749
    </sect1>
3592
    </chapter>
3750
    </chapter>
3593
3751
Lines 3956-3962 Link Here
3956
4114
3957
        <para>This variable will be set by <filename>bsd.port.mk</filename> to
4115
        <para>This variable will be set by <filename>bsd.port.mk</filename> to
3958
          be the appropriate reference to the Motif library.  Please patch the
4116
          be the appropriate reference to the Motif library.  Please patch the
3959
          source to use this wherever the Motif library is referenced in the
4117
          source of your port to reference this wherever the Motif library
4118
          is referenced in the
3960
          <filename>Makefile</filename> or
4119
          <filename>Makefile</filename> or
3961
          <filename>Imakefile</filename>.</para>
4120
          <filename>Imakefile</filename>.</para>
3962
4121
Lines 3991-3997 Link Here
3991
4150
3992
      <para>If your port installs fonts for the X Window System, put them in
4151
      <para>If your port installs fonts for the X Window System, put them in
3993
        <filename><makevar>X11BASE</makevar>/lib/X11/fonts/local</filename>.
4152
        <filename><makevar>X11BASE</makevar>/lib/X11/fonts/local</filename>.
3994
        This directory is new to <application>XFree86 3.3.3</application>.  If it does not exist,
4153
        This directory was new to <application>XFree86 3.3.3</application>.  If it does not exist,
3995
        please create it, and print out a message urging the user to update
4154
        please create it, and print out a message urging the user to update
3996
        their <application>XFree86</application> to 3.3.3 or newer, or at least add this directory to the
4155
        their <application>XFree86</application> to 3.3.3 or newer, or at least add this directory to the
3997
        font path in <filename>/etc/XF86Config</filename>.</para>
4156
        font path in <filename>/etc/XF86Config</filename>.</para>
Lines 4295-4301 Link Here
4295
          is installed with &man.pkg.add.1; you can do this via the
4454
          is installed with &man.pkg.add.1; you can do this via the
4296
          <filename>pkg-install</filename> script.  This script will
4455
          <filename>pkg-install</filename> script.  This script will
4297
          automatically be added to the package, and will be run twice by
4456
          automatically be added to the package, and will be run twice by
4298
          &man.pkg.add.1;.  The first time as
4457
          &man.pkg.add.1;: the first time as
4299
          <literal>&dollar;{SH} pkg-install &dollar;{PKGNAME}
4458
          <literal>&dollar;{SH} pkg-install &dollar;{PKGNAME}
4300
          PRE-INSTALL</literal> and the second time as
4459
          PRE-INSTALL</literal> and the second time as
4301
          <literal>&dollar;{SH} pkg-install &dollar;{PKGNAME} POST-INSTALL</literal>. 
4460
          <literal>&dollar;{SH} pkg-install &dollar;{PKGNAME} POST-INSTALL</literal>. 
Lines 4344-4353 Link Here
4344
          <literal>%%PERL_VERSION%%</literal> will be substituted for
4503
          <literal>%%PERL_VERSION%%</literal> will be substituted for
4345
          appropriately.  The value of <literal>%%OSREL%%</literal> is the
4504
          appropriately.  The value of <literal>%%OSREL%%</literal> is the
4346
          numeric revision of the operating system (e.g.,
4505
          numeric revision of the operating system (e.g.,
4347
          <literal>2.2.7</literal>).  <literal>%%PERL_VERSION%%</literal> is
4506
          <literal>4.8</literal>).  <literal>%%PERL_VERSION%%</literal> is
4348
          the full version number of <literal>perl</literal> (e.g.,
4507
          the full version number of <command>perl</command> (e.g.,
4349
          <literal>5.00502</literal>)
4508
          <literal>5.00502</literal>)
4350
          and <literal>%%PERL_VER%%</literal> is the <literal>perl</literal>
4509
          and <literal>%%PERL_VER%%</literal> is the <command>perl</command>
4351
          version number minus
4510
          version number minus
4352
          the patchlevel (e.g., <literal>5.005</literal>).</para>
4511
          the patchlevel (e.g., <literal>5.005</literal>).</para>
4353
4512
Lines 4476-4482 Link Here
4476
          set, in which case it will be <makevar>X11BASE</makevar> (default
4635
          set, in which case it will be <makevar>X11BASE</makevar> (default
4477
          <filename>/usr/X11R6</filename>).</para>
4636
          <filename>/usr/X11R6</filename>).</para>
4478
4637
4479
        <para>Not hard-coding <filename>/usr/local</filename> or
4638
        <para>Avoiding hard-coding <filename>/usr/local</filename> or
4480
          <filename>/usr/X11R6</filename> anywhere in the source will make the
4639
          <filename>/usr/X11R6</filename> anywhere in the source will make the
4481
          port much more flexible and able to cater to the needs of other
4640
          port much more flexible and able to cater to the needs of other
4482
          sites.  For X ports that use <command>imake</command>, this is
4641
          sites.  For X ports that use <command>imake</command>, this is
Lines 4533-4539 Link Here
4533
      <sect1 id="testing-freshports">
4692
      <sect1 id="testing-freshports">
4534
	<title>FreshPorts sanity tests</title>
4693
	<title>FreshPorts sanity tests</title>
4535
4694
4536
	<para><ulink url="http://www.FreshPorts.org/">FreshPorts</ulink> has
4695
	<para><ulink url="http://www.FreshPorts.org/"></ulink> has
4537
	  a sanity test feature which automatically tests each commit to the
4696
	  a sanity test feature which automatically tests each commit to the
4538
	  FreeBSD ports tree.  If subscribed to this service, you will be
4697
	  FreeBSD ports tree.  If subscribed to this service, you will be
4539
	  notified of any errors which FreshPorts detects during sanity
4698
	  notified of any errors which FreshPorts detects during sanity
Lines 4584-4589 Link Here
4584
        doing a commit.  If the diff is more than about 20KB, please compress
4750
        doing a commit.  If the diff is more than about 20KB, please compress
4585
        and uuencode it; otherwise, just include it in the PR as is.</para>
4751
        and uuencode it; otherwise, just include it in the PR as is.</para>
4586
4752
4753
      <para>Finally, please see the
4754
        <ulink url="../../articles/problem-reports/pr-writing.html">
4755
        Writing the problem report</ulink> section in the Problem
4756
        Reports article for more information about how to write
4757
        useful problem reports.</para>
4758
4587
      <important>
4759
      <important>
4588
	<para>If your upgrade is motivated by security concerns or a
4760
	<para>If your upgrade is motivated by security concerns or a
4589
	  serious fault in the currently committed port, please notify
4761
	  serious fault in the currently committed port, please notify
Lines 4603-4616 Link Here
4603
    <chapter id="porting-dads">
4775
    <chapter id="porting-dads">
4604
      <title>Dos and Don'ts</title>
4776
      <title>Dos and Don'ts</title>
4605
4777
4778
      <sect1 id="dads-intro">
4779
        <title>Introduction</title>
4780
4606
      <para>Here is a list of common dos and don'ts that you encounter during
4781
      <para>Here is a list of common dos and don'ts that you encounter during
4607
        the porting process.  You should check your own port against this list,
4782
        the porting process.  You should check your own port against this list,
4608
        but you can also check ports in the PR database that others have
4783
        but you can also check ports in the
4784
        <ulink url="http://www.freebsd.org/cgi/query-pr-summary.cgi?query">
4785
        PR database</ulink> that others have
4609
        submitted.  Submit any comments on ports you check as described in
4786
        submitted.  Submit any comments on ports you check as described in
4610
        <ulink url="../../articles/contributing/contrib-how.html#CONTRIB-GENERAL">Bug Reports and General
4787
        <ulink url="../../articles/contributing/contrib-how.html#CONTRIB-GENERAL">Bug Reports and General
4611
          Commentary</ulink>.  Checking ports in the PR database will both make
4788
          Commentary</ulink>.  Checking ports in the PR database will both make
4612
        it faster for us to commit them, and prove that you know what you are
4789
        it faster for us to commit them, and prove that you know what you are
4613
        doing.</para>
4790
        doing.</para>
4791
      </sect1>
4614
4792
4615
      <sect1 id="dads-strip">
4793
      <sect1 id="dads-strip">
4616
        <title>Stripping Binaries</title>
4794
        <title>Stripping Binaries</title>
Lines 4678-4684 Link Here
4678
          <makevar>WRKDIR</makevar>.  <makevar>WRKDIR</makevar> is the only
4856
          <makevar>WRKDIR</makevar>.  <makevar>WRKDIR</makevar> is the only
4679
          place that is guaranteed to be writable during the port build (see
4857
          place that is guaranteed to be writable during the port build (see
4680
          <ulink url="../handbook/ports-using.html#PORTS-CD">
4858
          <ulink url="../handbook/ports-using.html#PORTS-CD">
4681
          compiling ports from CDROM</ulink> for an
4859
          installing ports from a CDROM</ulink> for an
4682
          example of building ports from a read-only tree).  If you need to
4860
          example of building ports from a read-only tree).  If you need to
4683
          modify one of the <filename>pkg-<replaceable>*</replaceable></filename>
4861
          modify one of the <filename>pkg-<replaceable>*</replaceable></filename>
4684
          files, do so by <link
4862
          files, do so by <link
Lines 4708-4714 Link Here
4708
          compilation based upon what version of Unix it is running under.  If
4886
          compilation based upon what version of Unix it is running under.  If
4709
          you need to make such changes to the code for conditional
4887
          you need to make such changes to the code for conditional
4710
          compilation, make sure you make the changes as general as possible
4888
          compilation, make sure you make the changes as general as possible
4711
          so that we can back-port code to FreeBSD 1.x systems and cross-port
4889
          so that we can back-port code to older FreeBSD systems and cross-port
4712
          to other BSD systems such as 4.4BSD from CSRG, BSD/386, 386BSD,
4890
          to other BSD systems such as 4.4BSD from CSRG, BSD/386, 386BSD,
4713
          NetBSD, and OpenBSD.</para>
4891
          NetBSD, and OpenBSD.</para>
4714
4892
Lines 4777-4789 Link Here
4777
          <listitem>
4955
          <listitem>
4778
            <para>In FreeBSD 2.x, <literal>__FreeBSD__</literal> is defined to
4956
            <para>In FreeBSD 2.x, <literal>__FreeBSD__</literal> is defined to
4779
              be <literal>2</literal>.  In earlier versions, it is
4957
              be <literal>2</literal>.  In earlier versions, it is
4780
              <literal>1</literal>.  Later versions will bump it to match
4958
              <literal>1</literal>.  Later versions always bump it to match
4781
              their major version number.</para>
4959
              their major version number.</para>
4782
          </listitem>
4960
          </listitem>
4783
4961
4784
          <listitem>
4962
          <listitem>
4785
            <para>If you need to tell the difference between a FreeBSD 1.x
4963
            <para>If you need to tell the difference between a FreeBSD 1.x
4786
              system and a FreeBSD 2.x or 3.x system, usually the right answer
4964
              system and a FreeBSD 2.x or above system, usually the right answer
4787
              is to use the <literal>BSD</literal> macros described above.  If
4965
              is to use the <literal>BSD</literal> macros described above.  If
4788
              there actually is a FreeBSD specific change (such as special
4966
              there actually is a FreeBSD specific change (such as special
4789
              shared library options when using <command>ld</command>) then it
4967
              shared library options when using <command>ld</command>) then it
Lines 5757-5763 Link Here
5757
5935
5758
              <row>
5936
              <row>
5759
                <entry><makevar>OSVERSION</makevar></entry>
5937
                <entry><makevar>OSVERSION</makevar></entry>
5760
                <entry>The numeric version of the operating system, same as
5938
                <entry>The numeric version of the operating system; same as
5761
                  <link
5939
                  <link
5762
                    linkend="freebsd-versions"><literal>__FreeBSD_version</literal></link>.</entry>
5940
                    linkend="freebsd-versions"><literal>__FreeBSD_version</literal></link>.</entry>
5763
              </row>
5941
              </row>
Lines 5765-5771 Link Here
5765
              <row>
5943
              <row>
5766
                <entry><makevar>PORTOBJFORMAT</makevar></entry>
5944
                <entry><makevar>PORTOBJFORMAT</makevar></entry>
5767
                <entry>The object format of the system
5945
                <entry>The object format of the system
5768
                  (<literal>aout</literal> or <literal>elf</literal>)</entry>
5946
                  (<literal>elf</literal> or <literal>aout</literal>;
5947
                  note that for <quote>modern</quote> versions of FreeBSD,
5948
                  <literal>aout</literal> is deprecated.)</entry>
5769
              </row>
5949
              </row>
5770
5950
5771
              <row>
5951
              <row>
Lines 5817-5822 Link Here
5817
.if ${PORTOBJFORMAT} == "aout"
5997
.if ${PORTOBJFORMAT} == "aout"
5818
       ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so
5998
       ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so
5819
.endif</programlisting>
5999
.endif</programlisting>
6000
6001
        <para>You did remember to use tab instead of spaces after
6002
          <literal>BROKEN=</literal> and
6003
          <literal>TCL_LIB_FILE=</literal>, did you not?
6004
          <!-- smiley -->:-).</para>
5820
      </sect1>
6005
      </sect1>
5821
6006
5822
      <sect1 id="dads-documentation">
6007
      <sect1 id="dads-documentation">
Lines 5873-5879 Link Here
5873
          the subdirectory with the port's name, which is incorrect.  Also,
6058
          the subdirectory with the port's name, which is incorrect.  Also,
5874
          many ports put everything except binaries, header files and manual
6059
          many ports put everything except binaries, header files and manual
5875
          pages in the a subdirectory of <filename>lib</filename>, which does
6060
          pages in the a subdirectory of <filename>lib</filename>, which does
5876
          not bode well with the BSD paradigm.  Many of the files should be
6061
          not work well with the BSD paradigm.  Many of the files should be
5877
          moved to one of the following: <filename>etc</filename>
6062
          moved to one of the following: <filename>etc</filename>
5878
          (setup/configuration files), <filename>libexec</filename>
6063
          (setup/configuration files), <filename>libexec</filename>
5879
          (executables started internally), <filename>sbin</filename>
6064
          (executables started internally), <filename>sbin</filename>
Lines 5935-5941 Link Here
5935
          other ports.  This is the current list of UIDs between 50 and
6120
          other ports.  This is the current list of UIDs between 50 and
5936
          999.</para>
6121
          999.</para>
5937
6122
5938
        <programlisting>majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent
6123
        <programlisting>bind:*:53:53:Bind Sandbox:/:/sbin/nologin
6124
majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent
5939
cyrus:*:60:60:the cyrus mail server:/nonexistent:/nonexistent
6125
cyrus:*:60:60:the cyrus mail server:/nonexistent:/nonexistent
5940
gnats:*:61:1:GNATS database owner:/usr/local/share/gnats/gnats-db:/bin/sh
6126
gnats:*:61:1:GNATS database owner:/usr/local/share/gnats/gnats-db:/bin/sh
5941
uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
6127
uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
Lines 5982-5987 Link Here
5982
          <makevar>EXTRACT*</makevar> instead, and using
6168
          <makevar>EXTRACT*</makevar> instead, and using
5983
          <makevar>GNU_CONFIGURE</makevar> instead of <literal>CONFIGURE_ARGS
6169
          <makevar>GNU_CONFIGURE</makevar> instead of <literal>CONFIGURE_ARGS
5984
            += --prefix=&dollar;{PREFIX}</literal>.</para>
6170
            += --prefix=&dollar;{PREFIX}</literal>.</para>
6171
6172
        <para>If you find yourself having to write a whole lot of lines
6173
          of new code to try to do something, please go back and review
6174
          <filename>bsd.port.mk</filename> to see if it contains an
6175
          existing implementation of what you are trying to do.  While
6176
          hard to read, there are a great many seemingly-hard problems for
6177
          which <filename>bsd.port.mk</filename> already provides a
6178
          shorthand solution.  There is almost nothing in
6179
          <filename>bsd.port.mk</filename> which was included by
6180
          accident and is not continually being worked on.</para>
5985
      </sect1>
6181
      </sect1>
5986
6182
5987
      <sect1 id="dads-cc">
6183
      <sect1 id="dads-cc">
Lines 5989-5995 Link Here
5989
	  <makevar>CXX</makevar></title>
6185
	  <makevar>CXX</makevar></title>
5990
6186
5991
	<para>The port should respect both <makevar>CC</makevar>
6187
	<para>The port should respect both <makevar>CC</makevar>
5992
	  and <makevar>CXX</makevar> variables.  If it does not,
6188
	  and <makevar>CXX</makevar> variables.  What we mean by this
6189
	  is that the port should not set the values of these variables
6190
	  absolutely, overriding existing values; instead, it should append
6191
	  whatever values it needs to the existing values.  This is so that
6192
	  build options that affect all ports can be set globally.</para>
6193
6194
	<para>If the port does not respect these variables,
5993
	  please add <literal>NO_PACKAGE=ignores either cc or
6195
	  please add <literal>NO_PACKAGE=ignores either cc or
5994
	  cxx</literal> to the <filename>Makefile</filename>.</para>
6196
	  cxx</literal> to the <filename>Makefile</filename>.</para>
5995
6197
Lines 6020-6026 Link Here
6020
        <title>Respect <makevar>CFLAGS</makevar></title>
6222
        <title>Respect <makevar>CFLAGS</makevar></title>
6021
6223
6022
        <para>The port should respect the <makevar>CFLAGS</makevar> variable.
6224
        <para>The port should respect the <makevar>CFLAGS</makevar> variable.
6023
          If it does not, please add <literal>NO_PACKAGE=ignores
6225
	  Again, what we mean by this
6226
	  is that the port should not set the value of this variable
6227
	  absolutely, overriding the existing value; instead, it should append
6228
	  whatever values it needs to the existing value.  This is so that
6229
	  build options that affect all ports can be set globally.</para>
6230
6231
	<para>Again, if it does not, please add <literal>NO_PACKAGE=ignores
6024
            cflags</literal> to the <filename>Makefile</filename>.</para>
6232
            cflags</literal> to the <filename>Makefile</filename>.</para>
6025
6233
6026
	<para>An example of a <filename>Makefile</filename> respecting
6234
	<para>An example of a <filename>Makefile</filename> respecting
Lines 6337-6343 Link Here
6337
6545
6338
      <para>Other resources to assist port maintainers include a list of
6546
      <para>Other resources to assist port maintainers include a list of
6339
	<ulink url="http://bento.FreeBSD.org/">package building logs and
6547
	<ulink url="http://bento.FreeBSD.org/">package building logs and
6340
	errors </ulink> and the <ulink
6548
	errors</ulink> hosted on the <literal>bento cluster</literal>,
6549
	and also the <ulink
6341
	  url="http://people.FreeBSD.org/~fenner/portsurvey/">FreeBSD
6550
	  url="http://people.FreeBSD.org/~fenner/portsurvey/">FreeBSD
6342
	  Ports distfiles survey</ulink>.</para>
6551
	  Ports distfiles survey</ulink>.</para>
6343
    </chapter>
6552
    </chapter>

Return to bug 53422