summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Mason <ms13sp@gmail.com>2009-06-17 15:53:13 +0000
committerMichael Mason <ms13sp@gmail.com>2009-06-17 15:53:13 +0000
commitf67eb3766412fd0e9713cf42edd0e1eb4d68a11c (patch)
tree426b214c1baba0fa2c5e455e422f4ccd499ff183
parent48687e8b670c7c601865db97e4be077e890386be (diff)
parentdceaed51740ba3bc4c99e960b80174b639e27360 (diff)
downloadaports-f67eb3766412fd0e9713cf42edd0e1eb4d68a11c.tar.bz2
aports-f67eb3766412fd0e9713cf42edd0e1eb4d68a11c.tar.xz
Merge branch 'master' of git://git.alpinelinux.org/aports
-rw-r--r--core/uclibc/0001-linuxthreads-fixes-from-Will-Newton-will.newton-AT-g.patch281
-rw-r--r--core/uclibc/APKBUILD8
-rw-r--r--core/uclibc/pthread-new-aliasing-fix.diff147
-rw-r--r--extra/fetchmail/APKBUILD6
-rwxr-xr-xextra/fetchmail/fetchmail.initd2
-rw-r--r--extra/postfix/APKBUILD16
-rw-r--r--extra/postfix/postfix-2.6.1-dynamicmaps.patch8
-rw-r--r--extra/samba/APKBUILD17
8 files changed, 460 insertions, 25 deletions
diff --git a/core/uclibc/0001-linuxthreads-fixes-from-Will-Newton-will.newton-AT-g.patch b/core/uclibc/0001-linuxthreads-fixes-from-Will-Newton-will.newton-AT-g.patch
new file mode 100644
index 00000000..6b54d25f
--- /dev/null
+++ b/core/uclibc/0001-linuxthreads-fixes-from-Will-Newton-will.newton-AT-g.patch
@@ -0,0 +1,281 @@
+From 52c9ef85a65f4dc25a4d1ff79c0fba1ed53ef43a Mon Sep 17 00:00:00 2001
+From: Denis Vlasenko <vda.linux@googlemail.com>
+Date: Thu, 12 Mar 2009 20:56:59 +0000
+Subject: [PATCH 01/39] linuxthreads fixes from Will Newton (will.newton AT gmail.com):
+ * share Sys V semaphores in order to get appropriate SEM_UNDO semantics.
+ * correct guardaddr in pthread_free() for TLS case
+ * move spinlock unlocking before restart()
+ * When exit was called from a signal handler, the restart
+ from the manager processing the exit request instead restarted the thread
+ in pthread_cond_timedwait.
+ (see http://sources.redhat.com/ml/libc-ports/2006-05/msg00000.html)
+
+---
+ libpthread/linuxthreads/descr.h | 2 --
+ libpthread/linuxthreads/manager.c | 15 ++++++++-------
+ libpthread/linuxthreads/pthread.c | 26 +++++++++++++++-----------
+ libpthread/linuxthreads/specific.c | 10 ++++++----
+ libpthread/linuxthreads/spinlock.c | 14 +++++++++++++-
+ libpthread/linuxthreads/spinlock.h | 6 ++++--
+ libpthread/linuxthreads/sysdeps/i386/tls.h | 2 --
+ 7 files changed, 46 insertions(+), 29 deletions(-)
+
+diff --git a/libpthread/linuxthreads/descr.h b/libpthread/linuxthreads/descr.h
+index 24ec30b..47a9acd 100644
+--- a/libpthread/linuxthreads/descr.h
++++ b/libpthread/linuxthreads/descr.h
+@@ -123,9 +123,7 @@ struct _pthread_descr_struct
+ union dtv *dtvp;
+ pthread_descr self; /* Pointer to this structure */
+ int multiple_threads;
+-# ifdef NEED_DL_SYSINFO
+ uintptr_t sysinfo;
+-# endif
+ } data;
+ void *__padding[16];
+ } p_header;
+diff --git a/libpthread/linuxthreads/manager.c b/libpthread/linuxthreads/manager.c
+index be1e8d2..b068d6c 100644
+--- a/libpthread/linuxthreads/manager.c
++++ b/libpthread/linuxthreads/manager.c
+@@ -742,15 +742,15 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
+ pid = __clone2(pthread_start_thread_event,
+ (void **)new_thread_bottom,
+ (char *)stack_addr - new_thread_bottom,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
+ __pthread_sig_cancel, new_thread);
+ #elif _STACK_GROWS_UP
+ pid = __clone(pthread_start_thread_event, (void *) new_thread_bottom,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
+ __pthread_sig_cancel, new_thread);
+ #else
+ pid = __clone(pthread_start_thread_event, stack_addr,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
+ __pthread_sig_cancel, new_thread);
+ #endif
+ saved_errno = errno;
+@@ -783,15 +783,15 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
+ pid = __clone2(pthread_start_thread,
+ (void **)new_thread_bottom,
+ (char *)stack_addr - new_thread_bottom,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
+ __pthread_sig_cancel, new_thread);
+ #elif _STACK_GROWS_UP
+ pid = __clone(pthread_start_thread, (void *) new_thread_bottom,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
+ __pthread_sig_cancel, new_thread);
+ #else
+ pid = __clone(pthread_start_thread, stack_addr,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM |
+ __pthread_sig_cancel, new_thread);
+ #endif /* !NEED_SEPARATE_REGISTER_STACK */
+ saved_errno = errno;
+@@ -892,10 +892,11 @@ static void pthread_free(pthread_descr th)
+ #ifdef _STACK_GROWS_UP
+ # ifdef USE_TLS
+ size_t stacksize = guardaddr - th->p_stackaddr;
++ guardaddr = th->p_stackaddr;
+ # else
+ size_t stacksize = guardaddr - (char *)th;
+-# endif
+ guardaddr = (char *)th;
++# endif
+ #else
+ /* Guardaddr is always set, even if guardsize is 0. This allows
+ us to compute everything else. */
+diff --git a/libpthread/linuxthreads/pthread.c b/libpthread/linuxthreads/pthread.c
+index 91333f2..4d1d906 100644
+--- a/libpthread/linuxthreads/pthread.c
++++ b/libpthread/linuxthreads/pthread.c
+@@ -740,17 +740,17 @@ int __pthread_initialize_manager(void)
+ pid = __clone2(__pthread_manager_event,
+ (void **) __pthread_manager_thread_bos,
+ THREAD_MANAGER_STACK_SIZE,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND,
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM,
+ mgr);
+ #elif _STACK_GROWS_UP
+ pid = __clone(__pthread_manager_event,
+ (void **) __pthread_manager_thread_bos,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND,
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM,
+ mgr);
+ #else
+ pid = __clone(__pthread_manager_event,
+ (void **) __pthread_manager_thread_tos,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND,
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM,
+ mgr);
+ #endif
+
+@@ -780,13 +780,13 @@ int __pthread_initialize_manager(void)
+ #ifdef NEED_SEPARATE_REGISTER_STACK
+ pid = __clone2(__pthread_manager, (void **) __pthread_manager_thread_bos,
+ THREAD_MANAGER_STACK_SIZE,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, mgr);
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, mgr);
+ #elif _STACK_GROWS_UP
+ pid = __clone(__pthread_manager, (void **) __pthread_manager_thread_bos,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, mgr);
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, mgr);
+ #else
+ pid = __clone(__pthread_manager, (void **) __pthread_manager_thread_tos,
+- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, mgr);
++ CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_SYSVSEM, mgr);
+ #endif
+ }
+ if (__builtin_expect (pid, 0) == -1) {
+@@ -972,6 +972,10 @@ static void pthread_onexit_process(int retcode, void *arg)
+ struct pthread_request request;
+ pthread_descr self = thread_self();
+
++ /* Make sure we come back here after suspend(), in case we entered
++ from a signal handler. */
++ THREAD_SETMEM(self, p_signal_jmp, NULL);
++
+ request.req_thread = self;
+ request.req_kind = REQ_PROCESS_EXIT;
+ request.req_args.exit.code = retcode;
+@@ -1201,13 +1205,13 @@ void __pthread_wait_for_restart_signal(pthread_descr self)
+
+ void __pthread_restart_old(pthread_descr th)
+ {
+- if (atomic_increment(&th->p_resume_count) == -1)
++ if (pthread_atomic_increment(&th->p_resume_count) == -1)
+ kill(th->p_pid, __pthread_sig_restart);
+ }
+
+ void __pthread_suspend_old(pthread_descr self)
+ {
+- if (atomic_decrement(&self->p_resume_count) <= 0)
++ if (pthread_atomic_decrement(&self->p_resume_count) <= 0)
+ __pthread_wait_for_restart_signal(self);
+ }
+
+@@ -1218,7 +1222,7 @@ __pthread_timedsuspend_old(pthread_descr self, const struct timespec *abstime)
+ int was_signalled = 0;
+ sigjmp_buf jmpbuf;
+
+- if (atomic_decrement(&self->p_resume_count) == 0) {
++ if (pthread_atomic_decrement(&self->p_resume_count) == 0) {
+ /* Set up a longjmp handler for the restart signal, unblock
+ the signal and sleep. */
+
+@@ -1275,9 +1279,9 @@ __pthread_timedsuspend_old(pthread_descr self, const struct timespec *abstime)
+ being delivered. */
+
+ if (!was_signalled) {
+- if (atomic_increment(&self->p_resume_count) != -1) {
++ if (pthread_atomic_increment(&self->p_resume_count) != -1) {
+ __pthread_wait_for_restart_signal(self);
+- atomic_decrement(&self->p_resume_count); /* should be zero now! */
++ pthread_atomic_decrement(&self->p_resume_count); /* should be zero now! */
+ /* woke spontaneously and consumed restart signal */
+ return 1;
+ }
+diff --git a/libpthread/linuxthreads/specific.c b/libpthread/linuxthreads/specific.c
+index 92eec3d..764bf1e 100644
+--- a/libpthread/linuxthreads/specific.c
++++ b/libpthread/linuxthreads/specific.c
+@@ -104,13 +104,14 @@ int pthread_key_delete(pthread_key_t key)
+ that if the key is reallocated later by pthread_key_create, its
+ associated values will be NULL in all threads.
+
+- If no threads have been created yet, clear it just in the
+- current thread. */
++ If no threads have been created yet, or if we are exiting, clear
++ it just in the current thread. */
+
+ struct pthread_key_delete_helper_args args;
+ args.idx1st = key / PTHREAD_KEY_2NDLEVEL_SIZE;
+ args.idx2nd = key % PTHREAD_KEY_2NDLEVEL_SIZE;
+- if (__pthread_manager_request != -1)
++ if (__pthread_manager_request != -1
++ && !(__builtin_expect (__pthread_exit_requested, 0)))
+ {
+ struct pthread_request request;
+
+@@ -203,8 +204,9 @@ void __pthread_destroy_specifics()
+ __pthread_lock(THREAD_GETMEM(self, p_lock), self);
+ for (i = 0; i < PTHREAD_KEY_1STLEVEL_SIZE; i++) {
+ if (THREAD_GETMEM_NC(self, p_specific[i]) != NULL) {
+- free(THREAD_GETMEM_NC(self, p_specific[i]));
++ void *p = THREAD_GETMEM_NC(self, p_specific[i]);
+ THREAD_SETMEM_NC(self, p_specific[i], NULL);
++ free(p);
+ }
+ }
+ __pthread_unlock(THREAD_GETMEM(self, p_lock));
+diff --git a/libpthread/linuxthreads/spinlock.c b/libpthread/linuxthreads/spinlock.c
+index f325402..f0cf19c 100644
+--- a/libpthread/linuxthreads/spinlock.c
++++ b/libpthread/linuxthreads/spinlock.c
+@@ -637,8 +637,20 @@ void __pthread_alt_unlock(struct _pthread_fastlock *lock)
+ #if defined HAS_COMPARE_AND_SWAP
+ wait_node_dequeue(pp_head, pp_max_prio, p_max_prio);
+ #endif
++
++ /* Release the spinlock *before* restarting. */
++#if defined TEST_FOR_COMPARE_AND_SWAP
++ if (!__pthread_has_cas)
++#endif
++#if !defined HAS_COMPARE_AND_SWAP || defined TEST_FOR_COMPARE_AND_SWAP
++ {
++ __pthread_release(&lock->__spinlock);
++ }
++#endif
++
+ restart(p_max_prio->thr);
+- break;
++
++ return;
+ }
+ }
+
+diff --git a/libpthread/linuxthreads/spinlock.h b/libpthread/linuxthreads/spinlock.h
+index 210ead4..2a3c227 100644
+--- a/libpthread/linuxthreads/spinlock.h
++++ b/libpthread/linuxthreads/spinlock.h
+@@ -172,7 +172,8 @@ static __inline__ int __pthread_alt_trylock (struct _pthread_fastlock * lock)
+
+ /* Operations on pthread_atomic, which is defined in internals.h */
+
+-static __inline__ long atomic_increment(struct pthread_atomic *pa)
++static __inline__ long
++pthread_atomic_increment (struct pthread_atomic *pa)
+ {
+ long oldval;
+
+@@ -184,7 +185,8 @@ static __inline__ long atomic_increment(struct pthread_atomic *pa)
+ }
+
+
+-static __inline__ long atomic_decrement(struct pthread_atomic *pa)
++static __inline__ long
++pthread_atomic_decrement (struct pthread_atomic *pa)
+ {
+ long oldval;
+
+diff --git a/libpthread/linuxthreads/sysdeps/i386/tls.h b/libpthread/linuxthreads/sysdeps/i386/tls.h
+index 2abd3a0..4c9b680 100644
+--- a/libpthread/linuxthreads/sysdeps/i386/tls.h
++++ b/libpthread/linuxthreads/sysdeps/i386/tls.h
+@@ -46,9 +46,7 @@ typedef struct
+ dtv_t *dtv;
+ void *self; /* Pointer to the thread descriptor. */
+ int multiple_threads;
+-#ifdef NEED_DL_SYSINFO
+ uintptr_t sysinfo;
+-#endif
+ } tcbhead_t;
+
+ #else /* __ASSEMBLER__ */
+--
+1.6.3.2
+
diff --git a/core/uclibc/APKBUILD b/core/uclibc/APKBUILD
index 79e8422f..882d908f 100644
--- a/core/uclibc/APKBUILD
+++ b/core/uclibc/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=uclibc
pkgver=0.9.30.1
-pkgrel=7
+pkgrel=8
pkgdesc="C library for developing embedded Linux systems"
url=http://uclibc.org
license="LGPL-2"
@@ -14,6 +14,8 @@ source="http://uclibc.org/downloads/$_mynamever.tar.bz2
$pkgname-0.9.30.1-resolv.patch
uclibc-0.9.30.1-pthread_getattr_np.patch
0001-ldd-segfault-fix.patch
+ 0001-linuxthreads-fixes-from-Will-Newton-will.newton-AT-g.patch
+ pthread-new-aliasing-fix.diff
ppoll.patch
uclibcconfig
"
@@ -22,7 +24,7 @@ _prepare() {
local i gcc_major
cd "$srcdir/$_mynamever/"
# patches goes here
- for i in ../*.patch; do
+ for i in ../*.patch ../*.diff; do
msg "Applying $i..."
patch -p1 < $i || return 1
done
@@ -49,5 +51,7 @@ md5sums="1a4b84e5536ad8170563ffa88c34679c uClibc-0.9.30.1.tar.bz2
ea91460617601b6e084ead66bc3948f5 uclibc-0.9.30.1-resolv.patch
cf80c0d44a41e02f389be427ee615d61 uclibc-0.9.30.1-pthread_getattr_np.patch
4079b20c763727863bc53408e4988434 0001-ldd-segfault-fix.patch
+bcd1c4c9c87f092fb4631559e6ec13ba 0001-linuxthreads-fixes-from-Will-Newton-will.newton-AT-g.patch
+969187e1da84d0a0a5957b392a3d5a2b pthread-new-aliasing-fix.diff
60738298e377295d359768a09adac0bb ppoll.patch
0a87f57d3e5001027f43b7c959d96319 uclibcconfig"
diff --git a/core/uclibc/pthread-new-aliasing-fix.diff b/core/uclibc/pthread-new-aliasing-fix.diff
new file mode 100644
index 00000000..2b2b3772
--- /dev/null
+++ b/core/uclibc/pthread-new-aliasing-fix.diff
@@ -0,0 +1,147 @@
+diff --git a/libpthread/linuxthreads/cancel.c b/libpthread/linuxthreads/cancel.c
+index 3435680..1412b57 100644
+--- a/libpthread/linuxthreads/cancel.c
++++ b/libpthread/linuxthreads/cancel.c
+@@ -152,8 +152,8 @@ void pthread_testcancel(void)
+ __pthread_do_exit(PTHREAD_CANCELED, CURRENT_STACK_FRAME);
+ }
+
+-void _pthread_cleanup_push(struct _pthread_cleanup_buffer * buffer,
+- void (*routine)(void *), void * arg)
++void __pthread_cleanup_push(struct _pthread_cleanup_buffer * buffer,
++ void (*routine)(void *), void * arg)
+ {
+ pthread_descr self = thread_self();
+ buffer->__routine = routine;
+@@ -163,17 +163,19 @@ void _pthread_cleanup_push(struct _pthread_cleanup_buffer * buffer,
+ buffer->__prev = NULL;
+ THREAD_SETMEM(self, p_cleanup, buffer);
+ }
++strong_alias(__pthread_cleanup_push, _pthread_cleanup_push);
+
+-void _pthread_cleanup_pop(struct _pthread_cleanup_buffer * buffer,
+- int execute)
++void __pthread_cleanup_pop(struct _pthread_cleanup_buffer * buffer,
++ int execute)
+ {
+ pthread_descr self = thread_self();
+ if (execute) buffer->__routine(buffer->__arg);
+ THREAD_SETMEM(self, p_cleanup, buffer->__prev);
+ }
++strong_alias(__pthread_cleanup_pop, _pthread_cleanup_pop);
+
+-void _pthread_cleanup_push_defer(struct _pthread_cleanup_buffer * buffer,
+- void (*routine)(void *), void * arg)
++void __pthread_cleanup_push_defer(struct _pthread_cleanup_buffer * buffer,
++ void (*routine)(void *), void * arg)
+ {
+ pthread_descr self = thread_self();
+ buffer->__routine = routine;
+@@ -185,9 +187,10 @@ void _pthread_cleanup_push_defer(struct _pthread_cleanup_buffer * buffer,
+ THREAD_SETMEM(self, p_canceltype, PTHREAD_CANCEL_DEFERRED);
+ THREAD_SETMEM(self, p_cleanup, buffer);
+ }
++strong_alias(__pthread_cleanup_push_defer, _pthread_cleanup_push_defer);
+
+-void _pthread_cleanup_pop_restore(struct _pthread_cleanup_buffer * buffer,
+- int execute)
++void __pthread_cleanup_pop_restore(struct _pthread_cleanup_buffer * buffer,
++ int execute)
+ {
+ pthread_descr self = thread_self();
+ if (execute) buffer->__routine(buffer->__arg);
+@@ -198,6 +201,7 @@ void _pthread_cleanup_pop_restore(struct _pthread_cleanup_buffer * buffer,
+ THREAD_GETMEM(self, p_canceltype) == PTHREAD_CANCEL_ASYNCHRONOUS)
+ __pthread_do_exit(PTHREAD_CANCELED, CURRENT_STACK_FRAME);
+ }
++strong_alias(__pthread_cleanup_pop_restore, _pthread_cleanup_pop_restore);
+
+ extern void __rpc_thread_destroy(void);
+ void __pthread_perform_cleanup(char *currentframe)
+diff --git a/libpthread/linuxthreads/forward.c b/libpthread/linuxthreads/forward.c
+index f9f8ea1..385e79f 100644
+--- a/libpthread/linuxthreads/forward.c
++++ b/libpthread/linuxthreads/forward.c
+@@ -24,6 +24,10 @@
+ /* psm: keep this before internals.h */
+ /* libc_hidden_proto(exit) */
+
++#define hidden_strong_alias(name, aliasname) \
++ extern __typeof (name) aliasname __attribute__ ((alias (#name), \
++ visibility ("hidden")));
++
+ #include "internals.h"
+
+ /* Pointers to the libc functions. */
+@@ -104,8 +108,7 @@ FORWARD (pthread_equal, (pthread_t thread1, pthread_t thread2),
+
+ /* Use an alias to avoid warning, as pthread_exit is declared noreturn. */
+ FORWARD2 (__pthread_exit, void, (void *retval), (retval), exit (EXIT_SUCCESS))
+-strong_alias (__pthread_exit, pthread_exit)
+-
++hidden_strong_alias (__pthread_exit, pthread_exit)
+
+ FORWARD (pthread_getschedparam,
+ (pthread_t target_thread, int *policy, struct sched_param *param),
+@@ -120,16 +123,16 @@ FORWARD (pthread_mutex_destroy, (pthread_mutex_t *mutex), (mutex), 0)
+ FORWARD (pthread_mutex_init,
+ (pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr),
+ (mutex, mutexattr), 0)
+-strong_alias(pthread_mutex_init, __pthread_mutex_init)
++hidden_strong_alias(pthread_mutex_init, __pthread_mutex_init)
+
+ FORWARD (pthread_mutex_lock, (pthread_mutex_t *mutex), (mutex), 0)
+-strong_alias(pthread_mutex_lock, __pthread_mutex_lock)
++hidden_strong_alias(pthread_mutex_lock, __pthread_mutex_lock)
+
+ FORWARD (pthread_mutex_trylock, (pthread_mutex_t *mutex), (mutex), 0)
+-strong_alias(pthread_mutex_trylock, __pthread_mutex_trylock)
++hidden_strong_alias(pthread_mutex_trylock, __pthread_mutex_trylock)
+
+ FORWARD (pthread_mutex_unlock, (pthread_mutex_t *mutex), (mutex), 0)
+-strong_alias(pthread_mutex_unlock, __pthread_mutex_unlock)
++hidden_strong_alias(pthread_mutex_unlock, __pthread_mutex_unlock)
+
+ FORWARD2 (pthread_self, pthread_t, (void), (), return 0)
+
+diff --git a/libpthread/linuxthreads/internals.h b/libpthread/linuxthreads/internals.h
+index eb0a519..4ad6a0d 100644
+--- a/libpthread/linuxthreads/internals.h
++++ b/libpthread/linuxthreads/internals.h
+@@ -380,6 +380,17 @@ extern int __pthread_setschedparam (pthread_t thread, int policy,
+ extern int __pthread_setcancelstate (int state, int * oldstate);
+ extern int __pthread_setcanceltype (int type, int * oldtype);
+
++extern void __pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer,
++ void (*__routine) (void *),
++ void *__arg) __THROW;
++extern void __pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer,
++ int __execute) __THROW;
++extern void __pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *__buffer,
++ void (*__routine) (void *),
++ void *__arg) __THROW;
++extern void __pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *__buffer,
++ int __execute) __THROW;
++
+ extern void __pthread_restart_old(pthread_descr th);
+ extern void __pthread_suspend_old(pthread_descr self);
+ extern int __pthread_timedsuspend_old(pthread_descr self, const struct timespec *abstime);
+diff --git a/libpthread/linuxthreads/pthread.c b/libpthread/linuxthreads/pthread.c
+index 4d1d906..012b74b 100644
+--- a/libpthread/linuxthreads/pthread.c
++++ b/libpthread/linuxthreads/pthread.c
+@@ -280,10 +280,10 @@ struct pthread_functions __pthread_functions =
+ .ptr_pthread_sigaction = __pthread_sigaction,
+ .ptr_pthread_sigwait = __pthread_sigwait,
+ .ptr_pthread_raise = __pthread_raise,
+- .ptr__pthread_cleanup_push = _pthread_cleanup_push,
+- .ptr__pthread_cleanup_push_defer = _pthread_cleanup_push_defer,
+- .ptr__pthread_cleanup_pop = _pthread_cleanup_pop,
+- .ptr__pthread_cleanup_pop_restore = _pthread_cleanup_pop_restore,
++ .ptr__pthread_cleanup_push = __pthread_cleanup_push,
++ .ptr__pthread_cleanup_push_defer = __pthread_cleanup_push_defer,
++ .ptr__pthread_cleanup_pop = __pthread_cleanup_pop,
++ .ptr__pthread_cleanup_pop_restore = __pthread_cleanup_pop_restore,
+ };
+ #ifdef SHARED
+ # define ptr_pthread_functions &__pthread_functions
diff --git a/extra/fetchmail/APKBUILD b/extra/fetchmail/APKBUILD
index bef00014..09255663 100644
--- a/extra/fetchmail/APKBUILD
+++ b/extra/fetchmail/APKBUILD
@@ -2,11 +2,11 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=fetchmail
pkgver=6.3.9
-pkgrel=2
+pkgrel=3
pkgdesc="A remote-mail retrieval and forwarding utility"
url="http://fetchmail.berlios.de/"
license="GPL"
-depends="openssl uclibc"
+depends=
makedepends="openssl-dev python"
install="fetchmail.pre-install fetchmail.post-install"
subpackages="$pkgname-doc fetchmailconf"
@@ -41,4 +41,4 @@ fetchmailconf() {
md5sums="72c20ad2b9629f1a109668b05a84d823 fetchmail-6.3.9.tar.bz2
5a2fc8e8b3115fe2b9bf23503fb8f0a4 fetchmail.pre-install
4b451d102e92926b6b6c1774f4260310 fetchmail.post-install
-9a64c2b77d1a03a1eb8648a32d46b2c5 fetchmail.initd"
+22e9ac1d8385db05da15e01fd5c831e4 fetchmail.initd"
diff --git a/extra/fetchmail/fetchmail.initd b/extra/fetchmail/fetchmail.initd
index 4646fa4c..a1ed1ec8 100755
--- a/extra/fetchmail/fetchmail.initd
+++ b/extra/fetchmail/fetchmail.initd
@@ -20,7 +20,7 @@ start() {
ebegin "Starting fetchmail"
start-stop-daemon --start --quiet \
--chuid fetchmail --exec /usr/bin/fetchmail \
- -- -d ${polling_period} -f /etc/fetchmailrc \
+ -- -d ${polling_period:-300} -f /etc/fetchmailrc \
--pidfile ${pidfile} -i /var/lib/fetchmail/.fetchids
eend ${?}
}
diff --git a/extra/postfix/APKBUILD b/extra/postfix/APKBUILD
index 07431f5f..534bffb2 100644
--- a/extra/postfix/APKBUILD
+++ b/extra/postfix/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=postfix
-pkgver=2.6.1
+pkgver=2.6.2
pkgrel=0
pkgdesc="Secure and fast drop-in replacement for Sendmail (MTA)"
url="http://www.postfix.org/"
@@ -24,6 +24,12 @@ source="ftp://ftp.porcupine.org/mirrors/$pkgname-release/official/$pkgname-$pkgv
# the dynamic maps patch is taken from mandriva
# http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/postfix/current/SOURCES
+_shared_libs() {
+ file --mime-type "$@" | \
+ awk '$2 == "application/x-sharedlib" {print $1}' | \
+ tr -d :
+}
+
build () {
cd "$srcdir/$pkgname-$pkgver"
for i in ../*.patch; do
@@ -75,7 +81,7 @@ build () {
make OPT="$CFLAGS" || return 1
- for i in lib/*.a; do
+ for i in $(_shared_libs lib/*.a); do
j=${i#lib/lib}
ln -s ${i#lib/} lib/libpostfix-${j%.a}.so.1
done
@@ -90,7 +96,7 @@ build () {
|| return 1
install -d "$pkgdir"/usr/lib
- for i in lib/*.a; do
+ for i in $(_shared_libs lib/*.a); do
j=${i#lib/lib}
install $i "$pkgdir"/usr/lib/libpostfix-${j%.a}.so.1 || return 1
done
@@ -133,11 +139,11 @@ mysql() { _mv_dict mysql ;}
pcre() { _mv_dict pcre ; }
pgsql() { _mv_dict pgsql ; }
-md5sums="737bbc245da9c72c174893397f70ae86 postfix-2.6.1.tar.gz
+md5sums="1f0edbd521d2b0473626f4d61e8bb4eb postfix-2.6.2.tar.gz
8416354d402f3be288fa98b60af86240 postfix.initd
2bfc3864183694e5484ac073bb0cb7ef postfix.pre-install
0064d45c2c8a46c374b55c4abc46cfb2 postfix.post-install
-b8812dbf2d076c79cf948ee017e81b39 postfix-2.6.1-dynamicmaps.patch
+d45552cfdcd911d0934c0cb7816c4011 postfix-2.6.1-dynamicmaps.patch
0efff9b4bb493ad2ff0b9915cb244d14 dynamicmaps.cf
2ebe51a882eb9d6d7866583eb6af3969 postfix-ldap.post-install
2ebe51a882eb9d6d7866583eb6af3969 postfix-mysql.post-install
diff --git a/extra/postfix/postfix-2.6.1-dynamicmaps.patch b/extra/postfix/postfix-2.6.1-dynamicmaps.patch
index 6000caaf..630abedc 100644
--- a/extra/postfix/postfix-2.6.1-dynamicmaps.patch
+++ b/extra/postfix/postfix-2.6.1-dynamicmaps.patch
@@ -94,13 +94,13 @@ diff -ruN a/src/global/Makefile.in b/src/global/Makefile.in
- $(RANLIB) $(LIB)
+ gcc -shared -Wl,-soname,libpostfix-global.so.1 -o $(LIB) $(OBJS) $(LIBS) $(SYSLIBS)
+
-+$(LDAPSO): dict_ldap.o $(LIB)
++$(LDAPSO): dict_ldap.o $(LIB) ../../lib/libglobal.a
+ gcc -shared -Wl,-soname,dict_ldap.so -o $@ $? -lldap -llber -L../../lib -lutil -L. -lglobal
+
-+$(MYSQLSO): dict_mysql.o $(LIB)
++$(MYSQLSO): dict_mysql.o $(LIB) ../../lib/libglobal.a
+ gcc -shared -Wl,-soname,dict_mysql.so -o $@ $? -lmysqlclient -L. -lutil -lglobal
+
-+$(PGSQLSO): dict_pgsql.o $(LIB)
++$(PGSQLSO): dict_pgsql.o $(LIB) ../../lib/libglobal.a
+ gcc -shared -Wl,-soname,dict_pgsql.so -o $@ $? -lpq -L. -lutil -lglobal
$(LIB_DIR)/$(LIB): $(LIB)
@@ -4737,7 +4737,7 @@ diff -ruN a/src/util/Makefile.in b/src/util/Makefile.in
test: $(TESTPROG)
-+$(PCRESO): dict_pcre.o
++$(PCRESO): dict_pcre.o libutil.a
+ gcc -shared -Wl,-soname,dict_pcre.so -o $@ $? -lpcre -L. -lutil
+
$(LIB): $(OBJS)
diff --git a/extra/samba/APKBUILD b/extra/samba/APKBUILD
index f69b0de0..49a19a8c 100644
--- a/extra/samba/APKBUILD
+++ b/extra/samba/APKBUILD
@@ -1,13 +1,13 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=samba
-pkgver=3.2.11
-pkgrel=1
+pkgver=3.3.4
+pkgrel=0
pkgdesc="Tools to access a server's filespace and printers via SMB"
url="http://www.samba.org"
license="GPL3"
subpackages="$pkgname-dev $pkgname-doc winbind $pkgname-common
$pkgname-initscript tdb"
-depends="db popt ncurses uclibc samba-initscript samba-common tdb libldap heimdal"
+depends="samba-initscript"
makedepends="db-dev popt-dev ncurses-dev openldap-dev heimdal-dev"
source="http://us1.$pkgname.org/$pkgname/ftp/stable/$pkgname-$pkgver.tar.gz
samba.initd
@@ -40,9 +40,6 @@ build() {
cd "$srcdir"/$pkgname-$pkgver
cp -r examples "$pkgdir"/usr/share/doc/samba/
install -D packaging/RHEL/setup/smbusers "$pkgdir"/etc/samba/smbusers
-
- # move the shared libs to /usr/lib
- mv "$pkgdir"/usr/lib/samba/lib*.so* "$pkgdir"/usr/lib/
}
initscript() {
@@ -62,7 +59,7 @@ _mv_files() {
winbind() {
pkgdesc="Samba user and group resolver"
- depends="uclibc samba-common popt samba-initscript libldap heimdal"
+ depends=
cd "$pkgdir"
_mv_files \
usr/bin/wbinfo \
@@ -74,7 +71,7 @@ winbind() {
common() {
pkgdesc="Samba common files for both client an servers"
- depends="uclibc popt tdb libldap heimdal"
+ depends=
cd "$pkgdir"
_mv_files \
usr/bin/net \
@@ -90,13 +87,13 @@ common() {
tdb() {
pkgdesc="Trivial database"
- depends="uclibc"
+ depends=
cd "$pkgdir"
_mv_files \
usr/lib/libtdb* \
usr/bin/tdb*
}
-md5sums="fc514bc92184b9b64544afa457e4d84e samba-3.2.11.tar.gz
+md5sums="1443165edb7cb3f56f1e77aec1ee3266 samba-3.3.4.tar.gz
587c1c4824ef5b0ac593fcf8ec8fec78 samba.initd
c150433426e18261e6e3eed3930e1a76 samba.confd"