svn commit: r394573 - in head: . Mk
Mathieu Arnold
mat at FreeBSD.org
Tue Aug 18 11:00:59 UTC 2015
Author: mat
Date: Tue Aug 18 11:00:57 2015
New Revision: 394573
URL: https://svnweb.freebsd.org/changeset/ports/394573
Log:
Introduce <opt>_IMPLIES and <opt>_PREVENTS to register dependencies, or
conflicts, between options.
PR: 191144
Submitted by: adamw
Sponsored by: Absolight
Modified:
head/CHANGES
head/Mk/bsd.options.mk
head/Mk/bsd.port.mk
Modified: head/CHANGES
==============================================================================
--- head/CHANGES Tue Aug 18 10:51:01 2015 (r394572)
+++ head/CHANGES Tue Aug 18 11:00:57 2015 (r394573)
@@ -10,6 +10,20 @@ in the release notes and/or placed into
All ports committers are allowed to commit to this file.
+20150818:
+AUTHOR: mat at FreeBSD.org
+
+ <opt>_IMPLIES and <opt>_PREVENTS have been introduced to register dependency,
+ or conflicts between options.
+
+ OPTIONS_DEFINE= FOO BAR BAZ
+
+ FOO_IMPLIES= BAR
+ BAZ_PREVENTS= BAR
+
+ If the FOO option is selected, the BAR option will be enabled as well. If
+ the BAZ and BAR options are both enabled, an error will be given.
+
20150817:
AUTHOR: mat at FreeBSD.org
Modified: head/Mk/bsd.options.mk
==============================================================================
--- head/Mk/bsd.options.mk Tue Aug 18 10:51:01 2015 (r394572)
+++ head/Mk/bsd.options.mk Tue Aug 18 11:00:57 2015 (r394573)
@@ -96,6 +96,11 @@
# ${opt}_QMAKE_OFF When option is disabled, it will add its content to
# the QMAKE_ARGS.
#
+# ${opt}_IMPLIES When opt is enabled, options named in IMPLIES will
+# get enabled too.
+# ${opt}_PREVENTS When opt is enabled, if any options in PREVENTS are
+# also enabled, it will produce an error.
+#
# ${opt}_USE= FOO=bar When option is enabled, it will enable
# USE_FOO+= bar
# If you need more than one option, you can do
@@ -366,6 +371,14 @@ PORT_OPTIONS:= ${PORT_OPTIONS:N${opt}}
NEW_OPTIONS:= ${NEW_OPTIONS:N${opt}}
.endfor
+## Enable options implied by other options
+# _PREVENTS is handled in bsd.port.mk:pre-check-config
+.for count in ${PORT_OPTIONS}
+. for opt in ${PORT_OPTIONS}
+PORT_OPTIONS+= ${${opt}_IMPLIES}
+. endfor
+.endfor
+
# Finally, add options required by slave ports
PORT_OPTIONS+= ${OPTIONS_SLAVE}
Modified: head/Mk/bsd.port.mk
==============================================================================
--- head/Mk/bsd.port.mk Tue Aug 18 10:51:01 2015 (r394572)
+++ head/Mk/bsd.port.mk Tue Aug 18 11:00:57 2015 (r394573)
@@ -5019,6 +5019,18 @@ OPTIONS_WRONG_MULTI+= ${multi}
. undef OPTNOCHECK
.endfor
.undef multi
+
+.for opt in ${PORT_OPTIONS}
+. for conflict in ${${opt}_PREVENTS}
+. if ${PORT_OPTIONS:M${conflict}}
+. if empty(OPTIONS_WRONG_PREVENTS:M${opt})
+OPTIONS_WRONG_PREVENTS+= ${opt}
+. endif
+OPTIONS_WRONG_PREVENTS_${opt}+= ${conflict}
+. endif
+. endfor
+.endfor
+.undef conflict
.undef opt
.endif #pre-check-config
@@ -5033,7 +5045,13 @@ _check-config: pre-check-config
.for radio in ${OPTIONS_WRONG_RADIO}
@${ECHO_MSG} "====> You cannot select multiple options from the ${radio} radio"
.endfor
-.if !empty(OPTIONS_WRONG_MULTI) || !empty(OPTIONS_WRONG_SINGLE) || !empty(OPTIONS_WRONG_RADIO)
+.if defined(OPTIONS_WRONG_PREVENTS)
+ @${ECHO_MSG} "====> Two or more enabled options conflict with each other"
+. for prevents in ${OPTIONS_WRONG_PREVENTS}
+ @${ECHO_MSG} "=====> Option ${prevents} conflicts with ${OPTIONS_WRONG_PREVENTS_${prevents}} (select only one)"
+. endfor
+.endif
+.if !empty(OPTIONS_WRONG_MULTI) || !empty(OPTIONS_WRONG_SINGLE) || !empty(OPTIONS_WRONG_RADIO) || !empty(OPTIONS_WRONG_PREVENTS)
_CHECK_CONFIG_ERROR= true
.endif
.endif # _check-config
More information about the svn-ports-head
mailing list