Hi Grygorii,
On 04/11/2019 15:09, Grygorii Tertychnyi (gtertych) wrote:
Andrei,
From: Andrei Gherzan <and...@gherzan.ro>
Sent: Friday, November 1, 2019 13:28
To: Grygorii Tertychnyi (gtertych); openembedded-core@lists.openembedded.org
Cc: xe-linux-external(mailer list)
Subject: Re: [OE-core] [PATCH] archiver: avoid empty incfile in ar_recipe
do_ar_recipe fails on perf recipe on line:
include ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'perf-perl.inc', '',
d)}
1. "${...}" part expands into empty string
2. bb.utils.which() takes empty string and returns first directory name from
bbpath
This doesn't sound sane. If the include directive has no argument,
incfile should end up None. That's what the code "assumes" at this
I agree.
point. I would fix it either at the regex expression level or
stripping the matched string. I reckon the former makes more sense
(.*).
Not sure I understand. Archiver class does not interpret "include" directive.
It just parses text files. The regular expression looks correct:
These lines:
440 elif include_re.match(line):
441 incfile = include_re.match(line).group(1)
put "${...}" _string_ into "incfile" variable. So, "incfile" is not None at
"this stage.
"${...}" it's already expanded to a white-space. So in that case it
matches "include ".
Then,
443 incfile = d.expand(incfile)
Now "incfile" is empty and nobody checks it.
incfile is not empty. It's actually a string containing one white-space.
444 incfile = bb.utils.which(bbpath, incfile)
Now "incfile" is set to first directory name in BBPATH (wrong behavour?)
445 if incfile:
446 shutil.copy(incfile, outdir)
Exception here: "incfile" is directory, not a file.
The include regex is the following:
include_re = re.compile( r"include\s+(.+)" )
The issue is that when this is matched on a string suffixed with only
spaces, it will match the last space as group(1). This is because ".+"
forces to match the last white-space. Changing that to ".*" will make
the group(1) be an empty string and later the if will evaluate False.
--
Andrei Gherzan
--
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core