diff options
-rw-r--r-- | www-apache/mod_fcgid/ChangeLog | 7 | ||||
-rw-r--r-- | www-apache/mod_fcgid/files/mod_fcgid-2.1-apr_shm_remove.patch | 98 | ||||
-rw-r--r-- | www-apache/mod_fcgid/mod_fcgid-2.1.ebuild | 14 |
3 files changed, 113 insertions, 6 deletions
diff --git a/www-apache/mod_fcgid/ChangeLog b/www-apache/mod_fcgid/ChangeLog index 604ac4b6c33d..ce6130ea5fc8 100644 --- a/www-apache/mod_fcgid/ChangeLog +++ b/www-apache/mod_fcgid/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog for www-apache/mod_fcgid # Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/www-apache/mod_fcgid/ChangeLog,v 1.26 2007/03/13 16:19:35 phreak Exp $ +# $Header: /var/cvsroot/gentoo-x86/www-apache/mod_fcgid/ChangeLog,v 1.27 2007/03/14 19:17:40 phreak Exp $ + + 14 Mar 2007; Christian Heim <phreak@gentoo.org> + +files/mod_fcgid-2.1-apr_shm_remove.patch, mod_fcgid-2.1.ebuild: + Finally fixing #170352, thanks to Xavier again (for pointing me at the + upstream patch, that removed the weird apr_shm_remove stuff). 13 Mar 2007; Christian Heim <phreak@gentoo.org> mod_fcgid-2.1.ebuild: Looks like newer fcgid needs a newer version of apr, thus forcing diff --git a/www-apache/mod_fcgid/files/mod_fcgid-2.1-apr_shm_remove.patch b/www-apache/mod_fcgid/files/mod_fcgid-2.1-apr_shm_remove.patch new file mode 100644 index 000000000000..45dba362b2f8 --- /dev/null +++ b/www-apache/mod_fcgid/files/mod_fcgid-2.1-apr_shm_remove.patch @@ -0,0 +1,98 @@ +--- arch/unix/fcgid_proctbl_unix.c.prev 2007-02-16 03:34:41.000000000 +0100 ++++ arch/unix/fcgid_proctbl_unix.c 2007-03-14 19:05:54.000000000 +0100 +@@ -1,4 +1,5 @@ + #include "fcgid_proctbl.h" ++#include "apr_version.h" + #include "apr_shm.h" + #include "apr_global_mutex.h" + #include "fcgid_global.h" +@@ -18,6 +19,89 @@ + static fcgid_global_share *g_global_share = NULL; /* global information */ + static size_t g_table_size = FCGID_PROC_TABLE_SIZE; + ++/* apr version 0.x not support apr_shm_remove, I have to copy it from apr version 1.x */ ++#if (APR_MAJOR_VERSION < 1) ++#ifdef HAVE_SYS_MMAN_H ++#include <sys/mman.h> ++#endif ++#ifdef HAVE_SYS_IPC_H ++#include <sys/ipc.h> ++#endif ++#ifdef HAVE_SYS_MUTEX_H ++#include <sys/mutex.h> ++#endif ++#ifdef HAVE_SYS_SHM_H ++#include <sys/shm.h> ++#endif ++#if !defined(SHM_R) ++#define SHM_R 0400 ++#endif ++#if !defined(SHM_W) ++#define SHM_W 0200 ++#endif ++#ifdef HAVE_SYS_FILE_H ++#include <sys/file.h> ++#endif ++ ++static apr_status_t apr_shm_remove(const char *filename, apr_pool_t * pool) ++{ ++#if APR_USE_SHMEM_SHMGET ++ apr_status_t status; ++ apr_file_t *file; ++ key_t shmkey; ++ int shmid; ++#endif ++ ++#if APR_USE_SHMEM_MMAP_TMP ++ return apr_file_remove(filename, pool); ++#endif ++#if APR_USE_SHMEM_MMAP_SHM ++ if (shm_unlink(filename) == -1) { ++ return errno; ++ } ++ return APR_SUCCESS; ++#endif ++#if APR_USE_SHMEM_SHMGET ++ /* Presume that the file already exists; just open for writing */ ++ status = apr_file_open(&file, filename, APR_WRITE, ++ APR_OS_DEFAULT, pool); ++ if (status) { ++ return status; ++ } ++ ++ /* ftok() (on solaris at least) requires that the file actually ++ * exist before calling ftok(). */ ++ shmkey = ftok(filename, 1); ++ if (shmkey == (key_t) - 1) { ++ goto shm_remove_failed; ++ } ++ ++ apr_file_close(file); ++ ++ if ((shmid = shmget(shmkey, 0, SHM_R | SHM_W)) < 0) { ++ goto shm_remove_failed; ++ } ++ ++ /* Indicate that the segment is to be destroyed as soon ++ * as all processes have detached. This also disallows any ++ * new attachments to the segment. */ ++ if (shmctl(shmid, IPC_RMID, NULL) == -1) { ++ goto shm_remove_failed; ++ } ++ return apr_file_remove(filename, pool); ++ ++ shm_remove_failed: ++ status = errno; ++ /* ensure the file has been removed anyway. */ ++ apr_file_remove(filename, pool); ++ return status; ++#endif ++ ++ /* No support for anonymous shm */ ++ return APR_ENOTIMPL; ++} ++#endif /* APR_MAJOR_VERSION<1 */ ++ + apr_status_t + proctable_post_config(server_rec * main_server, apr_pool_t * configpool) + { diff --git a/www-apache/mod_fcgid/mod_fcgid-2.1.ebuild b/www-apache/mod_fcgid/mod_fcgid-2.1.ebuild index d3f7bf733628..8bcc017df64c 100644 --- a/www-apache/mod_fcgid/mod_fcgid-2.1.ebuild +++ b/www-apache/mod_fcgid/mod_fcgid-2.1.ebuild @@ -1,8 +1,8 @@ # Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/www-apache/mod_fcgid/mod_fcgid-2.1.ebuild,v 1.2 2007/03/13 16:19:35 phreak Exp $ +# $Header: /var/cvsroot/gentoo-x86/www-apache/mod_fcgid/mod_fcgid-2.1.ebuild,v 1.3 2007/03/14 19:17:40 phreak Exp $ -inherit apache-module +inherit apache-module eutils KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" @@ -13,9 +13,6 @@ LICENSE="GPL-2" SLOT="0" IUSE="" -DEPEND="=dev-libs/apr-1*" -RDEPEND="${DEPEND}" - S="${WORKDIR}/${PN}.${PV}" APACHE2_MOD_CONF="20_${PN}" @@ -32,3 +29,10 @@ APXS2_ARGS="-I ${S} -c ${PN}.c fcgid_bridge.c \ DOCFILES="AUTHOR ChangeLog" need_apache2 + +src_unpack() { + unpack ${A} + cd "${S}" + + epatch "${FILESDIR}"/${P}-apr_shm_remove.patch +} |