[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openpkg-dev
Subject:    RE: Ruby build patch (Tru64 and others)
From:       Karl Vogel <karl.vogel () seagha ! com>
Date:       2005-03-17 10:40:44
Message-ID: 6DED3619289CD311BCEB00508B8E133602454174 () nt-server2 ! antwerp ! seagha ! com
[Download RAW message or body]

> > Rebuilding ruby gives:
> >
> > ld -shared -expect_unresolved "*"  -L"../.." -o curses.so curses.o
> > -lncurses -ltermcap  -lm   -lc
> > ld:
> > Can't locate file for: -lncurses
> > make: *** [curses.so] Error 1
> > [dev:medusa] /openpkg/RPM/TMP/ruby-1.8.2/ext/curses
> >
> > Which shows the ruby extensions are picking up system 
> libraries instead of
> > OpenPKG libs. Following patch fixes it
> >
> > --- ruby.spec~  2005-02-21 18:02:32 +0100
> > +++ ruby.spec   2005-03-16 17:43:15 +0100
> > @@ -70,6 +70,7 @@
> >      CFLAGS="%{l_cflags -O} %{l_cppflags}" \
> >      ./configure \
> >          --prefix=%{l_prefix} \
> > +        --with-ldflags=%{l_ldflags} \
> >          --disable-shared
> >      %{l_make} %{l_mflags}
> 
> Comitted to OpenPKG-CURRENT:
> http://cvs.openpkg.org/chngview?cn=22621
> Thanks.

Looks like Ruby is picking up some more system libraries. I wonder
if it's possible to plug-in a check into the RPM build phase to
look for references to external libs. On Linux / Tru64 it's possible to
view the shared libs dependencies.. Solaris probably has this too.
Might be useful to only allow certain system libs and fail in case
a non-approved system lib is linked to. 


ie. on Tru64 looking at /openpkg/lib/ruby/1.8/alphaev68-osf5.1b


$ for a in *.so
> do
>  echo ==== $a
>  ldd $a
> done
==== bigdecimal.so

        Main  =>   bigdecimal.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== curses.so

        Main  =>   curses.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== dbm.so

        Main  =>   dbm.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== digest.so

        Main  =>   digest.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== dl.so

        Main  =>   dl.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== enumerator.so

        Main  =>   enumerator.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== etc.so

        Main  =>   etc.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== fcntl.so

        Main  =>   fcntl.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== iconv.so

        Main  =>   iconv.so
        libiconv.so  =>   /usr/shlib/libiconv.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so

   ^^^ linkage to iconv, OpenPKG also has a libiconv
       package.. so probably could use a requires: libiconv
       line in the spec

==== nkf.so

        Main  =>   nkf.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== openssl.so

        Main  =>   openssl.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== pty.so

        Main  =>   pty.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== readline.so

        Main  =>   readline.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== sdbm.so

        Main  =>   sdbm.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== socket.so

        Main  =>   socket.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== stringio.so

        Main  =>   stringio.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== strscan.so

        Main  =>   strscan.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== syck.so

        Main  =>   syck.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== syslog.so

        Main  =>   syslog.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
==== tcltklib.so

        Main  =>   tcltklib.so
        libtk.so  =>   /usr/shlib/libtk.so
        libtcl.so  =>   /usr/shlib/libtcl.so
        libX11.so  =>   /usr/shlib/libX11.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
        libdnet_stub.so  =>   /usr/shlib/libdnet_stub.so


	^^^ should this 'require' the OpenPKG tcl package?

==== tkutil.so

        Main  =>   tkutil.so
        libm.so  =>   /usr/shlib/libm.so
        libc.so  =>   /usr/shlib/libc.so
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
Developer Communication List                   openpkg-dev@openpkg.org
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic