diff mbox series

[1/2] package/gmpc: needs -lm

Message ID 20191029214046.14722-1-fontaine.fabrice@gmail.com
State Not Applicable
Headers show
Series [1/2] package/gmpc: needs -lm | expand

Commit Message

Fabrice Fontaine Oct. 29, 2019, 9:40 p.m. UTC
gmpc forgets to link with -lm:

/home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: GmpcVolume.o: undefined reference to symbol 'ceil@@GLIBC_2.0'
/home/buildroot/autobuild/instance-2/output-1/host/mips64el-buildroot-linux-gnu/sysroot/soft-float/el/lib64/libm.so.6: error adding symbols: DSO missing from command line

Fixes:
 - http://autobuild.buildroot.org/results/a79e0487135ad90530595d5c6ecc32f9c8cea7c4

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 package/gmpc/gmpc.mk | 1 +
 1 file changed, 1 insertion(+)

Comments

Thomas Petazzoni Nov. 8, 2019, 9:04 p.m. UTC | #1
On Tue, 29 Oct 2019 22:40:45 +0100
Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:

> gmpc forgets to link with -lm:
> 
> /home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: GmpcVolume.o: undefined reference to symbol 'ceil@@GLIBC_2.0'
> /home/buildroot/autobuild/instance-2/output-1/host/mips64el-buildroot-linux-gnu/sysroot/soft-float/el/lib64/libm.so.6: error adding symbols: DSO missing from command line
> 
> Fixes:
>  - http://autobuild.buildroot.org/results/a79e0487135ad90530595d5c6ecc32f9c8cea7c4
> 
> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>

We need to understand why this is happening now. This package has not
been modified since July 2017, but suddenly, on October 21, 2019, it
started failing like this. Why? Was there a change in one of the
dependencies, that is no longer linked with libm, and that causes this
problem ?

I think I already asked this in the past: when you fix an issue, don't
just fix the issue, but explain why the issue is happening, especially
in situations like these.

Thanks!

Thomas
Peter Seiderer Nov. 8, 2019, 9:28 p.m. UTC | #2
Hello Fabrice, Thomas,

On Fri, 8 Nov 2019 22:04:42 +0100, Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:

> On Tue, 29 Oct 2019 22:40:45 +0100
> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
>
> > gmpc forgets to link with -lm:
> >
> > /home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: GmpcVolume.o: undefined reference to symbol 'ceil@@GLIBC_2.0'
> > /home/buildroot/autobuild/instance-2/output-1/host/mips64el-buildroot-linux-gnu/sysroot/soft-float/el/lib64/libm.so.6: error adding symbols: DSO missing from command line
> >
> > Fixes:
> >  - http://autobuild.buildroot.org/results/a79e0487135ad90530595d5c6ecc32f9c8cea7c4
> >
> > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
>
> We need to understand why this is happening now. This package has not
> been modified since July 2017, but suddenly, on October 21, 2019, it
> started failing like this. Why? Was there a change in one of the
> dependencies, that is no longer linked with libm, and that causes this
> problem ?

Maybe the same cause/problem as in the libv4l case regarding libatomic,
evaluating vs. not evaluationg the *.la files (see [1])?

Regards,
Peter

[1] http://lists.busybox.net/pipermail/buildroot/2019-October/264928.html

>
> I think I already asked this in the past: when you fix an issue, don't
> just fix the issue, but explain why the issue is happening, especially
> in situations like these.
>
> Thanks!
>
> Thomas
Arnout Vandecappelle Nov. 17, 2019, 7:45 p.m. UTC | #3
On 08/11/2019 22:28, Peter Seiderer wrote:
> Hello Fabrice, Thomas,
> 
> On Fri, 8 Nov 2019 22:04:42 +0100, Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:
> 
>> On Tue, 29 Oct 2019 22:40:45 +0100
>> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
>>
>>> gmpc forgets to link with -lm:
>>>
>>> /home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: GmpcVolume.o: undefined reference to symbol 'ceil@@GLIBC_2.0'
>>> /home/buildroot/autobuild/instance-2/output-1/host/mips64el-buildroot-linux-gnu/sysroot/soft-float/el/lib64/libm.so.6: error adding symbols: DSO missing from command line
>>>
>>> Fixes:
>>>  - http://autobuild.buildroot.org/results/a79e0487135ad90530595d5c6ecc32f9c8cea7c4
>>>
>>> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
>>
>> We need to understand why this is happening now. This package has not
>> been modified since July 2017, but suddenly, on October 21, 2019, it
>> started failing like this. Why? Was there a change in one of the
>> dependencies, that is no longer linked with libm, and that causes this
>> problem ?

 It started because of RELRO, I think.

> 
> Maybe the same cause/problem as in the libv4l case regarding libatomic,
> evaluating vs. not evaluationg the *.la files (see [1])?

 And this one because of PIC_PIE.

 Regards,
 Arnout

