fix run_integration_test android case
diff --git a/func.go b/func.go
index 458e739..d05c6f5 100644
--- a/func.go
+++ b/func.go
@@ -1065,8 +1065,8 @@
return err
}
s := abuf.Bytes()
- logf("eval %q at %s", s, ev.srcpos)
- mk, err := parseMakefileBytes(s, ev.srcpos)
+ logf("eval %v=>%q at %s", f.args[1], s, ev.srcpos)
+ mk, err := parseMakefileBytes(trimSpaceBytes(s), ev.srcpos)
if err != nil {
return ev.errorf("%v", err)
}
@@ -1193,11 +1193,13 @@
func (f *funcEvalAssign) Eval(w evalWriter, ev *Evaluator) error {
var abuf buffer
+ abuf.resetSpace()
err := f.rhs.Eval(&abuf, ev)
if err != nil {
return err
}
rhs := trimLeftSpaceBytes(abuf.Bytes())
+ logf("evalAssign: lhs=%q rhs=%s %q", f.lhs, f.rhs, rhs)
var rvalue Var
switch f.op {
case ":=":
@@ -1359,6 +1361,7 @@
return nil
}
var abuf buffer
+ abuf.resetSpace()
err = f.args[1].Eval(&abuf, ev)
if err != nil {
return err
diff --git a/parser.go b/parser.go
index d5f5a41..f1d23e4 100644
--- a/parser.go
+++ b/parser.go
@@ -197,7 +197,7 @@
lhs, op = line[:sep-1], line[sep-1:sep+1]
}
}
- logf("parseAssign %s op:%s opt:%s", line, op, p.defOpt)
+ logf("parseAssign %s op:%q opt:%s", line, op, p.defOpt)
lhs = trimSpaceBytes(lhs)
rhs = trimLeftSpaceBytes(rhs)
aast, err := newAssignAST(p, lhs, rhs, string(op))
@@ -596,7 +596,9 @@
func (p *parser) parse() (mk makefile, err error) {
for !p.done {
line := p.readLine()
- logf("line: %q", line)
+ if LogFlag {
+ logf("%s: %q", p.srcpos(), line)
+ }
if p.defineVar != nil {
p.processDefine(line)
if p.err != nil {
@@ -626,7 +628,9 @@
if len(cline) == 0 {
return
}
- logf("concatline:%q", cline)
+ if LogFlag {
+ logf("concatline:%q", cline)
+ }
var dline []byte
cline, _ = removeComment(cline)
dline = append(dline, cline...)
@@ -634,17 +638,23 @@
if len(dline) == 0 {
return
}
- logf("directive?: %q", dline)
+ if LogFlag {
+ logf("directive?: %q", dline)
+ }
if p.handleDirective(dline, makeDirectives) {
return
}
- logf("rule or assign?: %q", line)
+ if LogFlag {
+ logf("rule or assign?: %q", line)
+ }
p.handleRuleOrAssign(line)
}
func (p *parser) processDefine(line []byte) {
line = concatline(line)
- logf("concatline:%q", line)
+ if LogFlag {
+ logf("concatline:%q", line)
+ }
if !p.isEndef(line) {
if p.inDef != nil {
p.inDef = append(p.inDef, '\n')
diff --git a/pathutil.go b/pathutil.go
index f1c89ee..7dd3df1 100644
--- a/pathutil.go
+++ b/pathutil.go
@@ -495,11 +495,8 @@
func (c *androidFindCacheT) findleaves(w evalWriter, dir, name string, prunes []string, mindepth int) bool {
var found []string
var dirs []string
- topdir := filepath.Clean(dir)
+ dir = filepath.Clean(dir)
topdepth := strings.Count(dir, "/")
- if topdir == "." {
- topdepth++
- }
dirs = append(dirs, dir)
for len(dirs) > 0 {
dir = filepath.Clean(dirs[0]) + "/"
diff --git a/strutil.go b/strutil.go
index c20ab83..6431eb9 100644
--- a/strutil.go
+++ b/strutil.go
@@ -387,6 +387,9 @@
continue
}
if i+1 == len(line) {
+ if line[i-1] != '\\' {
+ line = line[:i]
+ }
break
}
if line[i+1] == '\n' {
diff --git a/strutil_test.go b/strutil_test.go
index 2c798db..56bfe87 100644
--- a/strutil_test.go
+++ b/strutil_test.go
@@ -236,6 +236,14 @@
in: "foo \\\n \\\n\t bar",
want: "foo bar",
},
+ {
+ in: `foo \`,
+ want: `foo `,
+ },
+ {
+ in: `foo \\`,
+ want: `foo \\`,
+ },
} {
got := string(concatline([]byte(tc.in)))
if got != tc.want {