aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ninja.go11
-rw-r--r--testcase/override_export.mk3
2 files changed, 10 insertions, 4 deletions
diff --git a/ninja.go b/ninja.go
index e563fd9..360bfde 100644
--- a/ninja.go
+++ b/ninja.go
@@ -24,6 +24,8 @@ import (
"sort"
"strings"
"time"
+
+ "github.com/golang/glog"
)
// NinjaGenerator generates ninja build files from DepGraph.
@@ -554,14 +556,17 @@ func (n *NinjaGenerator) generateShell() (err error) {
fmt.Fprintf(f, "if [ -f %s ]; then\n export $(cat %s)\nfi\n", n.envlistName(), n.envlistName())
}
for name, export := range n.exports {
+ // export "a b"=c will error on bash
+ // bash: export `a b=c': not a valid identifier
+ if strings.ContainsAny(name, " \t\n\r") {
+ glog.V(1).Infof("ignore export %q (export:%t)", name, export)
+ continue
+ }
if export {
v, err := n.ctx.ev.EvaluateVar(name)
if err != nil {
return err
}
- // TODO(ukai): if name contains space, ignore it?
- // export "a b"=c will error on bash
- // bash: export `a b=c': not a valid identifier
fmt.Fprintf(f, "export %q=%q\n", name, v)
} else {
fmt.Fprintf(f, "unset %q\n", name)
diff --git a/testcase/override_export.mk b/testcase/override_export.mk
index 322d9f5..669bded 100644
--- a/testcase/override_export.mk
+++ b/testcase/override_export.mk
@@ -1,4 +1,5 @@
-# TODO(c): it overrides "export A" and exports(?) "override B"
+# TODO(c|ninja): it overrides "export A" and exports(?) "override B"
+# ninja: can't export variable with space in name (by bash).
override export A:=override_A
export override B:=export_B