| Submitter | Robert Yang |
|---|---|
| Date | Feb. 4, 2013, 9:27 a.m. |
| Message ID | <9d21459877d1d94bdaff1cbe8ca4dd84f5f692fd.1359948771.git.liezhi.yang@windriver.com> |
| Download | mbox | patch |
| Permalink | /patch/43949/ |
| State | New |
| Headers | show |
Comments
On Mon, Feb 4, 2013 at 2:27 AM, Robert Yang <liezhi.yang@windriver.com>wrote: > The bb.process.run() will return one tuple, e.g: > > p4file = ('strA\nStrB\nstrC\n'), then there will be an iteration on p4file: > > for i in p4file: > [snip] > > The i will be 's t r A ...', this is incorrect. use: > > p4file = p4file.splitlines() > > will fix the problem. > > [YOCTO #3619] > > Signed-off-by: Robert Yang <liezhi.yang@windriver.com> > --- > bitbake/lib/bb/fetch2/perforce.py | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/bitbake/lib/bb/fetch2/perforce.py > b/bitbake/lib/bb/fetch2/perforce.py > index df3a3a3..86ec9ba 100644 > --- a/bitbake/lib/bb/fetch2/perforce.py > +++ b/bitbake/lib/bb/fetch2/perforce.py > @@ -170,7 +170,7 @@ class Perforce(FetchMethod): > logger.info("Fetch " + loc) > logger.info("%s%s files %s", p4cmd, p4opt, depot) > p4file, errors = bb.process.run("%s%s files %s" % (p4cmd, p4opt, > depot)) > - p4file = p4file.strip() > + p4file = p4file.splitlines() > Note that splitlines doesn't chop off the trailing newlines from the individual strings. It *probably* wont cause an issue in this case due to how it's passed to the shell in the subsequent subprocess call, but from a correctness standpoint, I'd suggest changing this to something like p4files = [f.rstrip() for f in p4file.splitlines], or doing an rstrip on the individual files in the later iteration.
Patch
diff --git a/bitbake/lib/bb/fetch2/perforce.py b/bitbake/lib/bb/fetch2/perforce.py index df3a3a3..86ec9ba 100644 --- a/bitbake/lib/bb/fetch2/perforce.py +++ b/bitbake/lib/bb/fetch2/perforce.py @@ -170,7 +170,7 @@ class Perforce(FetchMethod): logger.info("Fetch " + loc) logger.info("%s%s files %s", p4cmd, p4opt, depot) p4file, errors = bb.process.run("%s%s files %s" % (p4cmd, p4opt, depot)) - p4file = p4file.strip() + p4file = p4file.splitlines() if not p4file: raise FetchError("Fetch: unable to get the P4 files from %s" % depot, loc)
The bb.process.run() will return one tuple, e.g: p4file = ('strA\nStrB\nstrC\n'), then there will be an iteration on p4file: for i in p4file: [snip] The i will be 's t r A ...', this is incorrect. use: p4file = p4file.splitlines() will fix the problem. [YOCTO #3619] Signed-off-by: Robert Yang <liezhi.yang@windriver.com> --- bitbake/lib/bb/fetch2/perforce.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)