Date: Thu, 16 Nov 2017 20:21:16 +0000 (UTC) From: Bryan Drewery <bdrewery@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org Subject: svn commit: r454336 - branches/2017Q4/Mk Message-ID: <201711162021.vAGKLG8I089744@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: bdrewery Date: Thu Nov 16 20:21:16 2017 New Revision: 454336 URL: https://svnweb.freebsd.org/changeset/ports/454336 Log: MFH: r454266 r454332 Fix [DE]SELECTED_OPTIONS to lazily evaluate as late as possible. If a port modifies OPTIONS_UNSET after including bsd.port.options.mk then these values were wrong even though all of 'showconfig', 'pretty-print-config', and the package generated all had the expected options. Only Poudriere and synth use these variables for incremental build checks. Reviewed by: sjg, bapt Approved by: portmgr (bapt) Differential Revision: https://reviews.freebsd.org/D13092 Follow-up r454266: Sort and remove duplicates for [DE]SELECTED_OPTIONS. Some ports like graphics/povray-meta do funky things like add the same option into PORT_OPTIONS twice. This also avoids a new leading blank space in some cases. With hat: portmgr Approved by: portmgr (implicit) Modified: branches/2017Q4/Mk/bsd.options.mk Directory Properties: branches/2017Q4/ (props changed) Modified: branches/2017Q4/Mk/bsd.options.mk ============================================================================== --- branches/2017Q4/Mk/bsd.options.mk Thu Nov 16 20:19:10 2017 (r454335) +++ branches/2017Q4/Mk/bsd.options.mk Thu Nov 16 20:21:16 2017 (r454336) @@ -640,23 +640,18 @@ _OPTIONS_${_target}:= ${_OPTIONS_${_target}} ${_prio}: .undef (SELECTED_OPTIONS) .undef (DESELECTED_OPTIONS) -.for opt in ${ALL_OPTIONS} -. if ${PORT_OPTIONS:M${opt}} -SELECTED_OPTIONS:= ${opt} ${SELECTED_OPTIONS} -. else -DESELECTED_OPTIONS:= ${opt} ${DESELECTED_OPTIONS} -. endif -.endfor +# Wait to expand PORT_OPTIONS until the last moment in case something modifies +# the selected OPTIONS after bsd.port.options.mk is included. This uses +# bmake's :@ for loop. +_SELECTED_OPTIONS= ${ALL_OPTIONS:@opt@${PORT_OPTIONS:M${opt}}@} +_DESELECTED_OPTIONS= ${ALL_OPTIONS:@opt@${"${PORT_OPTIONS:M${opt}}":?:${opt}}@} .for otype in MULTI GROUP SINGLE RADIO . for m in ${OPTIONS_${otype}} -. for opt in ${OPTIONS_${otype}_${m}} -. if ${PORT_OPTIONS:M${opt}} -SELECTED_OPTIONS:= ${opt} ${SELECTED_OPTIONS} -. else -DESELECTED_OPTIONS:= ${opt} ${DESELECTED_OPTIONS} -. endif -. endfor +_SELECTED_OPTIONS+= ${OPTIONS_${otype}_${m}:@opt@${PORT_OPTIONS:M${opt}}@} +_DESELECTED_OPTIONS+= ${OPTIONS_${otype}_${m}:@opt@${"${PORT_OPTIONS:M${opt}}":?:${opt}}@} . endfor .endfor +SELECTED_OPTIONS= ${_SELECTED_OPTIONS:O:u} +DESELECTED_OPTIONS= ${_DESELECTED_OPTIONS:O:u} .endif
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201711162021.vAGKLG8I089744>