<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository mpbb.
</pre>
<p><a href="https://github.com/macports/mpbb/commit/39749a78929111448ed2c9b37c07c2853ff9cd11">https://github.com/macports/mpbb/commit/39749a78929111448ed2c9b37c07c2853ff9cd11</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 39749a7 dependencies.tcl: reset state if deps need to be built
</span>39749a7 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 39749a78929111448ed2c9b37c07c2853ff9cd11
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Wed Oct 11 10:46:12 2023 +1100
<span style='display:block; white-space:pre;color:#404040;'> dependencies.tcl: reset state if deps need to be built
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> The use of a global variable by mportexec means multiple invocations
</span><span style='display:block; white-space:pre;color:#404040;'> can interfere if this is not done. Having to build deps at this stage
</span><span style='display:block; white-space:pre;color:#404040;'> should be rare, so performance should not be impacted too much.
</span>---
tools/dependencies.tcl | 251 ++++++++++++++++++++++++++++++++-----------------
1 file changed, 163 insertions(+), 88 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/tools/dependencies.tcl b/tools/dependencies.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 9aa67fa..d72ae21 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/tools/dependencies.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/tools/dependencies.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -416,7 +416,8 @@ if {$failcache_dir ne ""} {
</span> set start_time [clock seconds]
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-proc install_dep {ditem} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Returns 0 if dep is installed, 1 if not
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc install_dep_archive {ditem} {
</span> array set depinfo $::mportinfo_array($ditem)
incr ::dependencies_counter
set msg "Installing dependency ($::dependencies_counter of $::dependencies_count) '$depinfo(name)' with variants '$depinfo(canonical_active_variants)'"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -425,7 +426,7 @@ proc install_dep {ditem} {
</span> if {[registry::entry imaged $depinfo(name) $depinfo(version) $depinfo(revision) $depinfo(canonical_active_variants)] ne ""} {
puts "Already installed, nothing to do"
puts $::log_status_dependencies {[OK]}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0
</span> }
# clean up any work directories left over from earlier
# (avoids possible errors with different variants in the statefile)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -435,34 +436,14 @@ proc install_dep {ditem} {
</span> }
set fail 0
set workername [ditem_key $ditem workername]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[$workername eval [list _archive_available]]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # First fetch the archive
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[catch {mportexec $ditem archivefetch} result]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr $::errorInfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "Archivefetch failed: $result"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set fail 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$fail || $result > 0 || [$workername eval [list find_portarchive_path]] eq ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr "Fetching archive for dependency '$depinfo(name)' with variants '$depinfo(canonical_active_variants)' failed, aborting."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $::log_status_dependencies {[FAIL] (archivefetch)}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $::log_subports_progress "Building '$::portname' ... \[ERROR\] (failed to archivefetch dependency '$depinfo(name)')."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Now install it
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[catch {$workername eval [list eval_targets install]} result]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr $::errorInfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "Install failed: $result"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set fail 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$fail || $result > 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr "Installing from archive for dependency '$depinfo(name)' with variants '$depinfo(canonical_active_variants)' failed, aborting."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $::log_status_dependencies {[FAIL]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $::log_subports_progress "Building '$::portname' ... \[ERROR\] (failed to install dependency '$depinfo(name)')."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # No archive on the public server. May build from source.
</span>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # First fetch the archive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {mportexec $ditem archivefetch} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr $::errorInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Archivefetch failed: $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set fail 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$fail || $result > 0 || [$workername eval [list find_portarchive_path]] eq ""} {
</span> # The known_fail case should normally be caught before now, but
# it's quick and easy to check and may save a build.
if {[info exists depinfo(known_fail)] && [string is true -strict $depinfo(known_fail)]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -471,59 +452,97 @@ proc install_dep {ditem} {
</span> puts $::log_subports_progress "Building '$::portname' ... \[ERROR\] (dependency '$depinfo(name)' known to fail) maintainers: [get_maintainers $::portname $depinfo(name)]."
exit 1
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # This dep will have to be built, not just installed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr "Fetching archive for dependency '$depinfo(name)' with variants '$depinfo(canonical_active_variants)' failed."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $::log_status_dependencies {[MISSING]}
</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;'>+ # Now install it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {$workername eval [list eval_targets install]} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr $::errorInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Install failed: $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set fail 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$fail || $result > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr "Installing from archive for dependency '$depinfo(name)' with variants '$depinfo(canonical_active_variants)' failed, aborting."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $::log_status_dependencies {[FAIL]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $::log_subports_progress "Building '$::portname' ... \[ERROR\] (failed to install dependency '$depinfo(name)')."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Try archivefetch in case there's one available from e.g. ARCHIVE_SITE_LOCAL.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[catch {mportexec $ditem archivefetch} result]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr $::errorInfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "Archivefetch failed: $result"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $::log_status_dependencies {[OK]}
</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:#ffe0e0;'>- # Fetch and checksum the distfiles
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[catch {mportexec $ditem fetch} result]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr $::errorInfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "Fetch failed: $result"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set fail 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$fail || $result > 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr "Fetch of dependency '$depinfo(name)' with variants '$depinfo(canonical_active_variants)' failed, aborting."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $::log_status_dependencies {[FAIL] (fetch)}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $::log_subports_progress "Building '$::portname' ... \[ERROR\] (failed to fetch dependency '$depinfo(name)') maintainers: [get_maintainers $::portname $depinfo(name)]."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[catch {mportexec $ditem checksum} result]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr $::errorInfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "Checksum failed: $result"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set fail 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$fail || $result > 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr "Checksum of dependency '$depinfo(name)' with variants '$depinfo(canonical_active_variants)' failed, aborting."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $::log_status_dependencies {[FAIL] (checksum)}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $::log_subports_progress "Building '$::portname' ... \[ERROR\] (failed to checksum dependency '$depinfo(name)') maintainers: [get_maintainers $::portname $depinfo(name)]."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Deactivate ports not needed for this build so they don't interfere
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- deactivate_unneeded depinfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Now install
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[catch {mportexec $ditem install} result]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr $::errorInfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "Install failed: $result"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set fail 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$fail || $result > 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr "Build of dependency '$depinfo(name)' with variants '$depinfo(canonical_active_variants)' failed, aborting."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $::log_status_dependencies {[FAIL]}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $::log_subports_progress "Building '$::portname' ... \[ERROR\] (failed to install dependency '$depinfo(name)') maintainers: [get_maintainers $::portname $depinfo(name)]."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# mportexec uses this global variable, so we have to clean up between
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# doing operations (that require deps) on different ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc close_open_mports {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach mport $macports::open_mports {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ catch {mportclose $mport}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc install_dep_source {portinfo_list} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ array set depinfo $portinfo_list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ incr ::build_counter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set msg "Building dependency ($::build_counter of $::build_count) '$depinfo(name)' with variants '$depinfo(canonical_active_variants)'"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts -nonewline $::log_status_dependencies "$msg ... "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts "----> ${msg}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ close_open_mports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ array unset ::mportinfo_array
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set ditem [lindex [open_port $depinfo(name)] 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # deactivate ports not needed for this dep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {deactivate_unneeded depinfo} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error $::errorInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "deactivate_unneeded failed: $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Fetch and checksum the distfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {mportexec $ditem fetch} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr $::errorInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Fetch failed: $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set fail 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$fail || $result > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr "Fetch of dependency '$depinfo(name)' with variants '$depinfo(canonical_active_variants)' failed, aborting."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $::log_status_dependencies {[FAIL] (fetch)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $::log_subports_progress "Building '$::portname' ... \[ERROR\] (failed to fetch dependency '$depinfo(name)') maintainers: [get_maintainers $::portname $depinfo(name)]."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {mportexec $ditem checksum} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr $::errorInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Checksum failed: $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set fail 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$fail || $result > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr "Checksum of dependency '$depinfo(name)' with variants '$depinfo(canonical_active_variants)' failed, aborting."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $::log_status_dependencies {[FAIL] (checksum)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $::log_subports_progress "Building '$::portname' ... \[ERROR\] (failed to checksum dependency '$depinfo(name)') maintainers: [get_maintainers $::portname $depinfo(name)]."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Now install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {mportexec $ditem install} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr $::errorInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Install failed: $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set fail 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$fail || $result > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr "Build of dependency '$depinfo(name)' with variants '$depinfo(canonical_active_variants)' failed, aborting."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $::log_status_dependencies {[FAIL]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $::log_subports_progress "Building '$::portname' ... \[ERROR\] (failed to install dependency '$depinfo(name)') maintainers: [get_maintainers $::portname $depinfo(name)]."
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$::failcache_dir ne ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- failcache_update $depinfo(name) [ditem_key $ditem porturl] $depinfo(canonical_active_variants) 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set ::any_built 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Success. Clear any failcache entry.
</span> if {$::failcache_dir ne ""} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- failcache_update $depinfo(name) [ditem_key $ditem porturl] $depinfo(canonical_active_variants) 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ failcache_update $depinfo(name) [ditem_key $ditem porturl] $depinfo(canonical_active_variants) 1
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Success. Clear any failcache entry.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$::failcache_dir ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ failcache_update $depinfo(name) [ditem_key $ditem porturl] $depinfo(canonical_active_variants) 0
</span> }
puts $::log_status_dependencies {[OK]}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -532,35 +551,92 @@ proc install_dep {ditem} {
</span> set macports::channels(debug) stderr
set macports::channels(info) stdout
set dependencies_counter 0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set any_built 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set missing_deps [list]
</span> try {
foreach ditem $dlist_sorted {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- install_dep $ditem
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[install_dep $ditem]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend missing_deps $::mportinfo_array($ditem)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
} on error {eMessage} {
ui_error "install_dep failed: $eMessage"
exit 2
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Go back to being quiet
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set macports::channels(debug) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set macports::channels(info) {}
</span>
puts stderr "installing deps took [expr {[clock seconds] - $start_time}] seconds"
set start_time [clock seconds]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {$any_built} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # active ports likely changed, so do this again
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set build_count [llength $missing_deps]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {$build_count > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Some deps are neither installed nor able to be fetched as an archive.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # This should ideally never happen since each dep should have had
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # its own build previously, but failures and out-of-order builds
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # do happen sometimes for various reasons.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tee "Building $build_count dependencies of $portname:" $log_status_dependencies stdout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set build_counter 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach missing_dep $missing_deps {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ install_dep_source $missing_dep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr "building missing deps took [expr {[clock seconds] - $start_time}] seconds"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set start_time [clock seconds]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Now effectively start again for the main port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ close_open_mports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ array unset ::mportinfo_array
</span> try {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- deactivate_unneeded portinfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set mport [mportopen $portinfo(porturl) [list subport $portinfo(name)] [array get variants]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } on error {eMessage} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "mportopen $portinfo(porturl) failed: $eMessage"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ [ditem_key $mport workername] eval [list set portutil::archive_available_result 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {deactivate_unneeded portinfo} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error $::errorInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "deactivate_unneeded failed: $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr "deactivating unneeded ports (again) took [expr {[clock seconds] - $start_time}] seconds"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set start_time [clock seconds]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # gather a list of dependencies with the correct variants (+universal is dealt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # with in specific ways)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {mportdepends $mport "activate"} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error $::errorInfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "mportdepends $portname activate failed: $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {$result != 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "mportdepends $portname activate failed: $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ exit 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # sort these dependencies topologically; exclude the given port itself
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set dlist [dlist_append_dependents $macports::open_mports $mport {}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlist_delete dlist $mport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # produce a list of deps in sorted order
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set dlist_sorted [list]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlist_eval $dlist {} [list append_it]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unset dlist
</span> } on error {eMessage} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "deactivate_unneeded failed: $eMessage"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "sorting dlist failed: $eMessage"
</span> exit 2
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr "calculating deps (again) took [expr {[clock seconds] - $start_time}] seconds"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set start_time [clock seconds]
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Go back to being quiet
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set macports::channels(debug) {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set macports::channels(info) {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> proc activate_dep {ditem} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ set workername [ditem_key $ditem workername]
</span> set fail 0
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[catch {mportexec $ditem activate} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {$workername eval [list eval_targets activate]} result]} {
</span> puts stderr $::errorInfo
ui_error "Activate failed: $result"
set fail 1
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -571,7 +647,6 @@ proc activate_dep {ditem} {
</span> puts $::log_subports_progress "Building '$::portname' ... \[ERROR\] (failed to activate dependency '$depinfo(name)') maintainers: [get_maintainers $::portname $depinfo(name)]."
exit 1
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- catch {mportclose $ditem}
</span> }
puts "Activating all dependencies..."
</pre><pre style='margin:0'>
</pre>