Revision: 100302 https://trac.macports.org/changeset/100302 Author: cal@macports.org Date: 2012-12-07 13:46:00 -0800 (Fri, 07 Dec 2012) Log Message: ----------- active_variants 1.1: fix incorrect attempt at putting require_active_variants into pre-configure automatically Modified Paths: -------------- trunk/dports/_resources/port1.0/group/active_variants-1.1.tcl Modified: trunk/dports/_resources/port1.0/group/active_variants-1.1.tcl =================================================================== --- trunk/dports/_resources/port1.0/group/active_variants-1.1.tcl 2012-12-07 20:43:08 UTC (rev 100301) +++ trunk/dports/_resources/port1.0/group/active_variants-1.1.tcl 2012-12-07 21:46:00 UTC (rev 100302) @@ -137,8 +137,32 @@ return 1 } +proc _variant_in_variant_list {needle haystack} { + foreach variant $haystack { + if {$variant == $needle} { + return 1 + } + } + return 0 +} + +# global list holding all items the should be checked for and cause an error if +# not present +set _require_active_variants_list [list] + proc require_active_variants {name required {forbidden {}}} { - pre-configure { + global _require_active_variants_list + lappend _require_active_variants_list [list $name $required $forbidden] +} + +# function to be called in pre-configure to check for all items added using +# require_active_variants +proc _check_require_active_variants {} { + global _require_active_variants_list + foreach _require_active_variant $_require_active_variants_list { + set name [lindex $_require_active_variant 0] + set required [lindex $_require_active_variant 1] + set forbidden [lindex $_require_active_variant 2] if {[catch {set result [active_variants $name $required $forbidden]}] != 0} { error "$name is required, but not active." } @@ -160,11 +184,7 @@ } } -proc _variant_in_variant_list {needle haystack} { - foreach variant $haystack { - if {$variant == $needle} { - return 1 - } - } - return 0 +# register pre-configure handler that checks for all requested variants +pre-configure { + _check_require_active_variants }