--- bin/portupgrade.orig	Mon Feb 26 19:00:26 2007
+++ bin/portupgrade	Tue May  1 21:37:49 2007
@@ -616,7 +616,9 @@
 
 	  # Track unistalled ports is appeared after updating
 	  upgrade_tasks.each do |task|
-	    install_tasks |= get_uninstalled_depends($pkgdb.origin(task))
+	    o = $pkgdb.origin(task)
+#XXX	    install_tasks |= get_uninstalled_depends(o) if !o.nil?
+	    $task_options[task][:origin] = o
 	  end
 	}
 
@@ -701,7 +703,6 @@
 
 	  if $upward_recursive
 	    get_all_depends(origin).each do |o|
-	      puts "*>#{o}"
 	      make_args = get_make_args(o)
 
 	      if pkgnames = $pkgdb.deorigin(o)
@@ -714,7 +715,6 @@
 		  } unless $task_options.include?(p)
 		end
 	      else
-		puts "*->#{o}"
 		install_tasks << o
 		$task_options[o] = {
 		  :make_args => make_args,
@@ -800,6 +800,9 @@
   unless $depends.has_key?(origin)
     depends = Set.new
 
+    portdir = $portsdb.portdir(origin)
+    return nil if not File.directory?(portdir)
+
     first = false
     if parents_list.nil?
       parents_list = Set.new
@@ -809,8 +812,6 @@
     return nil if parents_list.include?(origin)
     parents_list.add(origin)
 
-    portdir = $portsdb.portdir(origin)
-
     make_env = get_make_env(origin)
     cmdargs = make_env << 'make'
 
@@ -831,7 +832,7 @@
 
     children_deps = Set.new
     depends.each do |dep|
-      children_deps.merge(get_all_depends(dep, parents_list))
+      children_deps.merge(get_all_depends(dep, parents_list)) if !dep.nil?
     end
     if children_deps.nil?
       next
@@ -840,7 +841,7 @@
     end
 
     STDERR.puts ' done]' if first
-    $depends[origin] = depends
+    $depends[origin] = depends.to_a.compact
   else
     $depends[origin]
   end
@@ -907,7 +908,7 @@
   dependency = options[:dependency]
 
   origin = $origin
-  if !origin
+  if !origin || !File.directory?($portsdb.ports_dir()+'/'+origin)
     if !$ignore_moved and \
        !config_ignore_moved?(pkg) and \
        (moved = $portsdb.moved.trace(pkg.origin))
@@ -917,6 +918,8 @@
 	end
       else
 	warning_message "Package '#{pkg.name}' has been removed from ports tree."
+	$results << PkgResult.new($origin, :ignored, pkgname)
+	return
       end
     else
       origin = pkg.origin
