nss_ldap: Added patch for glibc 2.16

This commit is contained in:
Alan Mizrahi 2012-12-20 17:13:34 +09:00
parent 7c3b896e9a
commit 58f175075c
4 changed files with 149 additions and 11 deletions

View File

@ -1,8 +1,10 @@
drwxr-xr-x root/root etc/
-rw-r--r-- root/root etc/nsswitch.ldap
drwxr-xr-x root/root etc/openldap/
-rw-r--r-- root/root etc/openldap/ldap.conf
drwxr-xr-x root/root lib/
-rwxr-xr-x root/root lib/libnss_ldap-2.12.2.so
lrwxrwxrwx root/root lib/libnss_ldap.so.2 -> libnss_ldap-2.12.2.so
-rwxr-xr-x root/root lib/libnss_ldap-2.16.so
lrwxrwxrwx root/root lib/libnss_ldap.so.2 -> libnss_ldap-2.16.so
drwxr-xr-x root/root usr/
drwxr-xr-x root/root usr/lib/
lrwxrwxrwx root/root usr/lib/libnss_ldap.so.2 -> ../../lib/libnss_ldap.so.2

View File

@ -1 +1,2 @@
368d67757a66a97ad888f681ea181e5b nss_ldap-265-glibc-2.16.patch
c1cb02d1a85538cf16bca6f6a562abe4 nss_ldap-265.tar.gz

View File

