Revision: 140540 https://trac.macports.org/changeset/140540 Author: jmr@macports.org Date: 2015-09-21 20:01:49 -0700 (Mon, 21 Sep 2015) Log Message: ----------- fix some cases where mportexec could return without cleaning up first Modified Paths: -------------- trunk/base/src/macports1.0/macports.tcl Modified: trunk/base/src/macports1.0/macports.tcl =================================================================== --- trunk/base/src/macports1.0/macports.tcl 2015-09-22 02:13:12 UTC (rev 140539) +++ trunk/base/src/macports1.0/macports.tcl 2015-09-22 03:01:49 UTC (rev 140540) @@ -2005,8 +2005,10 @@ return 1 } set portname [_mportkey $mport subport] + set log_needs_pop no if {$target ne "clean"} { macports::push_log $mport + set log_needs_pop yes } # Use _target_needs_deps as a proxy for whether we're going to @@ -2015,10 +2017,16 @@ if {[macports::_target_needs_deps $target]} { # possibly warn or error out depending on how old xcode is if {[$workername eval _check_xcode_version] != 0} { + if {$log_needs_pop} { + macports::pop_log + } return 1 } # error out if selected arch(s) not supported by this port if {[$workername eval check_supported_archs] != 0} { + if {$log_needs_pop} { + macports::pop_log + } return 1 } } @@ -2043,6 +2051,9 @@ ui_msg {} } if {[mportdepends $mport $target] != 0} { + if {$log_needs_pop} { + macports::pop_log + } return 1 } if {![macports::ui_isset ports_debug]} { @@ -2067,6 +2078,12 @@ } set retvalue [$macports::ui_options(questions_yesno) "The following dependencies will be installed: " "TestCase#2" [lsort $deplist] {y} 0] if {$retvalue == 1} { + if {$log_needs_pop} { + macports::pop_log + } + foreach ditem $dlist { + mportclose $ditem + } return 0 } } else { @@ -2077,7 +2094,7 @@ ui_msg $depstring } } - + # install them set result [dlist_eval $dlist _mportactive [list _mportexec activate]] @@ -2097,6 +2114,9 @@ foreach ditem $dlist { catch {mportclose $ditem} } + if {$log_needs_pop} { + macports::pop_log + } return 1 } @@ -2107,7 +2127,12 @@ } else { # No dependencies, but we still need to check for conflicts. if {$target eq "" || $target eq "install" || $target eq "activate"} { - _mporterrorifconflictsinstalled $mport + if {[catch {_mporterrorifconflictsinstalled $mport}]} { + if {$log_needs_pop} { + macports::pop_log + } + return 1 + } } } @@ -2129,10 +2154,11 @@ } global ::logenabled ::debuglogname - if {[info exists ::logenabled] && $::logenabled && [info exists ::debuglogname]} { - if {$result != 0} { - ui_error "See $::debuglogname for details." - } + if {$result != 0 && [info exists ::logenabled] && $::logenabled && [info exists ::debuglogname]} { + ui_error "See $::debuglogname for details." + } + + if {$log_needs_pop} { macports::pop_log } @@ -3133,7 +3159,9 @@ } if {$target in {{} install activate}} { - _mporterrorifconflictsinstalled $mport + if {[catch {_mporterrorifconflictsinstalled $mport}]} { + return 1 + } } set workername [ditem_key $mport workername] @@ -3268,7 +3296,7 @@ } if {$arch_mismatch} { macports::_explain_arch_mismatch [_mportkey $mport subport] $dep_portname $required_archs $supported_archs $has_universal - return -code error "architecture mismatch" + return 1 } }