add --software option, disable recursion for --try-software(-X)

fixes for #945 and #1024

@stdweird: please review
use `self.log` in the class