diff mbox

[v5,11/19] infra-libtool: pass sysroot information to libtool

Message ID 1482241596-31688-12-git-send-email-jezz@sysmic.org
State Changes Requested
Headers show

Commit Message

Jérôme Pouiller Dec. 20, 2016, 1:46 p.m. UTC
libtool include support for cross-compilation since v1.5. In order to enable it,
we have to pass `--with-sysroot' to `configure' script. With this option,
autoconf fill `$lt_sysroot' and libtool will search libraries in `$lt_sysroot'
subtree.

Note Yocto force `$lt_sysroot' even if --with-sysroot is not provided:
  http://git.yoctoproject.org/cgit.cgi/poky/tree/meta/recipes-devtools/libtool/libtool/fix-resolve-lt-sysroot.patch

Signed-off-by: Jérôme Pouiller <jezz@sysmic.org>
---
 package/pkg-autotools.mk | 1 +
 1 file changed, 1 insertion(+)

Comments

Arnout Vandecappelle March 18, 2017, 5:21 p.m. UTC | #1
Hi Jerome,

 Please wrap your commit messages at 72 columns (vim wrap will do that for you :-).

On 20-12-16 14:46, Jérôme Pouiller wrote:
> libtool include support for cross-compilation since v1.5. In order to enable it,
                 ^s

> we have to pass `--with-sysroot' to `configure' script. With this option,
                                     ^the

> autoconf fill `$lt_sysroot' and libtool will search libraries in `$lt_sysroot'
               ^s                                                 ^the

