Kludge file location from Caller(). The behavior of Caller() is not guaranteed, and sometimes contains artifacts of optimization. Work around its unpredictability by adding another case.
diff --git a/compiler/go/build.go b/compiler/go/build.go index 80612f5..14ee90a 100644 --- a/compiler/go/build.go +++ b/compiler/go/build.go
@@ -41,6 +41,9 @@ func init() { _, buildGO, _, _ = runtime.Caller(1) + if buildGO == "<autogenerated>" { + _, buildGO, _, _ = runtime.Caller(0) + } buildDir = path.Dir(buildGO) configGO = path.Join(buildDir, "cfc", "config.go")
diff --git a/runtime/go/build.go b/runtime/go/build.go index 6990749..0df28ae 100644 --- a/runtime/go/build.go +++ b/runtime/go/build.go
@@ -44,6 +44,9 @@ func init() { _, buildGO, _, _ = runtime.Caller(1) + if buildGO == "<autogenerated>" { + _, buildGO, _, _ = runtime.Caller(0) + } buildDir = path.Dir(buildGO) configGO = path.Join(buildDir, "clownfish", "config.go") cfbindGO = path.Join(buildDir, "clownfish", "cfbind.go")