> 
> Regards,
> Peter
> 
> [1] http://lists.busybox.net/pipermail/buildroot/2019-October/264928.html
> 
>>
>> I think I already asked this in the past: when you fix an issue, don't
>> just fix the issue, but explain why the issue is happening, especially
>> in situations like these.
>>
>> Thanks!
>>
>> Thomas
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
Peter Seiderer Nov. 17, 2019, 8:20 p.m. UTC | #4
Hello Arnout,

On Sun, 17 Nov 2019 20:45:19 +0100, Arnout Vandecappelle <arnout@mind.be> wrote:

> On 08/11/2019 22:28, Peter Seiderer wrote:
> > Hello Fabrice, Thomas,
> >
> > On Fri, 8 Nov 2019 22:04:42 +0100, Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:
> >
> >> On Tue, 29 Oct 2019 22:40:45 +0100
> >> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
> >>
> >>> gmpc forgets to link with -lm:
> >>>
> >>> /home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: GmpcVolume.o: undefined reference to symbol 'ceil@@GLIBC_2.0'
> >>> /home/buildroot/autobuild/instance-2/output-1/host/mips64el-buildroot-linux-gnu/sysroot/soft-float/el/lib64/libm.so.6: error adding symbols: DSO missing from command line
> >>>
> >>> Fixes:
> >>>  - http://autobuild.buildroot.org/results/a79e0487135ad90530595d5c6ecc32f9c8cea7c4
> >>>
> >>> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> >>
> >> We need to understand why this is happening now. This package has not
> >> been modified since July 2017, but suddenly, on October 21, 2019, it
> >> started failing like this. Why? Was there a change in one of the
> >> dependencies, that is no longer linked with libm, and that causes this
> >> problem ?
>
>  It started because of RELRO, I think.
>
> >
> > Maybe the same cause/problem as in the libv4l case regarding libatomic,
> > evaluating vs. not evaluationg the *.la files (see [1])?
>
>  And this one because of PIC_PIE.

Any hints to one/more related commits (so I can check by reverting if it
changes/fix the problems)?

Are the RELRO/PIC_PIE options related to evaluating *.la files?

Regards,
Peter

>
>  Regards,
>  Arnout
>
> >
> > Regards,
> > Peter
> >
> > [1] http://lists.busybox.net/pipermail/buildroot/2019-October/264928.html
> >
> >>
> >> I think I already asked this in the past: when you fix an issue, don't
> >> just fix the issue, but explain why the issue is happening, especially
> >> in situations like these.
> >>
> >> Thanks!
> >>
> >> Thomas
> >
> > _______________________________________________
> > buildroot mailing list
> > buildroot@busybox.net
> > http://lists.busybox.net/mailman/listinfo/buildroot
> >
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Peter Seiderer Nov. 17, 2019, 8:48 p.m. UTC | #5
Hello *,

On Sun, 17 Nov 2019 21:20:01 +0100, Peter Seiderer <ps.report@gmx.net> wrote:

> Hello Arnout,
>
> On Sun, 17 Nov 2019 20:45:19 +0100, Arnout Vandecappelle <arnout@mind.be> wrote:
>
> > On 08/11/2019 22:28, Peter Seiderer wrote:
> > > Hello Fabrice, Thomas,
> > >
> > > On Fri, 8 Nov 2019 22:04:42 +0100, Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:
> > >
> > >> On Tue, 29 Oct 2019 22:40:45 +0100
> > >> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
> > >>
> > >>> gmpc forgets to link with -lm:
> > >>>
> > >>> /home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: GmpcVolume.o: undefined reference to symbol 'ceil@@GLIBC_2.0'
> > >>> /home/buildroot/autobuild/instance-2/output-1/host/mips64el-buildroot-linux-gnu/sysroot/soft-float/el/lib64/libm.so.6: error adding symbols: DSO missing from command line
> > >>>
> > >>> Fixes:
> > >>>  - http://autobuild.buildroot.org/results/a79e0487135ad90530595d5c6ecc32f9c8cea7c4
> > >>>
> > >>> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> > >>
> > >> We need to understand why this is happening now. This package has not
> > >> been modified since July 2017, but suddenly, on October 21, 2019, it
> > >> started failing like this. Why? Was there a change in one of the
> > >> dependencies, that is no longer linked with libm, and that causes this
> > >> problem ?
> >
> >  It started because of RELRO, I think.
> >
> > >
> > > Maybe the same cause/problem as in the libv4l case regarding libatomic,
> > > evaluating vs. not evaluationg the *.la files (see [1])?
> >
> >  And this one because of PIC_PIE.
>
> Any hints to one/more related commits (so I can check by reverting if it
> changes/fix the problems)?
>
> Are the RELRO/PIC_PIE options related to evaluating *.la files?

Did a quick search by the date (October 21, 2019) and the info from the libv4l
case [1] and would suspect the commit 'pkgconf: Add pkgconf system lib and
include path' [2], will do a test with this commit reverted....