> subtree.
> 
> Note Yocto force `$lt_sysroot' even if --with-sysroot is not provided:
      ^:          ^s
>   http://git.yoctoproject.org/cgit.cgi/poky/tree/meta/recipes-devtools/libtool/libtool/fix-resolve-lt-sysroot.patch

 What a horrible hack is that patch, turning 'yes' into 'no'...

> 
> Signed-off-by: Jérôme Pouiller <jezz@sysmic.org>

Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
(tested on a static arm musl build with about 20 packages)


 Regards,
 Arnout

> ---
>  package/pkg-autotools.mk | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk
> index f7b8488..bb20eec 100644
> --- a/package/pkg-autotools.mk
> +++ b/package/pkg-autotools.mk
> @@ -192,6 +192,7 @@ define $(2)_CONFIGURE_CMDS
>  		--sysconfdir=/etc \
>  		--localstatedir=/var \
>  		--program-prefix="" \
> +		--with-sysroot \
>  		--disable-gtk-doc \
>  		--disable-gtk-doc-html \
>  		--disable-doc \
>
Thomas Petazzoni March 20, 2017, 9:52 p.m. UTC | #2
Hello,

On Tue, 20 Dec 2016 14:46:28 +0100, Jérôme Pouiller wrote:

> libtool include support for cross-compilation since v1.5.

Are you sure this is true?

In the release notes of libtool v2.4
(https://savannah.gnu.org/forum/forum.php?forum_id=6525), I see:

"""


New in 2.4 2010-09-22:

    New features:

- Sysroot support. This allows you to build cross-compiled packages
with the same prefix that will be used on the destination machine,
and still find dependent libraries under the compiler's "sysroot".
Without sysroot support, paths internal to the build system may leak
into the product of the build.

Sysroot support is disabled unless the --with-sysroot configure
option is passed to configure, because .la files generated with
sysroot support will not be usable in general with older Libtools. 

"""

So are you sure that this feature didn't appear in libtool 2.4 ?

Best regards,

Thomas
Arnout Vandecappelle March 21, 2017, 11:57 p.m. UTC | #3
On 20-03-17 22:52, Thomas Petazzoni wrote:
> Hello,
> 
> On Tue, 20 Dec 2016 14:46:28 +0100, Jérôme Pouiller wrote:
> 
>> libtool include support for cross-compilation since v1.5.
> 
> Are you sure this is true?
> 
> In the release notes of libtool v2.4
> (https://savannah.gnu.org/forum/forum.php?forum_id=6525), I see:
> 
> """
> 
> 
> New in 2.4 2010-09-22:
> 
>     New features:
> 
> - Sysroot support. This allows you to build cross-compiled packages
> with the same prefix that will be used on the destination machine,
> and still find dependent libraries under the compiler's "sysroot".
> Without sysroot support, paths internal to the build system may leak
> into the product of the build.
> 
> Sysroot support is disabled unless the --with-sysroot configure
> option is passed to configure, because .la files generated with
> sysroot support will not be usable in general with older Libtools. 
> 
> """
> 
> So are you sure that this feature didn't appear in libtool 2.4 ?

 Yeah, looks like it. E.g. speex has libtool 1.5, and it doesn't have any
sysroot support (not in configure, not in ltmain.sh).

 Obviously, *this* patch is not affected by it - it certainly doesn't hurt to
pass the --with-sysroot configure option. It's only patches 12+13 that we
wouldn't be able to remove.

 However, considering:

- most packages install things in /usr/lib, which is already searched by default;

- most packages use libtool 2.4 or later,

I think we can take the risk. The autobuilders will discover any issues, which
we can fix per package (e.g. with AUTORECONF = YES).

 Regards,
 Arnout
Thomas Petazzoni March 22, 2017, 8:14 a.m. UTC | #4
Hello,

On Wed, 22 Mar 2017 00:57:39 +0100, Arnout Vandecappelle wrote:

> > So are you sure that this feature didn't appear in libtool 2.4 ?  
> 
>  Yeah, looks like it. E.g. speex has libtool 1.5, and it doesn't have any
> sysroot support (not in configure, not in ltmain.sh).
> 
>  Obviously, *this* patch is not affected by it - it certainly doesn't hurt to
> pass the --with-sysroot configure option. It's only patches 12+13 that we
> wouldn't be able to remove.
> 
>  However, considering:
> 
> - most packages install things in /usr/lib, which is already searched by default;
> 
> - most packages use libtool 2.4 or later,
> 
> I think we can take the risk. The autobuilders will discover any issues, which
> we can fix per package (e.g. with AUTORECONF = YES).

Since I would prefer to avoid autoreconfiguring many packages, it would
be useful to know how many packages are still using libtool versions
earlier than 2.4.

Thomas
Arnout Vandecappelle March 22, 2017, 9:07 a.m. UTC | #5
On 22-03-17 09:14, Thomas Petazzoni wrote:
> Hello,
> 
> On Wed, 22 Mar 2017 00:57:39 +0100, Arnout Vandecappelle wrote:
> 
>>> So are you sure that this feature didn't appear in libtool 2.4 ?  
>>
>>  Yeah, looks like it. E.g. speex has libtool 1.5, and it doesn't have any
>> sysroot support (not in configure, not in ltmain.sh).
>>
>>  Obviously, *this* patch is not affected by it - it certainly doesn't hurt to
>> pass the --with-sysroot configure option. It's only patches 12+13 that we
>> wouldn't be able to remove.
>>
>>  However, considering:
>>
>> - most packages install things in /usr/lib, which is already searched by default;
>>
>> - most packages use libtool 2.4 or later,
>>
>> I think we can take the risk. The autobuilders will discover any issues, which
>> we can fix per package (e.g. with AUTORECONF = YES).
> 
> Since I would prefer to avoid autoreconfiguring many packages, it would
> be useful to know how many packages are still using libtool versions
> earlier than 2.4.

 I'm doing an allyesconfig download and will check the ltmain.sh in all the
tarballs. It will take some time before that finishes.

 Regards,
 Arnout
Jérôme Pouiller March 22, 2017, 9:20 a.m. UTC | #6
Hello,

On Wednesday 22 March 2017 09:14:37 CET Thomas Petazzoni wrote:
> Hello,
> 
> On Wed, 22 Mar 2017 00:57:39 +0100, Arnout Vandecappelle wrote:
> 
> > > So are you sure that this feature didn't appear in libtool 2.4 ?  
> > 
> >  Yeah, looks like it. E.g. speex has libtool 1.5, and it doesn't have any
> > sysroot support (not in configure, not in ltmain.sh).
> > 
> >  Obviously, *this* patch is not affected by it - it certainly doesn't hurt
> >  to pass the --with-sysroot configure option. It's only patches 12+13 that
> >  we wouldn't be able to remove.
> > 
> >  However, considering:
> > 
> > - most packages install things in /usr/lib, which is already searched by
> > default;
> > 
> > - most packages use libtool 2.4 or later,
> > 
> > I think we can take the risk. The autobuilders will discover any issues,
> > which we can fix per package (e.g. with AUTORECONF = YES).
> 
> Since I would prefer to avoid autoreconfiguring many packages, it would
> be useful to know how many packages are still using libtool versions
> earlier than 2.4.

This is precisely what I wanted to known before to replying.

I extracted all (or nearly all) packages existing in Buildroot. I found 269 
packages that use libool:

$ grep -ho 'VERSION="[0-9.]*' */ltmain.sh  | sort | uniq -c | sort -n
      1 VERSION="1.5.24
      1 VERSION="2.2.4
      3 VERSION="1.5.22
      5 VERSION="1.5.26
     13 VERSION="2.2.6
     29 VERSION="2.4.6
     67 VERSION="2.4.2

There 23 packages that use libtool < 2.4:
  - bellagio
  - celt051
  - dbus-cpp
  - eventlog
  - gtk2-engines
  - lesstif
  - libargtable2
  - libesmtp
  - liblo
  - libmhash
  - libnetfilter_conntrack
  - libnetfilter_log
  - libnfnetlink
  - libpthread-stubs
  - lite
  - log4cxx
  - matchbox-lib
  - metacity
  - sdl_sound
  - sylpheed
  - xapp_xinput-calibrator
  - xdriver_xf86-input-tslib
  - xdriver_xf86-video-imx

4 of them already call autoreconf: bellagio, dbus-cpp, libnetfilter_log, 
libnfnetlink.

I am going to create a configuration with all of these packages.

++
Arnout Vandecappelle March 22, 2017, 10:05 a.m. UTC | #7
On 22-03-17 10:20, Jérôme Pouiller wrote:
> Hello,
> 
> On Wednesday 22 March 2017 09:14:37 CET Thomas Petazzoni wrote:
>> Hello,
>>
>> On Wed, 22 Mar 2017 00:57:39 +0100, Arnout Vandecappelle wrote:
>>
>>>> So are you sure that this feature didn't appear in libtool 2.4 ?  
>>>
>>>  Yeah, looks like it. E.g. speex has libtool 1.5, and it doesn't have any
>>> sysroot support (not in configure, not in ltmain.sh).
>>>
>>>  Obviously, *this* patch is not affected by it - it certainly doesn't hurt
>>>  to pass the --with-sysroot configure option. It's only patches 12+13 that
>>>  we wouldn't be able to remove.
>>>
>>>  However, considering:
>>>
>>> - most packages install things in /usr/lib, which is already searched by
>>> default;
>>>
>>> - most packages use libtool 2.4 or later,
>>>
>>> I think we can take the risk. The autobuilders will discover any issues,
>>> which we can fix per package (e.g. with AUTORECONF = YES).
>>
>> Since I would prefer to avoid autoreconfiguring many packages, it would
>> be useful to know how many packages are still using libtool versions
>> earlier than 2.4.
> 
> This is precisely what I wanted to known before to replying.
> 
> I extracted all (or nearly all) packages existing in Buildroot. I found 269 
> packages that use libool:
> 
> $ grep -ho 'VERSION="[0-9.]*' */ltmain.sh  | sort | uniq -c | sort -n
>       1 VERSION="1.5.24
>       1 VERSION="2.2.4
>       3 VERSION="1.5.22
>       5 VERSION="1.5.26
>      13 VERSION="2.2.6
>      29 VERSION="2.4.6
>      67 VERSION="2.4.2

 Your command isn't good enough... It skips ltmain.sh which are not in the top
directory, and it skips the ones where VERSION isn't quoted. I got quite a few more:

$ for i in *.tar*; do tar tf $i | grep ltmain.sh | xargs -r tar -xf $i
--to-command="grep ^VERSION= | { grep -v '[^.]2\.4' && printf ' @@$i\\r'; } | tr
'\\n\\r' ' \\n'"; done

VERSION=1.5.26  @@CEGUI-0.6.2b.tar.gz
VERSION="1.5.26 Debian 1.5.26-1ubuntu1"  @@LiTE-0.8.10.tar.gz
VERSION=2.2.6  @@SDL-1.2.15.tar.gz
VERSION=2.2.6  @@SDL2_image-2.0.1.tar.gz
VERSION=2.2.6  @@SDL2_ttf-2.0.14.tar.gz
VERSION=2.2.6  @@SDL_image-1.2.12.tar.gz
VERSION=2.2.6  @@SDL_mixer-1.2.12.tar.gz
VERSION=2.2.6  @@SDL_net-1.2.8.tar.gz
VERSION="1.5.24 Debian 1.5.24-1ubuntu1"  @@SDL_sound-1.0.3.tar.gz
VERSION=2.2.6  @@SDL_ttf-2.0.11.tar.gz
VERSION="1.5.22 Debian 1.5.22-2"  @@apache-log4cxx-0.10.0.tar.gz
VERSION=2.2.6b  @@arago-2011.09-armv5te-linux-gnueabi-sdk.tar.bz2
VERSION=2.2.6b  @@arago-2011.09-armv7a-linux-gnueabi-sdk.tar.bz2
VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@argtable2-13.tar.gz
VERSION=2.2.10  @@axfsutils-64886703fdff6cfc64eb20fbe7d7295bbeec867b.tar.gz
VERSION=2.2.6  @@beecrypt-4.2.1.tar.gz
VERSION=2.2.6b  @@bind-9.11.0-P3.tar.gz
VERSION=1.3.5  @@bind-9.11.0-P3.tar.gz
VERSION=2.2.7a  @@binutils-2.26.1.tar.bz2
VERSION=2.2.7a  @@binutils-2.27.tar.bz2
VERSION=1.5.22  @@boost_1_63_0.tar.bz2
VERSION="1.5.26 Debian 1.5.26-4"  @@celt-0.5.1.3.tar.gz
VERSION=1.5.22  @@clamav-0.99.2.tar.gz
VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@collectd-5.5.1.tar.bz2
VERSION="1.5.26 Debian 1.5.26-1ubuntu1"  @@curlftpfs-0.9.2.tar.gz
VERSION=2.2.6b  @@db-5.3.28.NC.tar.gz
VERSION=2.2.6  @@db-5.3.28.NC.tar.gz
VERSION=1.5.22  @@db-5.3.28.NC.tar.gz
VERSION="2.2.6 Debian-2.2.6a-1ubuntu1"  @@eventlog_0.2.12.tar.gz
VERSION="1.5.22 Debian 1.5.22-4"  @@faad2-2.7.tar.gz
VERSION=1.4  @@fcgi-2.4.0.tar.gz
VERSION=1.5.24  @@gamin-0.1.10.tar.gz
VERSION=2.2.7a  @@gcc-4.9.4.tar.bz2
VERSION=2.2.7a  @@gcc-4.9.4.tar.bz2
VERSION=2.2.7a  @@gcc-4.9.4.tar.bz2
VERSION=1.5.16  @@gcc-4.9.4.tar.bz2
VERSION=2.2.7a  @@gcc-5.4.0.tar.bz2
VERSION=2.2.7a  @@gcc-5.4.0.tar.bz2
VERSION=2.2.7a  @@gcc-5.4.0.tar.bz2
VERSION=1.5.16  @@gcc-5.4.0.tar.bz2
VERSION=2.2.7a  @@gcc-6.2.0.tar.bz2
VERSION=2.2.7a  @@gcc-6.2.0.tar.bz2


VERSION=2.2.7a  @@gcc-6.2.0.tar.bz2


VERSION=1.5.16  @@gcc-6.2.0.tar.bz2


VERSION=2.2.7a  @@gdb-7.10.1.tar.xz
VERSION=2.2.7a  @@gdb-7.11.1.tar.xz
VERSION="1.5.26 Debian 1.5.26-4"  @@genpart-1.0.2.tar.bz2
VERSION=1.4e  @@gettext-0.19.8.1.tar.xz
VERSION="2.2.6b Debian-2.2.6b-2ubuntu3"  @@gmpc-11.8.16.tar.gz
VERSION=2.2.6b  @@google-breakpad-7515ab13768c7edc09f0f2ec2354dc6c928239a6.tar.gz
VERSION="2.2.6b Debian-2.2.6b-2"  @@gtk-engines-2.20.2.tar.bz2
VERSION=1.5.2  @@ijs-0.35.tar.bz2
VERSION=1.5.20  @@ipkg-0.99.163.tar.gz
VERSION=1.5.22  @@jasper-1.900.1.tar.bz2
VERSION=2.2.6b  @@json-c-0.11.tar.gz
VERSION="1.5.26 Debian 1.5.26-4"  @@kodi-16.1-Jarvis.tar.gz
VERSION=2.2.10  @@lame-3.99.5.tar.gz
VERSION=2.2.6  @@libart_lgpl-2.3.21.tar.gz
VERSION=2.2.4  @@libass-0.13.1.tar.xz
VERSION=1.5.6  @@libcdaudio-0.99.12p2.tar.gz
VERSION=2.2.6  @@libcddb-1.3.2.tar.bz2
VERSION=2.2.6  @@libdaemon-0.14.tar.gz
VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@libdbus-c++-0.9.0.tar.gz
VERSION=2.2.10  @@libdmtx-0.7.4.tar.gz
VERSION=1.5.6  @@libdnet-1.11.tar.gz
VERSION="2.2.6b Debian-2.2.6b-2"  @@libeXosip2-3.6.0.tar.gz
VERSION="2.2.6b Debian-2.2.6b-2ubuntu3"  @@libee-0.4.1.tar.gz
VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@libesmtp-1.0.6.tar.bz2
VERSION=1.5.6  @@libfakekey-0.1.tar.bz2
VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@libgeotiff-1.4.0.tar.gz
VERSION=1.5.26  @@libglade-2.6.4.tar.bz2
VERSION=1.5.22  @@libhid-0.2.16.tar.gz
VERSION=1.5.2  @@libid3tag-0.15.1b.tar.gz
VERSION="2.2.4 Debian-2.2.4-0ubuntu4"  @@liblo-0.26.tar.gz
VERSION=1.5.22  @@liblog4c-localtime-v1.0.tar.gz
VERSION=1.5.2  @@libmad-0.15.1b.tar.gz
VERSION="1.5.22 Debian 1.5.22-2"  @@libmatchbox-1.9.tar.bz2
VERSION=1.5.22  @@libmcrypt-2.5.8.tar.gz
VERSION="2.2.6b Debian-2.2.6b-2"  @@libmnl-1.0.3.tar.bz2
VERSION="2.2.6b Debian-2.2.6b-2ubuntu3"  @@libmpd-11.8.17.tar.gz
VERSION="1.5.26 Debian 1.5.26-4"  @@libmpeg2-0.5.1.tar.gz
VERSION="2.2.6b Debian-2.2.6b-2"  @@libnetfilter_conntrack-1.0.6.tar.bz2
VERSION="2.2.6b Debian-2.2.6b-2"  @@libnetfilter_log-1.0.1.tar.bz2
VERSION="2.2.6b Debian-2.2.6b-2"  @@libnetfilter_log-1.0.1.tar.bz2
VERSION="2.2.6b Debian-2.2.6b-2"  @@libnfnetlink-1.0.1.tar.bz2
VERSION="2.2.6b Debian-2.2.6b-2"  @@libosip2-3.6.0.tar.gz
VERSION="2.2.6 Debian-2.2.6a-4"  @@libpthread-stubs-0.3.tar.bz2
VERSION=1.5.6  @@librsync-0.9.7.tar.gz
VERSION="1.5.22 Debian 1.5.22-2"  @@libsexy-0.1.11.tar.gz
VERSION=1.5.14  @@libsvg-0.1.4.tar.gz
VERSION=1.5.14  @@libsvg-cairo-0.1.6.tar.gz
VERSION=2.2.6  @@libtheora-1.1.1.tar.xz
VERSION=1.4.3  @@libunwind-1.1.tar.gz
VERSION=2.2.10  @@lzop-1.03.tar.gz
VERSION=1.5.2  @@madplay-0.15.2b.tar.gz
VERSION=1.5.6  @@mb-applet-startup-monitor-0.1.tar.bz2
VERSION="2.2.4 Debian-2.2.4-0ubuntu4"  @@mcrypt-2.6.8.tar.gz
VERSION=2.2.6b  @@msgpack-0.5.4.tar.gz
VERSION=2.2.6  @@mysql-5.1.73.tar.gz
VERSION=1.5.8  @@ngrep-1.45.tar.bz2
VERSION=1.5.26  @@php-7.1.3.tar.xz
VERSION=1.5.22  @@pjproject-2.4.5.tar.bz2
VERSION=2.2.6  @@popt-1.16.tar.gz
VERSION=1.3.4  @@privoxy-3.0.26-stable-src.tar.gz
VERSION="2.2.6 Debian-2.2.6a-1ubuntu1"  @@proftpd-1.3.5d.tar.gz
VERSION=1.5.26  @@proftpd-1.3.5d.tar.gz
VERSION="2.2.6 Debian-2.2.6a-1ubuntu1"  @@proftpd-1.3.5d.tar.gz
VERSION=2.2.6  @@pthsem_2.0.8.tar.gz
VERSION=2.2.6  @@qt-everywhere-opensource-src-4.8.7.tar.gz
VERSION=2.2.7a  @@rustc-1.10.0-src.tar.gz
VERSION=1.5.6  @@sidplay-libs-2.1.1.tar.gz
VERSION=1.5.6  @@sidplay-libs-2.1.1.tar.gz
VERSION=1.5.6  @@sidplay-libs-2.1.1.tar.gz
VERSION=1.4  @@sidplay-libs-2.1.1.tar.gz
VERSION=1.5.6  @@sidplay-libs-2.1.1.tar.gz
VERSION=1.5.6  @@sidplay-libs-2.1.1.tar.gz
VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@sofia-sip-1.12.11.tar.gz
VERSION="1.5.22 Debian 1.5.22-4"  @@speex-1.2rc1.tar.gz
VERSION=2.2.6  @@sqlcipher-v3.2.0.tar.gz
VERSION=1.5.6  @@startup-notification-0.9.tar.gz
VERSION=1.5.22  @@sysfsutils-2.1.0.tar.gz
VERSION=1.5.22  @@szip-2.1.tar.gz
VERSION=1.5.24  @@tn5250-0.17.4.tar.gz
VERSION=1.5.6  @@ucl-1.03.tar.gz
VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@unixODBC-2.3.2.tar.gz
VERSION="2.2.6 Debian-2.2.6a-4"  @@vorbis-tools-1.4.0.tar.gz
VERSION=1.4.3  @@xcursor-transparent-theme-0.1.1.tar.gz
VERSION="1.5.26 Debian 1.5.26-4"  @@xf86-input-tslib-0.0.6.tar.bz2
VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@xinput_calibrator-0.7.5.tar.gz

 That's 109 tarballs with some older libtool.

 Note that this just iterates over the tarballs that I have in my download
directory, there may be some old versions of packages in there. Anyway, I think
109 out of the 2150 tarballs in that directory is still extremely small.

 Note also that in many of these, the ltmain will be in some subdirectory
containing bundled source that we don't even use.

 Note, finally, that there are also quite a few host-only packages in there
(e.g. gcc, but that one is special because it also builds stuff for the target.
It doesn't seem to install .la files, however).


> There 23 packages that use libtool < 2.4:
>   - bellagio
>   - celt051
>   - dbus-cpp
>   - eventlog
>   - gtk2-engines
>   - lesstif
>   - libargtable2
>   - libesmtp
>   - liblo
>   - libmhash
>   - libnetfilter_conntrack
>   - libnetfilter_log
>   - libnfnetlink
>   - libpthread-stubs
>   - lite
>   - log4cxx
>   - matchbox-lib
>   - metacity
>   - sdl_sound
>   - sylpheed
>   - xapp_xinput-calibrator
>   - xdriver_xf86-input-tslib
>   - xdriver_xf86-video-imx
> 
> 4 of them already call autoreconf: bellagio, dbus-cpp, libnetfilter_log, 
> libnfnetlink.
> 
> I am going to create a configuration with all of these packages.

 That's not necessarily sufficient: the generated .la file could be wrong, so
you have to check if packages that use it are still working correctly.
Alternatively, just check all the .la files.

 Regards,
 Arnout
Arnout Vandecappelle March 22, 2017, 9:28 p.m. UTC | #8
On 22-03-17 11:05, Arnout Vandecappelle wrote:
> 
> 
> On 22-03-17 10:20, Jérôme Pouiller wrote:
>> Hello,
>>
>> On Wednesday 22 March 2017 09:14:37 CET Thomas Petazzoni wrote:
>>> Hello,
>>>
>>> On Wed, 22 Mar 2017 00:57:39 +0100, Arnout Vandecappelle wrote:
>>>
>>>>> So are you sure that this feature didn't appear in libtool 2.4 ?  
>>>>
>>>>  Yeah, looks like it. E.g. speex has libtool 1.5, and it doesn't have any
>>>> sysroot support (not in configure, not in ltmain.sh).
>>>>
>>>>  Obviously, *this* patch is not affected by it - it certainly doesn't hurt
>>>>  to pass the --with-sysroot configure option. It's only patches 12+13 that
>>>>  we wouldn't be able to remove.
>>>>
>>>>  However, considering:
>>>>
>>>> - most packages install things in /usr/lib, which is already searched by
>>>> default;
>>>>
>>>> - most packages use libtool 2.4 or later,
>>>>
>>>> I think we can take the risk. The autobuilders will discover any issues,
>>>> which we can fix per package (e.g. with AUTORECONF = YES).

 By the way, this series also *fixes* issues. E.g. I couldn't reproduce
http://autobuild.buildroot.net/results/e8c6bdc314b9a8d5de303633a3abd7b7e44beb2e
after applying this series, whereas I could reproduce it before.

 Regards,
 Arnout

>>>
>>> Since I would prefer to avoid autoreconfiguring many packages, it would
>>> be useful to know how many packages are still using libtool versions
>>> earlier than 2.4.
>>
>> This is precisely what I wanted to known before to replying.
>>
>> I extracted all (or nearly all) packages existing in Buildroot. I found 269 
>> packages that use libool:
>>
>> $ grep -ho 'VERSION="[0-9.]*' */ltmain.sh  | sort | uniq -c | sort -n
>>       1 VERSION="1.5.24
>>       1 VERSION="2.2.4
>>       3 VERSION="1.5.22
>>       5 VERSION="1.5.26
>>      13 VERSION="2.2.6
>>      29 VERSION="2.4.6
>>      67 VERSION="2.4.2
> 
>  Your command isn't good enough... It skips ltmain.sh which are not in the top
> directory, and it skips the ones where VERSION isn't quoted. I got quite a few more:
> 
> $ for i in *.tar*; do tar tf $i | grep ltmain.sh | xargs -r tar -xf $i
> --to-command="grep ^VERSION= | { grep -v '[^.]2\.4' && printf ' @@$i\\r'; } | tr
> '\\n\\r' ' \\n'"; done
> 
> VERSION=1.5.26  @@CEGUI-0.6.2b.tar.gz
> VERSION="1.5.26 Debian 1.5.26-1ubuntu1"  @@LiTE-0.8.10.tar.gz
> VERSION=2.2.6  @@SDL-1.2.15.tar.gz
> VERSION=2.2.6  @@SDL2_image-2.0.1.tar.gz
> VERSION=2.2.6  @@SDL2_ttf-2.0.14.tar.gz
> VERSION=2.2.6  @@SDL_image-1.2.12.tar.gz
> VERSION=2.2.6  @@SDL_mixer-1.2.12.tar.gz
> VERSION=2.2.6  @@SDL_net-1.2.8.tar.gz
> VERSION="1.5.24 Debian 1.5.24-1ubuntu1"  @@SDL_sound-1.0.3.tar.gz
> VERSION=2.2.6  @@SDL_ttf-2.0.11.tar.gz
> VERSION="1.5.22 Debian 1.5.22-2"  @@apache-log4cxx-0.10.0.tar.gz
> VERSION=2.2.6b  @@arago-2011.09-armv5te-linux-gnueabi-sdk.tar.bz2
> VERSION=2.2.6b  @@arago-2011.09-armv7a-linux-gnueabi-sdk.tar.bz2
> VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@argtable2-13.tar.gz
> VERSION=2.2.10  @@axfsutils-64886703fdff6cfc64eb20fbe7d7295bbeec867b.tar.gz
> VERSION=2.2.6  @@beecrypt-4.2.1.tar.gz
> VERSION=2.2.6b  @@bind-9.11.0-P3.tar.gz
> VERSION=1.3.5  @@bind-9.11.0-P3.tar.gz
> VERSION=2.2.7a  @@binutils-2.26.1.tar.bz2
> VERSION=2.2.7a  @@binutils-2.27.tar.bz2
> VERSION=1.5.22  @@boost_1_63_0.tar.bz2
> VERSION="1.5.26 Debian 1.5.26-4"  @@celt-0.5.1.3.tar.gz
> VERSION=1.5.22  @@clamav-0.99.2.tar.gz
> VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@collectd-5.5.1.tar.bz2
> VERSION="1.5.26 Debian 1.5.26-1ubuntu1"  @@curlftpfs-0.9.2.tar.gz
> VERSION=2.2.6b  @@db-5.3.28.NC.tar.gz
> VERSION=2.2.6  @@db-5.3.28.NC.tar.gz
> VERSION=1.5.22  @@db-5.3.28.NC.tar.gz
> VERSION="2.2.6 Debian-2.2.6a-1ubuntu1"  @@eventlog_0.2.12.tar.gz
> VERSION="1.5.22 Debian 1.5.22-4"  @@faad2-2.7.tar.gz
> VERSION=1.4  @@fcgi-2.4.0.tar.gz
> VERSION=1.5.24  @@gamin-0.1.10.tar.gz
> VERSION=2.2.7a  @@gcc-4.9.4.tar.bz2
> VERSION=2.2.7a  @@gcc-4.9.4.tar.bz2
> VERSION=2.2.7a  @@gcc-4.9.4.tar.bz2
> VERSION=1.5.16  @@gcc-4.9.4.tar.bz2
> VERSION=2.2.7a  @@gcc-5.4.0.tar.bz2
> VERSION=2.2.7a  @@gcc-5.4.0.tar.bz2
> VERSION=2.2.7a  @@gcc-5.4.0.tar.bz2
> VERSION=1.5.16  @@gcc-5.4.0.tar.bz2
> VERSION=2.2.7a  @@gcc-6.2.0.tar.bz2
> VERSION=2.2.7a  @@gcc-6.2.0.tar.bz2
> 
> 
> VERSION=2.2.7a  @@gcc-6.2.0.tar.bz2
> 
> 
> VERSION=1.5.16  @@gcc-6.2.0.tar.bz2
> 
> 
> VERSION=2.2.7a  @@gdb-7.10.1.tar.xz
> VERSION=2.2.7a  @@gdb-7.11.1.tar.xz
> VERSION="1.5.26 Debian 1.5.26-4"  @@genpart-1.0.2.tar.bz2
> VERSION=1.4e  @@gettext-0.19.8.1.tar.xz
> VERSION="2.2.6b Debian-2.2.6b-2ubuntu3"  @@gmpc-11.8.16.tar.gz
> VERSION=2.2.6b  @@google-breakpad-7515ab13768c7edc09f0f2ec2354dc6c928239a6.tar.gz
> VERSION="2.2.6b Debian-2.2.6b-2"  @@gtk-engines-2.20.2.tar.bz2
> VERSION=1.5.2  @@ijs-0.35.tar.bz2
> VERSION=1.5.20  @@ipkg-0.99.163.tar.gz
> VERSION=1.5.22  @@jasper-1.900.1.tar.bz2
> VERSION=2.2.6b  @@json-c-0.11.tar.gz
> VERSION="1.5.26 Debian 1.5.26-4"  @@kodi-16.1-Jarvis.tar.gz
> VERSION=2.2.10  @@lame-3.99.5.tar.gz
> VERSION=2.2.6  @@libart_lgpl-2.3.21.tar.gz
> VERSION=2.2.4  @@libass-0.13.1.tar.xz
> VERSION=1.5.6  @@libcdaudio-0.99.12p2.tar.gz
> VERSION=2.2.6  @@libcddb-1.3.2.tar.bz2
> VERSION=2.2.6  @@libdaemon-0.14.tar.gz
> VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@libdbus-c++-0.9.0.tar.gz
> VERSION=2.2.10  @@libdmtx-0.7.4.tar.gz
> VERSION=1.5.6  @@libdnet-1.11.tar.gz
> VERSION="2.2.6b Debian-2.2.6b-2"  @@libeXosip2-3.6.0.tar.gz
> VERSION="2.2.6b Debian-2.2.6b-2ubuntu3"  @@libee-0.4.1.tar.gz
> VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@libesmtp-1.0.6.tar.bz2
> VERSION=1.5.6  @@libfakekey-0.1.tar.bz2
> VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@libgeotiff-1.4.0.tar.gz
> VERSION=1.5.26  @@libglade-2.6.4.tar.bz2
> VERSION=1.5.22  @@libhid-0.2.16.tar.gz
> VERSION=1.5.2  @@libid3tag-0.15.1b.tar.gz
> VERSION="2.2.4 Debian-2.2.4-0ubuntu4"  @@liblo-0.26.tar.gz
> VERSION=1.5.22  @@liblog4c-localtime-v1.0.tar.gz
> VERSION=1.5.2  @@libmad-0.15.1b.tar.gz
> VERSION="1.5.22 Debian 1.5.22-2"  @@libmatchbox-1.9.tar.bz2
> VERSION=1.5.22  @@libmcrypt-2.5.8.tar.gz
> VERSION="2.2.6b Debian-2.2.6b-2"  @@libmnl-1.0.3.tar.bz2
> VERSION="2.2.6b Debian-2.2.6b-2ubuntu3"  @@libmpd-11.8.17.tar.gz
> VERSION="1.5.26 Debian 1.5.26-4"  @@libmpeg2-0.5.1.tar.gz
> VERSION="2.2.6b Debian-2.2.6b-2"  @@libnetfilter_conntrack-1.0.6.tar.bz2
> VERSION="2.2.6b Debian-2.2.6b-2"  @@libnetfilter_log-1.0.1.tar.bz2
> VERSION="2.2.6b Debian-2.2.6b-2"  @@libnetfilter_log-1.0.1.tar.bz2
> VERSION="2.2.6b Debian-2.2.6b-2"  @@libnfnetlink-1.0.1.tar.bz2
> VERSION="2.2.6b Debian-2.2.6b-2"  @@libosip2-3.6.0.tar.gz
> VERSION="2.2.6 Debian-2.2.6a-4"  @@libpthread-stubs-0.3.tar.bz2
> VERSION=1.5.6  @@librsync-0.9.7.tar.gz
> VERSION="1.5.22 Debian 1.5.22-2"  @@libsexy-0.1.11.tar.gz
> VERSION=1.5.14  @@libsvg-0.1.4.tar.gz
> VERSION=1.5.14  @@libsvg-cairo-0.1.6.tar.gz
> VERSION=2.2.6  @@libtheora-1.1.1.tar.xz
> VERSION=1.4.3  @@libunwind-1.1.tar.gz
> VERSION=2.2.10  @@lzop-1.03.tar.gz
> VERSION=1.5.2  @@madplay-0.15.2b.tar.gz
> VERSION=1.5.6  @@mb-applet-startup-monitor-0.1.tar.bz2
> VERSION="2.2.4 Debian-2.2.4-0ubuntu4"  @@mcrypt-2.6.8.tar.gz
> VERSION=2.2.6b  @@msgpack-0.5.4.tar.gz
> VERSION=2.2.6  @@mysql-5.1.73.tar.gz
> VERSION=1.5.8  @@ngrep-1.45.tar.bz2
> VERSION=1.5.26  @@php-7.1.3.tar.xz
> VERSION=1.5.22  @@pjproject-2.4.5.tar.bz2
> VERSION=2.2.6  @@popt-1.16.tar.gz
> VERSION=1.3.4  @@privoxy-3.0.26-stable-src.tar.gz
> VERSION="2.2.6 Debian-2.2.6a-1ubuntu1"  @@proftpd-1.3.5d.tar.gz
> VERSION=1.5.26  @@proftpd-1.3.5d.tar.gz
> VERSION="2.2.6 Debian-2.2.6a-1ubuntu1"  @@proftpd-1.3.5d.tar.gz
> VERSION=2.2.6  @@pthsem_2.0.8.tar.gz
> VERSION=2.2.6  @@qt-everywhere-opensource-src-4.8.7.tar.gz
> VERSION=2.2.7a  @@rustc-1.10.0-src.tar.gz
> VERSION=1.5.6  @@sidplay-libs-2.1.1.tar.gz
> VERSION=1.5.6  @@sidplay-libs-2.1.1.tar.gz
> VERSION=1.5.6  @@sidplay-libs-2.1.1.tar.gz
> VERSION=1.4  @@sidplay-libs-2.1.1.tar.gz
> VERSION=1.5.6  @@sidplay-libs-2.1.1.tar.gz
> VERSION=1.5.6  @@sidplay-libs-2.1.1.tar.gz
> VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@sofia-sip-1.12.11.tar.gz
> VERSION="1.5.22 Debian 1.5.22-4"  @@speex-1.2rc1.tar.gz
> VERSION=2.2.6  @@sqlcipher-v3.2.0.tar.gz
> VERSION=1.5.6  @@startup-notification-0.9.tar.gz
> VERSION=1.5.22  @@sysfsutils-2.1.0.tar.gz
> VERSION=1.5.22  @@szip-2.1.tar.gz
> VERSION=1.5.24  @@tn5250-0.17.4.tar.gz
> VERSION=1.5.6  @@ucl-1.03.tar.gz
> VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@unixODBC-2.3.2.tar.gz
> VERSION="2.2.6 Debian-2.2.6a-4"  @@vorbis-tools-1.4.0.tar.gz
> VERSION=1.4.3  @@xcursor-transparent-theme-0.1.1.tar.gz
> VERSION="1.5.26 Debian 1.5.26-4"  @@xf86-input-tslib-0.0.6.tar.bz2
> VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"  @@xinput_calibrator-0.7.5.tar.gz
> 
>  That's 109 tarballs with some older libtool.
> 
>  Note that this just iterates over the tarballs that I have in my download
> directory, there may be some old versions of packages in there. Anyway, I think
> 109 out of the 2150 tarballs in that directory is still extremely small.
> 
>  Note also that in many of these, the ltmain will be in some subdirectory
> containing bundled source that we don't even use.
> 
>  Note, finally, that there are also quite a few host-only packages in there
> (e.g. gcc, but that one is special because it also builds stuff for the target.
> It doesn't seem to install .la files, however).
> 
> 
>> There 23 packages that use libtool < 2.4:
>>   - bellagio
>>   - celt051
>>   - dbus-cpp
>>   - eventlog
>>   - gtk2-engines
>>   - lesstif
>>   - libargtable2
>>   - libesmtp
>>   - liblo
>>   - libmhash
>>   - libnetfilter_conntrack
>>   - libnetfilter_log
>>   - libnfnetlink
>>   - libpthread-stubs
>>   - lite
>>   - log4cxx
>>   - matchbox-lib
>>   - metacity
>>   - sdl_sound
>>   - sylpheed
>>   - xapp_xinput-calibrator
>>   - xdriver_xf86-input-tslib
>>   - xdriver_xf86-video-imx
>>
>> 4 of them already call autoreconf: bellagio, dbus-cpp, libnetfilter_log, 
>> libnfnetlink.
>>
>> I am going to create a configuration with all of these packages.
> 
>  That's not necessarily sufficient: the generated .la file could be wrong, so
> you have to check if packages that use it are still working correctly.
> Alternatively, just check all the .la files.
> 
>  Regards,
>  Arnout
>
Thomas Petazzoni March 22, 2017, 9:40 p.m. UTC | #9
Hello,

On Wed, 22 Mar 2017 22:28:27 +0100, Arnout Vandecappelle wrote:

> >>>> I think we can take the risk. The autobuilders will discover any issues,
> >>>> which we can fix per package (e.g. with AUTORECONF = YES).  
> 
>  By the way, this series also *fixes* issues. E.g. I couldn't reproduce
> http://autobuild.buildroot.net/results/e8c6bdc314b9a8d5de303633a3abd7b7e44beb2e
> after applying this series, whereas I could reproduce it before.

So it allows to have better .la files, that help with "transitive"
dependencies in static linking scenarios?

Also, you don't need to convince me that we need to use the libtool
sysroot support. Anything to cleanup/remove the libtool hacks that we
have is welcome, so this series is definitely welcome, and I'm not
trying to push back on it.

It's just that Jerome's assumption was that the sysroot support was in
libtool since 1.5, which is not the case, and the fact that it's only
there since libtool 2.4 and we have packages using earlier libtool
versions needs to be handled by the series.

Thomas
Thomas Petazzoni April 1, 2017, 4:39 p.m. UTC | #10
Hello,

On Mon, 20 Mar 2017 22:52:50 +0100, Thomas Petazzoni wrote:

> On Tue, 20 Dec 2016 14:46:28 +0100, Jérôme Pouiller wrote:
> 
> > libtool include support for cross-compilation since v1.5.  
> 
> Are you sure this is true?
> 
> In the release notes of libtool v2.4
> (https://savannah.gnu.org/forum/forum.php?forum_id=6525), I see:

So, because of this issue, I've marked patches 11 to 19 from your
series as "Changes Requested". Things are indeed not as simple as "use
sysroot support from libtool".

Of course, it would definitely be nice to continue working on this
topic, and benefit from libtool sysroot support when available.

Best regards,

Thomas
diff mbox

Patch

diff --git a/package/pkg-autotools.mk b/package/pkg-autotools.mk
index f7b8488..bb20eec 100644
--- a/package/pkg-autotools.mk
+++ b/package/pkg-autotools.mk
@@ -192,6 +192,7 @@  define $(2)_CONFIGURE_CMDS
 		--sysconfdir=/etc \
 		--localstatedir=/var \
 		--program-prefix="" \
+		--with-sysroot \
 		--disable-gtk-doc \
 		--disable-gtk-doc-html \
 		--disable-doc \