autoport: Allow binary prerequisites to be placed in the autoport directory.

This allow an easy creation of standalone "autoport pack".

Change-Id: Ibe9e38aa3b4bbd7260104e1c2a11630790ff4d2f
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
Reviewed-on: http://review.coreboot.org/10370
Tested-by: build bot (Jenkins)
Reviewed-by: Edward O'Callaghan <edward.ocallaghan@koparo.com>
diff --git a/util/autoport/log_maker.go b/util/autoport/log_maker.go
index b991ea7..e2440b4 100644
--- a/util/autoport/log_maker.go
+++ b/util/autoport/log_maker.go
@@ -9,7 +9,7 @@
 	"strings"
 )
 
-func RunAndSave(output string, name string, arg ...string) {
+func TryRunAndSave(output string, name string, arg []string) error {
 	cmd := exec.Command(name, arg...)
 
 	f, err := os.Create(output)
@@ -22,9 +22,27 @@
 
 	err = cmd.Start()
 	if err != nil {
-		log.Fatal(err)
+		return err
 	}
 	cmd.Wait()
+	return nil
+}
+
+func RunAndSave(output string, name string, arg ...string) {
+	err := TryRunAndSave(output, name, arg)
+	if err == nil {
+		return
+	}
+	idx := strings.LastIndex(name, "/")
+	relname := name
+	if idx >= 0 {
+		relname = name[idx+1:]
+	}
+	relname = "./" + relname
+	err = TryRunAndSave(output, relname, arg)
+	if err != nil {
+		log.Fatal(err)
+	}
 }
 
 func MakeLogs(outDir string) {
diff --git a/util/autoport/readme.md b/util/autoport/readme.md
index e5ea77d..158cf49 100644
--- a/util/autoport/readme.md
+++ b/util/autoport/readme.md
@@ -25,7 +25,12 @@
 		make
 		cd ../autoport
 		go build
-		./autoport --input_log=logs --make_logs --coreboot_dir=../..
+		sudo ./autoport --input_log=logs --make_logs --coreboot_dir=../..
+
+	Note: in case you have problems getting gcc and golang to target machine
+	you can just compile on another machine and transfer binaries
+	`autoport`, `inteltool` and `ectool`. You'll still need other prerequisites
+	but you may place them in the same directory as autoport.
 
 * Look for output unknown PCI devices. E.g.