Regards,
Peter

[2] https://git.buildroot.net/buildroot/commit/?id=9cc8680fe54c0b8f5008158e36e2157127f03a7e

>
> Regards,
> Peter
>
> >
> >  Regards,
> >  Arnout
> >
> > >
> > > Regards,
> > > Peter
> > >
> > > [1] http://lists.busybox.net/pipermail/buildroot/2019-October/264928.html
> > >
> > >>
> > >> I think I already asked this in the past: when you fix an issue, don't
> > >> just fix the issue, but explain why the issue is happening, especially
> > >> in situations like these.
> > >>
> > >> Thanks!
> > >>
> > >> Thomas
> > >
> > > _______________________________________________
> > > buildroot mailing list
> > > buildroot@busybox.net
> > > http://lists.busybox.net/mailman/listinfo/buildroot
> > >
> > _______________________________________________
> > buildroot mailing list
> > buildroot@busybox.net
> > http://lists.busybox.net/mailman/listinfo/buildroot
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Arnout Vandecappelle Nov. 17, 2019, 8:54 p.m. UTC | #6
On 17/11/2019 21:48, Peter Seiderer wrote:
> Hello *,
> 
> On Sun, 17 Nov 2019 21:20:01 +0100, Peter Seiderer <ps.report@gmx.net> wrote:
> 
>> Hello Arnout,
>>
>> On Sun, 17 Nov 2019 20:45:19 +0100, Arnout Vandecappelle <arnout@mind.be> wrote:
>>
>>> On 08/11/2019 22:28, Peter Seiderer wrote:
>>>> Hello Fabrice, Thomas,
>>>>
>>>> On Fri, 8 Nov 2019 22:04:42 +0100, Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:
>>>>
>>>>> On Tue, 29 Oct 2019 22:40:45 +0100
>>>>> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
>>>>>
>>>>>> gmpc forgets to link with -lm:
>>>>>>
>>>>>> /home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: GmpcVolume.o: undefined reference to symbol 'ceil@@GLIBC_2.0'
>>>>>> /home/buildroot/autobuild/instance-2/output-1/host/mips64el-buildroot-linux-gnu/sysroot/soft-float/el/lib64/libm.so.6: error adding symbols: DSO missing from command line
>>>>>>
>>>>>> Fixes:
>>>>>>  - http://autobuild.buildroot.org/results/a79e0487135ad90530595d5c6ecc32f9c8cea7c4
>>>>>>
>>>>>> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
>>>>>
>>>>> We need to understand why this is happening now. This package has not
>>>>> been modified since July 2017, but suddenly, on October 21, 2019, it
>>>>> started failing like this. Why? Was there a change in one of the
>>>>> dependencies, that is no longer linked with libm, and that causes this
>>>>> problem ?
>>>
>>>  It started because of RELRO, I think.
>>>
>>>>
>>>> Maybe the same cause/problem as in the libv4l case regarding libatomic,
>>>> evaluating vs. not evaluationg the *.la files (see [1])?
>>>
>>>  And this one because of PIC_PIE.
>>
>> Any hints to one/more related commits (so I can check by reverting if it
>> changes/fix the problems)?
>>
>> Are the RELRO/PIC_PIE options related to evaluating *.la files?
> 
> Did a quick search by the date (October 21, 2019) and the info from the libv4l
> case [1] and would suspect the commit 'pkgconf: Add pkgconf system lib and
> include path' [2], will do a test with this commit reverted....

 Good point. Also there's a failure without PIC_PIE or RELRO [3].

 Regards,
 Arnout

> 
> Regards,
> Peter
> 
> [2] https://git.buildroot.net/buildroot/commit/?id=9cc8680fe54c0b8f5008158e36e2157127f03a7e

[3]
http://autobuild.buildroot.net/results/e7f/e7f37080c20e2131613517c3007b4569c28dbcf2


> 
>>
>> Regards,
>> Peter
>>
>>>
>>>  Regards,
>>>  Arnout
>>>
>>>>
>>>> Regards,
>>>> Peter
>>>>
>>>> [1] http://lists.busybox.net/pipermail/buildroot/2019-October/264928.html
>>>>
>>>>>
>>>>> I think I already asked this in the past: when you fix an issue, don't
>>>>> just fix the issue, but explain why the issue is happening, especially
>>>>> in situations like these.
>>>>>
>>>>> Thanks!
>>>>>
>>>>> Thomas
>>>>
>>>> _______________________________________________
>>>> buildroot mailing list
>>>> buildroot@busybox.net
>>>> http://lists.busybox.net/mailman/listinfo/buildroot
>>>>
>>> _______________________________________________
>>> buildroot mailing list
>>> buildroot@busybox.net
>>> http://lists.busybox.net/mailman/listinfo/buildroot
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot@busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>
Peter Seiderer Nov. 18, 2019, 10:42 p.m. UTC | #7
Hello *,

