On Wed, 2023-09-27 at 18:50 +0200, Julien Stephan wrote:
> [YOCTO #15162]
>
> When recipes such as bzip2 have several sources in SRC_URI, all the
> sources are correctly extracted into devtool temporary workdir, but
> currently, we only get back the primary source and all files declared
> using "files://", then the devtool temporary workdir is deleted
>
> Fix this by moving all remaining files from devtool temporary workdir
> into actual WORKDIR (except "source-date-epoch", "recipe-sysroot",
> and "recipe-sysroot-native") before deleting it
>
> Here is the stack trace from devtool modify/build bzip2:
>
> NOTE: bzip2: compiling from external source tree
> <...>/build/workspace/sources/bzip2
> ERROR: bzip2-1.0.8-r0 do_install_ptest_base:
> ExecutionError('<...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/temp/run.do_install_ptest_base.3368',
> 1, None, None)
> ERROR: Logfile of failure stored in:
> <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/temp/log.do_install_ptest_base.3368
> Log data follows:
> > DEBUG: Executing shell function do_install_ptest_base
> > NOTE: make -j 16
> > DESTDIR=<...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/image/usr/lib/bzip2/ptest
> > install-ptest
> > sed -n '/^runtest:/,/^install-ptest:/{/^install-ptest:/!p}' \
> > ../../../../../../workspace/sources/bzip2/Makefile.am >
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/image/usr/lib/bzip2/ptest/Makefile
> > cp ../../../../../../workspace/sources/bzip2/sample1.ref
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/image/usr/lib/bzip2/ptest/
> > cp ../../../../../../workspace/sources/bzip2/sample2.ref
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/image/usr/lib/bzip2/ptest/
> > cp ../../../../../../workspace/sources/bzip2/sample3.ref
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/image/usr/lib/bzip2/ptest/
> > cp ../../../../../../workspace/sources/bzip2/sample1.bz2
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/image/usr/lib/bzip2/ptest/
> > cp ../../../../../../workspace/sources/bzip2/sample2.bz2
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/image/usr/lib/bzip2/ptest/
> > cp ../../../../../../workspace/sources/bzip2/sample3.bz2
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/image/usr/lib/bzip2/ptest/
> > ln -s /usr/bin/bzip2
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/image/usr/lib/bzip2/ptest/bzip2
> > cp: cannot stat
> > '<...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/git/commons-compress':
> > No such file or directory
> > WARNING:
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/temp/run.do_install_ptest_base.3368:189
> > exit 1 from 'cp -r <...>/build/tmp/work/core2-64-poky-linux/bzip2/
> 1.0.8/git/commons-compress
> <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/image/usr/lib/bzip2/ptest/bzip2-tests/commons-compress'
> > WARNING: Backtrace (BB generated script):
> > #1: do_install_ptest,
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/temp/run.do_install_ptest_base.3368,
> > line 189
> > #2: do_install_ptest_base,
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/temp/run.do_install_ptest_base.3368,
> > line 158
> > #3: main,
> > <...>/build/tmp/work/core2-64-poky-linux/bzip2/1.0.8/temp/run.do_install_ptest_base.3368,
> > line 226
> ERROR: Task
> (<...>/poky/meta/recipes-extended/bzip2/bzip2_1.0.8.bb:do_install_ptest_base)
> failed with exit code '1'
> NOTE: Tasks Summary: Attempted 776 tasks of which 765 didn't need to be rerun
> and 1 failed.
>
> Summary: 1 task failed:
> <...>/poky/meta/recipes-extended/bzip2/bzip2_1.0.8.bb:do_install_ptest_base
>
> Signed-off-by: Julien Stephan <[email protected]>
> ---
> scripts/lib/devtool/standard.py | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
> index d53fb810071..6c8ad7a6c8c 100644
> --- a/scripts/lib/devtool/standard.py
> +++ b/scripts/lib/devtool/standard.py
> @@ -684,6 +684,14 @@ def _extract_source(srctree, keep_temp, devbranch, sync,
> config, basepath, works
> shutil.move(srcsubdir, srctree)
> symlink_oelocal_files_srctree(d,srctree)
>
> + # In case SRC_URI contains multiple sources
> + # they are extracted into the devtool temporary workdir
> + # We need to move them into WORKDIR, otherwise they will be lost
> + for path in os.listdir(os.path.join(tempdir, 'workdir')):
> + if not path in ["source-date-epoch", "recipe-sysroot",
> "recipe-sysroot-native"]:
> + workdir = d.getVar('WORKDIR')
> + shutil.move(os.path.join(tempdir, 'workdir', path),
> workdir)
> +
> if is_kernel_yocto:
> logger.info('Copying kernel config to srctree')
> shutil.copy2(os.path.join(tempdir, '.config'), srctree)
Looks like a good start although I worry a bit about the hardcoded list
of exceptions.
Is it possible to add a test case to the devtool testsuite so this
can't regress in future?
Thanks,
Richard
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#188342):
https://lists.openembedded.org/g/openembedded-core/message/188342
Mute This Topic: https://lists.openembedded.org/mt/101621289/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-