diff options
author | Julien Stephan <jstephan@baylibre.com> | 2023-12-05 15:56:32 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-12-06 22:55:49 +0000 |
commit | 29dc0d73154f60635da740f9785f02740816a2fa (patch) | |
tree | 76bccf0e05cb6b2d933db18b96d581f44f60e4f8 /scripts/lib/recipetool/append.py | |
parent | 165626f7b97d905835337bdde9e30fd54d15cc08 (diff) | |
download | poky-29dc0d73154f60635da740f9785f02740816a2fa.tar.gz |
recipetool: appendsrcfile(s): use params instead of extraline
appendsrc function relies on oe.recipeutils.bbappend_recipe to
copy files and add the corresponding entries in SRC_URI.
Currently, appendsrc function build itself the new SRC_URI entry to add the
correct subdir param, and gives it using the extralines parameter.
This has 2 drawbacks:
- oe.recipeutils.bbappend_recipe can already do this if we specify the
correct params, so we have duplicate code
- the duplicated code is not fully functional: for example, it doesn't
take into account the -m/--machine parameter
So fix this by not using extralines but give correctly formatted params.
Also remove the check for already existing entries as
oe.recipeutils.bbappend_recipe already implement it
The new bbappend file now have the SRC_URI entry after the
FILESEXTRAPATHS so fix the selftest.
Update test_recipetool_appendsrcfile_existing_in_src_uri_diff_params
test because recipetool appendsrcfiles used to not add new src_uri entry
if the entry already exist even with different parameters while
oe.recipeutils.bbappend_recipe adds it if parameters are different (and
remove the old entry)
(From OE-Core rev: cd5de8d53849a6f3bb6f82e45fb301e39892c789)
Signed-off-by: Julien Stephan <jstephan@baylibre.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/recipetool/append.py')
-rw-r--r-- | scripts/lib/recipetool/append.py | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/scripts/lib/recipetool/append.py b/scripts/lib/recipetool/append.py index 58512e9e4b..fc3cc4a0b7 100644 --- a/scripts/lib/recipetool/append.py +++ b/scripts/lib/recipetool/append.py | |||
@@ -300,7 +300,9 @@ def appendfile(args): | |||
300 | if st.st_mode & stat.S_IXUSR: | 300 | if st.st_mode & stat.S_IXUSR: |
301 | perms = '0755' | 301 | perms = '0755' |
302 | install = {args.newfile: (args.targetpath, perms)} | 302 | install = {args.newfile: (args.targetpath, perms)} |
303 | oe.recipeutils.bbappend_recipe(rd, args.destlayer, {args.newfile: {'path' : sourcepath}}, install, wildcardver=args.wildcard_version, machine=args.machine) | 303 | if sourcepath: |
304 | sourcepath = os.path.basename(sourcepath) | ||
305 | oe.recipeutils.bbappend_recipe(rd, args.destlayer, {args.newfile: {'newname' : sourcepath}}, install, wildcardver=args.wildcard_version, machine=args.machine) | ||
304 | tinfoil.modified_files() | 306 | tinfoil.modified_files() |
305 | return 0 | 307 | return 0 |
306 | else: | 308 | else: |
@@ -329,6 +331,7 @@ def appendsrc(args, files, rd, extralines=None): | |||
329 | 331 | ||
330 | copyfiles = {} | 332 | copyfiles = {} |
331 | extralines = extralines or [] | 333 | extralines = extralines or [] |
334 | params = [] | ||
332 | for newfile, srcfile in files.items(): | 335 | for newfile, srcfile in files.items(): |
333 | src_destdir = os.path.dirname(srcfile) | 336 | src_destdir = os.path.dirname(srcfile) |
334 | if not args.use_workdir: | 337 | if not args.use_workdir: |
@@ -339,22 +342,12 @@ def appendsrc(args, files, rd, extralines=None): | |||
339 | src_destdir = os.path.join(os.path.relpath(srcdir, workdir), src_destdir) | 342 | src_destdir = os.path.join(os.path.relpath(srcdir, workdir), src_destdir) |
340 | src_destdir = os.path.normpath(src_destdir) | 343 | src_destdir = os.path.normpath(src_destdir) |
341 | 344 | ||
342 | source_uri = 'file://{0}'.format(os.path.basename(srcfile)) | ||
343 | if src_destdir and src_destdir != '.': | 345 | if src_destdir and src_destdir != '.': |
344 | source_uri += ';subdir={0}'.format(src_destdir) | 346 | params.append({'subdir': src_destdir}) |
345 | |||
346 | simple = bb.fetch.URI(source_uri) | ||
347 | simple.params = {} | ||
348 | simple_str = str(simple) | ||
349 | if simple_str in simplified: | ||
350 | existing = simplified[simple_str] | ||
351 | if source_uri != existing: | ||
352 | logger.warning('{0!r} is already in SRC_URI, with different parameters: {1!r}, not adding'.format(source_uri, existing)) | ||
353 | else: | ||
354 | logger.warning('{0!r} is already in SRC_URI, not adding'.format(source_uri)) | ||
355 | else: | 347 | else: |
356 | extralines.append('SRC_URI += {0}'.format(source_uri)) | 348 | params.append({}) |
357 | copyfiles[newfile] = {'path' : srcfile} | 349 | |
350 | copyfiles[newfile] = {'newname' : os.path.basename(srcfile)} | ||
358 | 351 | ||
359 | dry_run_output = None | 352 | dry_run_output = None |
360 | dry_run_outdir = None | 353 | dry_run_outdir = None |
@@ -363,7 +356,8 @@ def appendsrc(args, files, rd, extralines=None): | |||
363 | dry_run_output = tempfile.TemporaryDirectory(prefix='devtool') | 356 | dry_run_output = tempfile.TemporaryDirectory(prefix='devtool') |
364 | dry_run_outdir = dry_run_output.name | 357 | dry_run_outdir = dry_run_output.name |
365 | 358 | ||
366 | appendfile, _ = oe.recipeutils.bbappend_recipe(rd, args.destlayer, copyfiles, None, wildcardver=args.wildcard_version, machine=args.machine, extralines=extralines, redirect_output=dry_run_outdir) | 359 | appendfile, _ = oe.recipeutils.bbappend_recipe(rd, args.destlayer, copyfiles, None, wildcardver=args.wildcard_version, machine=args.machine, extralines=extralines, params=params, |
360 | redirect_output=dry_run_outdir) | ||
367 | if args.dry_run: | 361 | if args.dry_run: |
368 | output = '' | 362 | output = '' |
369 | appendfilename = os.path.basename(appendfile) | 363 | appendfilename = os.path.basename(appendfile) |