@ -5,19 +5,18 @@
name=nss_ldap
version=265
release=1
source=(http://www.padl.com/download/$name-$version.tar.gz)
release=2
source=(http://www.padl.com/download/$name-$version.tar.gz nss_ldap-265-glibc-2.16.patch)
build() {
cd $name-$version
patch -p1 -i $SRC/nss_ldap-265-glibc-2.16.patch
sed -i -e 's|CVSVERSIONDIR=\$(top_srcdir) vers_string|CVSVERSIONDIR=\$(top_srcdir) ./vers_string|g' Makefile.am Makefile.in
./configure --mandir=/usr/man --with-ldap-lib=openldap --with-ldap-conf-file=/etc/openldap/ldap.conf
# padl developers have . in their PATH
PATH="$PATH:$PWD" make
make
mkdir -p $PKG/lib $PKG/usr/man
make DESTDIR=$PKG install
# Config file comes from openldap
rm -rf $PKG/etc/openldap
rm -f $PKG/etc/ldap.conf
}

View File

@ -0,0 +1,136 @@
diff -u -r nss_ldap-265.orig/configure.in nss_ldap-265/configure.in
--- nss_ldap-265.orig/configure.in 2009-11-06 19:28:08.000000000 +0900
+++ nss_ldap-265/configure.in 2012-12-20 17:04:48.798942465 +0900
@@ -234,6 +234,7 @@
AC_CHECK_FUNCS(pthread_once)
AC_CHECK_FUNCS(ether_aton)
AC_CHECK_FUNCS(ether_ntoa)
+AC_CHECK_FUNCS(__libc_once __libc_atfork __libc_lock_lock __libc_lock_unlock)
AC_MSG_CHECKING(for struct ether_addr)
AC_TRY_COMPILE([#include <sys/types.h>
Only in nss_ldap-265: configure.in.orig
diff -u -r nss_ldap-265.orig/ldap-nss.c nss_ldap-265/ldap-nss.c
--- nss_ldap-265.orig/ldap-nss.c 2009-11-06 19:28:08.000000000 +0900
+++ nss_ldap-265/ldap-nss.c 2012-12-20 17:04:48.798942465 +0900
@@ -142,7 +142,7 @@
*/
static ldap_session_t __session = { NULL, NULL, 0, LS_UNINITIALIZED };
-#if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
+#if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE___LIBC_ONCE)
static pthread_once_t __once = PTHREAD_ONCE_INIT;
#endif
@@ -150,7 +150,7 @@
static FILE *__debugfile;
#endif /* LBER_OPT_LOG_PRINT_FILE */
-#ifndef HAVE_PTHREAD_ATFORK
+#if !defined(HAVE_PTHREAD_ATFORK) || !defined(HAVE___LIBC_ONCE)
/*
* Process ID that opened the session.
*/
@@ -162,7 +162,7 @@
static int __ssl_initialized = 0;
#endif /* HAVE_LDAPSSL_CLIENT_INIT */
-#if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
+#if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE___LIBC_ONCE)
/*
* Prepare for fork(); lock mutex.
*/
@@ -513,7 +513,7 @@
}
#endif /* HAVE_NSSWITCH_H */
-#if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
+#if defined(HAVE_PTHREAD_ATFORK) || defined(HAVE___LIBC_ONCE)
static void
do_atfork_prepare (void)
{
@@ -547,7 +547,7 @@
#ifdef HAVE_PTHREAD_ATFORK
(void) pthread_atfork (do_atfork_prepare, do_atfork_parent,
do_atfork_child);
-#elif defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
+#elif defined(HAVE___LIBC_ATFORK)
(void) __libc_atfork (do_atfork_prepare, do_atfork_parent, do_atfork_child);
#endif
@@ -1096,7 +1096,7 @@
do_init (void)
{
ldap_config_t *cfg;
-#ifndef HAVE_PTHREAD_ATFORK
+#if !defined(HAVE_PTHREAD_ATFORK) || !defined(HAVE___LIBC_ONCE)
pid_t pid;
#endif
uid_t euid;
@@ -1113,7 +1113,7 @@
}
#ifndef HAVE_PTHREAD_ATFORK
-#if defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
+#if defined(HAVE___LIBC_ONCE)
/*
* This bogosity is necessary because Linux uses different
* PIDs for different threads (like IRIX, which we don't
@@ -1145,7 +1145,7 @@
pid = -1; /* linked against libpthreads, don't care */
#else
pid = getpid ();
-#endif /* HAVE_LIBC_LOCK_H || HAVE_BITS_LIBC_LOCK_H */
+#endif /* HAVE___LIBC_ONCE */
#endif /* HAVE_PTHREAD_ATFORK */
euid = geteuid ();
@@ -1155,7 +1155,7 @@
syslog (LOG_DEBUG,
"nss_ldap: __session.ls_state=%d, __session.ls_conn=%p, __euid=%i, euid=%i",
__session.ls_state, __session.ls_conn, __euid, euid);
-#elif defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
+#elif defined(HAVE___LIBC_ONCE)
syslog (LOG_DEBUG,
"nss_ldap: libpthreads=%s, __session.ls_state=%d, __session.ls_conn=%p, __pid=%i, pid=%i, __euid=%i, euid=%i",
((__pthread_once == NULL || __pthread_atfork == NULL) ? "FALSE" : "TRUE"),
@@ -1179,11 +1179,11 @@
}
else
#ifndef HAVE_PTHREAD_ATFORK
-#if defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
+#if defined(HAVE___LIBC_ONCE)
if ((__pthread_once == NULL || __pthread_atfork == NULL) && __pid != pid)
#else
if (__pid != pid)
-#endif /* HAVE_LIBC_LOCK_H || HAVE_BITS_LIBC_LOCK_H */
+#endif /* HAVE___LIBC_ONCE */
{
do_close_no_unbind ();
}
@@ -1244,9 +1244,9 @@
debug ("<== do_init (pthread_once failed)");
return NSS_UNAVAIL;
}
-#elif defined(HAVE_PTHREAD_ATFORK) && ( defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H) )
+#elif defined(HAVE_PTHREAD_ATFORK) && defined(HAVE___LIBC_ONCE)
__libc_once (__once, do_atfork_setup);
-#elif defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
+#elif defined(HAVE___LIBC_ONCE)
/*
* Only install the pthread_atfork() handlers i
* we are linked against libpthreads. Otherwise,
Only in nss_ldap-265: ldap-nss.c.orig
diff -u -r nss_ldap-265.orig/ldap-nss.h nss_ldap-265/ldap-nss.h
--- nss_ldap-265.orig/ldap-nss.h 2009-11-06 19:28:08.000000000 +0900
+++ nss_ldap-265/ldap-nss.h 2012-12-20 17:04:48.798942465 +0900
@@ -670,7 +670,7 @@
#define NSS_LDAP_LOCK(m) mutex_lock(&m)
#define NSS_LDAP_UNLOCK(m) mutex_unlock(&m)
#define NSS_LDAP_DEFINE_LOCK(m) static mutex_t m = DEFAULTMUTEX
-#elif defined(HAVE_LIBC_LOCK_H) || defined(HAVE_BITS_LIBC_LOCK_H)
+#elif defined(HAVE___LIBC_LOCK_LOCK) && defined(HAVE___LIBC_LOCK_UNLOCK)
#define NSS_LDAP_LOCK(m) __libc_lock_lock(m)
#define NSS_LDAP_UNLOCK(m) __libc_lock_unlock(m)
#define NSS_LDAP_DEFINE_LOCK(m) static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER
Only in nss_ldap-265: ldap-nss.h.orig