Hi, I think the idea was to drop the rpc stuff from uclibc and rely on libtirpc and rpcbind.
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. 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. Any ideas how to move forward? -- Natanael Copa _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
