long descriptions in OPTIONS

Scot Hetzel swhetzel at gmail.com
Sat Apr 26 09:39:42 UTC 2008


On 4/25/08, Wesley Shields <wxs at freebsd.org> wrote:
> Based upon an idea in an earlier thread on this list[1] I came up with
>  two ways of adding an extended description to our existing OPTIONS
>  framework.
>
>  1: Extend the OPTIONS to be 4 fields instead of the current 3 fields.
>  The 4th field would be the long description - providing more detailed
>  information about what this option does or supports.  In order to
>  distinguish between a port with 4 OPTIONS without the long description
>  (12 fields) and a port with 3 OPTIONS with the long description (also 12
>  fields) the patch requires the port to turn on a knob (OPTIONS_DESC)
>  when using the long field.  The idea is that over time this will become
>  the default and can eventually be removed.
>
>  2: Leave OPTIONS as is but support a DESC_FOO variable for each OPTION.
>  This variable would be the long description field, and if it doesn't
>  exist a default message indicating such would be displayed.
>
>  Both of these methods are displayed to the user when '?' or F1 is
>  pressed during the dialog screen.  In the case of (1) the extra dialog
>  is only shown if the port supports it.  In the case of (2) the extra
>  dialog is always available since we have a default message to display.
>  I suppose a third way would be to use a default message when the knob is
>  not set for (1), which would probably simplify things slightly.
>

Couple of suggestions:

- OPTION_DESC (choice 1) or DESC_FOO (choice 2) not defined, then use
field 2 as the long description along with "[NO EXTENDED DESCRIPTION
DEFINED]" appended.
- Remove "Contact the maintainer to fix this" from choice 2, as some
maintainers may resent being contacted by users to add extended
descriptions to their ports.
- Use OPTION_DESC_FOO instead of DESC_FOO (choice 2).
- add support for ${PORTSDIR}/MK/bsd.optiondescription.mk,  This file
holds a list of standard extended option descriptions, for example:

_STD_DESC_A4SIZE= "Sets the default paper size used by ${PORTNAME} -
A4 (210 mm × 297 mm) or Letter (8½ in × 11 in, 215.9 mm × 279.4 mm)"

The following code, should accomplish the above for choice 2:

LONGDESC=$$(cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} -V OPTION_DESC_$$1); \
if [ "x$${LONGDESC}" = "x" ] ; then \
    LONGDESC=$$(cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} -V
_STD_DESC_$${1}); \
    if [ "x$${LONGDESC}" = "x" ]; then \
         LONGDESC="$$2 [NO EXTENDED DESCRIPTION DEFINED]" ; \
    fi ; \
fi ; \
${ECHO_CMD} $$1: $${LONGDESC} | fmt >> $${TMPOPTIONDESCFILE}; \
${ECHO_CMD} >> $${TMPOPTIONDESCFILE}; \

Scot


More information about the freebsd-ports mailing list