On Fri, 2022-06-10 at 11:43 +0100, Richard Purdie via lists.openembedded.org wrote: > On Thu, 2022-06-09 at 17:39 +0100, Jose Quaresma wrote: > > The archiver doesn't support using multiconfig sharing the same TMPDIR. > > When in the multiconfig and using the same TMPDIR: the two machines can make > > the same copy at the same time to the same destination, which will not work. > > > > This issiue can be replicated with meta-ti layer: > > > # use a multiconfig machine > > > MACHINE = "am64xx-evm" > > > # archive sources for target recipes in conf/local.conf > > > INHERIT += "archiver" > > > COPYLEFT_RECIPE_TYPES = "target" > > > ARCHIVER_MODE[src] = "original" > > > ARCHIVER_MODE[diff] = "1" > > > # and run bitbake with: > > > bitbake mc:k3r5:gcc-source-11.2.0 gcc-source-11.2.0 -c > > > do_unpack_and_patch -f > > > > I went digging. If I enable this as above (using master) and run > > $ bitbake mc:k3r5:gcc-source-12.1.0 gcc-source-12.1.0 -c do_unpack_and_patch > -S none > > then: > > $ bitbake-diffsigs > tmp/stamps/work-shared/gcc-12.1.0-r0.do_unpack_and_patch.sigdata.* > NOTE: Starting bitbake server... > Task dependencies changed from: > ['ABIEXTENSION', 'ARCHIVER_MODE[diff-exclude]', 'ARCHIVER_MODE[diff]', > 'ARCHIVER_MODE[src]', 'ARCHIVER_OUTDIR', 'ARCHIVER_TOPDIR', > 'ARCHIVER_WORKDIR', 'B', 'BASEURI', 'EXTENDPE', 'GNU_MIRROR', 'HOST_ARCH', > 'HOST_OS', 'HOST_SYS', 'HOST_VENDOR', 'INSANE_SKIP', 'LIBCEXTENSION', > 'PATCHTOOL', 'PE', 'PF', 'PN', 'PR', 'PV', 'RECIPE_SYSROOT_NATIVE', 'S', > 'SDE_DIR', 'SDE_FILE', 'SOURCEDIR', 'SRC_URI', 'SRC_URI[sha256sum]', > 'STAGING_DIR_NATIVE', 'T', 'TARGET_ARCH', 'TARGET_OS', 'TARGET_SYS', > 'TARGET_VENDOR', 'TUNE_ARCH', 'UNPACK_DIR', 'base_do_unpack', > 'base_do_unpack[cleandirs]', 'create_diff_gz', > 'create_source_date_epoch_stamp', 'do_patch', 'do_qa_patch', 'do_qa_unpack', > 'do_unpack', 'do_unpack[cleandirs]', 'is_work_shared', 'patch_do_patch', > 'src_patches', 'unpack_check_src_uri'] > to: > ['ABIEXTENSION', 'ABIEXTENSION_32', 'ABIEXTENSION_64', > 'ARCHIVER_MODE[diff-exclude]', 'ARCHIVER_MODE[diff]', 'ARCHIVER_MODE[src]', > 'ARCHIVER_OUTDIR', 'ARCHIVER_TOPDIR', 'ARCHIVER_WORKDIR', > 'ARMPKGSFX_ENDIAN_64', 'B', 'BASEURI', 'EXTENDPE', 'GNU_MIRROR', 'HOST_ARCH', > 'HOST_OS', 'HOST_SYS', 'HOST_VENDOR', 'INSANE_SKIP', 'LIBCEXTENSION', > 'PATCHTOOL', 'PE', 'PF', 'PN', 'PR', 'PV', 'RECIPE_SYSROOT_NATIVE', 'S', > 'SDE_DIR', 'SDE_FILE', 'SOURCEDIR', 'SRC_URI', 'SRC_URI[sha256sum]', > 'STAGING_DIR_NATIVE', 'T', 'TARGET_ARCH', 'TARGET_OS', 'TARGET_SYS', > 'TARGET_VENDOR', 'TUNE_ARCH', 'TUNE_ARCH_32', 'TUNE_ARCH_64', 'UNPACK_DIR', > 'base_do_unpack', 'base_do_unpack[cleandirs]', 'create_diff_gz', > 'create_source_date_epoch_stamp', 'do_patch', 'do_qa_patch', 'do_qa_unpack', > 'do_unpack', 'do_unpack[cleandirs]', 'is_work_shared', 'patch_do_patch', > 'src_patches', 'unpack_check_src_uri'] > basehash changed from > 005580a7a5a1ab1ff554d0a9e47c2ad4ba932f3fe185d8d349b06c83e5e58b6c to > d7b2e696005a578d5958ef4e73f1fc83e22612a3ae4294fb0540b0fadcb6c50f > List of dependencies for variable ABIEXTENSION changed from 'set()' to > '{'ABIEXTENSION_64', 'ABIEXTENSION_32'}' > List of dependencies for variable TUNE_ARCH changed from 'set()' to > '{'TUNE_ARCH_32', 'TUNE_ARCH_64'}' > Dependency on variable ABIEXTENSION_32 was added > Dependency on variable ABIEXTENSION_64 was added > Dependency on variable ARMPKGSFX_ENDIAN_64 was added > Dependency on variable TUNE_ARCH_32 was added > Dependency on variable TUNE_ARCH_64 was added > Variable ABIEXTENSION value changed: > @@ -1 +1,2 @@ > -eabi > +${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${ABIEXTENSION_64}', > '${ABIEXTENSION_32}', d)} > +TUNE_FEATURES{aarch64} = Set > Variable TUNE_ARCH value changed: > @@ -1,2 +1,2 @@ > -${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'armeb', 'arm', d)} > -TUNE_FEATURES{bigendian} = Unset > +${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '${TUNE_ARCH_64}', > '${TUNE_ARCH_32}', d)} > +TUNE_FEATURES{aarch64} = Set > > this tells us the real issue. The task is changing due to toolchain > issues. These stamps should be the same and aren't and this is the real > issue that needs fixing.
To further follow up, there are two issues: a) the task uses ${B} which for gcc includes HOST_SYS and TARGET_SYS. We can just set that in the gcc-source recipe to B = "${WORKDIR}/build". b) the archiver uses: ARCHIVER_OUTDIR = ${ARCHIVER_TOPDIR}/${TARGET_SYS}/${PF}/ which includes TARGET_SYS and between the two different MACHINE values, this changes from 'arm-poky-linux-gnueabi' to 'aarch64-poky-linux'. This leads to the task running twice, once for each multiconfig. The first is easily solved as I mentioned. The question in the second case is whether the task should run twice and where the output should go since it is common to both builds. I do wonder if the archiver shouldn't set: ARCHIVER_OUTPUT:pn-gcc-source = "${ARCHIVER_TOPDIR}/allarch/${PF}" Cheers, Richard
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#166797): https://lists.openembedded.org/g/openembedded-core/message/166797 Mute This Topic: https://lists.openembedded.org/mt/91650171/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-