On Sun, 17 Nov 2019 21:54:38 +0100, Arnout Vandecappelle <arnout@mind.be> wrote:

> On 17/11/2019 21:48, Peter Seiderer wrote:
> > Hello *,
> >
> > On Sun, 17 Nov 2019 21:20:01 +0100, Peter Seiderer <ps.report@gmx.net> wrote:
> >
> >> Hello Arnout,
> >>
> >> On Sun, 17 Nov 2019 20:45:19 +0100, Arnout Vandecappelle <arnout@mind.be> wrote:
> >>
> >>> On 08/11/2019 22:28, Peter Seiderer wrote:
> >>>> Hello Fabrice, Thomas,
> >>>>
> >>>> On Fri, 8 Nov 2019 22:04:42 +0100, Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:
> >>>>
> >>>>> On Tue, 29 Oct 2019 22:40:45 +0100
> >>>>> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
> >>>>>
> >>>>>> gmpc forgets to link with -lm:
> >>>>>>
> >>>>>> /home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: GmpcVolume.o: undefined reference to symbol 'ceil@@GLIBC_2.0'
> >>>>>> /home/buildroot/autobuild/instance-2/output-1/host/mips64el-buildroot-linux-gnu/sysroot/soft-float/el/lib64/libm.so.6: error adding symbols: DSO missing from command line
> >>>>>>
> >>>>>> Fixes:
> >>>>>>  - http://autobuild.buildroot.org/results/a79e0487135ad90530595d5c6ecc32f9c8cea7c4
> >>>>>>
> >>>>>> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> >>>>>
> >>>>> We need to understand why this is happening now. This package has not
> >>>>> been modified since July 2017, but suddenly, on October 21, 2019, it
> >>>>> started failing like this. Why? Was there a change in one of the
> >>>>> dependencies, that is no longer linked with libm, and that causes this
> >>>>> problem ?
> >>>
> >>>  It started because of RELRO, I think.
> >>>
> >>>>
> >>>> Maybe the same cause/problem as in the libv4l case regarding libatomic,
> >>>> evaluating vs. not evaluationg the *.la files (see [1])?
> >>>
> >>>  And this one because of PIC_PIE.
> >>
> >> Any hints to one/more related commits (so I can check by reverting if it
> >> changes/fix the problems)?
> >>
> >> Are the RELRO/PIC_PIE options related to evaluating *.la files?
> >
> > Did a quick search by the date (October 21, 2019) and the info from the libv4l
> > case [1] and would suspect the commit 'pkgconf: Add pkgconf system lib and
> > include path' [2], will do a test with this commit reverted....
>
>  Good point. Also there's a failure without PIC_PIE or RELRO [3].

Can confirm, reverting [2] fixes the libv4l and the gmpc linking problems...

Regards,
Peter

>
>  Regards,
>  Arnout
>
> >
> > Regards,
> > Peter
> >
> > [2] https://git.buildroot.net/buildroot/commit/?id=9cc8680fe54c0b8f5008158e36e2157127f03a7e
>
> [3]
> http://autobuild.buildroot.net/results/e7f/e7f37080c20e2131613517c3007b4569c28dbcf2
>
>
> >
> >>
> >> Regards,
> >> Peter
> >>
> >>>
> >>>  Regards,
> >>>  Arnout
> >>>
> >>>>
> >>>> Regards,
> >>>> Peter
> >>>>
> >>>> [1] http://lists.busybox.net/pipermail/buildroot/2019-October/264928.html
> >>>>
> >>>>>
> >>>>> I think I already asked this in the past: when you fix an issue, don't
> >>>>> just fix the issue, but explain why the issue is happening, especially
> >>>>> in situations like these.
> >>>>>
> >>>>> Thanks!
> >>>>>
> >>>>> Thomas
> >>>>
> >>>> _______________________________________________
> >>>> buildroot mailing list
> >>>> buildroot@busybox.net
> >>>> http://lists.busybox.net/mailman/listinfo/buildroot
> >>>>
> >>> _______________________________________________
> >>> buildroot mailing list
> >>> buildroot@busybox.net
> >>> http://lists.busybox.net/mailman/listinfo/buildroot
> >>
> >> _______________________________________________
> >> buildroot mailing list
> >> buildroot@busybox.net
> >> http://lists.busybox.net/mailman/listinfo/buildroot
> >
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Thomas Petazzoni Nov. 18, 2019, 10:47 p.m. UTC | #8
Hello,

Adding Thomas Preston in the loop. Thomas: one of your patch causes
some regression, see below.

On Mon, 18 Nov 2019 23:42:38 +0100
Peter Seiderer <ps.report@gmx.net> wrote:

