David Haller wrote:
> Hello,
>
> On Mon, 11 Dec 2017, [email protected] wrote:
>> On 12/11 05:13, David Haller wrote:
>>> Hello,
>>>
>>> On Sun, 10 Dec 2017, [email protected] wrote:
>>>> x86_64-pc-linux-gnu-gcc -DLOCALEDIR=\"/usr/share/locale\"
>>>> -DLIBDIR=\"/usr/lib64\" -DINCLUDEDIR=\"/usr/include\" -DHAVE_CONFIG_H -I.
>>>> -I./glob -march=native -O2 -pipe -c -o remote-stub.o remote-stub.c
>>>> x86_64-pc-linux-gnu-gcc -march=native -O2 -pipe -Wl,--export-dynamic
>>>> -Wl,-O1 -Wl,--as-needed -o make ar.o arscan.o commands.o default.o dir.o
>>>> expand.o file.o function.o getopt.o getopt1.o guile.o implicit.o job.o
>>>> load.o loadapi.o main.o misc.o posixos.o output.o read.o remake.o rule.o
>>>> signame.o strcache.o variable.o version.o vpath.o hash.o remote-stub.o
>>>> glob/libglob.a -ldl
>>>> glob/libglob.a(glob.o): In function `glob_in_dir':
>>>> glob.c:(.text+0x2ed): undefined reference to `__alloca'
>>>
>>> IIRC, that's a missing #define somewhere. Or a #define where it
>>> shouldn't. But the thing is: on my system, make doesn't build libglob
>>> at all because it finds the globbing stuff in glibc. And make has its
>>> own alloca.c.
>>>
>>> So, please show the output of the configure-part of the ebuild and
>>> what's the output of:
>>>
>>> $ grep _GNU_GLOB_INTERFACE_VERSION /usr/include/gnu-versions.h
>>
>> Here it comes:
> [..]
>> ./configure --prefix=/usr --build=x86_64-pc-linux-gnu
>> --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info
>> --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib
>> --disable-dependency-tracking --disable-silent-rules --libdir=/usr/lib64
>> --program-prefix=g --without-guile --enable-nls
>> configure: loading site script /usr/share/config.site
> [..]
>> checking if system libc has GNU glob... no
> [..]
>
> That figures.
>
>> /root>grep _GNU_GLOB_INTERFACE_VERSION /usr/include/gnu-versions.h
>> #define _GNU_GLOB_INTERFACE_VERSION 2 /* vs posix/glob.c */
>
> You seem to be using glibc-2.26. Question is, is that new
> GLOB_INTERFACE backwards compatible or not? If it is, you could just
> mangle the configure, so that "GNU glob" is considered found, a patch
> via the e{apply,patch}_user of configure{ac,} should work.
>
>> Any ideas?
>
> "downgrade" to the stable glibc-2.25 ... ;)
>
> Or dig into why the following happens, i.e. why is __alloca not
> defined in glob_in_dir() ...
>
I don't think it's glibc, here make compiles fine:
$ eix -I make
...
sys-devel/make
Installed versions: 4.2.1-r1(06:56:41 PM 12/11/2017)(nls -guile -static)
$ eix -I glibc
...
Installed versions: 2.26-r3(2.2)^s(07:08:24 PM 12/04/2017)(-audit -caps -debug
-gd
-hardened -multilib -nscd -profile -selinux -suid -systemtap -vanilla
CROSSCOMPILE_OPTS="-headers-only")
...but:
$ grep _GNU_GLOB_INTERFACE_VERSION /usr/include/gnu-versions.h
#define _GNU_GLOB_INTERFACE_VERSION 1 /* vs posix/glob.c */
raffaele