[PATCH v5 1/8] binman: add support for skipping file concatenation for mkimage
Quentin Schulz
quentin.schulz at theobroma-systems.com
Tue Aug 30 19:53:53 CEST 2022
Hi Simon,
On 8/30/22 17:56, Simon Glass wrote:
> Hi Quentin,
>
> On Tue, 30 Aug 2022 at 03:57, Quentin Schulz
> <quentin.schulz at theobroma-systems.com> wrote:
>>
>> Hi Simon,
>>
>> On 8/27/22 02:21, Simon Glass wrote:
>>> Hi Quentin,
>>>
>>> On Fri, 26 Aug 2022 at 09:37, Quentin Schulz <foss+uboot at 0leil.net> wrote:
>>>>
>>>> From: Quentin Schulz <quentin.schulz at theobroma-systems.com>
>>>>
>>>> Some image types handled by mkimage require the datafiles to be passed
>>>> independently (-d data1:data2) for specific handling of each. A
>>>> concatenation of datafiles prior to passing them to mkimage wouldn't
>>>> work.
>>>>
>>>> That is the case for rkspi for example which requires page alignment
>>>> and only writing 2KB every 4KB.
>>>>
>>>> This adds the ability to tell binman to pass the datafiles without
>>>> prior concatenation to mkimage, by adding the multiple-data-files
>>>> boolean property to the mkimage node.
>>>>
>>>> Cc: Quentin Schulz <foss+uboot at 0leil.net>
>>>> Reviewed-by: Simon Glass <sjg at chromium.org>
>>>> Signed-off-by: Quentin Schulz <quentin.schulz at theobroma-systems.com>
>>>> ---
>>>>
>>>> v5:
>>>> - changed to use full path from input dir with tools.get_input_filename
>>>> to make it possible to run the unit tests,
>>>> - added unit test,
>>>>
>>>>
>>>> tools/binman/entries.rst | 22 ++++++++++
>>>> tools/binman/etype/mkimage.py | 41 +++++++++++++++++--
>>>> tools/binman/ftest.py | 16 ++++++++
>>>
>>> Please put the new test at the end.
>>>
>>>> .../test/241_mkimage_multiple_data_files.dts | 21 ++++++++++
>>>> 4 files changed, 96 insertions(+), 4 deletions(-)
>>>> create mode 100644 tools/binman/test/241_mkimage_multiple_data_files.dts
>>>
>>> This is pretty close but it still missing a line of test coverage.
>>> Please try 'binman test -T' to see it. I'd also prefer a shorter
>>
>> This does not work on Fedora.
>> 1) there's no python3-coverage binary available,
>> 2) After replacing python3-coverage with just coverage, the tests are
>> stuck and never finish, (I have seen the patches to use COVERAGE
>> environment variable so I guess the required changes might be tackled
>> soon in master),
>>
>> Any tip on how to identify which test is stuck except going through them
>> one by one?
>
> One way is to add comment blocks '''...''' across the ftest.py file,
> using a binary chop to identify the problem.
>
> Or, since tests are run in series, you could hack test_util to pass
> verbose parameters when it runs the tests - see 'cmd =' in
> run_test_coverage().
>
I just commented out tests and found the following two are failing on my
system:
testCompUtilVersions and testListBintools.
After digging a bit it seems that it is stuck here:
https://source.denx.de/u-boot/u-boot/-/blob/master/tools/patman/command.py#L105
for bzip2.
Furthermore:
bzip2 -V > /dev/null
bzip2 -V > /dev/null 2>&1
both get stuck which I assume is where the issue lies :)
bzip2 --help is just fine BTW.
I tested on a colleague's PC running Ubuntu 22.04.1, it works as
intended. I guess I'll have to check if Fedora or Ubuntu has patches on
top of bzip2 source code that triggers/patches this behavior.
>>
>> python3-coverage is also not available in the container image built from
>> tools/docker/Dockerfile.
>
> does 'python3 -m coverage' work?
>
diff --git a/tools/patman/test_util.py b/tools/patman/test_util.py
index 0f6d1aa902..eaa769a564 100644
--- a/tools/patman/test_util.py
+++ b/tools/patman/test_util.py
@@ -58,11 +58,11 @@ def run_test_coverage(prog, filter_fname,
exclude_list, build_dir, required=None
prefix = ''
if build_dir:
prefix = 'PYTHONPATH=$PYTHONPATH:%s/sandbox_spl/tools ' %
build_dir
- cmd = ('%spython3-coverage run '
+ cmd = ('%spython3 -m coverage run '
'--omit "%s" %s %s %s -P1' % (prefix, ','.join(glob_list),
prog, extra_args or '',
test_cmd))
os.system(cmd)
- stdout = command.output('python3-coverage', 'report')
+ stdout = command.output('python3', '-m', 'coverage', 'report')
lines = stdout.splitlines()
if required:
# Convert '/path/to/name.py' just the module name 'name'
@@ -81,7 +81,7 @@ def run_test_coverage(prog, filter_fname,
exclude_list, build_dir, required=None
print(coverage)
if coverage != '100%':
print(stdout)
- print("To get a report in 'htmlcov/index.html', type:
python3-coverage html")
+ print("To get a report in 'htmlcov/index.html', type: python3
-m coverage html")
print('Coverage error: %s, but should be 100%%' % coverage)
ok = False
if not ok:
works just fine for me.
Michal Suchánek seems to disagree with me on this one, see
https://lore.kernel.org/u-boot/20220830101149.GM28810@kitsune.suse.cz/
> or this:
>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__coverage.readthedocs.io_en_6.3.2_install.html&d=DwIBaQ&c=_sEr5x9kUWhuk4_nFwjJtA&r=LYjLexDn7rXIzVmkNPvw5ymA1XTSqHGq8yBP6m6qZZ4njZguQhZhkI_-172IIy1t&m=AH6ijvL2fp8TDrFjgeja0AVykFkzBjRPDOAfg8m_eKMHJW7RzTVA1wMpGn7qBwOe&s=BLW968ZKOcdPWg0s4-4AlA_rqiJCCCKPjP-Y-Fux6oI&e=
>
>>
>>> filename for the 241 file.
>>>
>>> I've pushed a tree containing a suggested fix (updating this patch). I
>>> can update it when applying if you like, otherwise please send a new
>>> version.
>>>
>>
>> Where did you push the tree?
>
> Sorry I forgot to mention that:
>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_sjg20_u-2Dboot_tree_try-2Drk4&d=DwIBaQ&c=_sEr5x9kUWhuk4_nFwjJtA&r=LYjLexDn7rXIzVmkNPvw5ymA1XTSqHGq8yBP6m6qZZ4njZguQhZhkI_-172IIy1t&m=AH6ijvL2fp8TDrFjgeja0AVykFkzBjRPDOAfg8m_eKMHJW7RzTVA1wMpGn7qBwOe&s=7LOQoSkcQA52SvFgC_aUR4l2MtMWjdVM-t_bCKUetEs&e=
>
I do not understand how you found out coverage was not happy about my
patchset. I have the same percentage reported from your branch or my
local one. What am I missing?
Regarding the content of the changed commits:
testMkimageMultipleNoContent is not testing what is says it does?
It's using multiple-data-files DT property which only impacts -d
parameter of mkimage and the comment for the test is """Test using
mkimage with -n and no data""".
What exactly are you trying to test?
Cheers,
Quentin
More information about the U-Boot
mailing list