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

fixes for #945 and #1024

@stdweird: please review
`self.log`