> > >>>>> On Tue, 29 Oct 2019 22:40:45 +0100
> > >>>>> Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
> > >>>>>  
> > >>>>>> gmpc forgets to link with -lm:
> > >>>>>>
> > >>>>>> /home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld: GmpcVolume.o: undefined reference to symbol 'ceil@@GLIBC_2.0'
> > >>>>>> /home/buildroot/autobuild/instance-2/output-1/host/mips64el-buildroot-linux-gnu/sysroot/soft-float/el/lib64/libm.so.6: error adding symbols: DSO missing from command line
> > >>>>>>
> > >>>>>> Fixes:
> > >>>>>>  - http://autobuild.buildroot.org/results/a79e0487135ad90530595d5c6ecc32f9c8cea7c4
> > >>>>>>
> > >>>>>> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>  
> > >>>>>
> > >>>>> We need to understand why this is happening now. This package has not
> > >>>>> been modified since July 2017, but suddenly, on October 21, 2019, it
> > >>>>> started failing like this. Why? Was there a change in one of the
> > >>>>> dependencies, that is no longer linked with libm, and that causes this
> > >>>>> problem ?  
> > >>>
> > >>>  It started because of RELRO, I think.
> > >>>  
> > >>>>
> > >>>> Maybe the same cause/problem as in the libv4l case regarding libatomic,
> > >>>> evaluating vs. not evaluationg the *.la files (see [1])?  
> > >>>
> > >>>  And this one because of PIC_PIE.  
> > >>
> > >> Any hints to one/more related commits (so I can check by reverting if it
> > >> changes/fix the problems)?
> > >>
> > >> Are the RELRO/PIC_PIE options related to evaluating *.la files?  
> > >
> > > Did a quick search by the date (October 21, 2019) and the info from the libv4l
> > > case [1] and would suspect the commit 'pkgconf: Add pkgconf system lib and
> > > include path' [2], will do a test with this commit reverted....  
> >
> >  Good point. Also there's a failure without PIC_PIE or RELRO [3].  
> 
> Can confirm, reverting [2] fixes the libv4l and the gmpc linking problems...

Thanks for the investigation Peter!

Thomas
Thomas Preston Nov. 19, 2019, 4:18 p.m. UTC | #9
Hi Thomas Petazzoni, all,
Thanks for bringing this to my attention.

On 18/11/2019 22:47, Thomas Petazzoni wrote:
> Adding Thomas Preston in the loop. Thomas: one of your patch causes
> some regression, see below.
> 

Before the pkgconf patch, `-lm` somehow made its way into the .la files:

	gmpc-11.8.16-before-pkgconf-fix$ grep -lwr "\-lm"
	ltmain.sh.orig
	ltmain.sh
	src/libeggsmclient.la
	src/libeggdesktopfile.la
	m4/libtool.m4
	libtool

In addition to this, there are lots of system include and libraries
littering the Makefile (which should be handled by --sysroot):

	-L/mnt/output/host/bin/../x86_64-buildroot-linux-gnu/sysroot/usr/lib
	-I/mnt/output/host/bin/../x86_64-buildroot-linux-gnu/sysroot/usr/include

After the pkgconf patch, the gmpc build directory more closely resembles
building upstream gmpc - which doesn't seem to require `-lm`. So why does
it in buildroot?

gmpc-11.8.16$ cat fedora.Dockerfile
FROM fedora:30
RUN dnf install -y @development-tools
RUN dnf install -y \
        gob2 \
        harfbuzz \
        harfbuzz-devel \
        intltool \
        libICE \
        libICE-devel \
        libmpd-devel \
        libSM \
        libSM-devel \
        libsoup-devel \
        libvala \
        libvala-devel \
        pkgconf \
        unique-devel \
        vala
WORKDIR /mnt
CMD "/bin/bash"

$ docker build -t build-gmpc - < fedora.Dockerfile
$ docker run -it -v$PWD:/mnt build-gmpc ./configure --disable-mmkeys --disable-unique
$ docker run -it -v$PWD:/mnt build-gmpc make
$ ls -l src/gmpc
-rwxr-xr-x 1 root root 5818944 Nov 19 15:52 src/gmpc

Seems to work, without a -lm in sight:

$ grep -rw "\-lm"
ltmain.sh:        # a FreeBSD bug that causes programs to crash when -lm is
m4/libtool.m4:  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
m4/libtool.m4:  AC_CHECK_LIB(m, cos, LIBM="-lm")
libtool:          # a FreeBSD bug that causes programs to crash when -lm is

So I don't understand two things:
1. Where did `-lm` in the .la files come from before the pkgconf patch?
2. Why does upsteam gmpc build without `-lm`?
Fabrice Fontaine Nov. 19, 2019, 5:58 p.m. UTC | #10
Dear all,

