Message ID | 20250103084525.1990937-1-peng.zhang1.cn@windriver.com |
---|---|
State | Under Review |
Headers | show |
Series | [meta-oe] lapack: fix TMPDIR reference in do_package_qa | expand |
Thank you for looking into this. I've tried your change and with ptest in DISTRO_FEATURES I'm still seeing quite a few errors: NOTE: recipe lapack-3.12.0-r0: task do_package_qa: Started ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xlintstrfs in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xlintstrfd in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat3c in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat2d in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xlintsts in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xlintstrfz in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xlintstd in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat3d in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xlintstc in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xlintstrfc in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat3s in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat1z in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat3z in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat2c in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xlintstz in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xeigtstd in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xeigtsts in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xeigtstc in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat2z in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat1s in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xeigtstz in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xlintstds in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat1d in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat1c in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xlintstzc in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File /usr/lib/lapack/ptest/bin/xblat2s in package lapack-ptest contains reference to TMPDIR [buildpaths] ERROR: lapack-3.12.0-r0 do_package_qa: Fatal QA errors were found, failing task. ERROR: Logfile of failure stored in: /OE/build/oe-core/tmp/work/core2-64-oe-linux/lapack/3.12.0/temp/log.do_package_qa.3908379 Can you please check with ptest enabled? On Fri, Jan 3, 2025 at 9:45 AM Zhang, Peng (Paul) (CN) via lists.openembedded.org <peng.zhang1.cn=windriver.com@lists.openembedded.org> wrote: > > From: Zhang Peng <peng.zhang1.cn@windriver.com> > > When building the `lapack` package, the following QA error occurs: > "File /usr/lib64/libblas.so.3.12.0 in package lapack contains reference to TMPDIR [buildpaths]" > > The issue arises because the `xerbla.o` object file embeds the absolute host path of `xerbla.f`. > This occurs during compilation, where the build command in `build.make` (generated by CMake) specifies: > `gfortran -c <absolute path>/xerbla.f -o`. > > As a result, the absolute path is included in `xerbla.o`. Unfortunately, `gfortran` does not support > flags like `-fdebug-prefix-map` or `-ffile-prefix-map` to remove such paths. > > To resolve this, the fix involves replacing the absolute path of `xerbla.f` in the generated > `build.make` file with a relative path before the compilation step. This ensures that the > resulting `xerbla.o` does not contain any references to TMPDIR, passing the `do_package_qa` check. > > Signed-off-by: Zhang Peng <peng.zhang1.cn@windriver.com> > --- > .../recipes-devtools/lapack/lapack_3.12.0.bb | 23 +++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb b/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb > index fef9d3a80e..ef5726eeaa 100644 > --- a/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb > +++ b/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb > @@ -33,6 +33,29 @@ OECMAKE_GENERATOR = "Unix Makefiles" > inherit cmake pkgconfig ptest > EXCLUDE_FROM_WORLD = "1" > > +# The `xerbla.o` file contains an absolute path in `xerbla.f.o`, but the options > +# `-fdebug-prefix-map` and `-ffile-prefix-map` cannot be used because gfortran does not support them. > +# To address this issue, we manually replace the absolute path with a relative path > +# in the generated `build.make` file. > +# > +# An issue has been reported: https://github.com/Reference-LAPACK/lapack/issues/1087, > +# requesting a fix in the source code. > +# > +# This workaround resolves the TMPDIR [buildpaths] issue by converting the absolute path > +# of `xerbla.f` to a relative path. The steps are as follows: > +# > +# 1. Locate all `build.make` files after the `do_configure` step is completed. > +# 2. Compute the relative path for `xerbla.f` based on the current build directory. > +# 3. Replace the absolute path with the calculated relative path in the `build.make` files > + > +do_configure:append(){ > + for file in `find ${B} -name build.make`; do > + sed -i -e "s#\(.*-c \).*\(/xerbla\.f \)#\1$(grep '\-c .*xerbla\.f' $file | awk -F'cd ' '{print $2}'| \ > + awk '{src=$1; sub(/.*-c /, ""); sub(/xerbla\.f.*/, ""); obj=$0; print src, obj}' | \ > + while read src obj; do echo "$(realpath --relative-to="$src" "$obj")"; done)\2#g" $file > + done > +} > + > do_install_ptest () { > rsync -a ${B}/TESTING ${D}${PTEST_PATH} \ > --exclude CMakeFiles \ > -- > 2.34.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#114623): https://lists.openembedded.org/g/openembedded-devel/message/114623 > Mute This Topic: https://lists.openembedded.org/mt/110403421/3617156 > Group Owner: openembedded-devel+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [martin.jansa@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
On 1/6/25 20:43, Martin Jansa wrote: > CAUTION: This email comes from a non Wind River email account! > Do not click links or open attachments unless you recognize the sender and know the content is safe. > > Thank you for looking into this. > > I've tried your change and with ptest in DISTRO_FEATURES I'm still > seeing quite a few errors: > > NOTE: recipe lapack-3.12.0-r0: task do_package_qa: Started > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xlintstrfs in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xlintstrfd in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat3c in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat2d in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xlintsts in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xlintstrfz in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xlintstd in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat3d in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xlintstc in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xlintstrfc in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat3s in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat1z in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat3z in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat2c in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xlintstz in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xeigtstd in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xeigtsts in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xeigtstc in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat2z in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat1s in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xeigtstz in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xlintstds in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat1d in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat1c in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xlintstzc in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: QA Issue: File > /usr/lib/lapack/ptest/bin/xblat2s in package lapack-ptest contains > reference to TMPDIR [buildpaths] > ERROR: lapack-3.12.0-r0 do_package_qa: Fatal QA errors were found, failing task. > ERROR: Logfile of failure stored in: > /OE/build/oe-core/tmp/work/core2-64-oe-linux/lapack/3.12.0/temp/log.do_package_qa.3908379 > > Can you please check with ptest enabled? I had not focused on the ptest enable before. After checking with ptest enabled, I found that a total of 26 files contain the TMPDIR issue, as shown in your log. Regarding the patch, I consider it a workaround rather than a proper solution. I also raised the issue here [1], but there hasn’t been a fix yet. I would appreciate help from OE experts to see if there are any other possible solutions to address this. I’ve also made a request in [2]. For the ptest issue, I could fix it using the same method, but it would be much rougher as more files need to be handled. [1] https://github.com/Reference-LAPACK/lapack/issues/1087 [2] https://lists.openembedded.org/g/openembedded-devel/message/114624 Thanks very much //Peng > > On Fri, Jan 3, 2025 at 9:45 AM Zhang, Peng (Paul) (CN) via > lists.openembedded.org > <peng.zhang1.cn=windriver.com@lists.openembedded.org> wrote: >> From: Zhang Peng<peng.zhang1.cn@windriver.com> >> >> When building the `lapack` package, the following QA error occurs: >> "File /usr/lib64/libblas.so.3.12.0 in package lapack contains reference to TMPDIR [buildpaths]" >> >> The issue arises because the `xerbla.o` object file embeds the absolute host path of `xerbla.f`. >> This occurs during compilation, where the build command in `build.make` (generated by CMake) specifies: >> `gfortran -c <absolute path>/xerbla.f -o`. >> >> As a result, the absolute path is included in `xerbla.o`. Unfortunately, `gfortran` does not support >> flags like `-fdebug-prefix-map` or `-ffile-prefix-map` to remove such paths. >> >> To resolve this, the fix involves replacing the absolute path of `xerbla.f` in the generated >> `build.make` file with a relative path before the compilation step. This ensures that the >> resulting `xerbla.o` does not contain any references to TMPDIR, passing the `do_package_qa` check. >> >> Signed-off-by: Zhang Peng<peng.zhang1.cn@windriver.com> >> --- >> .../recipes-devtools/lapack/lapack_3.12.0.bb | 23 +++++++++++++++++++ >> 1 file changed, 23 insertions(+) >> >> diff --git a/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb b/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb >> index fef9d3a80e..ef5726eeaa 100644 >> --- a/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb >> +++ b/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb >> @@ -33,6 +33,29 @@ OECMAKE_GENERATOR = "Unix Makefiles" >> inherit cmake pkgconfig ptest >> EXCLUDE_FROM_WORLD = "1" >> >> +# The `xerbla.o` file contains an absolute path in `xerbla.f.o`, but the options >> +# `-fdebug-prefix-map` and `-ffile-prefix-map` cannot be used because gfortran does not support them. >> +# To address this issue, we manually replace the absolute path with a relative path >> +# in the generated `build.make` file. >> +# >> +# An issue has been reported:https://github.com/Reference-LAPACK/lapack/issues/1087, >> +# requesting a fix in the source code. >> +# >> +# This workaround resolves the TMPDIR [buildpaths] issue by converting the absolute path >> +# of `xerbla.f` to a relative path. The steps are as follows: >> +# >> +# 1. Locate all `build.make` files after the `do_configure` step is completed. >> +# 2. Compute the relative path for `xerbla.f` based on the current build directory. >> +# 3. Replace the absolute path with the calculated relative path in the `build.make` files >> + >> +do_configure:append(){ >> + for file in `find ${B} -name build.make`; do >> + sed -i -e "s#\(.*-c \).*\(/xerbla\.f \)#\1$(grep '\-c .*xerbla\.f' $file | awk -F'cd ' '{print $2}'| \ >> + awk '{src=$1; sub(/.*-c /, ""); sub(/xerbla\.f.*/, ""); obj=$0; print src, obj}' | \ >> + while read src obj; do echo "$(realpath --relative-to="$src" "$obj")"; done)\2#g" $file >> + done >> +} >> + >> do_install_ptest () { >> rsync -a ${B}/TESTING ${D}${PTEST_PATH} \ >> --exclude CMakeFiles \ >> -- >> 2.34.1 >> >> >> -=-=-=-=-=-=-=-=-=-=-=- >> Links: You receive all messages sent to this group. >> View/Reply Online (#114623):https://lists.openembedded.org/g/openembedded-devel/message/114623 >> Mute This Topic:https://lists.openembedded.org/mt/110403421/3617156 >> Group Owner:openembedded-devel+owner@lists.openembedded.org >> Unsubscribe:https://lists.openembedded.org/g/openembedded-devel/unsub [martin.jansa@gmail.com] >> -=-=-=-=-=-=-=-=-=-=-=- >>
diff --git a/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb b/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb index fef9d3a80e..ef5726eeaa 100644 --- a/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb +++ b/meta-oe/recipes-devtools/lapack/lapack_3.12.0.bb @@ -33,6 +33,29 @@ OECMAKE_GENERATOR = "Unix Makefiles" inherit cmake pkgconfig ptest EXCLUDE_FROM_WORLD = "1" +# The `xerbla.o` file contains an absolute path in `xerbla.f.o`, but the options +# `-fdebug-prefix-map` and `-ffile-prefix-map` cannot be used because gfortran does not support them. +# To address this issue, we manually replace the absolute path with a relative path +# in the generated `build.make` file. +# +# An issue has been reported: https://github.com/Reference-LAPACK/lapack/issues/1087, +# requesting a fix in the source code. +# +# This workaround resolves the TMPDIR [buildpaths] issue by converting the absolute path +# of `xerbla.f` to a relative path. The steps are as follows: +# +# 1. Locate all `build.make` files after the `do_configure` step is completed. +# 2. Compute the relative path for `xerbla.f` based on the current build directory. +# 3. Replace the absolute path with the calculated relative path in the `build.make` files + +do_configure:append(){ + for file in `find ${B} -name build.make`; do + sed -i -e "s#\(.*-c \).*\(/xerbla\.f \)#\1$(grep '\-c .*xerbla\.f' $file | awk -F'cd ' '{print $2}'| \ + awk '{src=$1; sub(/.*-c /, ""); sub(/xerbla\.f.*/, ""); obj=$0; print src, obj}' | \ + while read src obj; do echo "$(realpath --relative-to="$src" "$obj")"; done)\2#g" $file + done +} + do_install_ptest () { rsync -a ${B}/TESTING ${D}${PTEST_PATH} \ --exclude CMakeFiles \