Date: Tue, 8 Jun 2004 03:13:51 -0500 (CDT) From: Mark Linimon <linimon@lonesome.com> To: FreeBSD-gnats-submit@FreeBSD.org Cc: portmgr@FreeBSD.org Subject: docs/67707: [patch] beginning of rework of Dependencies section of Porter's Handbook Message-ID: <200406080813.i588DpFD020980@lonesome.lonesome.com> Resent-Message-ID: <200406080820.i588KOU9075894@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 67707 >Category: docs >Synopsis: [patch] beginning of rework of Dependencies section of Porter's Handbook >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-doc >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Jun 08 08:20:24 GMT 2004 >Closed-Date: >Last-Modified: >Originator: Mark Linimon >Release: FreeBSD 4.9-PRERELEASE i386 >Organization: Lonesome Dove Computing Services >Environment: System: FreeBSD lonesome.lonesome.com 4.9-PRERELEASE FreeBSD 4.9-PRERELEASE #3: Thu Jan 22 20:41:05 CST 2004 root@lonesome.lonesome.com:/usr/src/sys/compile/MULTIMEDIA i386 >Description: The section on dependencies Makevars in the Porter's Handbook is out of date, especially with respect to the WITH_*/WITHOUT_* Makevars. Although this patch is incomplete, it is better than what is there, and provides us a start. Note: I've removed some of the GNOME text because AFAICT it is just completely wrong now. >How-To-Repeat: (n/a) >Fix: The following is my suggested patch. I am going to assign this PR to myself, pending portmgr@ approval of the content. (portmgr is Cc:ed). Index: book.sgml =================================================================== RCS file: /home/FreeBSD/dcvs/doc/en_US.ISO8859-1/books/porters-handbook/book.sgml,v retrieving revision 1.422 diff -u -r1.422 book.sgml --- book.sgml 6 Jun 2004 16:23:23 -0000 1.422 +++ book.sgml 8 Jun 2004 07:59:07 -0000 @@ -3029,7 +3029,26 @@ <title><makevar>USE_<replaceable>*</replaceable></makevar></title> <para>A number of variables exist in order to encapsulate common - dependencies that many ports have.</para> + dependencies that many ports have. Although their use is + optional, they can help to reduce the verbosity of the port + <filename>Makefile</filename>s. Each of them is styled + as <makevar>USE_<replaceable>*</replaceable></makevar>. The + usage of these variables is restricted to the port + <filename>Makefile</filename>s and + <filename>ports/Mk/bsd.*.mk</filename> and is not designed + to encapsulate user-settable options — use + <makevar>WITH_<replaceable>*</replaceable></makevar> and + <makevar>WITHOUT_<replaceable>*</replaceable></makevar> + for that purpose.</para> + + <note> + <para>It is <emphasis>always</emphasis> incorrect to set + any <makevar>USE_<replaceable>*</replaceable></makevar> + in <filename>/etc/make.conf</filename>. For instance, + setting <programlisting>USE_GCC=3.2</programlisting> + would adds a dependency on gcc32 for every port, + including gcc32 itself!</para> + </note> <table frame="none"> <title>The <makevar>USE_<replaceable>*</replaceable></makevar> @@ -3198,42 +3217,6 @@ intention will be clear.</para> </sect2> - <sect2> - <title>Optional dependencies</title> - - <para>Some large applications can be built in a number of - configurations, adding functionality if one of a number of - libraries or applications is available. Since not all users - want those libraries or applications, the ports system - provides hooks that the port author can use to decide which - configuration should be built. Supporting these properly will - make users happy, and effectively provide 2 or more ports for the - price of one.</para> - - <para>The easiest of these to use is - <makevar>WITHOUT_X11</makevar>. If the port can be built both - with and without X support, then it should normally be built - with X support. If <makevar>WITHOUT_X11</makevar> is defined, - then the version that does not have X support should be - built.</para> - - <para>Various parts of GNOME have such knobs, though they are - slightly more difficult to use. The variables to use in the - <filename>Makefile</filename> are <makevar>WANT_*</makevar> - and <makevar>HAVE_*</makevar>. If the application can be - built both with or without one of the dependencies listed - below, then the <filename>Makefile</filename> should set - <makevar>WANT_PKG</makevar>, and should build the version that - uses <makevar>PKG</makevar> if <makevar>HAVE_PKG</makevar> - is defined.</para> - - <para>The <makevar>WANT_*</makevar> variables currently - supported this way are <makevar>WANT_GLIB</makevar>, - <makevar>WANT_GTK</makevar>, <makevar>WANT_ESOUND</makevar>, - <makevar>WANT_IMLIB</makevar>, and - <makevar>WANT_GNOME</makevar>.</para> - </sect2> - <sect2> <title>Circular dependencies are fatal</title> @@ -3252,6 +3235,142 @@ can be quite slow on older machines, but you may be able to save a large number of people—including yourself— a lot of grief in the process.</para> + </sect2> + + </sect1> + + <sect1 id="makefile-options"> + <title>Makefile Options</title> + + <para>Some large applications can be built in a number of + configurations, adding functionality if one of a number of + libraries or applications is available. Examples include + choice of natural (human) language, GUI versus command-line, + or type of database to support. Since not all users + want those libraries or applications, the ports system + provides hooks that the port author can use to control which + configuration should be built. Supporting these properly will + make users happy, and effectively provide 2 or more ports for the + price of one.</para> + + <sect2> + <title><makevar>WITH_<replaceable>*</replaceable></makevar> and + <makevar>WITHOUT_<replaceable>*</replaceable></makevar></title> + + <para>These variables are designed to be set by the system + administrator. There are many that are standardized in + <filename>ports/Mk/bsd.*.mk</filename>; others are not, + which can be confusing. If you need to add such a + configuration variable, please consider using one of the + ones from the following list.</para> + + <note> + <para>You should not assume that a + <makevar>WITH_<replaceable>*</replaceable></makevar> + necessarily has a corresponding + <makevar>WITHOUT_<replaceable>*</replaceable></makevar> + variable and vice versa. In general, the default is + simply assumed.</para> + </note> + + <note> + <para>Unless otherwise specified, these variables are only + tested for being set or not set, rather than being set to + some kind of variable such as <literal>YES</literal> or + <literal>NO</literal>.</para> + </note> + + <table frame="none"> + <title>The <makevar>WITH_<replaceable>*</replaceable></makevar> + and <makevar>WITHOUT_<replaceable>*</replaceable></makevar> + variables</title> + + <tgroup cols="2"> + <thead> + <row> + <entry>Variable</entry> + + <entry>Means</entry> + </row> + </thead> + + <tbody> + <row> + <entry><makevar>WITH_APACHE2</makevar></entry> + + <entry>If set, use + <filename role="package">www/apache2</filename> + instead of the default of + <filename role="package">www/apache</filename>.</entry> + </row> + + <row> + <entry><makevar>WITH_BERKELEY_DB</makevar></entry> + + <entry>Define this variable to specify the ability to + use a variant of the Berkeley database package such as + <filename role="package">databases/db41</filename>. + An associated variable, + <entry><makevar>WITH_BDB_VER</makevar>, may be + set to values such as 2, 3, 4, 41 or 42.</entry> + </row> + + <row> + <entry><makevar>WITHOUT_GETTEXT</makevar></entry> + + <entry>If set, says that internationalization is not + needed, which can save compile time. By default, + internalization is used.</entry> + </row> + + <row> + <entry><makevar>WITH_MYSQL</makevar></entry> + + <entry>Define this variable to specify the ability to + use a variant of the MySQL database package such as + <filename role="package">databases/mysql40-server</filename>. + An associated variable, + <entry><makevar>WANT_MYSQL_VER</makevar>, may be + set to values such as 323, 40, 41, or 50.</entry> + </row> + + <row> + <entry><makevar>WITH_OPENSSL_BASE</makevar></entry> + + <entry>Use the version of OpenSSL in the base system.</entry> + </row> + + <row> + <entry><makevar>WITH_OPENSSL_PORT</makevar></entry> + + <entry>Use the version of OpenSSL from + <filename role="package">security/openssh</filename>, + overwriting the version that was originally installed + in the base system.</entry> + </row> + + <row> + <entry><makevar>WITH_POSTGRESQL</makevar></entry> + + <entry>Define this variable to specify the ability to + use a variant of the PostGreSQL database package such as + <filename role="package">databases/postgresql72</filename>. + </entry> + </row> + + <row> + <entry><makevar>WITHOUT_X11</makevar></entry> + + <entry>If the port can be built both with and without + X support, then it should normally be built with + with X support. If this variable is defined, then + then the version that does not have X support should + be built instead.</entry> + </row> + </tbody> + </tgroup> + </table> + </sect2> </sect1> >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406080813.i588DpFD020980>