Le mar. 19 nov. 2019 à 17:18, Thomas Preston
<thomas.preston@codethink.co.uk> a écrit :
>
> Hi Thomas Petazzoni, all,
> Thanks for bringing this to my attention.
>
> On 18/11/2019 22:47, Thomas Petazzoni wrote:
> > Adding Thomas Preston in the loop. Thomas: one of your patch causes
> > some regression, see below.
> >
>
> Before the pkgconf patch, `-lm` somehow made its way into the .la files:
>
>         gmpc-11.8.16-before-pkgconf-fix$ grep -lwr "\-lm"
>         ltmain.sh.orig
>         ltmain.sh
>         src/libeggsmclient.la
>         src/libeggdesktopfile.la
>         m4/libtool.m4
>         libtool
>
> In addition to this, there are lots of system include and libraries
> littering the Makefile (which should be handled by --sysroot):
>
>         -L/mnt/output/host/bin/../x86_64-buildroot-linux-gnu/sysroot/usr/lib
>         -I/mnt/output/host/bin/../x86_64-buildroot-linux-gnu/sysroot/usr/include
>
> After the pkgconf patch, the gmpc build directory more closely resembles
> building upstream gmpc - which doesn't seem to require `-lm`. So why does
> it in buildroot?
>
> gmpc-11.8.16$ cat fedora.Dockerfile
> FROM fedora:30
> RUN dnf install -y @development-tools
> RUN dnf install -y \
>         gob2 \
>         harfbuzz \
>         harfbuzz-devel \
>         intltool \
>         libICE \
>         libICE-devel \
>         libmpd-devel \
>         libSM \
>         libSM-devel \
>         libsoup-devel \
>         libvala \
>         libvala-devel \
>         pkgconf \
>         unique-devel \
>         vala
> WORKDIR /mnt
> CMD "/bin/bash"
>
> $ docker build -t build-gmpc - < fedora.Dockerfile
> $ docker run -it -v$PWD:/mnt build-gmpc ./configure --disable-mmkeys --disable-unique
> $ docker run -it -v$PWD:/mnt build-gmpc make
> $ ls -l src/gmpc
> -rwxr-xr-x 1 root root 5818944 Nov 19 15:52 src/gmpc
>
> Seems to work, without a -lm in sight:
>
> $ grep -rw "\-lm"
> ltmain.sh:        # a FreeBSD bug that causes programs to crash when -lm is
> m4/libtool.m4:  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
> m4/libtool.m4:  AC_CHECK_LIB(m, cos, LIBM="-lm")
> libtool:          # a FreeBSD bug that causes programs to crash when -lm is
>
> So I don't understand two things:
> 1. Where did `-lm` in the .la files come from before the pkgconf patch?
> 2. Why does upsteam gmpc build without `-lm`?
This one is easy: we're using the latest release of gmpc that is 8 years old.
In this release, Math.ceil is used in
https://github.com/DaveDavenport/gmpc/blob/release-11.8.16/src/Widgets/GmpcVolume.vala.
Upstream removed this file 6 years ago through
https://github.com/DaveDavenport/gmpc/commit/11a7d247757dd29b51c77fda7470921fd254aae8#diff-645d920fce926ffdadd85c93c2d2cda2.
I assume that current gmpc does not use any math functions anymore.

Best Regards,

Fabrice
Thomas Preston Nov. 19, 2019, 6:31 p.m. UTC | #11
On 19/11/2019 17:58, Fabrice Fontaine wrote:
> Le mar. 19 nov. 2019 à 17:18, Thomas Preston
> <thomas.preston@codethink.co.uk> a écrit :
>> So I don't understand two things:
>> 1. Where did `-lm` in the .la files come from before the pkgconf patch?
>> 2. Why does upsteam gmpc build without `-lm`?
> This one is easy: we're using the latest release of gmpc that is 8 years old.
> In this release, Math.ceil is used in
> https://github.com/DaveDavenport/gmpc/blob/release-11.8.16/src/Widgets/GmpcVolume.vala.
> Upstream removed this file 6 years ago through
> https://github.com/DaveDavenport/gmpc/commit/11a7d247757dd29b51c77fda7470921fd254aae8#diff-645d920fce926ffdadd85c93c2d2cda2.
> I assume that current gmpc does not use any math functions anymore.

Ah, when I said upstream I actually meant "the gmpc-11.8.16 tar from upstream",
as opposed to building within the Buildroot environment. I should have been
more clear.

There are no `-lm` flags:

	gmpc-11.8.16$ grep -lwr "\-lm"
	ltmain.sh
	m4/libtool.m4
	libtool

But I can successfully build gmpc:

	gmpc-11.8.16$ strings src/gmpc | grep ceil
	lceil
	rceil

This is outside of buildroot.

Maybe we should focus on building the latest development version of gmpc
from github?

To be clear, I don't think the pkgconf patch has caused a regression, I
think that gmpc in buildroot is broken. Although, I'm still trying to
build a solid case for this.
Peter Seiderer Nov. 19, 2019, 6:42 p.m. UTC | #12
Hello *,

On Tue, 19 Nov 2019 18:58:03 +0100, Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:

