diff options
author | Peter Johanson <latexer@gentoo.org> | 2005-09-24 21:00:07 +0000 |
---|---|---|
committer | Peter Johanson <latexer@gentoo.org> | 2005-09-24 21:00:07 +0000 |
commit | 6e76c99be1e0c73eef8ce536d833ee85252afd0b (patch) | |
tree | 64a30d4c54b7d4eaf8adba7f521a5b50b698204c /dev-lang/mono | |
parent | Added a few more attrs to the permissions. (diff) | |
download | gentoo-2-6e76c99be1e0c73eef8ce536d833ee85252afd0b.tar.gz gentoo-2-6e76c99be1e0c73eef8ce536d833ee85252afd0b.tar.bz2 gentoo-2-6e76c99be1e0c73eef8ce536d833ee85252afd0b.zip |
Add fix for bug #106971, and remove some unneeded '|| die' text.
(Portage version: 2.0.51.22-r2)
Diffstat (limited to 'dev-lang/mono')
-rw-r--r-- | dev-lang/mono/ChangeLog | 6 | ||||
-rw-r--r-- | dev-lang/mono/Manifest | 3 | ||||
-rw-r--r-- | dev-lang/mono/files/mono-1.1.9.1-io-layer-fix.diff | 206 | ||||
-rw-r--r-- | dev-lang/mono/mono-1.1.9.1.ebuild | 9 |
4 files changed, 219 insertions, 5 deletions
diff --git a/dev-lang/mono/ChangeLog b/dev-lang/mono/ChangeLog index 00d17d568bb8..9f12ae4362a6 100644 --- a/dev-lang/mono/ChangeLog +++ b/dev-lang/mono/ChangeLog @@ -1,6 +1,10 @@ # ChangeLog for dev-lang/mono # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-lang/mono/ChangeLog,v 1.59 2005/09/22 22:37:46 latexer Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-lang/mono/ChangeLog,v 1.60 2005/09/24 21:00:06 latexer Exp $ + + 24 Sep 2005; Peter Johanson <latexer@gentoo.org> + +files/mono-1.1.9.1-io-layer-fix.diff, mono-1.1.9.1.ebuild: + Add fix for bug #106971, and remove some unneeded '|| die' text. *mono-1.1.9.1 (22 Sep 2005) diff --git a/dev-lang/mono/Manifest b/dev-lang/mono/Manifest index 509b61ce4779..bb672cb9bba5 100644 --- a/dev-lang/mono/Manifest +++ b/dev-lang/mono/Manifest @@ -3,7 +3,7 @@ MD5 a26e3dfefdd6e8d9991627030f6c8e33 mono-1.1.8.2.ebuild 2264 MD5 10c58186e6ce0ab643d16c883f2071ff mono-1.0.5-r5.ebuild 3718 MD5 b9e80f65b4235c829ff1d67b5b1740f8 mono-1.0.6.ebuild 3693 MD5 bee0ab0027a903bd17143fd0a35dff9f mono-1.1.8.1.ebuild 2264 -MD5 d02a5a84cf04f8cdb2d1683740d72161 mono-1.1.9.1.ebuild 2218 +MD5 8cea4835fcafcfef87c083f2f634dc16 mono-1.1.9.1.ebuild 2271 MD5 f2af9618ffd2a37573c9e28a0badc57a ChangeLog 18587 MD5 76b314cc7b7b79b298dd4889dff8c9cd metadata.xml 159 MD5 11d665ed756230c132abd852c40da43e mono-1.1.8.3.ebuild 2488 @@ -27,3 +27,4 @@ MD5 85422af6a9f91917a9c9c3b8cceb5c33 files/mono-1.1.7-ppc-tls.diff 412 MD5 2acaae80bdfac5c08af32cfd24b36c43 files/mono-1.1.8.3-array-getvalue.diff 1327 MD5 f82809daef4d783797094233672feb3f files/mono-1.1.8.3-icall.diff 433 MD5 e57f70fb8569f040ed1b4669c3e07652 files/digest-mono-1.1.8.3 66 +MD5 25426f960f7fc04c8932375f20885eda files/mono-1.1.9.1-io-layer-fix.diff 5552 diff --git a/dev-lang/mono/files/mono-1.1.9.1-io-layer-fix.diff b/dev-lang/mono/files/mono-1.1.9.1-io-layer-fix.diff new file mode 100644 index 000000000000..a42d7484e516 --- /dev/null +++ b/dev-lang/mono/files/mono-1.1.9.1-io-layer-fix.diff @@ -0,0 +1,206 @@ +Index: mono/io-layer/handles.c +=================================================================== +--- mono/io-layer/handles.c (revision 50600) ++++ mono/io-layer/handles.c (working copy) +@@ -351,10 +351,6 @@ + _wapi_private_handle_count += _WAPI_HANDLE_INITIAL_COUNT; + } + +- thr_ret = mono_mutex_unlock (&scan_mutex); +- g_assert (thr_ret == 0); +- pthread_cleanup_pop (0); +- + /* Make sure we left the space for fd mappings */ + g_assert (handle_idx >= _wapi_fd_reserve); + +@@ -375,7 +371,8 @@ + handle_specific); + if (offset == 0) { + /* FIXME: grow the arrays */ +- return (_WAPI_HANDLE_INVALID); ++ handle = _WAPI_HANDLE_INVALID; ++ goto done; + } + } + +@@ -386,7 +383,8 @@ + + if (ref == 0) { + /* FIXME: grow the arrays */ +- return (_WAPI_HANDLE_INVALID); ++ handle = _WAPI_HANDLE_INVALID; ++ goto done; + } + } + +@@ -396,6 +394,11 @@ + ref); + #endif + } ++ ++done: ++ thr_ret = mono_mutex_unlock (&scan_mutex); ++ g_assert (thr_ret == 0); ++ pthread_cleanup_pop (0); + + return(handle); + } +@@ -403,7 +406,7 @@ + gpointer _wapi_handle_new_from_offset (WapiHandleType type, guint32 offset) + { + guint32 handle_idx = 0; +- gpointer handle; ++ gpointer handle = INVALID_HANDLE_VALUE; + int thr_ret, i, k; + + mono_once (&shared_init_once, shared_init); +@@ -417,6 +420,11 @@ + g_assert(_WAPI_SHARED_HANDLE(type)); + g_assert(offset != 0); + ++ pthread_cleanup_push ((void(*)(void *))mono_mutex_unlock_in_cleanup, ++ (void *)&scan_mutex); ++ thr_ret = mono_mutex_lock (&scan_mutex); ++ g_assert (thr_ret == 0); ++ + for (i = SLOT_INDEX (0); _wapi_private_handles [i] != NULL; i++) { + for (k = SLOT_OFFSET (0); k < _WAPI_HANDLE_INITIAL_COUNT; k++) { + struct _WapiHandleUnshared *handle_data = &_wapi_private_handles [i][k]; +@@ -424,14 +432,24 @@ + if (handle_data->type == type && + handle_data->u.shared.offset == offset) { + handle = GUINT_TO_POINTER (i * _WAPI_HANDLE_INITIAL_COUNT + k); +- _wapi_handle_ref (handle); ++ goto first_pass_done; ++ } ++ } ++ } + ++first_pass_done: ++ thr_ret = mono_mutex_unlock (&scan_mutex); ++ g_assert (thr_ret == 0); ++ pthread_cleanup_pop (0); ++ ++ if (handle != INVALID_HANDLE_VALUE) { ++ _wapi_handle_ref (handle); ++ + #ifdef DEBUG +- g_message ("%s: Returning old handle %p referencing 0x%x", __func__, handle, offset); ++ g_message ("%s: Returning old handle %p referencing 0x%x", ++ __func__, handle, offset); + #endif +- return (handle); +- } +- } ++ return (handle); + } + + pthread_cleanup_push ((void(*)(void *))mono_mutex_unlock_in_cleanup, +@@ -713,8 +731,13 @@ + gpointer ret = NULL; + guint32 i, k; + gboolean found = FALSE; ++ int thr_ret; + +- ++ pthread_cleanup_push ((void(*)(void *))mono_mutex_unlock_in_cleanup, ++ (void *)&scan_mutex); ++ thr_ret = mono_mutex_lock (&scan_mutex); ++ g_assert (thr_ret == 0); ++ + for (i = SLOT_INDEX (0); !found && _wapi_private_handles [i] != NULL; i++) { + for (k = SLOT_OFFSET (0); k < _WAPI_HANDLE_INITIAL_COUNT; k++) { + handle_data = &_wapi_private_handles [i][k]; +@@ -729,6 +752,10 @@ + } + } + ++ thr_ret = mono_mutex_unlock (&scan_mutex); ++ g_assert (thr_ret == 0); ++ pthread_cleanup_pop (0); ++ + if (!found && _WAPI_SHARED_HANDLE (type)) { + /* Not found yet, so search the shared memory too */ + #ifdef DEBUG +@@ -1564,7 +1591,13 @@ + { + struct _WapiHandleUnshared *handle_data; + guint32 i, k; +- ++ int thr_ret; ++ ++ pthread_cleanup_push ((void(*)(void *))mono_mutex_unlock_in_cleanup, ++ (void *)&scan_mutex); ++ thr_ret = mono_mutex_lock (&scan_mutex); ++ g_assert (thr_ret == 0); ++ + for(i = SLOT_INDEX (0); _wapi_private_handles [i] != NULL; i++) { + for (k = SLOT_OFFSET (0); k < _WAPI_HANDLE_INITIAL_COUNT; k++) { + handle_data = &_wapi_private_handles [i][k]; +@@ -1582,6 +1615,10 @@ + g_print ("\n"); + } + } ++ ++ thr_ret = mono_mutex_unlock (&scan_mutex); ++ g_assert (thr_ret == 0); ++ pthread_cleanup_pop (0); + } + + static void _wapi_shared_details (gpointer handle_info) +@@ -1602,6 +1639,10 @@ + thr_ret = _wapi_shm_sem_lock (_WAPI_SHARED_SEM_SHARE); + g_assert(thr_ret == 0); + ++ pthread_cleanup_push ((void(*)(void *))mono_mutex_unlock_in_cleanup, ++ (void *)&scan_mutex); ++ thr_ret = mono_mutex_lock (&scan_mutex); ++ + for(i = SLOT_INDEX (0); _wapi_private_handles [i] != NULL; i++) { + for (k = SLOT_OFFSET (0); k < _WAPI_HANDLE_INITIAL_COUNT; k++) { + struct _WapiHandleUnshared *handle = &_wapi_private_handles [i][k]; +@@ -1644,6 +1685,10 @@ + } + } + } ++ ++ thr_ret = mono_mutex_unlock (&scan_mutex); ++ g_assert (thr_ret == 0); ++ pthread_cleanup_pop (0); + + thr_ret = _wapi_shm_sem_unlock (_WAPI_SHARED_SEM_SHARE); + +Index: mono/io-layer/processes.c +=================================================================== +--- mono/io-layer/processes.c (revision 50600) ++++ mono/io-layer/processes.c (working copy) +@@ -97,6 +97,11 @@ + int status; + pid_t ret; + ++ if (_wapi_handle_issignalled (test)) { ++ /* We've already done this one */ ++ return (FALSE); ++ } ++ + ok = _wapi_lookup_handle (test, WAPI_HANDLE_PROCESS, + (gpointer *)&process); + if (ok == FALSE) { +@@ -104,14 +109,14 @@ + } + + do { +- ret == waitpid (process->id, &status, WNOHANG); ++ ret = waitpid (process->id, &status, WNOHANG); + } while (errno == EINTR); + + if (ret <= 0) { + /* Process not ready for wait */ + #ifdef DEBUG +- g_message ("%s: Process %d not ready for waiting for", +- __func__, ret); ++ g_message ("%s: Process %d not ready for waiting for: %s", ++ __func__, process->id, g_strerror (errno)); + #endif + + return (FALSE); diff --git a/dev-lang/mono/mono-1.1.9.1.ebuild b/dev-lang/mono/mono-1.1.9.1.ebuild index 1b210d96ffab..357b275f721c 100644 --- a/dev-lang/mono/mono-1.1.9.1.ebuild +++ b/dev-lang/mono/mono-1.1.9.1.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/dev-lang/mono/mono-1.1.9.1.ebuild,v 1.1 2005/09/22 22:37:46 latexer Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-lang/mono/mono-1.1.9.1.ebuild,v 1.2 2005/09/24 21:00:06 latexer Exp $ inherit eutils mono flag-o-matic @@ -33,10 +33,13 @@ src_unpack() { cd ${S} # Fix munging of Unix paths - epatch ${FILESDIR}/${PN}-1.1.5-pathfix.diff || die + epatch ${FILESDIR}/${PN}-1.1.5-pathfix.diff # Fix for linking to ICU - epatch ${FILESDIR}/${PN}-1.1.5-icu-linking.diff || die + epatch ${FILESDIR}/${PN}-1.1.5-icu-linking.diff + + # Fix for bug #106971 + epatch ${FILESDIR}/${P}-io-layer-fix.diff # Install all our .dlls under $(libdir), not $(prefix)/lib sed -i -e 's:$(prefix)/lib:$(libdir):' \ |