Date: Tue, 20 Jan 2004 14:12:25 +0100 From: Oliver Eikemeier <eikemeier@fillmore-labs.com> To: Joe Marcus Clarke <marcus@FreeBSD.org>, Eivind Eklund <eivind@FreeBSD.org>, Kris Kennaway <kris@obsecurity.org> Cc: ports@FreeBSD.org Subject: Re: HEADS UP: New bsd.*.mk changes Message-ID: <400D2939.5090203@fillmore-labs.com> In-Reply-To: <1074590694.85583.20.camel@shumai.marcuscom.com> References: <1074590694.85583.20.camel@shumai.marcuscom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Joe Marcus Clarke wrote: > Type: FEATURE > > Title: Add per-port persistent build options with a menu-driven > front-end > > Affects: bsd.port.mk > > Description: Probably one of the most anticipated new features for the > ports system is the ability to have persistent per-port build options. > This new feature adds that functionality as well as a new menu-driven > interface for setting those per-port options. Porters will need to set > the OPTIONS macro in their port's Makefile to a list of WITH_ options > supported by that port. The format is <option> "<description>" > [on|off]. For example: FLEXRESP "Flexible response to events" off. > This says that this port supports a WITH_FLEXRESP option that is not > defined by default. This option's description is, "Flexible response > to events." Multiple options should be chained into the one OPTIONS > macro. NOTE: For OPTIONS to work, you must define OPTIONS before > bsd.port.pre.mk. In order to configure these options, use the > ``config'' target. Doing ``make config'' will pop up a curses-based > dialog which lists all the available options for the given port. > Changes are saved in a per-port directory under PORTS_DBDIR (default: > /var/db/ports). To view configurable options for a port, use the > ``showconfig'' target. To set all port options back to the defaults, > use the ``rmconfig'' target. > > PR: > > Submitted by: eivind Sorry for stepping up so late, but this saves options under ${PORT_DBDIR}/${PORTNAME}/options Lots of ports have the same PORTNAME (ie 'openldap' for net/openldap2[012]-(client|server), 'apache' for russian/apache13, www/apache(13|13-fp|2|21)). Some conflict, but -client/-server don't. Either each port has to set OPTIONSFILE to ${PORT_DBDIR}/${PORTNAME}/something, or we may use LATEST_LINK instead of PORTNAME: Index: /usr/ports/Mk/bsd.port.mk =================================================================== RCS file: /home/ncvs/ports/Mk/bsd.port.mk,v retrieving revision 1.475 diff -u -r1.475 bsd.port.mk --- /usr/ports/Mk/bsd.port.mk 20 Jan 2004 09:14:09 -0000 1.475 +++ /usr/ports/Mk/bsd.port.mk 20 Jan 2004 12:59:22 -0000 @@ -1014,17 +1014,6 @@ USE_SUBMAKE= yes .endif -# where 'make config' records user configuration options -PORT_DBDIR?= /var/db/ports - -OPTIONSFILE?=${PORT_DBDIR}/${PORTNAME}/options -.if exists(${OPTIONSFILE}) -.include "${OPTIONSFILE}" -.endif -.if exists(${OPTIONSFILE}.local) -.include "${OPTIONSFILE}.local" -.endif - # check for old, crufty, makefile types, part 1: .if !defined(PORTNAME) || !defined(PORTVERSION) || defined(PKGNAME) check-makefile:: @@ -1085,6 +1074,31 @@ PACKAGES?= ${PORTSDIR}/packages TEMPLATES?= ${PORTSDIR}/Templates +PKGREPOSITORYSUBDIR?= All +PKGREPOSITORY?= ${PACKAGES}/${PKGREPOSITORYSUBDIR} +.if exists(${PACKAGES}) +PKGFILE?= ${PKGREPOSITORY}/${PKGNAME}${PKG_SUFX} +.else +PKGFILE?= ${.CURDIR}/${PKGNAME}${PKG_SUFX} +.endif + +# The "latest version" link -- ${PKGNAME} minus everthing after the last '-' +PKGLATESTREPOSITORY?= ${PACKAGES}/Latest +PKGBASE?= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX} +LATEST_LINK?= ${PKGBASE} +PKGLATESTFILE= ${PKGLATESTREPOSITORY}/${LATEST_LINK}${PKG_SUFX} + +# where 'make config' records user configuration options +PORT_DBDIR?= /var/db/ports + +OPTIONSFILE?=${PORT_DBDIR}/${LATEST_LINK}/options +.if exists(${OPTIONSFILE}) +.include "${OPTIONSFILE}" +.endif +.if exists(${OPTIONSFILE}.local) +.include "${OPTIONSFILE}.local" +.endif + .if (!defined(PKGDIR) && exists(${MASTERDIR}/pkg/DESCR)) || \ (!defined(MD5_FILE) && exists(${MASTERDIR}/files/md5)) check-makefile:: @@ -2522,20 +2537,6 @@ @${DO_NADA} .endif -PKGREPOSITORYSUBDIR?= All -PKGREPOSITORY?= ${PACKAGES}/${PKGREPOSITORYSUBDIR} -.if exists(${PACKAGES}) -PKGFILE?= ${PKGREPOSITORY}/${PKGNAME}${PKG_SUFX} -.else -PKGFILE?= ${.CURDIR}/${PKGNAME}${PKG_SUFX} -.endif - -# The "latest version" link -- ${PKGNAME} minus everthing after the last '-' -PKGLATESTREPOSITORY?= ${PACKAGES}/Latest -PKGBASE?= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX} -LATEST_LINK?= ${PKGBASE} -PKGLATESTFILE= ${PKGLATESTREPOSITORY}/${LATEST_LINK}${PKG_SUFX} - .if defined(PERL_CONFIGURE) CONFIGURE_ARGS+= CC="${CC}" CCFLAGS="${CFLAGS}" PREFIX="${PREFIX}" \ INSTALLPRIVLIB="${PREFIX}/lib" INSTALLARCHLIB="${PREFIX}/lib" @@ -4894,8 +4895,8 @@ .if !defined(OPTIONS) @${ECHO_MSG} "===> No options to configure" .else - @(${MKDIR} ${PORT_DBDIR}/${PORTNAME} 2> /dev/null) || \ - (${ECHO_MSG} "===> Cannot create ${PORT_DBDIR}/${PORTNAME}, check permissions"; exit 1) + @(${MKDIR} ${PORT_DBDIR}/${LATEST_LINK} 2> /dev/null) || \ + (${ECHO_MSG} "===> Cannot create ${PORT_DBDIR}/${LATEST_LINK}, check permissions"; exit 1) -@if [ -e ${OPTIONSFILE} ]; then \ . ${OPTIONSFILE}; \ fi; \ @@ -4907,7 +4908,6 @@ withoutvar=WITHOUT_$$1; \ withval=$$(eval ${ECHO_CMD} $$\{$${withvar}\}); \ withoutval=$$(eval ${ECHO_CMD} $$\{$${withoutvar}\}); \ - ${ECHO_CMD} $${withval}; \ if [ ! -z "$${withval}" ]; then \ val=on; \ elif [ ! -z "$${withoutval}" ]; then \ @@ -4917,7 +4917,7 @@ fi; \ DEFOPTIONS="$${DEFOPTIONS} $$1 \"$$2\" $${val}"; \ shift 3; \ - done > /dev/null; \ + done; \ TMPOPTIONSFILE=$$(mktemp -t portoptions); \ trap "${RM} -f $${TMPOPTIONSFILE}; exit 1" 1 2 3 5 10 13 15; \ ${SH} -c "${DIALOG} --checklist \"Options for ${PORTNAME} ${PORTVERSION}\" 21 70 15 $${DEFOPTIONS} 2> $${TMPOPTIONSFILE}"; \ @@ -4964,7 +4964,7 @@ .if exists(${OPTIONSFILE}) -@${ECHO_MSG} "===> Removing user-configured options for ${PORTNAME}"; \ ${RM} -f ${OPTIONSFILE}; \ - ${RMDIR} ${PORT_DBDIR}/${PORTNAME} + ${RMDIR} ${PORT_DBDIR}/${LATEST_LINK} .else @${ECHO_MSG} "===> No user-specified options configured for ${PORTNAME}" .endif
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?400D2939.5090203>