tools: Support variants all port clients

Ports might change portgroups or supported architectures depending on
their variant selection, so support variant passing for those tools.
This is a dependency for mpbb list-subports to support variants.
This commit is contained in:
Clemens Lang
2018-03-10 18:53:29 +01:00
parent 699347d5ed
commit 640313a8d8
2 changed files with 30 additions and 2 deletions
+15 -1
View File
@@ -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
+15 -1
View File
@@ -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 <portname>"
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]