> Dear all,
> 
> Le mar. 19 nov. 2019 à 17:18, Thomas Preston
> <thomas.preston@codethink.co.uk> a écrit :
> >
> > Hi Thomas Petazzoni, all,
> > Thanks for bringing this to my attention.
> >
> > On 18/11/2019 22:47, Thomas Petazzoni wrote:  
> > > Adding Thomas Preston in the loop. Thomas: one of your patch causes
> > > some regression, see below.
> > >  
> >
> > Before the pkgconf patch, `-lm` somehow made its way into the .la files:
> >
> >         gmpc-11.8.16-before-pkgconf-fix$ grep -lwr "\-lm"
> >         ltmain.sh.orig
> >         ltmain.sh
> >         src/libeggsmclient.la
> >         src/libeggdesktopfile.la
> >         m4/libtool.m4
> >         libtool
> >
> > In addition to this, there are lots of system include and libraries
> > littering the Makefile (which should be handled by --sysroot):
> >
> >         -L/mnt/output/host/bin/../x86_64-buildroot-linux-gnu/sysroot/usr/lib
> >         -I/mnt/output/host/bin/../x86_64-buildroot-linux-gnu/sysroot/usr/include
> >
> > After the pkgconf patch, the gmpc build directory more closely resembles
> > building upstream gmpc - which doesn't seem to require `-lm`. So why does
> > it in buildroot?

It is not buildroot specific, but toolchain/libc specific (some implement the math
functions in libc itself, some in the extra libm)....

> >
> > gmpc-11.8.16$ cat fedora.Dockerfile
> > FROM fedora:30
> > RUN dnf install -y @development-tools
> > RUN dnf install -y \
> >         gob2 \
> >         harfbuzz \
> >         harfbuzz-devel \
> >         intltool \
> >         libICE \
> >         libICE-devel \
> >         libmpd-devel \
> >         libSM \
> >         libSM-devel \
> >         libsoup-devel \
> >         libvala \
> >         libvala-devel \
> >         pkgconf \
> >         unique-devel \
> >         vala
> > WORKDIR /mnt
> > CMD "/bin/bash"
> >
> > $ docker build -t build-gmpc - < fedora.Dockerfile
> > $ docker run -it -v$PWD:/mnt build-gmpc ./configure --disable-mmkeys --disable-unique
> > $ docker run -it -v$PWD:/mnt build-gmpc make
> > $ ls -l src/gmpc
> > -rwxr-xr-x 1 root root 5818944 Nov 19 15:52 src/gmpc
> >
> > Seems to work, without a -lm in sight:
> >
> > $ grep -rw "\-lm"
> > ltmain.sh:        # a FreeBSD bug that causes programs to crash when -lm is
> > m4/libtool.m4:  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
> > m4/libtool.m4:  AC_CHECK_LIB(m, cos, LIBM="-lm")
> > libtool:          # a FreeBSD bug that causes programs to crash when -lm is
> >
> > So I don't understand two things:
> > 1. Where did `-lm` in the .la files come from before the pkgconf patch?
> > 2. Why does upsteam gmpc build without `-lm`?  
> This one is easy: we're using the latest release of gmpc that is 8 years old.
> In this release, Math.ceil is used in
> https://github.com/DaveDavenport/gmpc/blob/release-11.8.16/src/Widgets/GmpcVolume.vala.
> Upstream removed this file 6 years ago through
> https://github.com/DaveDavenport/gmpc/commit/11a7d247757dd29b51c77fda7470921fd254aae8#diff-645d920fce926ffdadd85c93c2d2cda2.
> I assume that current gmpc does not use any math functions anymore.

Maybe a workaround for the gmpc case, remains the libvl42/libatomc [1] case which is about
using dependent *.la files vs. ignoring dependent *.la files while linking...

Regards,
Peter

[1] http://lists.busybox.net/pipermail/buildroot/2019-October/264928.html

