[85382] trunk/base/src/macports1.0/macports.tcl
dports at macports.org
dports at macports.org
Wed Oct 12 23:20:15 PDT 2011
Revision: 85382
http://trac.macports.org/changeset/85382
Author: dports at macports.org
Date: 2011-10-12 23:20:14 -0700 (Wed, 12 Oct 2011)
Log Message:
-----------
check whether any conflicts are installed even when the port we're
trying to install has no dependencies (see #31571)
Modified Paths:
--------------
trunk/base/src/macports1.0/macports.tcl
Modified: trunk/base/src/macports1.0/macports.tcl
===================================================================
--- trunk/base/src/macports1.0/macports.tcl 2011-10-13 06:16:01 UTC (rev 85381)
+++ trunk/base/src/macports1.0/macports.tcl 2011-10-13 06:20:14 UTC (rev 85382)
@@ -1590,18 +1590,21 @@
}
}
-### _mportconflictsinstalled is private; may change without notice
+### _mporterrorifconflictsinstalled is private; may change without notice
-# Determine if the port, per the conflicts option, has any conflicts with
-# what is installed.
+# Determine if the port, per the conflicts option, has any conflicts
+# with what is installed. If it does, raises an error unless force
+# option is set.
#
# mport the port to check for conflicts
-# Returns a list of which installed ports conflict, or an empty list if none
-proc _mportconflictsinstalled {mport conflictinfo} {
+proc _mporterrorifconflictsinstalled {mport} {
set conflictlist {}
- if {[llength $conflictinfo] > 0} {
+ array set portinfo [mportinfo $mport]
+
+ if {[info exists portinfo(conflicts)] &&
+ [llength $portinfo(conflicts)] > 0} {
ui_debug "Checking for conflicts against [_mportkey $mport subport]"
- foreach conflictport ${conflictinfo} {
+ foreach conflictport $portinfo(conflicts) {
if {[_mportispresent $mport port:${conflictport}]} {
lappend conflictlist $conflictport
}
@@ -1610,10 +1613,18 @@
ui_debug "[_mportkey $mport subport] has no conflicts"
}
- return $conflictlist
+ if {[llength ${conflictlist}] != 0} {
+ if {[macports::global_option_isset ports_force]} {
+ ui_warn "Force option set; installing $portinfo(name) despite conflicts with: ${conflictlist}"
+ } else {
+ if {![macports::ui_isset ports_debug]} {
+ ui_msg ""
+ }
+ return -code error "Can't install $portinfo(name) because conflicting ports are installed: ${conflictlist}"
+ }
+ }
}
-
### _mportexec is private; may change without notice
proc _mportexec {target mport} {
@@ -1739,6 +1750,11 @@
foreach ditem $dlist {
mportclose $ditem
}
+ } else {
+ # No dependencies, but we still need to check for conflicts.
+ if {$target == "" || $target == "install" || $target == "activate"} {
+ _mporterrorifconflictsinstalled $mport
+ }
}
set clean 0
@@ -2614,18 +2630,8 @@
flush stdout
}
- if {[info exists portinfo(conflicts)] && ($target == "" || $target == "install" || $target == "activate")} {
- set conflictports [_mportconflictsinstalled $mport $portinfo(conflicts)]
- if {[llength ${conflictports}] != 0} {
- if {[macports::global_option_isset ports_force]} {
- ui_warn "Force option set; installing $portinfo(name) despite conflicts with: ${conflictports}"
- } else {
- if {![macports::ui_isset ports_debug]} {
- ui_msg ""
- }
- return -code error "Can't install $portinfo(name) because conflicting ports are installed: ${conflictports}"
- }
- }
+ if {$target == "" || $target == "install" || $target == "activate"} {
+ _mporterrorifconflictsinstalled $mport
}
set workername [ditem_key $mport workername]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20111012/15d6dc49/attachment.html>
More information about the macports-changes
mailing list