--- vanilla/Commands.pm 2012-06-25 17:43:00.000000000 +0200
+++ patched/Commands.pm 2012-08-22 18:17:05.551666376 +0200
@@ -1333,9 +1333,16 @@
     }
     my $all_matched = 1;
     if (defined($FAI::commands{$i}{pre})) {
-      foreach (split(/,/, $FAI::commands{$i}{pre})) {
-        my $cur = $_;
-        next if scalar(grep(m{^$cur$}, @pre_deps));
+      COMMAND:
+      foreach my $cur (split(/,/, $FAI::commands{$i}{pre})) {
+        # test if all requirements have been fulfilled
+        if ( scalar(grep(m{^$cur$}, @pre_deps)) != 0 ) {
+          next COMMAND;
+        };
+        if ( $cur =~ /^self_cleared_[a-zA-Z0-9.]+$/ ) {
+          print "WARNING: command " . $FAI::commands{$i}{cmd} . " requires $cur (ignored)\n";
+          next COMMAND;
+        }
         $all_matched = 0;
         last;
       }
@@ -1350,6 +1357,10 @@
       $pushed = $FAI::n_c_i;
     }
     elsif ($i == $pushed) {
+      print "DEBUG: Available pre-depends\n";
+      for my $state (@pre_deps) {
+        print " - $state\n";
+      }
       die "Cannot satisfy pre-depends for " . $FAI::commands{$i}{cmd} . ": " .
         $FAI::commands{$i}{pre} . " -- system left untouched.\n";
     }
