pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

building glib2



On a fresh from cvs i386 system (kernel, userland, pkgsrc), make in
pkgsrc/devel/glib2 gives:

===> Configuring for glib2-2.20.3
=> Modifying GNU configure scripts to avoid --recheck
=> Replacing config-guess with pkgsrc versions
=> Replacing config-sub with pkgsrc versions
=> Replacing install-sh with pkgsrc version
=> Adding run-time search paths to pkg-config files.
...
=> Fixing locale directory references.
configure: WARNING: unrecognized options: --without-libiconv-prefix, 
--without-libintl-prefix
configure: WARNING: If you wanted to set the --build type, don't use --host.
...
checking for an implementation of va_copy()... yes
checking for an implementation of __va_copy()... yes
checking whether va_lists can be copied by value... yes
checking for dlopen... yes
checking for dlsym... yes
rm: .libs/plugin.o: No such file or directory
rm: plugin.lo: No such file or directory
rm: plugin.loT: No such file or directory
/usr/lib/crt0.o: In function `___start':
: undefined reference to `main'
checking for RTLD_GLOBAL brokenness... no
checking for preceeding underscore in symbols... no
checking for dlerror... yes
checking for dlopen(NULL, 0) brokenness... yes
checking for the suffix of module shared libraries... eval: 1: Syntax error: 
Unterminated quoted string
*** Error code 2

...

One question might be why

#include <stdio.h>
#include <dlfcn.h>
#ifndef RTLD_GLOBAL
#  define RTLD_GLOBAL 0
#endif
#ifndef RTLD_LAZY  
#  define RTLD_LAZY 0  
#endif
int gettext;
int main () {
    void *handle;
    handle = dlopen ("libm.so", RTLD_GLOBAL | RTLD_LAZY);
    if (!handle) {printf("1st null\n");return 0;}
    handle = dlopen (NULL, 0);
    if (!handle) {printf("2nd null\n");return 0;}
    handle = dlsym (handle, "sin");
    if (!handle) {printf("3rd null\n");return 0;}
    return handle == NULL;
}

prints:

3rd null

yet libm.so has

00010960 T sin


Next, the unterminated quoted string is because:

# ./libtool --config | grep '^shrext_cmds='
shrext_cmds=".so

so there is a "...

./libtool --config outputs a \n, so

# Shared library suffix (normally ".so").
shrext_cmds=".so
"

Also interesting is that (in work.i386/glib-2.20.3)
# ./libtool --version
ltmain.sh (GNU libtool) 2.2.6
whereas
# /usr/pkg/bin/libtool --version
ltmain.sh (GNU libtool) 1.5.24 (1.1220.2.455 2007/06/24 02:13:29)

OK, so the problem is with the version of libtool which comes in
glib-2.20.3/ltmain.sh, as a newer libtool:
libtool (GNU libtool 1.3090 2009-04-22) 2.2.7a

# Shared library suffix (normally ".so").
shrext_cmds=".so"

has no \n. Presumably this will bite pkgsrc users though...

Running autogen.sh in work.i386/glib-2.20.3, then returning ../.. to make
gives:

checking for RTLD_GLOBAL brokenness... no
checking for preceeding underscore in symbols... no
checking for dlerror... yes
checking for dlopen(NULL, 0) brokenness... yes            <-- still wonder why
checking for the suffix of module shared libraries... .so <-- now OK
checking for gspawn implementation... gspawn.lo

and the compilation is successful... (live-g-file.c:714:do_copy_move fails)

Cheers,

Patrick


Home | Main Index | Thread Index | Old Index