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 | |
| 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')
| -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) |
