On Tue, Feb 02, 2010 at 11:10:16AM +0100, Natanael Copa wrote: >Hi, > >I think the idea was to drop the rpc stuff from uclibc and rely on >libtirpc and rpcbind.
indeed. > >I have been able to compile libgssglue, heimdal and libtirpc against >uclibc but i get a linker error when trying to compile rpcbind. > >To be able compile libtirpc I had to manually create src/rpcsvc and >copy the nis.h file in there. It is needed fomr some define. > >I was able to compile rpcbind with this: > >diff --git a/src/rpcbind.c b/src/rpcbind.c >index 525ffba..1fe1a60 100644 >--- a/src/rpcbind.c >+++ b/src/rpcbind.c >@@ -67,7 +67,11 @@ > #include <pwd.h> > #include <string.h> > #include <errno.h> >+#if defined(__UCLIBC__) >+#define __nss_configure_lookup(x,y) >+#else > #include <nss.h> >+#endif > #include "config.h" > #include "rpcbind.h" > >and this: > >diff --git a/src/security.c b/src/security.c >index 0edeac6..e9fed55 100644 >--- a/src/security.c >+++ b/src/security.c >@@ -20,6 +20,32 @@ > /* > * XXX for special case checks in check_callit. > */ >+#if defined(__UCLIBC__) >+ >+#define MOUNTPROC_MNT 1 >+#define MOUNTPROC_UMNT 3 >+ >+#define NFS_PROGRAM 100003 >+#define YPPROG 100004 >+#define MOUNTPROG 100005 >+#define YPBINDPROG 100007 >+#define YPPASSWDPROG 100009 >+#define RQUOTAPROG 100011 >+ >+#define YPPROC_NULL 0 >+#define YPPROC_DOMAIN 1 >+#define YPPROC_DOMAIN_NONACK 2 >+#define YPPROC_MATCH 3 >+#define YPPROC_FIRST 4 >+#define YPPROC_NEXT 5 >+#define YPPROC_XFR 6 >+#define YPPROC_CLEAR 7 >+#define YPPROC_ALL 8 >+ >+#define YPBINDPROC_SETDOM 2 >+ >+#else >+ > #include <rpcsvc/mount.h> > #include <rpcsvc/rquota.h> > #include <rpcsvc/nfs_prot.h> >@@ -27,6 +53,8 @@ > #include <rpcsvc/ypclnt.h> > #include <rpcsvc/yppasswd.h> > >+#endif >+ > #include "rpcbind.h" > > #ifdef LIBWRAP > > >However, during linking I get the following error: > >ccache gcc -march=i486 -Os -fomit-frame-pointer -pipe -Wl,--as-needed >-o rpcbind check_bound.o rpcbind.o rpcb_svc_4.o rpcb_svc_com.o util.o >pmap_svc.o rpcb_stat.o rpcb_svc.o security.o warmstart.o >/usr/lib/libtirpc.so -lnsl /usr/lib/libgssglue.so >/usr/lib/libgssapi.so /usr/lib/libheimntlm.so /usr/lib/libkrb5.so >/usr/lib/libhx509.so /usr/lib/libheimsqlite.so /usr/lib/libwind.so >/usr/lib/libhcrypto.so /usr/lib/libasn1.so -lcom_err -ldl >/usr/lib/libroken.so -lcrypt -lpthread >/usr/lib/libtirpc.so: undefined reference to `key_encryptsession_pk' >/usr/lib/libtirpc.so: undefined reference to `getnetname' >/usr/lib/libtirpc.so: undefined reference to `cbc_crypt' >/usr/lib/libtirpc.so: undefined reference to `ecb_crypt' >/usr/lib/libtirpc.so: undefined reference to `getpublickey' >/usr/lib/libtirpc.so: undefined reference to `key_gendes' >collect2: ld returned 1 exit status >make[3]: *** [rpcbind] Error 1 > > >As I understand those are not implemented in uclibc, and never will >since we are supposed to rely on libtirpc and rpcbind. exactly. > >I would guess we have the following options: > >1. have libtirpc to use openssl for the crypto funcs >2. have libtirpc to use gnutls for the crypto funcs >3. implement key_encryptsession_pk, getnetname, cbc_crypt, ecb_crypt, >getpublickey and key_gendes in uclibc. I'd go for 1 or 2 (or vice versa). > >Any ideas how to move forward? _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
