diff mbox series

[v3,1/1] gfortran: update runtime dependencies

Message ID 20240616153135.3058410-2-kai.kang@windriver.com
State Accepted, archived
Commit 44fc7aa1468ff042739cc5a91c84ef5c2a09e0a3
Headers show
Series Update for gfortran | expand

Commit Message

Kai June 16, 2024, 3:31 p.m. UTC
From: Kai Kang <kai.kang@windriver.com>

It fails to run both `gcc` and `gfortran` with errors:

| root@qemux86-64:~# x86_64-poky-linux-gcc a.c
| x86_64-poky-linux-gcc: fatal error: cannot execute 'as': posix_spawnp: No such file or directory

then add binutils which provides `as` to RDEPENDS of gcc.

libgfortran-dev provides libgfortran.spec which required by gfortran:

| root@qemux86-64:~# gfortran hello.f95
| gfortran: fatal error: cannot read spec file 'libgfortran.spec': No such file or directory

And gcc provides liblto_plugin.so:

| root@qemux86-64:~# gfortran hello.f95
| gfortran: fatal error: '-fuse-linker-plugin', but liblto_plugin.so not found

Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
 meta/recipes-devtools/gcc/gcc-target.inc | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Comments

Martin Jansa June 19, 2024, 1:24 p.m. UTC | #1
Something seems wrong with this change which was merged today, now with:
MACHINE=qemuarm64
FORTRAN:forcevariable = ",fortran"

I'm seeing:
build/oe-core $ bitbake -g nativesdk-libgfortran
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing PROVIDES 'gcc-cross-x86_64' (but
virtual:nativesdk:/OE/build/oe-core/openembedded-core/meta/recipes-devtools/gcc/libgfortran_14.1.bb
DEPENDS on or otherwise requires it). Close matches:
  gcc-cross-aarch64
...

This might have been broken even before this change, but now it got
included in dependency tree of nativesdk-gcc (as shown in bitbake -g
nativesdk-gcc now failing when host and target arch don't match):

"nativesdk-gcc.do_package_qa" -> "nativesdk-libgfortran.do_packagedata"
nativesdk-gcc.do_package_write_ipk" -> "nativesdk-libgfortran.do_packagedata"

Missing or unbuildable dependency chain was: ['image',
'nativesdk-packagegroup-sdk-host', 'nativesdk-lcov',
'nativesdk-gcov-symlinks', 'nativesdk-libgfortran-dev',
'gcc-cross-x86_64']

I guess the easiest fix would be in:
meta/recipes-devtools/gcc/libgfortran.inc:DEPENDS = "gcc-runtime
gcc-cross-${TARGET_ARCH}"
but I'm not very familiar with fortran (we've enabled it long time ago
to build lapack(blas) for snowboy, but wasn't actively used for couple
years).

Regards,



On Sun, Jun 16, 2024 at 5:32 PM Kai Kang via lists.openembedded.org
<kai.kang=windriver.com@lists.openembedded.org> wrote:
>
> From: Kai Kang <kai.kang@windriver.com>
>
> It fails to run both `gcc` and `gfortran` with errors:
>
> | root@qemux86-64:~# x86_64-poky-linux-gcc a.c
> | x86_64-poky-linux-gcc: fatal error: cannot execute 'as': posix_spawnp: No such file or directory
>
> then add binutils which provides `as` to RDEPENDS of gcc.
>
> libgfortran-dev provides libgfortran.spec which required by gfortran:
>
> | root@qemux86-64:~# gfortran hello.f95
> | gfortran: fatal error: cannot read spec file 'libgfortran.spec': No such file or directory
>
> And gcc provides liblto_plugin.so:
>
> | root@qemux86-64:~# gfortran hello.f95
> | gfortran: fatal error: '-fuse-linker-plugin', but liblto_plugin.so not found
>
> Signed-off-by: Kai Kang <kai.kang@windriver.com>
> ---
>  meta/recipes-devtools/gcc/gcc-target.inc | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc
> index 8e9693b4cb..e9187fc444 100644
> --- a/meta/recipes-devtools/gcc/gcc-target.inc
> +++ b/meta/recipes-devtools/gcc/gcc-target.inc
> @@ -33,7 +33,7 @@ PACKAGES = "\
>      ${PN} ${PN}-plugins ${PN}-symlinks \
>      g++ g++-symlinks \
>      cpp cpp-symlinks \
> -    gfortran gfortran-symlinks \
> +    ${@bb.utils.contains('FORTRAN', ',fortran', 'gfortran gfortran-symlinks', '', d)} \
>      gcov gcov-symlinks \
>      ${PN}-doc \
>      ${PN}-dev \
> @@ -60,7 +60,7 @@ RRECOMMENDS:${PN} += "\
>      libssp \
>      libssp-dev \
>  "
> -RDEPENDS:${PN} += "cpp"
> +RDEPENDS:${PN} += "binutils cpp"
>
>  FILES:${PN}-dev = "\
>      ${gcclibdir}/${TARGET_SYS}/${BINV}/lib*${SOLIBSDEV} \
> @@ -80,10 +80,15 @@ FILES:${PN}-plugins = "\
>  "
>  ALLOW_EMPTY:${PN}-plugins = "1"
>
> +INSANE_SKIP:${MLPREFIX}gfortran += "dev-deps"
>  FILES:gfortran = "\
>      ${bindir}/${TARGET_PREFIX}gfortran \
>      ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951 \
>  "
> +RDEPENDS:gfortran = "\
> +    gcc \
> +    libgfortran-dev \
> +"
>  RRECOMMENDS:gfortran = "\
>      libquadmath \
>      libquadmath-dev \
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#200780): https://lists.openembedded.org/g/openembedded-core/message/200780
> Mute This Topic: https://lists.openembedded.org/mt/106704990/3617156
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [martin.jansa@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Martin Jansa June 19, 2024, 3 p.m. UTC | #2
See https://lists.openembedded.org/g/openembedded-core/message/200915
which allows to me to build nativesdk-gcc again.

I've built nativesdk-libgfortran and libgfortran with the patch, but
haven't used fortran in runtime at all, that's why it's an RFC, there
were also 2 warnings:
WARNING: nativesdk-libgfortran-14.1.0-r0 do_package_qa: QA Issue: File
/opt/.../usr/lib/.debug/libgfortran.so.5.0.0 in package
nativesdk-libgfortran-dbg contains reference to TMPDIR [buildpaths]
WARNING: libgfortran-14.1.0-r0 do_package_qa: QA Issue: File
/usr/lib/.debug/libgfortran.so.5.0.0 in package libgfortran-dbg
contains reference to TMPDIR [buildpaths]
which I guess were already there.

On Wed, Jun 19, 2024 at 3:24 PM Martin Jansa via
lists.openembedded.org <martin.jansa=gmail.com@lists.openembedded.org>
wrote:
>
> Something seems wrong with this change which was merged today, now with:
> MACHINE=qemuarm64
> FORTRAN:forcevariable = ",fortran"
>
> I'm seeing:
> build/oe-core $ bitbake -g nativesdk-libgfortran
> NOTE: Resolving any missing task queue dependencies
> ERROR: Nothing PROVIDES 'gcc-cross-x86_64' (but
> virtual:nativesdk:/OE/build/oe-core/openembedded-core/meta/recipes-devtools/gcc/libgfortran_14.1.bb
> DEPENDS on or otherwise requires it). Close matches:
>   gcc-cross-aarch64
> ...
>
> This might have been broken even before this change, but now it got
> included in dependency tree of nativesdk-gcc (as shown in bitbake -g
> nativesdk-gcc now failing when host and target arch don't match):
>
> "nativesdk-gcc.do_package_qa" -> "nativesdk-libgfortran.do_packagedata"
> nativesdk-gcc.do_package_write_ipk" -> "nativesdk-libgfortran.do_packagedata"
>
> Missing or unbuildable dependency chain was: ['image',
> 'nativesdk-packagegroup-sdk-host', 'nativesdk-lcov',
> 'nativesdk-gcov-symlinks', 'nativesdk-libgfortran-dev',
> 'gcc-cross-x86_64']
>
> I guess the easiest fix would be in:
> meta/recipes-devtools/gcc/libgfortran.inc:DEPENDS = "gcc-runtime
> gcc-cross-${TARGET_ARCH}"
> but I'm not very familiar with fortran (we've enabled it long time ago
> to build lapack(blas) for snowboy, but wasn't actively used for couple
> years).
>
> Regards,
>
>
>
> On Sun, Jun 16, 2024 at 5:32 PM Kai Kang via lists.openembedded.org
> <kai.kang=windriver.com@lists.openembedded.org> wrote:
> >
> > From: Kai Kang <kai.kang@windriver.com>
> >
> > It fails to run both `gcc` and `gfortran` with errors:
> >
> > | root@qemux86-64:~# x86_64-poky-linux-gcc a.c
> > | x86_64-poky-linux-gcc: fatal error: cannot execute 'as': posix_spawnp: No such file or directory
> >
> > then add binutils which provides `as` to RDEPENDS of gcc.
> >
> > libgfortran-dev provides libgfortran.spec which required by gfortran:
> >
> > | root@qemux86-64:~# gfortran hello.f95
> > | gfortran: fatal error: cannot read spec file 'libgfortran.spec': No such file or directory
> >
> > And gcc provides liblto_plugin.so:
> >
> > | root@qemux86-64:~# gfortran hello.f95
> > | gfortran: fatal error: '-fuse-linker-plugin', but liblto_plugin.so not found
> >
> > Signed-off-by: Kai Kang <kai.kang@windriver.com>
> > ---
> >  meta/recipes-devtools/gcc/gcc-target.inc | 9 +++++++--
> >  1 file changed, 7 insertions(+), 2 deletions(-)
> >
> > diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc
> > index 8e9693b4cb..e9187fc444 100644
> > --- a/meta/recipes-devtools/gcc/gcc-target.inc
> > +++ b/meta/recipes-devtools/gcc/gcc-target.inc
> > @@ -33,7 +33,7 @@ PACKAGES = "\
> >      ${PN} ${PN}-plugins ${PN}-symlinks \
> >      g++ g++-symlinks \
> >      cpp cpp-symlinks \
> > -    gfortran gfortran-symlinks \
> > +    ${@bb.utils.contains('FORTRAN', ',fortran', 'gfortran gfortran-symlinks', '', d)} \
> >      gcov gcov-symlinks \
> >      ${PN}-doc \
> >      ${PN}-dev \
> > @@ -60,7 +60,7 @@ RRECOMMENDS:${PN} += "\
> >      libssp \
> >      libssp-dev \
> >  "
> > -RDEPENDS:${PN} += "cpp"
> > +RDEPENDS:${PN} += "binutils cpp"
> >
> >  FILES:${PN}-dev = "\
> >      ${gcclibdir}/${TARGET_SYS}/${BINV}/lib*${SOLIBSDEV} \
> > @@ -80,10 +80,15 @@ FILES:${PN}-plugins = "\
> >  "
> >  ALLOW_EMPTY:${PN}-plugins = "1"
> >
> > +INSANE_SKIP:${MLPREFIX}gfortran += "dev-deps"
> >  FILES:gfortran = "\
> >      ${bindir}/${TARGET_PREFIX}gfortran \
> >      ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951 \
> >  "
> > +RDEPENDS:gfortran = "\
> > +    gcc \
> > +    libgfortran-dev \
> > +"
> >  RRECOMMENDS:gfortran = "\
> >      libquadmath \
> >      libquadmath-dev \
> > --
> > 2.34.1
> >
> >
> >
> >
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#200913): https://lists.openembedded.org/g/openembedded-core/message/200913
> Mute This Topic: https://lists.openembedded.org/mt/106704990/3617156
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [martin.jansa@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Kai June 24, 2024, 10:12 a.m. UTC | #3
On 6/19/24 23:00, Martin Jansa wrote:
> See https://lists.openembedded.org/g/openembedded-core/message/200915
> which allows to me to build nativesdk-gcc again.

Thanks for your fix.

Regards,
Kai

>
> I've built nativesdk-libgfortran and libgfortran with the patch, but
> haven't used fortran in runtime at all, that's why it's an RFC, there
> were also 2 warnings:
> WARNING: nativesdk-libgfortran-14.1.0-r0 do_package_qa: QA Issue: File
> /opt/.../usr/lib/.debug/libgfortran.so.5.0.0 in package
> nativesdk-libgfortran-dbg contains reference to TMPDIR [buildpaths]
> WARNING: libgfortran-14.1.0-r0 do_package_qa: QA Issue: File
> /usr/lib/.debug/libgfortran.so.5.0.0 in package libgfortran-dbg
> contains reference to TMPDIR [buildpaths]
> which I guess were already there.
>
> On Wed, Jun 19, 2024 at 3:24 PM Martin Jansa via
> lists.openembedded.org <martin.jansa=gmail.com@lists.openembedded.org>
> wrote:
>> Something seems wrong with this change which was merged today, now with:
>> MACHINE=qemuarm64
>> FORTRAN:forcevariable = ",fortran"
>>
>> I'm seeing:
>> build/oe-core $ bitbake -g nativesdk-libgfortran
>> NOTE: Resolving any missing task queue dependencies
>> ERROR: Nothing PROVIDES 'gcc-cross-x86_64' (but
>> virtual:nativesdk:/OE/build/oe-core/openembedded-core/meta/recipes-devtools/gcc/libgfortran_14.1.bb
>> DEPENDS on or otherwise requires it). Close matches:
>>    gcc-cross-aarch64
>> ...
>>
>> This might have been broken even before this change, but now it got
>> included in dependency tree of nativesdk-gcc (as shown in bitbake -g
>> nativesdk-gcc now failing when host and target arch don't match):
>>
>> "nativesdk-gcc.do_package_qa" -> "nativesdk-libgfortran.do_packagedata"
>> nativesdk-gcc.do_package_write_ipk" -> "nativesdk-libgfortran.do_packagedata"
>>
>> Missing or unbuildable dependency chain was: ['image',
>> 'nativesdk-packagegroup-sdk-host', 'nativesdk-lcov',
>> 'nativesdk-gcov-symlinks', 'nativesdk-libgfortran-dev',
>> 'gcc-cross-x86_64']
>>
>> I guess the easiest fix would be in:
>> meta/recipes-devtools/gcc/libgfortran.inc:DEPENDS = "gcc-runtime
>> gcc-cross-${TARGET_ARCH}"
>> but I'm not very familiar with fortran (we've enabled it long time ago
>> to build lapack(blas) for snowboy, but wasn't actively used for couple
>> years).
>>
>> Regards,
>>
>>
>>
>> On Sun, Jun 16, 2024 at 5:32 PM Kai Kang via lists.openembedded.org
>> <kai.kang=windriver.com@lists.openembedded.org> wrote:
>>> From: Kai Kang <kai.kang@windriver.com>
>>>
>>> It fails to run both `gcc` and `gfortran` with errors:
>>>
>>> | root@qemux86-64:~# x86_64-poky-linux-gcc a.c
>>> | x86_64-poky-linux-gcc: fatal error: cannot execute 'as': posix_spawnp: No such file or directory
>>>
>>> then add binutils which provides `as` to RDEPENDS of gcc.
>>>
>>> libgfortran-dev provides libgfortran.spec which required by gfortran:
>>>
>>> | root@qemux86-64:~# gfortran hello.f95
>>> | gfortran: fatal error: cannot read spec file 'libgfortran.spec': No such file or directory
>>>
>>> And gcc provides liblto_plugin.so:
>>>
>>> | root@qemux86-64:~# gfortran hello.f95
>>> | gfortran: fatal error: '-fuse-linker-plugin', but liblto_plugin.so not found
>>>
>>> Signed-off-by: Kai Kang <kai.kang@windriver.com>
>>> ---
>>>   meta/recipes-devtools/gcc/gcc-target.inc | 9 +++++++--
>>>   1 file changed, 7 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc
>>> index 8e9693b4cb..e9187fc444 100644
>>> --- a/meta/recipes-devtools/gcc/gcc-target.inc
>>> +++ b/meta/recipes-devtools/gcc/gcc-target.inc
>>> @@ -33,7 +33,7 @@ PACKAGES = "\
>>>       ${PN} ${PN}-plugins ${PN}-symlinks \
>>>       g++ g++-symlinks \
>>>       cpp cpp-symlinks \
>>> -    gfortran gfortran-symlinks \
>>> +    ${@bb.utils.contains('FORTRAN', ',fortran', 'gfortran gfortran-symlinks', '', d)} \
>>>       gcov gcov-symlinks \
>>>       ${PN}-doc \
>>>       ${PN}-dev \
>>> @@ -60,7 +60,7 @@ RRECOMMENDS:${PN} += "\
>>>       libssp \
>>>       libssp-dev \
>>>   "
>>> -RDEPENDS:${PN} += "cpp"
>>> +RDEPENDS:${PN} += "binutils cpp"
>>>
>>>   FILES:${PN}-dev = "\
>>>       ${gcclibdir}/${TARGET_SYS}/${BINV}/lib*${SOLIBSDEV} \
>>> @@ -80,10 +80,15 @@ FILES:${PN}-plugins = "\
>>>   "
>>>   ALLOW_EMPTY:${PN}-plugins = "1"
>>>
>>> +INSANE_SKIP:${MLPREFIX}gfortran += "dev-deps"
>>>   FILES:gfortran = "\
>>>       ${bindir}/${TARGET_PREFIX}gfortran \
>>>       ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951 \
>>>   "
>>> +RDEPENDS:gfortran = "\
>>> +    gcc \
>>> +    libgfortran-dev \
>>> +"
>>>   RRECOMMENDS:gfortran = "\
>>>       libquadmath \
>>>       libquadmath-dev \
>>> --
>>> 2.34.1
>>>
>>>
>>>
>>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#200913): https://lists.openembedded.org/g/openembedded-core/message/200913
>> Mute This Topic: https://lists.openembedded.org/mt/106704990/3617156
>> Group Owner: openembedded-core+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [martin.jansa@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
Martin Jansa July 15, 2024, 9:59 a.m. UTC | #4
Hi Kai,

are you also seeing these buildpaths warnings from libgfortran? These
will be fatal since ERROR_QA update from yesterday:
https://git.openembedded.org/openembedded-core/commit/?id=b79b191cc43a45dde2adb61ea349b426cb2461d1
and it probably wasn't detected in AB builds which might not enable fortran.

Regards,

On Mon, Jun 24, 2024 at 12:12 PM Kai <kai.kang@windriver.com> wrote:
>
> On 6/19/24 23:00, Martin Jansa wrote:
> > See https://lists.openembedded.org/g/openembedded-core/message/200915
> > which allows to me to build nativesdk-gcc again.
>
> Thanks for your fix.
>
> Regards,
> Kai
>
> >
> > I've built nativesdk-libgfortran and libgfortran with the patch, but
> > haven't used fortran in runtime at all, that's why it's an RFC, there
> > were also 2 warnings:
> > WARNING: nativesdk-libgfortran-14.1.0-r0 do_package_qa: QA Issue: File
> > /opt/.../usr/lib/.debug/libgfortran.so.5.0.0 in package
> > nativesdk-libgfortran-dbg contains reference to TMPDIR [buildpaths]
> > WARNING: libgfortran-14.1.0-r0 do_package_qa: QA Issue: File
> > /usr/lib/.debug/libgfortran.so.5.0.0 in package libgfortran-dbg
> > contains reference to TMPDIR [buildpaths]
> > which I guess were already there.
> >
> > On Wed, Jun 19, 2024 at 3:24 PM Martin Jansa via
> > lists.openembedded.org <martin.jansa=gmail.com@lists.openembedded.org>
> > wrote:
> >> Something seems wrong with this change which was merged today, now with:
> >> MACHINE=qemuarm64
> >> FORTRAN:forcevariable = ",fortran"
> >>
> >> I'm seeing:
> >> build/oe-core $ bitbake -g nativesdk-libgfortran
> >> NOTE: Resolving any missing task queue dependencies
> >> ERROR: Nothing PROVIDES 'gcc-cross-x86_64' (but
> >> virtual:nativesdk:/OE/build/oe-core/openembedded-core/meta/recipes-devtools/gcc/libgfortran_14.1.bb
> >> DEPENDS on or otherwise requires it). Close matches:
> >>    gcc-cross-aarch64
> >> ...
> >>
> >> This might have been broken even before this change, but now it got
> >> included in dependency tree of nativesdk-gcc (as shown in bitbake -g
> >> nativesdk-gcc now failing when host and target arch don't match):
> >>
> >> "nativesdk-gcc.do_package_qa" -> "nativesdk-libgfortran.do_packagedata"
> >> nativesdk-gcc.do_package_write_ipk" -> "nativesdk-libgfortran.do_packagedata"
> >>
> >> Missing or unbuildable dependency chain was: ['image',
> >> 'nativesdk-packagegroup-sdk-host', 'nativesdk-lcov',
> >> 'nativesdk-gcov-symlinks', 'nativesdk-libgfortran-dev',
> >> 'gcc-cross-x86_64']
> >>
> >> I guess the easiest fix would be in:
> >> meta/recipes-devtools/gcc/libgfortran.inc:DEPENDS = "gcc-runtime
> >> gcc-cross-${TARGET_ARCH}"
> >> but I'm not very familiar with fortran (we've enabled it long time ago
> >> to build lapack(blas) for snowboy, but wasn't actively used for couple
> >> years).
> >>
> >> Regards,
> >>
> >>
> >>
> >> On Sun, Jun 16, 2024 at 5:32 PM Kai Kang via lists.openembedded.org
> >> <kai.kang=windriver.com@lists.openembedded.org> wrote:
> >>> From: Kai Kang <kai.kang@windriver.com>
> >>>
> >>> It fails to run both `gcc` and `gfortran` with errors:
> >>>
> >>> | root@qemux86-64:~# x86_64-poky-linux-gcc a.c
> >>> | x86_64-poky-linux-gcc: fatal error: cannot execute 'as': posix_spawnp: No such file or directory
> >>>
> >>> then add binutils which provides `as` to RDEPENDS of gcc.
> >>>
> >>> libgfortran-dev provides libgfortran.spec which required by gfortran:
> >>>
> >>> | root@qemux86-64:~# gfortran hello.f95
> >>> | gfortran: fatal error: cannot read spec file 'libgfortran.spec': No such file or directory
> >>>
> >>> And gcc provides liblto_plugin.so:
> >>>
> >>> | root@qemux86-64:~# gfortran hello.f95
> >>> | gfortran: fatal error: '-fuse-linker-plugin', but liblto_plugin.so not found
> >>>
> >>> Signed-off-by: Kai Kang <kai.kang@windriver.com>
> >>> ---
> >>>   meta/recipes-devtools/gcc/gcc-target.inc | 9 +++++++--
> >>>   1 file changed, 7 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc
> >>> index 8e9693b4cb..e9187fc444 100644
> >>> --- a/meta/recipes-devtools/gcc/gcc-target.inc
> >>> +++ b/meta/recipes-devtools/gcc/gcc-target.inc
> >>> @@ -33,7 +33,7 @@ PACKAGES = "\
> >>>       ${PN} ${PN}-plugins ${PN}-symlinks \
> >>>       g++ g++-symlinks \
> >>>       cpp cpp-symlinks \
> >>> -    gfortran gfortran-symlinks \
> >>> +    ${@bb.utils.contains('FORTRAN', ',fortran', 'gfortran gfortran-symlinks', '', d)} \
> >>>       gcov gcov-symlinks \
> >>>       ${PN}-doc \
> >>>       ${PN}-dev \
> >>> @@ -60,7 +60,7 @@ RRECOMMENDS:${PN} += "\
> >>>       libssp \
> >>>       libssp-dev \
> >>>   "
> >>> -RDEPENDS:${PN} += "cpp"
> >>> +RDEPENDS:${PN} += "binutils cpp"
> >>>
> >>>   FILES:${PN}-dev = "\
> >>>       ${gcclibdir}/${TARGET_SYS}/${BINV}/lib*${SOLIBSDEV} \
> >>> @@ -80,10 +80,15 @@ FILES:${PN}-plugins = "\
> >>>   "
> >>>   ALLOW_EMPTY:${PN}-plugins = "1"
> >>>
> >>> +INSANE_SKIP:${MLPREFIX}gfortran += "dev-deps"
> >>>   FILES:gfortran = "\
> >>>       ${bindir}/${TARGET_PREFIX}gfortran \
> >>>       ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951 \
> >>>   "
> >>> +RDEPENDS:gfortran = "\
> >>> +    gcc \
> >>> +    libgfortran-dev \
> >>> +"
> >>>   RRECOMMENDS:gfortran = "\
> >>>       libquadmath \
> >>>       libquadmath-dev \
> >>> --
> >>> 2.34.1
> >>>
> >>>
> >>>
> >>>
> >> -=-=-=-=-=-=-=-=-=-=-=-
> >> Links: You receive all messages sent to this group.
> >> View/Reply Online (#200913): https://lists.openembedded.org/g/openembedded-core/message/200913
> >> Mute This Topic: https://lists.openembedded.org/mt/106704990/3617156
> >> Group Owner: openembedded-core+owner@lists.openembedded.org
> >> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [martin.jansa@gmail.com]
> >> -=-=-=-=-=-=-=-=-=-=-=-
> >>
>
> --
> Kai Kang
> Wind River Linux
>
Kai July 15, 2024, 10:20 a.m. UTC | #5
On 7/15/24 17:59, Martin Jansa wrote:
> Hi Kai,
>
> are you also seeing these buildpaths warnings from libgfortran? These
> will be fatal since ERROR_QA update from yesterday:
> https://git.openembedded.org/openembedded-core/commit/?id=b79b191cc43a45dde2adb61ea349b426cb2461d1
> and it probably wasn't detected in AB builds which might not enable fortran.
Yes, it seems exists for long time. My colleague worked on it for 
several days. But it seems hard to resolve that

host path are somehow set to the intrinsic path.

I'll discuss with him tomorrow and check if we can fix it.

Regards,
Kai

>
> Regards,
>
> On Mon, Jun 24, 2024 at 12:12 PM Kai <kai.kang@windriver.com> wrote:
>> On 6/19/24 23:00, Martin Jansa wrote:
>>> See https://lists.openembedded.org/g/openembedded-core/message/200915
>>> which allows to me to build nativesdk-gcc again.
>> Thanks for your fix.
>>
>> Regards,
>> Kai
>>
>>> I've built nativesdk-libgfortran and libgfortran with the patch, but
>>> haven't used fortran in runtime at all, that's why it's an RFC, there
>>> were also 2 warnings:
>>> WARNING: nativesdk-libgfortran-14.1.0-r0 do_package_qa: QA Issue: File
>>> /opt/.../usr/lib/.debug/libgfortran.so.5.0.0 in package
>>> nativesdk-libgfortran-dbg contains reference to TMPDIR [buildpaths]
>>> WARNING: libgfortran-14.1.0-r0 do_package_qa: QA Issue: File
>>> /usr/lib/.debug/libgfortran.so.5.0.0 in package libgfortran-dbg
>>> contains reference to TMPDIR [buildpaths]
>>> which I guess were already there.
>>>
>>> On Wed, Jun 19, 2024 at 3:24 PM Martin Jansa via
>>> lists.openembedded.org <martin.jansa=gmail.com@lists.openembedded.org>
>>> wrote:
>>>> Something seems wrong with this change which was merged today, now with:
>>>> MACHINE=qemuarm64
>>>> FORTRAN:forcevariable = ",fortran"
>>>>
>>>> I'm seeing:
>>>> build/oe-core $ bitbake -g nativesdk-libgfortran
>>>> NOTE: Resolving any missing task queue dependencies
>>>> ERROR: Nothing PROVIDES 'gcc-cross-x86_64' (but
>>>> virtual:nativesdk:/OE/build/oe-core/openembedded-core/meta/recipes-devtools/gcc/libgfortran_14.1.bb
>>>> DEPENDS on or otherwise requires it). Close matches:
>>>>     gcc-cross-aarch64
>>>> ...
>>>>
>>>> This might have been broken even before this change, but now it got
>>>> included in dependency tree of nativesdk-gcc (as shown in bitbake -g
>>>> nativesdk-gcc now failing when host and target arch don't match):
>>>>
>>>> "nativesdk-gcc.do_package_qa" -> "nativesdk-libgfortran.do_packagedata"
>>>> nativesdk-gcc.do_package_write_ipk" -> "nativesdk-libgfortran.do_packagedata"
>>>>
>>>> Missing or unbuildable dependency chain was: ['image',
>>>> 'nativesdk-packagegroup-sdk-host', 'nativesdk-lcov',
>>>> 'nativesdk-gcov-symlinks', 'nativesdk-libgfortran-dev',
>>>> 'gcc-cross-x86_64']
>>>>
>>>> I guess the easiest fix would be in:
>>>> meta/recipes-devtools/gcc/libgfortran.inc:DEPENDS = "gcc-runtime
>>>> gcc-cross-${TARGET_ARCH}"
>>>> but I'm not very familiar with fortran (we've enabled it long time ago
>>>> to build lapack(blas) for snowboy, but wasn't actively used for couple
>>>> years).
>>>>
>>>> Regards,
>>>>
>>>>
>>>>
>>>> On Sun, Jun 16, 2024 at 5:32 PM Kai Kang via lists.openembedded.org
>>>> <kai.kang=windriver.com@lists.openembedded.org> wrote:
>>>>> From: Kai Kang <kai.kang@windriver.com>
>>>>>
>>>>> It fails to run both `gcc` and `gfortran` with errors:
>>>>>
>>>>> | root@qemux86-64:~# x86_64-poky-linux-gcc a.c
>>>>> | x86_64-poky-linux-gcc: fatal error: cannot execute 'as': posix_spawnp: No such file or directory
>>>>>
>>>>> then add binutils which provides `as` to RDEPENDS of gcc.
>>>>>
>>>>> libgfortran-dev provides libgfortran.spec which required by gfortran:
>>>>>
>>>>> | root@qemux86-64:~# gfortran hello.f95
>>>>> | gfortran: fatal error: cannot read spec file 'libgfortran.spec': No such file or directory
>>>>>
>>>>> And gcc provides liblto_plugin.so:
>>>>>
>>>>> | root@qemux86-64:~# gfortran hello.f95
>>>>> | gfortran: fatal error: '-fuse-linker-plugin', but liblto_plugin.so not found
>>>>>
>>>>> Signed-off-by: Kai Kang <kai.kang@windriver.com>
>>>>> ---
>>>>>    meta/recipes-devtools/gcc/gcc-target.inc | 9 +++++++--
>>>>>    1 file changed, 7 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc
>>>>> index 8e9693b4cb..e9187fc444 100644
>>>>> --- a/meta/recipes-devtools/gcc/gcc-target.inc
>>>>> +++ b/meta/recipes-devtools/gcc/gcc-target.inc
>>>>> @@ -33,7 +33,7 @@ PACKAGES = "\
>>>>>        ${PN} ${PN}-plugins ${PN}-symlinks \
>>>>>        g++ g++-symlinks \
>>>>>        cpp cpp-symlinks \
>>>>> -    gfortran gfortran-symlinks \
>>>>> +    ${@bb.utils.contains('FORTRAN', ',fortran', 'gfortran gfortran-symlinks', '', d)} \
>>>>>        gcov gcov-symlinks \
>>>>>        ${PN}-doc \
>>>>>        ${PN}-dev \
>>>>> @@ -60,7 +60,7 @@ RRECOMMENDS:${PN} += "\
>>>>>        libssp \
>>>>>        libssp-dev \
>>>>>    "
>>>>> -RDEPENDS:${PN} += "cpp"
>>>>> +RDEPENDS:${PN} += "binutils cpp"
>>>>>
>>>>>    FILES:${PN}-dev = "\
>>>>>        ${gcclibdir}/${TARGET_SYS}/${BINV}/lib*${SOLIBSDEV} \
>>>>> @@ -80,10 +80,15 @@ FILES:${PN}-plugins = "\
>>>>>    "
>>>>>    ALLOW_EMPTY:${PN}-plugins = "1"
>>>>>
>>>>> +INSANE_SKIP:${MLPREFIX}gfortran += "dev-deps"
>>>>>    FILES:gfortran = "\
>>>>>        ${bindir}/${TARGET_PREFIX}gfortran \
>>>>>        ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951 \
>>>>>    "
>>>>> +RDEPENDS:gfortran = "\
>>>>> +    gcc \
>>>>> +    libgfortran-dev \
>>>>> +"
>>>>>    RRECOMMENDS:gfortran = "\
>>>>>        libquadmath \
>>>>>        libquadmath-dev \
>>>>> --
>>>>> 2.34.1
>>>>>
>>>>>
>>>>>
>>>>>
>>>> -=-=-=-=-=-=-=-=-=-=-=-
>>>> Links: You receive all messages sent to this group.
>>>> View/Reply Online (#200913): https://lists.openembedded.org/g/openembedded-core/message/200913
>>>> Mute This Topic: https://lists.openembedded.org/mt/106704990/3617156
>>>> Group Owner: openembedded-core+owner@lists.openembedded.org
>>>> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [martin.jansa@gmail.com]
>>>> -=-=-=-=-=-=-=-=-=-=-=-
>>>>
>> --
>> Kai Kang
>> Wind River Linux
>>
Richard Purdie July 15, 2024, 10:37 a.m. UTC | #6
On Mon, 2024-07-15 at 18:20 +0800, Kai wrote:
> On 7/15/24 17:59, Martin Jansa wrote:
> > Hi Kai,
> > 
> > are you also seeing these buildpaths warnings from libgfortran?
> > These
> > will be fatal since ERROR_QA update from yesterday:
> > https://git.openembedded.org/openembedded-core/commit/?id=b79b191cc43a45dde2adb61ea349b426cb2461d1
> > and it probably wasn't detected in AB builds which might not enable
> > fortran.
> Yes, it seems exists for long time. My colleague worked on it for 
> several days. But it seems hard to resolve that
> 
> host path are somehow set to the intrinsic path.
> 
> I'll discuss with him tomorrow and check if we can fix it.

We're seeing these in automated testing now too.

I'm wondering if adding -ffile-prefix-map might avoid them. Sadly there
are tools which don't support that option so it isn't an easy thing to
add/test.

Cheers,

Richard
Richard Purdie July 15, 2024, 12:15 p.m. UTC | #7
On Mon, 2024-07-15 at 11:37 +0100, Richard Purdie via lists.openembedded.org wrote:
> On Mon, 2024-07-15 at 18:20 +0800, Kai wrote:
> > On 7/15/24 17:59, Martin Jansa wrote:
> > > Hi Kai,
> > > 
> > > are you also seeing these buildpaths warnings from libgfortran?
> > > These
> > > will be fatal since ERROR_QA update from yesterday:
> > > https://git.openembedded.org/openembedded-core/commit/?id=b79b191cc43a45dde2adb61ea349b426cb2461d1
> > > and it probably wasn't detected in AB builds which might not enable
> > > fortran.
> > Yes, it seems exists for long time. My colleague worked on it for 
> > several days. But it seems hard to resolve that
> > 
> > host path are somehow set to the intrinsic path.
> > 
> > I'll discuss with him tomorrow and check if we can fix it.
> 
> We're seeing these in automated testing now too.
> 
> I'm wondering if adding -ffile-prefix-map might avoid them. Sadly there
> are tools which don't support that option so it isn't an easy thing to
> add/test.

To be clear, we saw failures in the fortran selftest however I tracked
those down to the way we were calling the compiler and fixed it that
way.

I did try adding file-prefix-map to the compiler commandline but it
didn't help. I'm not sure of the status of prefix remapping in the
fortran compiler but it doesn't seem to be quite working properly.

Cheers,

Richard
diff mbox series

Patch

diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc
index 8e9693b4cb..e9187fc444 100644
--- a/meta/recipes-devtools/gcc/gcc-target.inc
+++ b/meta/recipes-devtools/gcc/gcc-target.inc
@@ -33,7 +33,7 @@  PACKAGES = "\
     ${PN} ${PN}-plugins ${PN}-symlinks \
     g++ g++-symlinks \
     cpp cpp-symlinks \
-    gfortran gfortran-symlinks \
+    ${@bb.utils.contains('FORTRAN', ',fortran', 'gfortran gfortran-symlinks', '', d)} \
     gcov gcov-symlinks \
     ${PN}-doc \
     ${PN}-dev \
@@ -60,7 +60,7 @@  RRECOMMENDS:${PN} += "\
     libssp \
     libssp-dev \
 "
-RDEPENDS:${PN} += "cpp"
+RDEPENDS:${PN} += "binutils cpp"
 
 FILES:${PN}-dev = "\
     ${gcclibdir}/${TARGET_SYS}/${BINV}/lib*${SOLIBSDEV} \
@@ -80,10 +80,15 @@  FILES:${PN}-plugins = "\
 "
 ALLOW_EMPTY:${PN}-plugins = "1"
 
+INSANE_SKIP:${MLPREFIX}gfortran += "dev-deps"
 FILES:gfortran = "\
     ${bindir}/${TARGET_PREFIX}gfortran \
     ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951 \
 "
+RDEPENDS:gfortran = "\
+    gcc \
+    libgfortran-dev \
+"
 RRECOMMENDS:gfortran = "\
     libquadmath \
     libquadmath-dev \