diff mbox series

mtools: do not link to libbsd

Message ID 20171128104817.15073-1-casantos@datacom.ind.br
State Superseded
Headers show
Series mtools: do not link to libbsd | expand

Commit Message

Carlos Santos Nov. 28, 2017, 10:48 a.m. UTC
mtools is unneccessarily linked to libbsd if this library is found by
the configuration script. The same may happen to host-mtools if some
libbsd-devel package is installed on the host machine. Prevent this by
forcing configure to ignore the existence o libbsd.

I stumbled on this when I built host-mtools and removed libbsd-devel to
upgrade to Fedora 27, due to Bug 1504831*. The previously built
host/bin/mtools started to fail due to the missing libbsd.x.y.so

* https://bugzilla.redhat.com/show_bug.cgi?id=1504831

Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
---
 package/mtools/mtools.mk | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Baruch Siach Nov. 28, 2017, 12:03 p.m. UTC | #1
Hi Carlos,

On Tue, Nov 28, 2017 at 08:48:17AM -0200, Carlos Santos wrote:
> mtools is unneccessarily linked to libbsd if this library is found by
> the configuration script. The same may happen to host-mtools if some
> libbsd-devel package is installed on the host machine. Prevent this by
> forcing configure to ignore the existence o libbsd.
> 
> I stumbled on this when I built host-mtools and removed libbsd-devel to
> upgrade to Fedora 27, due to Bug 1504831*. The previously built
> host/bin/mtools started to fail due to the missing libbsd.x.y.so
> 
> * https://bugzilla.redhat.com/show_bug.cgi?id=1504831

This is a valid reason to remove the host-mtools dependency on libbsd ...

> Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
> ---
>  package/mtools/mtools.mk | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/package/mtools/mtools.mk b/package/mtools/mtools.mk
> index 5db548fad9..1a6218831e 100644
> --- a/package/mtools/mtools.mk
> +++ b/package/mtools/mtools.mk
> @@ -13,9 +13,13 @@ MTOOLS_CONF_OPTS = --without-x
>  # info documentation not needed
>  MTOOLS_CONF_ENV = \
>  	ac_cv_func_setpgrp_void=yes \
> +	ac_cv_lib_bsd_gethostbyname=no \
> +	ac_cv_lib_bsd_main=no \

... but why no add an optional dependency on libbds for the target mtools 
package? In case we build target libbsd anyway, having mtools use libbsd would 
presumably reduce the binary size of mtools somewhat, isn't it?

>  	ac_cv_path_INSTALL_INFO=
>  
>  HOST_MTOOLS_CONF_ENV = \
> +	ac_cv_lib_bsd_gethostbyname=no \
> +	ac_cv_lib_bsd_main=no \
>  	ac_cv_path_INSTALL_INFO=
>  
>  # link with iconv if enabled

baruch
Carlos Santos Nov. 28, 2017, 12:36 p.m. UTC | #2
> From: "Baruch Siach" <baruch@tkos.co.il>
> To: "Carlos Santos" <casantos@datacom.ind.br>
> Cc: buildroot@buildroot.org
> Sent: Tuesday, November 28, 2017 10:03:27 AM
> Subject: Re: [Buildroot] [PATCH] mtools: do not link to libbsd

> Hi Carlos,
> 
[...]
>> diff --git a/package/mtools/mtools.mk b/package/mtools/mtools.mk
>> index 5db548fad9..1a6218831e 100644
>> --- a/package/mtools/mtools.mk
>> +++ b/package/mtools/mtools.mk
>> @@ -13,9 +13,13 @@ MTOOLS_CONF_OPTS = --without-x
>>  # info documentation not needed
>>  MTOOLS_CONF_ENV = \
>>  	ac_cv_func_setpgrp_void=yes \
>> +	ac_cv_lib_bsd_gethostbyname=no \
>> +	ac_cv_lib_bsd_main=no \
> 
> ... but why no add an optional dependency on libbds for the target mtools
> package? In case we build target libbsd anyway, having mtools use libbsd would
> presumably reduce the binary size of mtools somewhat, isn't it?

From the configure script:

    # The functions gethostbyname, getservbyname, and inet_addr are
    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.

On Buildroot gethostbyname is provided by glibc/uClibc/musl.
Baruch Siach Nov. 28, 2017, 12:52 p.m. UTC | #3
Hi Carlos,

On Tue, Nov 28, 2017 at 10:36:02AM -0200, Carlos Santos wrote:
> > From: "Baruch Siach" <baruch@tkos.co.il>
> > To: "Carlos Santos" <casantos@datacom.ind.br>
> > Cc: buildroot@buildroot.org
> > Sent: Tuesday, November 28, 2017 10:03:27 AM
> > Subject: Re: [Buildroot] [PATCH] mtools: do not link to libbsd
> 
> [...]
> >> diff --git a/package/mtools/mtools.mk b/package/mtools/mtools.mk
> >> index 5db548fad9..1a6218831e 100644
> >> --- a/package/mtools/mtools.mk
> >> +++ b/package/mtools/mtools.mk
> >> @@ -13,9 +13,13 @@ MTOOLS_CONF_OPTS = --without-x
> >>  # info documentation not needed
> >>  MTOOLS_CONF_ENV = \
> >>  	ac_cv_func_setpgrp_void=yes \
> >> +	ac_cv_lib_bsd_gethostbyname=no \
> >> +	ac_cv_lib_bsd_main=no \
> > 
> > ... but why no add an optional dependency on libbds for the target mtools
> > package? In case we build target libbsd anyway, having mtools use libbsd would
> > presumably reduce the binary size of mtools somewhat, isn't it?
> 
> From the configure script:
> 
>     # The functions gethostbyname, getservbyname, and inet_addr are
>     # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
> 
> On Buildroot gethostbyname is provided by glibc/uClibc/musl.

So if I understand correctly, mtools unnecessarily adds libbsd in a DT_NEEDED 
filed of its dynamic section, but it does not actually use anything from 
libbsd under Linux. Is that correct?

If so, please add this explanation in the commit log.

baruch
diff mbox series

Patch

diff --git a/package/mtools/mtools.mk b/package/mtools/mtools.mk
index 5db548fad9..1a6218831e 100644
--- a/package/mtools/mtools.mk
+++ b/package/mtools/mtools.mk
@@ -13,9 +13,13 @@  MTOOLS_CONF_OPTS = --without-x
 # info documentation not needed
 MTOOLS_CONF_ENV = \
 	ac_cv_func_setpgrp_void=yes \
+	ac_cv_lib_bsd_gethostbyname=no \
+	ac_cv_lib_bsd_main=no \
 	ac_cv_path_INSTALL_INFO=
 
 HOST_MTOOLS_CONF_ENV = \
+	ac_cv_lib_bsd_gethostbyname=no \
+	ac_cv_lib_bsd_main=no \
 	ac_cv_path_INSTALL_INFO=
 
 # link with iconv if enabled