diff --git a/tools/portgroups.tcl b/tools/portgroups.tcl index 0d28165..93071b9 100755 --- a/tools/portgroups.tcl +++ b/tools/portgroups.tcl @@ -31,6 +31,15 @@ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +proc split_variants {variants} { + set result {} + set l [regexp -all -inline -- {([-+])([[:alpha:]_]+[\w\.]*)} $variants] + foreach { match sign variant } $l { + lappend result $variant $sign + } + return $result +} + package require macports if {[llength $::argv] == 0} { @@ -47,6 +56,11 @@ if {[catch {mportinit "" "" ""} result]} { # look up the path of the Portfile for the given port set portname [lindex $::argv 0] +if {[llength $::argv] > 1} { + set variations [split_variants [lindex $::argv 1]] +} else { + set variations "" +} #try -pass_signal {...} try { set result [mportlookup $portname] @@ -63,7 +77,7 @@ try { array set portinfo [lindex $result 1] #try -pass_signal {...} try { - set mport [mportopen $portinfo(porturl) [list subport $portname] {}] + set mport [mportopen $portinfo(porturl) [list subport $portname] $variations] } catch {{*} eCode eMessage} { ui_error "mportopen ${portinfo(porturl)} failed: $eMessage" exit 1 diff --git a/tools/supported-archs.tcl b/tools/supported-archs.tcl index 6f76623..29b421e 100755 --- a/tools/supported-archs.tcl +++ b/tools/supported-archs.tcl @@ -30,6 +30,15 @@ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +proc split_variants {variants} { + set result {} + set l [regexp -all -inline -- {([-+])([[:alpha:]_]+[\w\.]*)} $variants] + foreach { match sign variant } $l { + lappend result $variant $sign + } + return $result +} + if {[llength $::argv] == 0} { puts stderr "Usage: $argv0 " exit 1 @@ -44,6 +53,11 @@ if {[catch {mportinit "" "" ""} result]} { } set portname [lindex $::argv 0] +if {[llength $::argv] > 1} { + set variations [split_variants [lindex $::argv 1]] +} else { + set variations "" +} if {[catch {set one_result [mportlookup $portname]}] || [llength $one_result] < 2} { ui_error "No port named ${portname} could be found in the port index" @@ -54,7 +68,7 @@ array set portinfo [lindex $one_result 1] set portname $portinfo(name) if {[info exists portinfo(porturl)]} { - if {[catch {set mport [mportopen $portinfo(porturl) [list subport $portname] {}]}]} { + if {[catch {set mport [mportopen $portinfo(porturl) [list subport $portname] $variations]}]} { ui_warn "failed to open port: $portname" } else { set archs [_mportkey $mport supported_archs]