<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/1302f4d4672fc794a9c0e3c3391b44592a7f06b7">https://github.com/macports/macports-base/commit/1302f4d4672fc794a9c0e3c3391b44592a7f06b7</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 1302f4d46 port1.0: global cleanup
</span>1302f4d46 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 1302f4d4672fc794a9c0e3c3391b44592a7f06b7
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Mon Mar 4 03:44:12 2024 +1100
<span style='display:block; white-space:pre;color:#404040;'> port1.0: global cleanup
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> * Remove unused global declarations
</span><span style='display:block; white-space:pre;color:#404040;'> * Move some others that are only used conditionally into the branches
</span><span style='display:block; white-space:pre;color:#404040;'> they are used in
</span><span style='display:block; white-space:pre;color:#404040;'> * Use 'variable' for vars that should not be visible outside of the
</span><span style='display:block; white-space:pre;color:#404040;'> current namespace
</span><span style='display:block; white-space:pre;color:#404040;'> * Prefer 'global' to use of fully-qualified names, as testing indicates
</span><span style='display:block; white-space:pre;color:#404040;'> it now performs better in the current Tcl version.
</span>---
src/port1.0/fetch_common.tcl | 1 -
src/port1.0/portactivate.tcl | 7 +-
src/port1.0/portbuild.tcl | 48 ++++-----
src/port1.0/portbump.tcl | 10 +-
src/port1.0/portchecksum.tcl | 13 +--
src/port1.0/portclean.tcl | 2 +-
src/port1.0/portconfigure.tcl | 168 ++++++++++++++++---------------
src/port1.0/portdestroot.tcl | 11 +-
src/port1.0/portdistcheck.tcl | 6 +-
src/port1.0/portdistfiles.tcl | 8 +-
src/port1.0/portfetch.tcl | 8 +-
src/port1.0/portinstall.tcl | 57 ++++++-----
src/port1.0/portlint.tcl | 15 ++-
src/port1.0/portlivecheck.tcl | 4 +-
src/port1.0/portload.tcl | 11 +-
src/port1.0/portmain.tcl | 32 +++---
src/port1.0/portreload.tcl | 4 +-
src/port1.0/porttest.tcl | 6 +-
src/port1.0/porttrace.tcl | 3 +-
src/port1.0/portunload.tcl | 4 +-
src/port1.0/portutil.tcl | 215 +++++++++++++++++++++++-----------------
src/port1.0/tests/portutil.test | 5 +-
22 files changed, 338 insertions(+), 300 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/fetch_common.tcl b/src/port1.0/fetch_common.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index b3fc443d7..bf5d977d2 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/fetch_common.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/fetch_common.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -219,7 +219,6 @@ proc portfetch::checksites {sitelists mirrorfile} {
</span>
# sorts fetch_urls in order of ping time
proc portfetch::sortsites {urls default_listvar} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global $default_listvar
</span> upvar $urls fetch_urls
variable urlmap
set hostregex {[a-zA-Z]+://([a-zA-Z0-9\.\-_]+)}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portactivate.tcl b/src/port1.0/portactivate.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index d125d36f7..7d3e2a7b9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portactivate.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portactivate.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -89,13 +89,14 @@ proc portactivate::activate_finish {args} {
</span> # the files needed for this
# The option from macports.conf can override the portfile here.
if {[tbool startupitem_autostart]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portstartupitem::autostart_only yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global portstartupitem::autostart_only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set autostart_only yes
</span> if {[eval_targets "load"]} {
ui_error [format [msgcat::mc "Failed to load %s"] $subport]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- unset ::portstartupitem::autostart_only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unset autostart_only
</span> return 1
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- unset ::portstartupitem::autostart_only
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unset autostart_only
</span> }
# Save notes for display by the port client
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portbuild.tcl b/src/port1.0/portbuild.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 90886dc7f..5ffe733c3 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portbuild.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portbuild.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -67,16 +67,15 @@ set_ui_prefix
</span> # ${build.type} == bsd, ensures bsdmake is present by adding a bin:-style
# dependency.
proc portbuild::add_automatic_buildsystem_dependencies {} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global build.type.add_deps
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global build.type.add_deps build.type os.platform
</span> if {!${build.type.add_deps}} {
return
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option build.type] eq "bsd" && [option os.platform] eq "darwin"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${build.type} eq "bsd" && ${os.platform} eq "darwin"} {
</span> ui_debug "build.type is BSD, adding bin:bsdmake:bsdmake build dependency"
depends_build-delete bin:bsdmake:bsdmake
depends_build-append bin:bsdmake:bsdmake
<span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option build.type] eq "gnu" && [option os.platform] eq "freebsd"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${build.type} eq "gnu" && ${os.platform} eq "freebsd"} {
</span> ui_debug "build.type is GNU, adding bin:gmake:gmake build dependency"
depends_build-delete bin:gmake:gmake
depends_build-append bin:gmake:gmake
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -89,24 +88,25 @@ options build.type.add_deps
</span> default build.type.add_deps yes
proc portbuild::build_getmaketype {args} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global build.type os.platform
</span> macports_try -pass_signal {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option build.type] eq "default"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${build.type} eq "default"} {
</span> return [findBinary make $portutil::autoconf::make_path]
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- switch -exact -- [option build.type] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch -exact -- ${build.type} {
</span> bsd {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option os.platform] eq "darwin"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.platform} eq "darwin"} {
</span> return [findBinary bsdmake $portutil::autoconf::bsdmake_path]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {[option os.platform] eq "freebsd"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${os.platform} eq "freebsd"} {
</span> return [findBinary make $portutil::autoconf::make_path]
} else {
return [findBinary pmake $portutil::autoconf::bsdmake_path]
}
}
gnu {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option os.platform] eq "darwin"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.platform} eq "darwin"} {
</span> return [findBinary gnumake $portutil::autoconf::gnumake_path]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {[option os.platform] eq "linux"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${os.platform} eq "linux"} {
</span> return [findBinary make $portutil::autoconf::make_path]
} else {
return [findBinary gmake $portutil::autoconf::gnumake_path]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -114,8 +114,8 @@ proc portbuild::build_getmaketype {args} {
</span> }
pbx -
xcode {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option os.platform] ne "darwin"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- error "[format [msgcat::mc "This port requires 'xcodebuild', which is not available on %s."] [option os.platform]]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.platform} ne "darwin"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ error "[format [msgcat::mc "This port requires 'xcodebuild', which is not available on %s."] ${os.platform}]"
</span> }
global xcodebuildcmd
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -126,13 +126,13 @@ proc portbuild::build_getmaketype {args} {
</span> }
}
default {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_warn "[format [msgcat::mc "Unknown build.type %s, using 'gnumake'"] [option build.type]]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_warn "[format [msgcat::mc "Unknown build.type %s, using 'gnumake'"] ${build.type}]"
</span> return [findBinary gnumake $portutil::autoconf::gnumake_path]
}
}
} on error {eMessage} {
ui_warn $eMessage
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_warn "Unable to find build command for build.type '[option build.type]'"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_warn "Unable to find build command for build.type '${build.type}'"
</span> }
return ""
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -169,18 +169,20 @@ proc portbuild::build_getjobs {args} {
</span> }
proc portbuild::build_getargs {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {(([option build.type] eq "default" && [option os.platform] ne "freebsd") || \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ([option build.type] eq "gnu")) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && [regexp "^(/\\S+/|)(g|gnu|)make(\\s+.*|)$" [option build.cmd]]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global build.type os.platform build.cmd build.target
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {((${build.type} eq "default" && ${os.platform} ne "freebsd") || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (${build.type} eq "gnu")) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && [regexp "^(/\\S+/|)(g|gnu|)make(\\s+.*|)$" ${build.cmd}]} {
</span> # Print "Entering directory" lines for better log debugging
<span style='display:block; white-space:pre;background:#ffe0e0;'>- return "-w [option build.target]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return "-w ${build.target}"
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- return "[option build.target]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ${build.target}
</span> }
proc portbuild::build_getjobsarg {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set cmdname [file tail [lindex [option build.cmd] 0]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global build.cmd build.jobs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set cmdname [file tail [lindex ${build.cmd} 0]]
</span> if {![exists build.jobs] || \
!([string match "*make" $cmdname] || \
"ninja" eq $cmdname || \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -188,7 +190,7 @@ proc portbuild::build_getjobsarg {args} {
</span> return ""
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set jobs [option build.jobs]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set jobs ${build.jobs}
</span> if {![string is integer -strict $jobs] || $jobs < 1 || ($cmdname ne "ninja" && $jobs < 2)} {
return ""
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -196,9 +198,9 @@ proc portbuild::build_getjobsarg {args} {
</span> }
proc portbuild::build_start {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global UI_PREFIX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global UI_PREFIX subport
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_notice "$UI_PREFIX [format [msgcat::mc "Building %s"] [option subport]]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_notice "$UI_PREFIX [format [msgcat::mc "Building %s"] ${subport}]"
</span> }
proc portbuild::build_main {args} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portbump.tcl b/src/port1.0/portbump.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 5486a1b69..3dd0ada42 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portbump.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portbump.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -46,9 +46,9 @@ namespace eval portbump {
</span> # Target prerun procedure; simply prints a message about what we're doing.
#
proc portbump::bump_start {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global UI_PREFIX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global UI_PREFIX subport
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_notice "$UI_PREFIX [format [msgcat::mc "Bumping checksums for %s"] [option subport]]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_notice "$UI_PREFIX [format [msgcat::mc "Bumping checksums for %s"] ${subport}]"
</span> }
# bump_main
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -77,7 +77,7 @@ proc portbump::bump_main {args} {
</span> # If everything is fine with the syntax, keep on and check the checksum of
# the distfiles.
if {[portchecksum::parse_checksums $checksums_str] eq "yes"} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set distpath [option distpath]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global distpath
</span>
foreach distfile $all_dist_files {
ui_info "$UI_PREFIX [format [msgcat::mc "Checksumming %s"] $distfile]"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -158,7 +158,7 @@ proc portbump::bump_main {args} {
</span> # Show the desired checksum line for easy cut-paste
# based on the previously calculated values, plus our default types
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global version revision
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global version revision subport
</span>
ui_msg "We will bump these:"
foreach {type sum calculated_sum} $both_checksums {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -246,7 +246,7 @@ proc portbump::bump_main {args} {
</span> file attributes $portfile {*}$attributes
ui_msg "Checksums successfully bumped. Suggested commit message:"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_msg [format "%-8s%s: update to %s" "" [option subport] $version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg [format "%-8s%s: update to %s" "" ${subport} $version]
</span> }
# Delete Portfile.bump
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portchecksum.tcl b/src/port1.0/portchecksum.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index dfaa73f17..d8f78d646 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portchecksum.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portchecksum.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -111,14 +111,15 @@ proc portchecksum::verify_checksum_format {type value} {
</span> # return yes if the syntax was correct, no if there was a problem.
proc portchecksum::parse_checksums {checksums_str} {
global checksums_array all_dist_files
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable checksum_types
</span>
# Parse the string of checksums.
set nb_checksum [llength $checksums_str]
if {[llength $all_dist_files] == 1
&& [expr {$nb_checksum % 2}] == 0
<span style='display:block; white-space:pre;background:#ffe0e0;'>- && [expr {$nb_checksum / 2}] <= [llength $portchecksum::checksum_types]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && [lindex $checksums_str 0] in $portchecksum::checksum_types} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && [expr {$nb_checksum / 2}] <= [llength $checksum_types]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && [lindex $checksums_str 0] in $checksum_types} {
</span> # Convert to format #2
set checksums_str [linsert $checksums_str 0 [lindex $all_dist_files 0]]
# We increased the size.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -147,7 +148,7 @@ proc portchecksum::parse_checksums {checksums_str} {
</span> incr ix_checksum
while {1} {
set checksum_type [lindex $checksums_str $ix_checksum]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$checksum_type in $portchecksum::checksum_types} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$checksum_type in $checksum_types} {
</span> # append the type and the value.
incr ix_checksum
set checksum_value [lindex $checksums_str $ix_checksum]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -242,7 +243,7 @@ proc portchecksum::checksum_start {args} {
</span> # Target main procedure. Verifies the checksums of all distfiles.
#
proc portchecksum::checksum_main {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global UI_PREFIX all_dist_files checksums_array checksum.skip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global UI_PREFIX all_dist_files checksums_array checksum.skip distpath
</span>
# If no files have been downloaded, there is nothing to checksum.
if {![info exists all_dist_files]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -268,7 +269,6 @@ proc portchecksum::checksum_main {args} {
</span> # if everything is fine with the syntax, keep on and check the checksum of
# the distfiles.
if {[parse_checksums $checksums_str] eq "yes"} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set distpath [option distpath]
</span>
foreach distfile $all_dist_files {
ui_info "$UI_PREFIX [format [msgcat::mc "Checksumming %s"] $distfile]"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -345,13 +345,14 @@ proc portchecksum::checksum_main {args} {
</span> # Show the desired checksum line for easy cut-paste
# based on the previously calculated values, plus our default types
set sums [list]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable default_checksum_types
</span>
foreach distfile $all_dist_files {
if {[llength $all_dist_files] > 1} {
lappend sums $distfile
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set missing_types $portchecksum::default_checksum_types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set missing_types $default_checksum_types
</span>
# Append the string for the calculated types and note any of
# our default types that were already calculated
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portclean.tcl b/src/port1.0/portclean.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index e7fa394c8..a38b8922f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portclean.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portclean.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -225,7 +225,7 @@ proc portclean::clean_archive {args} {
</span> if {[info exists ports_version_glob]} {
# Match all possible archive variants that match the version
# glob specified by the user.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set fileglob "$subport-[option ports_version_glob]*.*.*.*"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set fileglob "$subport-${ports_version_glob}*.*.*.*"
</span> } else {
# Match all possible archives for this port.
set fileglob "$subport-*_*.*.*.*"
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portconfigure.tcl b/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 5fc086258..58aa2347a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -42,6 +42,9 @@ target_prerun ${org.macports.configure} portconfigure::configure_start
</span> target_postrun ${org.macports.configure} portconfigure::configure_finish
namespace eval portconfigure {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # configure_get_default_compiler is fairly expensive, so cache the result
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable recompute_default_compiler 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable cached_default_compiler {}
</span> }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -75,27 +78,30 @@ option_proc configure.cxxflags portconfigure::stdlib_trace
</span> option_proc configure.objcxxflags portconfigure::stdlib_trace
proc portconfigure::should_add_stdlib {} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set has_stdlib [expr {[option configure.cxx_stdlib] ne ""}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set is_clang [string match *clang* [option configure.cxx]]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # GCC also supports -stdlib starting with GCC 10 (and devel)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set is_gcc_with_stdlib no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { [string match *g*-mp-* [option configure.cxx]] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # -stdlib is not available with PPC builds
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { [option configure.build_arch] ni [list ppc ppc64] } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Do not pass stdlib to gcc if it is MacPorts custom macports-libstdc++ setting
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # as gcc does not uderstand this. Instead do nothing, which means gcc will
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # default to using its own libstdc++, which is in fact what we mean by
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # configure.cxx_stdlib=macports-libstdc++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { [option configure.cxx_stdlib] ne "macports-libstdc++" } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Extract gcc version from value after last -
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set gcc_ver [lindex [split [option configure.cxx] "-"] end]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if { ${gcc_ver} eq "devel" || ${gcc_ver} >= 10 } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set is_gcc_with_stdlib yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global configure.cxx configure.cxx_stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${configure.cxx_stdlib} eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[string match *clang* ${configure.cxx}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # GCC also supports -stdlib starting with GCC 10 (and devel), but
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # not with PPC builds
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[string match *g*-mp-* ${configure.cxx}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && [option configure.build_arch] ni [list ppc ppc64]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Do not pass stdlib to gcc if it is MacPorts custom macports-libstdc++ setting
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # as gcc does not uderstand this. Instead do nothing, which means gcc will
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # default to using its own libstdc++, which is in fact what we mean by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # configure.cxx_stdlib=macports-libstdc++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${configure.cxx_stdlib} ne "macports-libstdc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Extract gcc version from value after last -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set gcc_ver [lindex [split ${configure.cxx} "-"] end]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if { ${gcc_ver} eq "devel" || ${gcc_ver} >= 10 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 1
</span> }
}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- return [expr {$has_stdlib && ($is_clang || $is_gcc_with_stdlib)}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0
</span> }
proc portconfigure::should_add_cxx_abi {} {
# prior to OS X Mavericks, libstdc++ was the default C++ runtime, so
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -119,10 +125,11 @@ proc portconfigure::construct_cxxflags {flags} {
</span> return $flags
}
proc portconfigure::stdlib_trace {opt action args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach flag [lsearch -all -inline [option $opt] -stdlib=*] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $opt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach flag [lsearch -all -inline [set $opt] -stdlib=*] {
</span> $opt-delete $flag
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach flag [lsearch -all -inline [option $opt] -D_GLIBCXX_USE_CXX11_ABI=0] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach flag [lsearch -all -exact -inline [set $opt] -D_GLIBCXX_USE_CXX11_ABI=0] {
</span> $opt-delete $flag
}
if {$action eq "read"} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -203,14 +210,11 @@ proc portconfigure::add_build_dep { type dep } {
</span> # Adds dependencies for the binaries which will be called, but only if it is
# the default. If .cmd was overwritten the port has to care for deps itself.
proc portconfigure::set_configure_type {option action args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global autoreconf.cmd automake.cmd autoconf.cmd xmkmf.cmd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set configure_map [dict create \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- autoconf [list port:autoconf port:automake port:libtool] \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xmkmf port:imake \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> if {$action eq "set"} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ set configure_map [dict create \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ autoconf [list port:autoconf port:automake port:libtool] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xmkmf port:imake \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ]
</span> switch $option {
autoreconf.cmd -
automake.cmd -
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -396,8 +400,9 @@ proc portconfigure::configure_start {args} {
</span> ui_debug "Using compiler '$compiler_name'"
# Additional ccache directory setup
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global configure.ccache ccache_dir ccache_size macportsuser
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global configure.ccache
</span> if {${configure.ccache}} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global ccache_dir ccache_size macportsuser
</span> # Create ccache directory with correct permissions with root privileges
elevateToRoot "configure ccache"
if {[catch {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -560,6 +565,7 @@ proc portconfigure::configure_get_sdkroot {sdk_version} {
</span> return {}
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable sdkroot_cache
</span> set sdk_major [lindex [split $sdk_version .] 0]
set cltpath /Library/Developer/CommandLineTools
# Check CLT first if Xcode shouldn't be used
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -581,16 +587,16 @@ proc portconfigure::configure_get_sdkroot {sdk_version} {
</span> set try_versions [list $sdk_version]
}
foreach try_version $try_versions {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::portconfigure::sdkroot_cache(macosx${try_version})]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$::portconfigure::sdkroot_cache(macosx${try_version}) ne ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return $::portconfigure::sdkroot_cache(macosx${try_version})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists sdkroot_cache(macosx${try_version})]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$sdkroot_cache(macosx${try_version}) ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return $sdkroot_cache(macosx${try_version})
</span> }
# negative result cached, do nothing here
} elseif {![catch {exec env DEVELOPER_DIR=${cltpath} xcrun --sdk macosx${try_version} --show-sdk-path 2> /dev/null} sdk]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portconfigure::sdkroot_cache(macosx${try_version}) $sdk
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set sdkroot_cache(macosx${try_version}) $sdk
</span> return $sdk
} else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portconfigure::sdkroot_cache(macosx${try_version}) ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set sdkroot_cache(macosx${try_version}) ""
</span> }
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -600,16 +606,16 @@ proc portconfigure::configure_get_sdkroot {sdk_version} {
</span> return $sdk
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::portconfigure::sdkroot_cache(macosx)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$::portconfigure::sdkroot_cache(macosx) ne ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return $::portconfigure::sdkroot_cache(macosx)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists sdkroot_cache(macosx)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$sdkroot_cache(macosx) ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return $sdkroot_cache(macosx)
</span> }
# negative result cached, do nothing here
} elseif {![catch {exec env DEVELOPER_DIR=${cltpath} xcrun --sdk macosx --show-sdk-path 2> /dev/null} sdk]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portconfigure::sdkroot_cache(macosx) $sdk
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set sdkroot_cache(macosx) $sdk
</span> return $sdk
} else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portconfigure::sdkroot_cache(macosx) ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set sdkroot_cache(macosx) ""
</span> }
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -641,16 +647,16 @@ proc portconfigure::configure_get_sdkroot {sdk_version} {
</span> set try_versions [list $sdk_version]
}
foreach try_version $try_versions {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::portconfigure::sdkroot_cache(macosx${try_version},noclt)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$::portconfigure::sdkroot_cache(macosx${try_version},noclt) ne ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return $::portconfigure::sdkroot_cache(macosx${try_version},noclt)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists sdkroot_cache(macosx${try_version},noclt)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$sdkroot_cache(macosx${try_version},noclt) ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return $sdkroot_cache(macosx${try_version},noclt)
</span> }
# negative result cached, do nothing here
} elseif {![catch {exec xcrun --sdk macosx${try_version} --show-sdk-path 2> /dev/null} sdk]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portconfigure::sdkroot_cache(macosx${try_version},noclt) $sdk
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set sdkroot_cache(macosx${try_version},noclt) $sdk
</span> return $sdk
} else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portconfigure::sdkroot_cache(macosx${try_version},noclt) ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set sdkroot_cache(macosx${try_version},noclt) ""
</span> }
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -678,11 +684,11 @@ proc portconfigure::configure_get_sdkroot {sdk_version} {
</span> # to run on 10.x but only include an SDK for 10.x+1. Combined with the disappearance of
# /usr/include, that means not having this fallback would cause great breakage.
# See <https://trac.macports.org/ticket/57143>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::portconfigure::sdkroot_cache(macosx,noclt)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists sdkroot_cache(macosx,noclt)]} {
</span> # no negative-cached case here because that would mean overall failure
<span style='display:block; white-space:pre;background:#ffe0e0;'>- return $::portconfigure::sdkroot_cache(macosx,noclt)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return $sdkroot_cache(macosx,noclt)
</span> } elseif {![catch {exec xcrun --sdk macosx --show-sdk-path 2> /dev/null} sdk]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portconfigure::sdkroot_cache(macosx,noclt) $sdk
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set sdkroot_cache(macosx,noclt) $sdk
</span> return $sdk
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -758,10 +764,6 @@ proc portconfigure::compiler_is_port {compiler} {
</span> return [expr {[portconfigure::compiler_port_name ${compiler}] ne ""}]
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# configure_get_default_compiler is fairly expensive, so cache the result
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set ::portconfigure::recompute_default_compiler 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set ::portconfigure::cached_default_compiler {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # changing these options will invalidate the cache
foreach varname {compiler.whitelist compiler.fallback compiler.blacklist
compiler.c_standard compiler.cxx_standard compiler.openmp_version
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -770,24 +772,27 @@ foreach varname {compiler.whitelist compiler.fallback compiler.blacklist
</span> }
proc portconfigure::recompute_default_compiler_proc {varname unused op} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portconfigure::recompute_default_compiler 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable recompute_default_compiler 1
</span> }
# internal function to determine the default compiler
proc portconfigure::configure_get_default_compiler {} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {!$::portconfigure::recompute_default_compiler} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return $::portconfigure::cached_default_compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable recompute_default_compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable cached_default_compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {!$recompute_default_compiler} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return $cached_default_compiler
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portconfigure::recompute_default_compiler 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set recompute_default_compiler 0
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option compiler.whitelist] ne ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set search_list [option compiler.whitelist]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global compiler.blacklist compiler.fallback compiler.whitelist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.whitelist} ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set search_list ${compiler.whitelist}
</span> } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set search_list [option compiler.fallback]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set search_list ${compiler.fallback}
</span> }
foreach compiler $search_list {
set allowed yes
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach pattern [option compiler.blacklist] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach pattern ${compiler.blacklist} {
</span> if {[string match $pattern $compiler]} {
set allowed no
break
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -797,13 +802,13 @@ proc portconfigure::configure_get_default_compiler {} {
</span> ([file executable [configure_get_compiler cc $compiler]] ||
[compiler_is_port $compiler])
} then {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portconfigure::cached_default_compiler $compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set cached_default_compiler $compiler
</span> return $compiler
}
}
ui_warn "All compilers are either blacklisted or unavailable; defaulting to first fallback option"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::portconfigure::cached_default_compiler [lindex [option compiler.fallback] 0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return $::portconfigure::cached_default_compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set cached_default_compiler [lindex ${compiler.fallback} 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return $cached_default_compiler
</span> }
# internal function to determine the Fortran compiler
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -902,7 +907,10 @@ proc portconfigure::max_version {verA verB} {
</span> #
# utility procedure: get minimum command line compilers version based on restrictions
proc portconfigure::get_min_command_line {compiler} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global compiler.c_standard compiler.cxx_standard compiler.openmp_version compiler.thread_local_storage os.major
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global compiler.c_standard compiler.cxx_standard compiler.openmp_version \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.thread_local_storage os.major configure.cxx_stdlib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.limit_flags compiler.support_environment_paths \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ compiler.support_environment_sdkroot configure.sdkroot
</span> set min_value 1.0
if {${compiler.openmp_version} ne ""} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -913,16 +921,22 @@ proc portconfigure::get_min_command_line {compiler} {
</span> # GCC & MacPorts Clang emulate thread-local storage
return none
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option configure.cxx_stdlib] eq "macports-libstdc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${configure.cxx_stdlib} eq "macports-libstdc++"} {
</span> return none
}
switch ${compiler} {
clang {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option configure.cxx_stdlib] eq "libc++" && ${os.major} < 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${configure.cxx_stdlib} eq "libc++" && ${os.major} < 11} {
</span> # no Xcode clang can build against libc++ on < 10.7
return none
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {(${compiler.limit_flags} || ${compiler.support_environment_sdkroot}) &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${configure.sdkroot} ne "" &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ !([file exists /usr/lib/libxcselect.dylib] || ${os.major} >= 20)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> if {${compiler.c_standard} >= 2017} {
set min_value [max_version $min_value 1000.11.45.2]
} elseif {${compiler.c_standard} >= 2011} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -945,25 +959,18 @@ proc portconfigure::get_min_command_line {compiler} {
</span> # (https://developer.apple.com/videos/play/wwdc2016-405/?time=354).
set min_value [max_version $min_value 800.0.38]
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option compiler.limit_flags] || [option compiler.support_environment_paths]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.limit_flags} || ${compiler.support_environment_paths}} {
</span> set min_value [max_version $min_value 421.0.57]
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ([option compiler.limit_flags] || [option compiler.support_environment_sdkroot]) &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- [option configure.sdkroot] ne "" &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- !([file exists /usr/lib/libxcselect.dylib] || ${os.major} >= 20)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return none
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span> }
llvm-gcc-4.2 -
gcc-4.2 -
gcc-4.0 -
apple-gcc-4.2 {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${compiler.c_standard} > 1999 || ${compiler.cxx_standard} >= 2011 || [option configure.cxx_stdlib] eq "libc++" || ${compiler.thread_local_storage}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.c_standard} > 1999 || ${compiler.cxx_standard} >= 2011 || ${configure.cxx_stdlib} eq "libc++" || ${compiler.thread_local_storage}} {
</span> return none
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {([option compiler.limit_flags] || [option compiler.support_environment_sdkroot]) && [option configure.sdkroot] ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {(${compiler.limit_flags} || ${compiler.support_environment_sdkroot}) && ${configure.sdkroot} ne ""} {
</span> return none
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1624,7 +1631,7 @@ proc portconfigure::configure_get_compiler {type {compiler {}}} {
</span> # Some of the compilers we use are provided by MacPorts itself; ensure we
# automatically add a dependency when needed
proc portconfigure::add_automatic_compiler_dependencies {} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global configure.compiler configure.compiler.add_deps
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global configure.compiler configure.compiler.add_deps compiler.require_fortran
</span>
if {!${configure.compiler.add_deps}} {
return
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1635,7 +1642,7 @@ proc portconfigure::add_automatic_compiler_dependencies {} {
</span> portconfigure::add_compiler_port_dependencies ${configure.compiler}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option compiler.require_fortran] && [portconfigure::configure_get_compiler fc ${configure.compiler}] eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${compiler.require_fortran} && [portconfigure::configure_get_compiler fc ${configure.compiler}] eq ""} {
</span> # Fortran is required, but compiler does not provide it
ui_debug "Adding Fortran compiler dependency"
portconfigure::add_compiler_port_dependencies [portconfigure::configure_get_fortran_compiler]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1709,12 +1716,13 @@ proc portconfigure::add_compiler_port_dependencies {compiler} {
</span> depends_lib-append $libgcc_dep
}
} elseif {[regexp {^macports-clang(?:-(\d+(?:\.\d+)?))$} $compiler -> clang_version]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[option configure.cxx_stdlib] eq "macports-libstdc++"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global configure.cxx_stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${configure.cxx_stdlib} eq "macports-libstdc++"} {
</span> # see https://trac.macports.org/ticket/54766
ui_debug "Adding depends_lib path:lib/libgcc/libgcc_s.1.dylib:libgcc"
depends_lib-delete "path:lib/libgcc/libgcc_s.1.dylib:libgcc"
depends_lib-append "path:lib/libgcc/libgcc_s.1.dylib:libgcc"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {[option configure.cxx_stdlib] eq "libc++" && ${os.major} < 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${configure.cxx_stdlib} eq "libc++" && ${os.major} < 11} {
</span> # libc++ does not exist on these systems
ui_debug "Adding depends_lib libcxx"
depends_lib-delete "port:libcxx"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1737,10 +1745,10 @@ proc portconfigure::add_compiler_port_dependencies {compiler} {
</span>
proc portconfigure::configure_main {args} {
global worksrcpath use_configure use_autoreconf use_autoconf use_automake use_xmkmf \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.env configure.pipe configure.libs configure.classpath configure.universal_args \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.pipe configure.libs configure.classpath configure.universal_args \
</span> configure.perl configure.python configure.ruby configure.install configure.awk configure.bison \
configure.pkg_config configure.pkg_config_path \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.ccache configure.distcc configure.cpp configure.javac configure.sdkroot \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.ccache configure.distcc configure.javac configure.sdkroot \
</span> configure.march configure.mtune os.platform os.major
foreach tool {cc cxx objc objcxx f77 f90 fc ld} {
global configure.${tool} configure.${tool}_archflags
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portdestroot.tcl b/src/port1.0/portdestroot.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index ec10139f9..3114b22f4 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portdestroot.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portdestroot.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -80,7 +80,7 @@ proc portdestroot::destroot_getargs {args} {
</span> }
proc portdestroot::destroot_start {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global UI_PREFIX prefix subport porturl destroot os.platform destroot.clean portsharepath \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global UI_PREFIX prefix subport destroot os.platform destroot.clean portsharepath \
</span> destroot.umask destroot.asroot euid egid \
applications_dir frameworks_dir
variable oldmask
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -131,8 +131,7 @@ proc portdestroot::destroot_main {args} {
</span>
proc portdestroot::destroot_finish {args} {
global UI_PREFIX destroot prefix subport destroot.violate_mtree \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- applications_dir frameworks_dir destroot.keepdirs destroot.delete_la_files \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- os.platform os.version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ applications_dir frameworks_dir destroot.keepdirs destroot.delete_la_files
</span> variable oldmask
foreach fileToDelete {share/info/dir lib/charset.alias} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -333,7 +332,7 @@ proc portdestroot::destroot_finish {args} {
</span> } else {
set dir_allowed no
# these files are (at least potentially) outside of the prefix
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach dir "$applications_dir $frameworks_dir /Library/LaunchAgents /Library/LaunchDaemons /Library/StartupItems" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach dir [list $applications_dir $frameworks_dir /Library/LaunchAgents /Library/LaunchDaemons /Library/StartupItems] {
</span> if {[string equal -length [expr {[string length $dfile] + 1}] $dfile/ $dir]} {
# it's a prefix of one of the allowed paths
set dir_allowed yes
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -361,12 +360,12 @@ proc portdestroot::destroot_finish {args} {
</span>
# abort here only so all violations can be observed
if { ${mtree_violation} ne "no" } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_warn "[format [msgcat::mc "%s violates the layout of the ports-filesystems!"] [option subport]]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_warn "[format [msgcat::mc "%s violates the layout of the ports-filesystems!"] $subport]"
</span> ui_warn "Please fix or indicate this misbehavior (if it is intended), it will be an error in future releases!"
# error "mtree violation!"
}
} else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_warn "[format [msgcat::mc "%s installs files outside the common directory structure."] [option subport]]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_warn "[format [msgcat::mc "%s installs files outside the common directory structure."] $subport]"
</span> }
# Restore umask
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portdistcheck.tcl b/src/port1.0/portdistcheck.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index dc2f2082f..0321bc068 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portdistcheck.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portdistcheck.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -64,16 +64,16 @@ proc portdistcheck::distcheck_main {args} {
</span> }
# Check the distfiles if it's a regular fetch phase.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {"${distcheck.type}" ne "none"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && "${fetch.type}" eq "standard"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${distcheck.type} ne "none"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && ${fetch.type} eq "standard"} {
</span> # portfetch 1.0::checkfiles sets fetch_urls list.
set fetch_urls [list]
portfetch::checkfiles fetch_urls
set totalsize 0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global portfetch::urlmap
</span> # Check all the files.
foreach {url_var distfile} $fetch_urls {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global portfetch::urlmap
</span> if {![info exists urlmap($url_var)]} {
ui_error [format [msgcat::mc "No defined site for tag: %s, using master_sites"] $url_var]
set urlmap($url_var) $master_sites
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portdistfiles.tcl b/src/port1.0/portdistfiles.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 06b30fae1..025e5fc9f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portdistfiles.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portdistfiles.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -71,16 +71,14 @@ proc portdistfiles::distfiles_main {args} {
</span> }
# get checksum data from the portfile and parse it
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set checksums_str [option checksums]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set result [portchecksum::parse_checksums $checksums_str]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set result [portchecksum::parse_checksums [option checksums]]
</span>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global portfetch::urlmap
</span> foreach {url_var distfile} $fetch_urls {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global portfetch::urlmap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> ui_msg "\[$distfile\] [file join $portdbpath distfiles $dist_subdir $distfile]"
# print checksums if available
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$result eq "yes" && [array get checksums_array $distfile] ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$result eq "yes" && [info exists checksums_array($distfile)]} {
</span> foreach {type sum} $checksums_array($distfile) {
ui_msg " $type: $sum"
}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portfetch.tcl b/src/port1.0/portfetch.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 38866e5fc..49ae4503d 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portfetch.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portfetch.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -68,7 +68,7 @@ default fetch.type standard
</span> default bzr.cmd {[findBinary bzr $portutil::autoconf::bzr_path]}
default bzr.dir {${workpath}}
default bzr.revision -1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default bzr.pre_args "--builtin --no-aliases checkout --lightweight --verbose"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default bzr.pre_args {--builtin --no-aliases checkout --lightweight --verbose}
</span> default bzr.args ""
default bzr.post_args {-r ${bzr.revision} ${bzr.url} ${worksrcdir}}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -337,7 +337,7 @@ proc portfetch::bzrfetch {args} {
</span> # Perform a CVS login and fetch, storing the CVS login
# information in a custom .cvspass file
proc portfetch::cvsfetch {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global workpath cvs.env cvs.cmd cvs.args cvs.post_args \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global cvs.cmd cvs.args cvs.post_args \
</span> cvs.root cvs.date cvs.tag cvs.method cvs.password
patch_sites patchfiles filespath
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -439,7 +439,7 @@ proc portfetch::svnfetch {args} {
</span> # Perform a git fetch
proc portfetch::gitfetch {args} {
global worksrcpath patchfiles \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- git.url git.branch git.sha1 git.cmd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ git.url git.branch git.cmd
</span>
set options "--progress"
if {${git.branch} eq ""} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -494,7 +494,7 @@ proc portfetch::hgfetch {args} {
</span> # Perform a standard fetch, assembling fetch urls from
# the listed url variable and associated distfile
proc portfetch::fetchfiles {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global distpath all_dist_files UI_PREFIX \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global distpath UI_PREFIX \
</span> fetch.user fetch.password fetch.use_epsv fetch.ignore_sslcert fetch.remote_time \
fetch.user_agent portverbose
variable fetch_urls
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portinstall.tcl b/src/port1.0/portinstall.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 62d083d24..33ee3509e 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portinstall.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portinstall.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -72,9 +72,7 @@ proc portinstall::install_start {args} {
</span>
proc portinstall::create_archive {location archive.type} {
global workpath destpath portpath subport version revision portvariants \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- epoch configure.cxx_stdlib portinstall::actual_cxx_stdlib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- portinstall::file_is_binary portinstall::cxx_stdlib_overridden \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- cxx_stdlib PortInfo installPlist \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ epoch configure.cxx_stdlib cxx_stdlib PortInfo \
</span> archive.env archive.cmd archive.pre_args archive.args \
archive.post_args archive.dir depends_lib depends_run
set archive.env {}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -248,10 +246,10 @@ proc portinstall::create_archive {location archive.type} {
</span> puts $fd "@portversion ${version}"
puts $fd "@portrevision ${revision}"
puts $fd "@archs [get_canonical_archs]"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- array set ourvariations $PortInfo(active_variants)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set vlist [lsort -ascii [array names ourvariations]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set ourvariations $PortInfo(active_variants)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set vlist [lsort -ascii [dict keys $ourvariations]]
</span> foreach v $vlist {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$ourvariations($v) eq "+"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[dict get $ourvariations $v] eq "+"} {
</span> puts $fd "@portvariant +${v}"
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -264,10 +262,10 @@ proc portinstall::create_archive {location archive.type} {
</span> if {[llength $dep] < 2} {
ui_debug "Dependency $depname not found"
} else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- array set portinfo [lindex $dep 1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set depver $portinfo(version)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set deprev $portinfo(revision)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $fd "@pkgdep $portinfo(name)-${depver}_${deprev}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lassign $dep depname dep_portinfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set depver [dict get $dep_portinfo version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set deprev [dict get $dep_portinfo revision]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $fd "@pkgdep ${depname}-${depver}_${deprev}"
</span> }
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -275,9 +273,9 @@ proc portinstall::create_archive {location archive.type} {
</span>
set have_fileIsBinary [expr {[option os.platform] eq "darwin"}]
set binary_files [list]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set portinstall::file_is_binary [dict create]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable file_is_binary [dict create]
</span> # also save the contents for our own use later
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set installPlist [list]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable installPlist [list]
</span> set destpathLen [string length $destpath]
fs-traverse -depth fullpath [list $destpath] {
if {[file type $fullpath] eq "directory"} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -300,7 +298,7 @@ proc portinstall::create_archive {location archive.type} {
</span> lappend binary_files $fullpath
}
puts $fd "@comment binary:$is_binary"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- dict set portinstall::file_is_binary $abspath $is_binary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set file_is_binary $abspath $is_binary
</span> }
}
} else {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -311,14 +309,14 @@ proc portinstall::create_archive {location archive.type} {
</span> puts $fd "@ignore"
puts $fd "$relpath"
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set portinstall::actual_cxx_stdlib [get_actual_cxx_stdlib $binary_files]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $fd "@cxx_stdlib ${portinstall::actual_cxx_stdlib}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${portinstall::actual_cxx_stdlib} ne "none"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set portinstall::cxx_stdlib_overridden [expr {${configure.cxx_stdlib} ne $cxx_stdlib}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable actual_cxx_stdlib [get_actual_cxx_stdlib $binary_files]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $fd "@cxx_stdlib ${actual_cxx_stdlib}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${actual_cxx_stdlib} ne "none"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable cxx_stdlib_overridden [expr {${configure.cxx_stdlib} ne $cxx_stdlib}]
</span> } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set portinstall::cxx_stdlib_overridden 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable cxx_stdlib_overridden 0
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $fd "@cxx_stdlib_overridden ${portinstall::cxx_stdlib_overridden}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $fd "@cxx_stdlib_overridden ${cxx_stdlib_overridden}"
</span> close $fd
# Now create the archive
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -341,8 +339,11 @@ proc portinstall::extract_contents {location type} {
</span> proc portinstall::install_main {args} {
global subport version portpath depends_run revision user_options \
portvariants requested_variants depends_lib PortInfo epoch \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- os.platform os.major portarchivetype installPlist porturl \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- portinstall::file_is_binary portinstall::actual_cxx_stdlib portinstall::cxx_stdlib_overridden
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ portarchivetype
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable file_is_binary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable actual_cxx_stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable cxx_stdlib_overridden
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable installPlist
</span>
set oldpwd [pwd]
if {$oldpwd eq ""} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -361,11 +362,9 @@ proc portinstall::install_main {args} {
</span> set location [file join $install_dir [file tail $archive_path]]
set current_archive_type [string range [file extension $location] 1 end]
set contents [extract_contents $location $current_archive_type]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set installPlist [lindex $contents 0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set portinstall::file_is_binary [lindex $contents 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lassign $contents installPlist file_is_binary
</span> set cxxinfo [extract_archive_metadata $location $current_archive_type cxx_info]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set portinstall::actual_cxx_stdlib [lindex $cxxinfo 0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set portinstall::cxx_stdlib_overridden [lindex $cxxinfo 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lassign $cxxinfo actual_cxx_stdlib cxx_stdlib_overridden
</span> } else {
# throws an error if an unsupported value has been configured
archiveTypeIsSupported $portarchivetype
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -401,9 +400,9 @@ proc portinstall::install_main {args} {
</span> dict set regref os_platform $os_platform
dict set regref os_major $os_major
dict set regref archs [get_canonical_archs]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${portinstall::actual_cxx_stdlib} ne ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dict set regref cxx_stdlib ${portinstall::actual_cxx_stdlib}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dict set regref cxx_stdlib_overridden ${portinstall::cxx_stdlib_overridden}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${actual_cxx_stdlib} ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set regref cxx_stdlib ${actual_cxx_stdlib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set regref cxx_stdlib_overridden ${cxx_stdlib_overridden}
</span> } else {
# no info in the archive
global configure.cxx_stdlib cxx_stdlib
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -421,7 +420,7 @@ proc portinstall::install_main {args} {
</span>
if {[info exists installPlist]} {
dict set regref files $installPlist
<span style='display:block; white-space:pre;background:#ffe0e0;'>- dict set regref binary $portinstall::file_is_binary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set regref binary $file_is_binary
</span> }
# portfile info
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portlint.tcl b/src/port1.0/portlint.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index f09e11b66..c9accb3ae 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portlint.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portlint.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -255,7 +255,8 @@ proc portlint::lint_start {args} {
</span> }
proc portlint::lint_main {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global UI_PREFIX name portpath porturl ports_lint_nitpick
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global UI_PREFIX portpath ports_lint_nitpick lint_required lint_optional
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global {*}$lint_required {*}$lint_optional
</span> set portfile ${portpath}/Portfile
set portdirs [split ${portpath} /]
set last [llength $portdirs]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -458,7 +459,7 @@ proc portlint::lint_main {args} {
</span>
if {!$hashline
&& ![regexp {^\s*(?:PortSystem|PortGroup|version|python\.versions|(?:perl5|php|ruby)\.branch(?:es)?|license|[A-Za-z0-9_]+\.setup)\s} $line]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- && [string first [option version] $line] != -1} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && [string first $version $line] != -1} {
</span> ui_warn "Line $lineno seems to hardcode the version number, consider using \${version} instead"
incr warnings
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -492,13 +493,11 @@ proc portlint::lint_main {args} {
</span>
###################################################################
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global os.platform os.arch os.version version revision epoch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- description long_description platforms categories all_variants \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- maintainers license homepage master_sites checksums patchfiles \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global porturl all_variants patchfiles \
</span> depends_fetch depends_extract depends_patch \
depends_lib depends_build depends_run \
depends_test distfiles fetch.type lint_portsystem lint_platforms \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- lint_required lint_optional replaced_by conflicts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ replaced_by conflicts
</span> set portarch [get_canonical_archs]
if {!$seen_portsystem} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -605,7 +604,7 @@ proc portlint::lint_main {args} {
</span> if {![info exists variantdesc] || $variantdesc eq ""} {
# don't warn about missing descriptions for global variants
if {$variantname in $local_variants &&
<span style='display:block; white-space:pre;background:#ffe0e0;'>- [variant_desc $porturl $variantname] eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [variant_desc $variantname] eq ""} {
</span> ui_warn "Variant $variantname does not have a description"
incr warnings
set desc_ok false
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -613,7 +612,7 @@ proc portlint::lint_main {args} {
</span> set variantdesc "(pre-defined variant)"
}
} else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[variant_desc $porturl $variantname] ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[variant_desc $variantname] ne ""} {
</span> ui_warn "Variant $variantname overrides global description"
incr warnings
}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portlivecheck.tcl b/src/port1.0/portlivecheck.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 7c37bd6d9..97d83c9c6 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portlivecheck.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portlivecheck.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -64,8 +64,8 @@ proc portlivecheck::livecheck_main {args} {
</span> livecheck.ignore_sslcert \
livecheck.compression \
livecheck.curloptions \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- homepage portpath workpath \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- master_sites name subport distfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ homepage portpath \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ master_sites name subport
</span>
set updated 0
set updated_version "unknown"
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portload.tcl b/src/port1.0/portload.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index f3d97033d..c3bb348b2 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portload.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portload.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -47,12 +47,13 @@ options load.asroot
</span> set_ui_prefix
proc portload::load_main {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global UI_PREFIX prefix subport sudo_user
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set launchctl_path ${portutil::autoconf::launchctl_path}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global UI_PREFIX prefix subport sudo_user \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ portstartupitem::load_only portstartupitem::autostart_only \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ portutil::autoconf::launchctl_path
</span>
portstartupitem::foreach_startupitem {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {(![info exists ::portstartupitem::load_only] || $si_name in ${::portstartupitem::load_only})
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && (![info exists ::portstartupitem::autostart_only] || !$::portstartupitem::autostart_only || $si_autostart)} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {(![info exists load_only] || $si_name in ${load_only})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && (![info exists autostart_only] || !$autostart_only || $si_autostart)} {
</span> if {$si_install} {
set path /Library/${si_location}/${si_plist}
} else {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -88,6 +89,4 @@ proc portload::load_main {args} {
</span> }
}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return
</span> }
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portmain.tcl b/src/port1.0/portmain.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 154f38094..c12ece2e7 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portmain.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portmain.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -86,18 +86,20 @@ options_export name version revision epoch categories maintainers \
</span>
default subport {[portmain::get_default_subport]}
proc portmain::get_default_subport {} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global name portpath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global name
</span> if {[info exists name]} {
return $name
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global portpath
</span> return [file tail $portpath]
}
default subbuildpath {[portmain::get_subbuildpath]}
proc portmain::get_subbuildpath {} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global portpath portbuildpath subport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global portbuildpath subport
</span> if {$subport ne ""} {
set subdir $subport
} else {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global portpath
</span> set subdir [file tail $portpath]
}
return [file normalize [file join $portbuildpath $subdir]]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -138,21 +140,23 @@ default os.minor {$os_minor}
</span> default os.arch {$os_arch}
default os.endian {$os_endian}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set macos_version_text {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {[option os.platform] eq "darwin"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set macos_version_text "(macOS ${macos_version}) "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portmain::report_platform_info {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global os.platform os.version os.arch macos_version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![info exists os.platform]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set macos_version_text {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${os.platform} eq "darwin"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set macos_version_text "(macOS ${macos_version}) "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "OS ${os.platform}/${os.version} ${macos_version_text}arch ${os.arch}"
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-ui_debug "OS [option os.platform]/[option os.version] ${macos_version_text}arch [option os.arch]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+portmain::report_platform_info
</span>
default universal_variant {${use_configure}}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {[option os.platform] eq "darwin" && [option os.subplatform] eq "macosx"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # we're on macOS and can therefore build universal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- default os.universal_supported yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- default os.universal_supported no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# if we're on macOS and can therefore build universal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default os.universal_supported {[expr {${os.subplatform} eq "macosx"}]}
</span> default universal_possible {[expr {${os.universal_supported} && [llength ${configure.universal_archs}] >= 2}]}
default compiler.cpath {${prefix}/include}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -169,7 +173,7 @@ set egid [getegid]
</span> default worksymlink {[file normalize [file join $portpath work]]}
default distpath {[file normalize [file join $portdbpath distfiles ${dist_subdir}]]}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default use_xcode {[expr {[option build.type] eq "xcode" || !([file exists /usr/lib/libxcselect.dylib] || [option os.major] >= 20) || ![file executable /Library/Developer/CommandLineTools/usr/bin/make]}]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default use_xcode {[expr {${build.type} eq "xcode" || !([file exists /usr/lib/libxcselect.dylib] || ${os.major} >= 20) || ![file executable /Library/Developer/CommandLineTools/usr/bin/make]}]}
</span>
proc portmain::main {args} {
return 0
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portreload.tcl b/src/port1.0/portreload.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 195c4f7fc..f4fe47614 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portreload.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portreload.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -46,8 +46,8 @@ options reload.asroot
</span> set_ui_prefix
proc portreload::reload_main {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global UI_PREFIX prefix subport sudo_user
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set launchctl_path ${portutil::autoconf::launchctl_path}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global UI_PREFIX prefix subport sudo_user \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ portutil::autoconf::launchctl_path
</span>
portstartupitem::foreach_startupitem {
if {$si_install} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/porttest.tcl b/src/port1.0/porttest.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 335d29a93..864eba3bb 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/porttest.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/porttest.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -74,7 +74,7 @@ proc porttest::test_archs {} {
</span> set has_wanted_archs [dict exists $file_archs $wanted_archs]
dict unset file_archs $wanted_archs
if {[dict size $file_archs] > 0} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set msg "[option name] is configured to build "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set msg "[option subport] is configured to build "
</span> if {$wanted_archs eq "noarch"} {
append msg "no architecture-specific files,"
} else {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -89,7 +89,7 @@ proc porttest::test_archs {} {
</span> }
ui_warn $msg
} elseif {$wanted_archs ne "noarch" && !${has_wanted_archs}} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_warn "[option name] is configured to build for the architecture(s) '$wanted_archs',\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_warn "[option subport] is configured to build for the architecture(s) '$wanted_archs',\
</span> but did not install any Mach-O files."
}
machista::destroy_handle $handle
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -101,7 +101,7 @@ proc porttest::test_start {args} {
</span> }
proc porttest::test_main {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global subport test.run
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global test.run
</span>
# built-in tests
porttest::test_archs
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/porttrace.tcl b/src/port1.0/porttrace.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index f830e7512..1bd0fc767 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/porttrace.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/porttrace.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -129,7 +129,7 @@ namespace eval porttrace {
</span> # @param workpath The $workpath of the current installation
proc trace_start {workpath} {
global \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- developer_dir distpath env macportsuser os.platform configure.sdkroot \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ developer_dir distpath env macportsuser configure.sdkroot \
</span> portpath prefix use_xcode
variable fifo
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -229,6 +229,7 @@ namespace eval porttrace {
</span> set xcode_paths [list]
lappend xcode_paths "/var/db/xcode_select_link"
lappend xcode_paths "/var/db/mds"
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # XXX Tcl9 unsafe
</span> lappend xcode_paths [file normalize ~${macportsuser}/Library/Preferences/com.apple.dt.Xcode.plist]
lappend xcode_paths "$env(HOME)/Library/Preferences/com.apple.dt.Xcode.plist"
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portunload.tcl b/src/port1.0/portunload.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index a0ea0aede..205f97e99 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portunload.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portunload.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -47,8 +47,8 @@ options unload.asroot
</span> set_ui_prefix
proc portunload::unload_main {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global UI_PREFIX prefix subport sudo_user
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set launchctl_path ${portutil::autoconf::launchctl_path}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global UI_PREFIX prefix subport sudo_user \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ portutil::autoconf::launchctl_path
</span>
portstartupitem::foreach_startupitem {
if {$si_install} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portutil.tcl b/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index d280737ee..eceb167eb 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -59,11 +59,12 @@ proc option {option args} {
</span> # XXX: right now we just transparently use globals
# eventually this will need to bridge the options between
# the Portfile's interpreter and the target's interpreters.
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $option
</span> if {[llength $args] > 0} {
ui_debug "setting option $option to $args"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::$option [lindex $args 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set $option [lindex $args 0]
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- return [set ::$option]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [set $option]
</span> }
# exists
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -75,7 +76,8 @@ proc exists {option} {
</span> # XXX: right now we just transparently use globals
# eventually this will need to bridge the options between
# the Portfile's interpreter and the target's interpreters.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- return [info exists ::$option]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $option
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [info exists $option]
</span> }
##
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -84,8 +86,10 @@ proc exists {option} {
</span> # @param option name of the option
# @param args arguments
proc handle_option {option args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists ::user_options($option)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::$option $args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global user_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![info exists user_options($option)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $option
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set $option $args
</span> }
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -95,8 +99,10 @@ proc handle_option {option args} {
</span> # @param option name of the option
# @param args arguments
proc handle_option-append {option args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists ::user_options($option)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend ::$option {*}$args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global user_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![info exists user_options($option)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $option
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend $option {*}$args
</span> }
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -106,11 +112,13 @@ proc handle_option-append {option args} {
</span> # @param option name of the option
# @param args arguments
proc handle_option-prepend {option args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists ::user_options($option)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::$option]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::$option [concat $args [set ::$option]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global user_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![info exists user_options($option)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $option
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists $option]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set $option [concat $args [set $option]]
</span> } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::$option $args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set $option $args
</span> }
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -121,9 +129,10 @@ proc handle_option-prepend {option args} {
</span> # @param option name of the option
# @param args arguments
proc handle_option-delete {option args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists ::user_options($option)] && [info exists ::$option]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global user_options $option
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![info exists user_options($option)] && [info exists $option]} {
</span> foreach val $args {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::$option [ldelete [set ::$option][set ::$option {}] $val]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set $option [ldelete [set $option][set $option {}] $val]
</span> }
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -134,9 +143,10 @@ proc handle_option-delete {option args} {
</span> # @param option name of the option
# @param args arguments
proc handle_option-strsed {option args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists ::user_options($option)] && [info exists ::$option]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global user_options $option
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![info exists user_options($option)] && [info exists $option]} {
</span> foreach val $args {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::$option [strsed [set ::$option][set ::$option {}] $val]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set $option [strsed [set $option][set $option {}] $val]
</span> }
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -147,11 +157,12 @@ proc handle_option-strsed {option args} {
</span> # @param option name of the option
# @param args arguments
proc handle_option-replace {option args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists ::user_options($option)] && [info exists ::$option]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global user_options $option
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![info exists user_options($option)] && [info exists $option]} {
</span> foreach {old new} $args {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set index [lsearch -exact [set ::$option] $old]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set index [lsearch -exact [set $option] $old]
</span> if {$index != -1} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- lset ::$option $index $new
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lset $option $index $new
</span> }
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -182,12 +193,13 @@ proc options {args} {
</span> # @param action set or delete
# @param value the value to be set, defaults to an empty string
proc options::export {option action {value ""}} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global PortInfo
</span> switch $action {
set {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::PortInfo($option) $value
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set PortInfo($option) $value
</span> }
delete {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- unset -nocomplain ::PortInfo($option)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unset -nocomplain PortInfo($option)
</span> }
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -209,21 +221,25 @@ proc options_export {args} {
</span> # @param action read/set
# @param value ignored
proc handle_deprecated_option {option action {value ""}} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set newoption [lindex $::deprecated_options($option) 0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set refcount [lindex $::deprecated_options($option) 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global deprecated_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set newoption [lindex $deprecated_options($option) 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set refcount [lindex $deprecated_options($option) 1]
</span>
if {$newoption eq ""} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_warn "Port $::subport using deprecated option \"$option\"."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global subport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_warn "Port $subport using deprecated option \"$option\"."
</span> return
}
# Increment reference counter
<span style='display:block; white-space:pre;background:#ffe0e0;'>- lset ::deprecated_options($option) 1 [expr {$refcount + 1}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lset deprecated_options($option) 1 [expr {$refcount + 1}]
</span>
if {$action ne "read"} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $newoption [set ::$option]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $option
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $newoption [set $option]
</span> } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- $option [set ::$newoption]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $newoption
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $option [set $newoption]
</span> }
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -241,8 +257,9 @@ proc get_deprecated_options {} {
</span> # @param option name of the option
# @param newoption name of a superseding option
proc option_deprecate {option {newoption ""} } {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global deprecated_options
</span> # If a new option is specified, default the option to $newoption
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::deprecated_options($option) [list $newoption 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set deprecated_options($option) [list $newoption 0]
</span> # Create a normal option for compatibility
options $option
# Register a proc for handling the deprecation
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -255,12 +272,14 @@ proc option_deprecate {option {newoption ""} } {
</span> # @param option the name of the option
# @param args name of procs
proc option_proc {option args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::option_procs($option)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::option_procs($option) [concat $::option_procs($option) $args]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global option_procs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists option_procs($option)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend option_procs($option) {*}$args
</span> # we're already tracing
} else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::option_procs($option) $args
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- trace add variable ::$option [list read write unset] option_proc_trace
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $option
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set option_procs($option) $args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace add variable $option [list read write unset] option_proc_trace
</span> }
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -268,24 +287,27 @@ proc option_proc {option args} {
</span> # trace handler for option reads. Calls option procedures with correct arguments.
proc option_proc_trace {optionName index op} {
set optionName [namespace tail $optionName]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global option_procs
</span> switch $op {
write {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach p $::option_procs($optionName) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- $p $optionName set [set ::$optionName]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $optionName
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach p $option_procs($optionName) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $p $optionName set [set $optionName]
</span> }
}
read {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach p $::option_procs($optionName) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach p $option_procs($optionName) {
</span> $p $optionName read
}
}
unset {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach p $::option_procs($optionName) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $optionName
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach p $option_procs($optionName) {
</span> if {[catch {$p $optionName delete} result]} {
ui_debug "error during unset trace ($p): $result\n$::errorInfo"
}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- trace add variable ::$optionName [list read write unset] option_proc_trace
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace add variable $optionName [list read write unset] option_proc_trace
</span> }
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -459,20 +481,19 @@ proc command_exec {args} {
</span> # and adds a variable trace. The variable traces allows for delayed
# variable and command expansion in the variable's default value.
proc default {option val} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::option_defaults($option)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global option_defaults $option
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists option_defaults($option)]} {
</span> ui_debug "Re-registering default for $option"
# remove the old trace
<span style='display:block; white-space:pre;background:#ffe0e0;'>- trace remove variable ::$option [list read write unset] default_check
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace remove variable $option [list read write unset] default_check
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[info exists $option]} {
</span> # If option is already set and we did not set it
# do not reset the value
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::$option]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::option_defaults($option) $val
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::$option $val
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- trace add variable ::$option [list read write unset] default_check
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set option_defaults($option) $val
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set $option $val
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace add variable $option [list read write unset] default_check
</span> }
# default_check
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -480,19 +501,20 @@ proc default {option val} {
</span> # for default variable values
proc default_check {varName index op} {
set optionName [namespace tail $varName]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global option_defaults $optionName
</span> switch $op {
write {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- unset ::option_defaults($optionName)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- trace remove variable ::$optionName [list read write unset] default_check
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unset option_defaults($optionName)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace remove variable $optionName [list read write unset] default_check
</span> return
}
read {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- uplevel #0 [list set $optionName] [subst -nocommands {[subst {$::option_defaults($optionName)}]}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uplevel #0 [list set $optionName] [subst -nocommands {[subst {$option_defaults($optionName)}]}]
</span> return
}
unset {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- unset ::option_defaults($optionName)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- trace remove variable ::$optionName [list read write unset] default_check
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unset option_defaults($optionName)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace remove variable $optionName [list read write unset] default_check
</span> return
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -503,6 +525,7 @@ proc default_check {varName index op} {
</span> proc handle_option_string {option action args} {
switch $action {
set {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global $option
</span> set args [join $args]
set fulllist [list]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -531,7 +554,7 @@ proc handle_option_string {option action args} {
</span> lappend fulllist $arg
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::$option $fulllist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set $option $fulllist
</span> }
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -539,18 +562,12 @@ proc handle_option_string {option action args} {
</span> # variant <provides> [<provides> ...] [requires <requires> [<requires>]]
# Portfile level procedure to provide support for declaring variants
proc variant {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global PortInfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # Each key in PortInfo(vinfo) maps to an array which contains the
# following keys:
# * conflicts
# * description
# * is_default: This key exists iff the variant is a default variant.
# * requires
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists PortInfo(vinfo)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set PortInfo(vinfo) [dict create]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> set len [llength $args]
if {$len < 2} {
return -code error "Malformed variant specification"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -594,6 +611,10 @@ proc variant {args} {
</span> # This variant was already defined. Remove it from the dlist.
variant_remove_ditem $variant_provides
} else {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global PortInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![info exists PortInfo(vinfo)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set PortInfo(vinfo) [dict create]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
# Set conflicts.
set vconflicts [join [lsort [ditem_key $ditem conflicts]]]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -606,7 +627,7 @@ proc variant {args} {
</span>
# read global variant description, if none given
if {$vdesc eq ""} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set vdesc [variant_desc $::porturl $variant_provides]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set vdesc [variant_desc $variant_provides]
</span> }
# Set description.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -629,13 +650,15 @@ proc variant {args} {
</span> }
# Finally append the ditem to the dlist.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend ::all_variants $ditem
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global all_variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend all_variants $ditem
</span> }
# variant_isset name
# Returns 1 if variant name selected, otherwise 0
proc variant_isset {name} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::variations($name)] && $::variations($name) eq "+"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global variations
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists variations($name)] && $variations($name) eq "+"} {
</span> return 1
}
return 0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -644,7 +667,8 @@ proc variant_isset {name} {
</span> # variant_set name
# Sets variant to run for current portfile
proc variant_set {name} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::variations($name) +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global variations
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set variations($name) +
</span> }
# variant_remove_ditem name
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -666,19 +690,21 @@ proc variant_remove_ditem {name} {
</span> # variant_delete name
# completely delete the named variant from the port
proc variant_delete {name} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global PortInfo
</span> variant_remove_ditem $name
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::PortInfo(variants)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::PortInfo(variants) [ldelete $::PortInfo(variants) $name]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists PortInfo(variants)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set PortInfo(variants) [ldelete $PortInfo(variants) $name]
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::PortInfo(vinfo)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dict unset ::PortInfo(vinfo) $name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists PortInfo(vinfo)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict unset PortInfo(vinfo) $name
</span> }
}
# variant_exists name
# determine if a variant exists.
proc variant_exists {name} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::PortInfo(variants)] && $name in $::PortInfo(variants)} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global PortInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists PortInfo(variants)] && $name in $PortInfo(variants)} {
</span> return 1
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -721,11 +747,10 @@ proc load_variant_desc_file {descfile} {
</span> ##
# Get description for a variant from global descriptions file
#
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# @param porturl url to a port
</span> # @param variant name
# @return description from descriptions file or an empty string
<span style='display:block; white-space:pre;background:#ffe0e0;'>-proc variant_desc {porturl variant} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- global variant_descs_global
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc variant_desc {variant} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global variant_descs_global porturl
</span>
set descfile [getportresourcepath $porturl "port1.0/variant_descriptions.conf" no]
load_variant_desc_file $descfile
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1533,7 +1558,7 @@ proc target_run {ditem} {
</span> }
# For {} blocks in the Portfile, export DEVELOPER_DIR to prevent Xcode binaries if shouldn't be used
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::env(DEVELOPER_DIR) [option configure.developer_dir]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set env(DEVELOPER_DIR) [option configure.developer_dir]
</span> if {$result == 0} {
foreach pre [ditem_key $ditem pre] {
ui_debug "Executing $pre"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1564,7 +1589,7 @@ proc target_run {ditem} {
</span> }
}
# Keep the environment clean by unsetting DEVELOPER_DIR
<span style='display:block; white-space:pre;background:#ffe0e0;'>- unset -nocomplain ::env(DEVELOPER_DIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unset -nocomplain env(DEVELOPER_DIR)
</span>
# Check dependencies & file creations outside workpath.
if {[tbool ports_trace]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1689,8 +1714,9 @@ proc eval_targets {target} {
</span> } elseif {$target eq "activate"} {
set regref [registry_open $subport $version $revision $portvariants ""]
# Set requested flag in the registry if in options
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists ::user_options(ports_requested)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- registry_prop_store $regref requested $::user_options(ports_requested)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global user_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists user_options(ports_requested)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ registry_prop_store $regref requested $user_options(ports_requested)
</span> }
if {[registry_prop_retr $regref active] != 0} {
# Something to close the registry entry may be called here, if it existed.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2018,7 +2044,7 @@ proc variant_run {ditem} {
</span> # test for conflicting variants
foreach v [ditem_key $ditem conflicts] {
if {[variant_isset $v]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "[option name]: Variant $name conflicts with $v"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "[option subport]: Variant $name conflicts with $v"
</span> return 1
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2026,7 +2052,7 @@ proc variant_run {ditem} {
</span> # execute proc with same name as variant.
if {[catch "variant-${name}" result]} {
ui_debug $::errorInfo
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "[option name]: Error executing $name: $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "[option subport]: Error executing $name: $result"
</span> return 1
}
return 0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2051,11 +2077,10 @@ proc canonicalize_variants {variants {sign "+"}} {
</span> }
proc eval_variants {variations} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global PortInfo requested_variations portvariants
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set dlist $::all_variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global PortInfo all_variants subport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set dlist $all_variants
</span> upvar $variations upvariations
lassign [choose_variants $dlist upvariations] chosen negated
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set portname [option subport]
</span>
# Check to make sure the requested variations are available with this
# port, if one is not, warn the user and remove the variant from the
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2063,7 +2088,7 @@ proc eval_variants {variations} {
</span> foreach key [array names upvariations *] {
if {![info exists PortInfo(variants)] ||
$key ni $PortInfo(variants)} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_debug "Requested variant $upvariations($key)$key is not provided by port $portname."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Requested variant $upvariations($key)$key is not provided by port $subport."
</span> array unset upvariations $key
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2100,12 +2125,14 @@ proc eval_variants {variations} {
</span> foreach choice $chosen {
lappend chosenlist +[ditem_key $choice provides]
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "Inconsistent variant specification: $portname variant +$thevar is required by at least one of $chosenlist, but specified -$thevar"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Inconsistent variant specification: $subport variant +$thevar is required by at least one of $chosenlist, but specified -$thevar"
</span> return 1
}
lappend activevariants $thevar "+"
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global requested_variations portvariants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Record a canonical variant string, used e.g. in accessing the registry
set portvariants [canonicalize_variants $activevariants]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2130,7 +2157,8 @@ proc eval_variants {variations} {
</span> lappend negated_list $thevar "-"
}
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::requested_variants [canonicalize_variants $requested_list "+"][canonicalize_variants $negated_list "-"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global requested_variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set requested_variants [canonicalize_variants $requested_list "+"][canonicalize_variants $negated_list "-"]
</span>
return 0
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2183,22 +2211,24 @@ proc check_variants {target} {
</span>
# add the default universal variant if appropriate
proc universal_setup {args} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global configure.universal_archs universal_variant os.universal_supported \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ use_xmkmf configure.compiler
</span> if {[variant_exists universal]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[llength [option configure.universal_archs]] >= 2} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[llength ${configure.universal_archs}] >= 2} {
</span> ui_debug "universal variant already exists, so not adding the default one"
} else {
ui_debug "removing universal variant due to < 2 supported universal_archs"
variant_delete universal
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {[exists universal_variant] && ![option universal_variant]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[info exists universal_variant] && !$universal_variant} {
</span> ui_debug "universal_variant is false, so not adding the default universal variant"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {[exists use_xmkmf] && [option use_xmkmf]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[tbool use_xmkmf]} {
</span> ui_debug "using xmkmf, so not adding the default universal variant"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {![exists os.universal_supported] || ![option os.universal_supported]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {![tbool os.universal_supported]} {
</span> ui_debug "OS doesn't support universal builds, so not adding the default universal variant"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {[llength [option configure.universal_archs]] <= 1} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {[llength ${configure.universal_archs}] <= 1} {
</span> ui_debug "only one arch supported, so not adding the default universal variant"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } elseif {![portconfigure::arch_flag_supported [option configure.compiler] yes]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {![portconfigure::arch_flag_supported ${configure.compiler} yes]} {
</span> ui_debug "Compiler doesn't support universal builds, so not adding the default universal variant"
} else {
ui_debug "adding the default universal variant"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2210,12 +2240,13 @@ proc universal_setup {args} {
</span>
# constructor for target object
proc target_new {name procedure} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ global targets
</span> set ditem [ditem_create]
ditem_key $ditem name $name
ditem_key $ditem procedure $procedure
<span style='display:block; white-space:pre;background:#ffe0e0;'>- lappend ::targets $ditem
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend targets $ditem
</span>
return $ditem
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3130,7 +3161,6 @@ proc validate_macportsuser {} {
</span>
# run code as a specified user
proc exec_as_uid {uid code} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global macportsuser
</span> set oldeuid [geteuid]
if {$oldeuid != $uid} {
if {$oldeuid != 0} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3306,7 +3336,7 @@ proc get_canonical_archflags {{tool cc}} {
</span>
# check that the selected archs are supported
proc check_supported_archs {} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global supported_archs build_arch universal_archs configure.build_arch configure.universal_archs subport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global supported_archs build_arch universal_archs configure.build_arch subport
</span> if {$supported_archs eq "noarch"} {
return 0
} elseif {[variant_exists universal] && [variant_isset universal]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3549,10 +3579,9 @@ proc _archive_available {} {
</span> set site $sites_entry
}
if {[string index $site end] ne "/"} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- append site "/[option archive.subdir]"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- append site [option archive.subdir]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ append site /
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ append site [option archive.subdir]
</span> set url [portfetch::assemble_url $site $archivename]
ui_debug "Fetching $archivename archive size"
# curl getsize can return -1 instead of throwing an error for
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/tests/portutil.test b/src/port1.0/tests/portutil.test
</span><span style='display:block; white-space:pre;color:#808080;'>index 8af7883a9..fd062c5b9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/tests/portutil.test
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/tests/portutil.test
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -538,7 +538,7 @@ test eval_targets {
</span>
} -cleanup {
mportclose $mport
<span style='display:block; white-space:pre;background:#ffe0e0;'>- file delete -force $filespath ${pwd}/build ${pwd}/distfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file delete -force $filespath ${pwd}/build ${pwd}/distfiles ${pwd}/cache
</span>
} -result "Eval_targets successful."
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -713,8 +713,7 @@ test variant_new {
</span> test handle_default_variants {
Handle default variants unit test.
} -body {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global PortInfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- global variations
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global PortInfo variations
</span>
array set variations {}
</pre><pre style='margin:0'>
</pre>