Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Fri, 10 Jan 2020 15:34:13 +0300
From: Alexander Scherbatiy <alexander.scherbatiy@...l-sw.com>
To: musl@...ts.openwall.com, Rich Felker <dalias@...c.org>
Subject: Re: gnu autoconf AC_CANONICAL_BUILD returns linux-gnu build_os
 on Alpine Linux 3.10.3

On 30.12.2019 19:54, Rich Felker wrote:

> On Mon, Dec 30, 2019 at 02:24:56PM +0300, Scherbatiy Alexander wrote:
>> Hello,
>>
>> gnu autoconf AC_CANONICAL_BUILD returns linux-gnu build_os variable on Alpine Linux 3.10.3.
>>
>> Here is a snippet from the configure.ac file which I tested in docker alpine:3.10.3
>> ----------------
>> AC_CANONICAL_BUILD
>> AC_MSG_NOTICE([build_os=$build_os])
>> ----------------
>> Output:
>> ----------------
>> checking build system type... x86_64-pc-linux-gnu
>> configure: build_os=linux-gnu
>> ----------------
>>
>> The same code on Alpine 3.8.4 (docker alpine:3.8 ) returns:
>> ----------------
>> checking build system type... x86_64-pc-linux-musl
>> configure: build_os=linux-musl
>> ----------------
>>
>> Is it expected that build_os is detected as linux-gnu instead of linux-musl on Alpine 3.0.3?
> Where was autoconf run to generate the configure script? Production of
> linux-musl tuples is a new behavior in recent autoconf, and whether it
> happens depends on what version of autoconf was used to build the
> configure script, not what versions of software are present where the
> configure script runs.

Below are outputs of running autoconf on Alpine Linux in docker.

The used autoconf (GNU Autoconf) version is 2.69.

Alpine Linux 3.10.3:

----------

 > docker run --rm -it alpine:3.10.3

 > apk add autoconf automake
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch 
http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
(1/5) Installing m4 (1.4.18-r1)
(2/5) Installing libbz2 (1.0.6-r7)
(3/5) Installing perl (5.28.2-r1)
(4/5) Installing autoconf (2.69-r2)
(5/5) Installing automake (1.16.1-r0)
Executing busybox-1.30.1-r2.trigger
OK: 47 MiB in 19 packages

 > autoreconf -i
 > ./configure
...
configure: build_os=linux-gnu

----------

Alpine Linux 3.8.4:

----------

 > docker run --rm -it alpine:3.8.4

 > apk add autoconf automake
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch 
http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/5) Installing m4 (1.4.18-r1)
(2/5) Installing libbz2 (1.0.6-r7)
(3/5) Installing perl (5.26.3-r0)
(4/5) Installing autoconf (2.69-r2)
(5/5) Installing automake (1.16.1-r0)
Executing busybox-1.28.4-r3.trigger
OK: 45 MiB in 18 packages

 > autoreconf -i
 > ./configure
...
configure: build_os=linux-musl
----------

> Use of this result is almost certainly a bug/misuse of configure. Run
> a configure test for whatever property you're depending on, not
> whether the name is linux-musl vs linux-gnu.

The port of OpenJDK to Alpine Linux project Portola uses 
AC_CANONICAL_BUILDĀ  autoconf property to set HOTSPOT_LIBC property [1].

What is the right way to define which libc should be used in this case?

[1] 
https://hg.openjdk.java.net/portola/portola/file/c4a7cf80a3bd/make/autoconf/platform.m4#l209

Thanks,

Alexander.

> Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.