> 
> Best Regards,
> 
> Fabrice
Thomas Preston Nov. 21, 2019, 6:14 p.m. UTC | #13
On 19/11/2019 18:42, Peter Seiderer wrote:
> Hello *,
> 
> On Tue, 19 Nov 2019 18:58:03 +0100, Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:
> 
>> Dear all,
>>
>> Le mar. 19 nov. 2019 à 17:18, Thomas Preston
>> <thomas.preston@codethink.co.uk> a écrit :
>>>
>>> Hi Thomas Petazzoni, all,
>>> Thanks for bringing this to my attention.
>>>
>>> On 18/11/2019 22:47, Thomas Petazzoni wrote:  
>>>> Adding Thomas Preston in the loop. Thomas: one of your patch causes
>>>> some regression, see below.
>>>>  
>>>
>>> Before the pkgconf patch, `-lm` somehow made its way into the .la files:
>>>
>>>         gmpc-11.8.16-before-pkgconf-fix$ grep -lwr "\-lm"
>>>         ltmain.sh.orig
>>>         ltmain.sh
>>>         src/libeggsmclient.la
>>>         src/libeggdesktopfile.la
>>>         m4/libtool.m4
>>>         libtool
>>>
>>> In addition to this, there are lots of system include and libraries
>>> littering the Makefile (which should be handled by --sysroot):
>>>
>>>         -L/mnt/output/host/bin/../x86_64-buildroot-linux-gnu/sysroot/usr/lib
>>>         -I/mnt/output/host/bin/../x86_64-buildroot-linux-gnu/sysroot/usr/include
>>>
>>> After the pkgconf patch, the gmpc build directory more closely resembles
>>> building upstream gmpc - which doesn't seem to require `-lm`. So why does
>>> it in buildroot?
> 
> It is not buildroot specific, but toolchain/libc specific (some implement the math
> functions in libc itself, some in the extra libm)....
> 
>>>
>>> gmpc-11.8.16$ cat fedora.Dockerfile
>>> FROM fedora:30
>>> RUN dnf install -y @development-tools
>>> RUN dnf install -y \
>>>         gob2 \
>>>         harfbuzz \
>>>         harfbuzz-devel \
>>>         intltool \
>>>         libICE \
>>>         libICE-devel \
>>>         libmpd-devel \
>>>         libSM \
>>>         libSM-devel \
>>>         libsoup-devel \
>>>         libvala \
>>>         libvala-devel \
>>>         pkgconf \
>>>         unique-devel \
>>>         vala
>>> WORKDIR /mnt
>>> CMD "/bin/bash"
>>>
>>> $ docker build -t build-gmpc - < fedora.Dockerfile
>>> $ docker run -it -v$PWD:/mnt build-gmpc ./configure --disable-mmkeys --disable-unique
>>> $ docker run -it -v$PWD:/mnt build-gmpc make
>>> $ ls -l src/gmpc
>>> -rwxr-xr-x 1 root root 5818944 Nov 19 15:52 src/gmpc
>>>
>>> Seems to work, without a -lm in sight:
>>>
>>> $ grep -rw "\-lm"
>>> ltmain.sh:        # a FreeBSD bug that causes programs to crash when -lm is
>>> m4/libtool.m4:  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
>>> m4/libtool.m4:  AC_CHECK_LIB(m, cos, LIBM="-lm")
>>> libtool:          # a FreeBSD bug that causes programs to crash when -lm is
>>>
>>> So I don't understand two things:
>>> 1. Where did `-lm` in the .la files come from before the pkgconf patch?
>>> 2. Why does upsteam gmpc build without `-lm`?  
>> This one is easy: we're using the latest release of gmpc that is 8 years old.
>> In this release, Math.ceil is used in
>> https://github.com/DaveDavenport/gmpc/blob/release-11.8.16/src/Widgets/GmpcVolume.vala.
>> Upstream removed this file 6 years ago through
>> https://github.com/DaveDavenport/gmpc/commit/11a7d247757dd29b51c77fda7470921fd254aae8#diff-645d920fce926ffdadd85c93c2d2cda2.
>> I assume that current gmpc does not use any math functions anymore.
> 
> Maybe a workaround for the gmpc case, remains the libvl42/libatomc [1] case which is about
> using dependent *.la files vs. ignoring dependent *.la files while linking...
> 

The gmpc package appears to be fixed with the same kind of patch as libv4l:

	diff --git a/package/gmpc/gmpc.mk b/package/gmpc/gmpc.mk
	index 40b77eb189..9c725db39d 100644
	--- a/package/gmpc/gmpc.mk
	+++ b/package/gmpc/gmpc.mk
	@@ -6,7 +6,8 @@

	 GMPC_VERSION = 11.8.16
	 GMPC_SITE = http://download.sarine.nl/Programs/gmpc/$(GMPC_VERSION)
	-GMPC_CONF_ENV = ac_cv_path_GOB2=$(GOB2_HOST_BINARY)
	+GMPC_CONF_ENV = ac_cv_path_GOB2=$(GOB2_HOST_BINARY) \
	+       PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
	 GMPC_CONF_OPTS = --disable-mmkeys --disable-unique
	 GMPC_LICENSE = GPL-2.0+
	 GMPC_LICENSE_FILES = COPYING

This is because this package uses libtool, which expects to find .la files
in the system library dir.

Another solution might be to configure the main pkg-config wrapper so that
it always includes the system lib dirs (for libtool), but not system include
dirs (which breaks -isystem ordering).
diff mbox series

Patch

diff --git a/package/gmpc/gmpc.mk b/package/gmpc/gmpc.mk
index 40b77eb189..51646ac470 100644
--- a/package/gmpc/gmpc.mk
+++ b/package/gmpc/gmpc.mk
@@ -14,5 +14,6 @@  GMPC_DEPENDENCIES = host-gob2 host-intltool host-pkgconf host-vala \
 	libglib2 libgtk2 libmpd libsoup sqlite \
 	xlib_libICE xlib_libSM xlib_libX11 \
 	$(TARGET_NLS_DEPENDENCIES)
+GMPC_CONF_ENV = LIBS=-lm
 
 $(eval $(autotools-package))