summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Rostovtsev <tetromino@gentoo.org>2015-03-08 07:00:24 +0000
committerAlexandre Rostovtsev <tetromino@gentoo.org>2015-03-08 07:00:24 +0000
commit74a808dcfb38c7f9870ffee6d81b98607cccd9ca (patch)
tree7a42b853e6f00e4bc8189527842b7e8ab9d9d48c /app-emulation/wine
parentVersion bump. (diff)
downloadgentoo-2-74a808dcfb38c7f9870ffee6d81b98607cccd9ca.tar.gz
gentoo-2-74a808dcfb38c7f9870ffee6d81b98607cccd9ca.tar.bz2
gentoo-2-74a808dcfb38c7f9870ffee6d81b98607cccd9ca.zip
Belated version bump (bug #536380), see https://www.winehq.org/announce/1.7.38 for the announcement. Sync changes from NP-Hardass's overlay and add him as proxy maintainer. Move big gstreamer patches out of filesdir and into compressed downloads.
(Portage version: 2.2.18/cvs/Linux x86_64, signed Manifest commit with key 0x18E5B6F2D8D5EC8D)
Diffstat (limited to 'app-emulation/wine')
-rw-r--r--app-emulation/wine/ChangeLog14
-rw-r--r--app-emulation/wine/files/wine-1.7.28-gstreamer-v4.patch629
-rw-r--r--app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-post.patch50
-rw-r--r--app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-pre.patch48
-rw-r--r--app-emulation/wine/metadata.xml11
-rw-r--r--app-emulation/wine/wine-1.7.28.ebuild7
-rw-r--r--app-emulation/wine/wine-1.7.29.ebuild7
-rw-r--r--app-emulation/wine/wine-1.7.33.ebuild7
-rw-r--r--app-emulation/wine/wine-1.7.38.ebuild530
-rw-r--r--app-emulation/wine/wine-9999.ebuild130
10 files changed, 746 insertions, 687 deletions
diff --git a/app-emulation/wine/ChangeLog b/app-emulation/wine/ChangeLog
index 6da5b806d25c..bbfae8463922 100644
--- a/app-emulation/wine/ChangeLog
+++ b/app-emulation/wine/ChangeLog
@@ -1,6 +1,18 @@
# ChangeLog for app-emulation/wine
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/ChangeLog,v 1.526 2015/01/01 21:01:23 ryao Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/ChangeLog,v 1.527 2015/03/08 07:00:24 tetromino Exp $
+
+*wine-1.7.38 (08 Mar 2015)
+
+ 08 Mar 2015; Alexandre Rostovtsev <tetromino@gentoo.org> wine-1.7.28.ebuild,
+ wine-1.7.29.ebuild, wine-1.7.33.ebuild, +wine-1.7.38.ebuild,
+ wine-9999.ebuild, -files/wine-1.7.28-gstreamer-v4.patch,
+ +files/wine-1.7.38-gstreamer-v5-staging-post.patch,
+ +files/wine-1.7.38-gstreamer-v5-staging-pre.patch, metadata.xml:
+ Belated version bump (bug #536380), see
+ https://www.winehq.org/announce/1.7.38 for the announcement. Sync changes
+ from NP-Hardass's overlay and add him as proxy maintainer. Move big gstreamer
+ patches out of filesdir and into compressed downloads.
*wine-1.7.33 (01 Jan 2015)
diff --git a/app-emulation/wine/files/wine-1.7.28-gstreamer-v4.patch b/app-emulation/wine/files/wine-1.7.28-gstreamer-v4.patch
deleted file mode 100644
index fbf930bd0280..000000000000
--- a/app-emulation/wine/files/wine-1.7.28-gstreamer-v4.patch
+++ /dev/null
@@ -1,629 +0,0 @@
-From 9e081cd4a04e3326d4927aa082695f15432590e2 Mon Sep 17 00:00:00 2001
-From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
-Date: Thu, 14 Aug 2014 11:49:20 +0200
-Subject: [PATCH] TESTING -- override pthreads to fix gstreamer v4
-
-I believe the code is ready and will work properly now in all cases.
-but please test before cherry picking this patch, and report
-success or failure to me please.
-
-Changes since v1:
- - Call pthread_yield to make sure that we link against libpthread.
- This fixes the build on saucy.
-Changes since v2:
- - Set thread_data->detached before creating the thread to prevent
- a race condition.
-Changes since v3:
- - Set thread_data->detached CORRECTLY. Fix a small race between
- thread creation and pthread_detach.
----
- dlls/ntdll/ntdll_misc.h | 3 +
- dlls/ntdll/thread.c | 307 +++++++++++++++++++++++++++++++++++++--
- dlls/winegstreamer/glibthread.c | 13 ++
- libs/wine/loader.c | 7 +
- libs/wine/wine.map | 6 +
- loader/Makefile.in | 2 +-
- loader/main.c | 41 +++++
- 7 files changed, 362 insertions(+), 17 deletions(-)
-
-diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
-index 4370084..1af819b 100644
---- a/dlls/ntdll/ntdll_misc.h
-+++ b/dlls/ntdll/ntdll_misc.h
-@@ -28,6 +28,7 @@
- #include "winnt.h"
- #include "winternl.h"
- #include "wine/server.h"
-+#include "wine/list.h"
-
- #define MAX_NT_PATH_LENGTH 277
-
-@@ -235,6 +236,8 @@ struct ntdll_thread_data
- WINE_VM86_TEB_INFO vm86; /* 1fc vm86 private data */
- void *exit_frame; /* 204 exit frame pointer */
- #endif
-+ struct list entry;
-+ BOOL detached;
- };
-
- static inline struct ntdll_thread_data *ntdll_get_thread_data(void)
-diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
-index c8461b0..8d5470e 100644
---- a/dlls/ntdll/thread.c
-+++ b/dlls/ntdll/thread.c
-@@ -33,6 +33,7 @@
- #ifdef HAVE_SYS_SYSCALL_H
- #include <sys/syscall.h>
- #endif
-+#include <errno.h>
-
- #define NONAMELESSUNION
- #include "ntstatus.h"
-@@ -58,6 +59,7 @@ struct startup_info
- TEB *teb;
- PRTL_THREAD_START_ROUTINE entry_point;
- void *entry_arg;
-+ BOOL native_thread;
- };
-
- static PEB *peb;
-@@ -202,6 +204,78 @@ static ULONG get_dyld_image_info_addr(void)
- }
- #endif /* __APPLE__ */
-
-+#ifdef __linux__
-+extern typeof(pthread_create) *__glob_pthread_create, *call_pthread_create;
-+extern typeof(pthread_join) *__glob_pthread_join, *call_pthread_join;
-+extern typeof(pthread_detach) *__glob_pthread_detach, *call_pthread_detach;
-+
-+static typeof(pthread_create) __hook_pthread_create;
-+static typeof(pthread_join) __hook_pthread_join;
-+static typeof(pthread_detach) __hook_pthread_detach;
-+
-+static pthread_mutex_t thread_lock;
-+
-+static void thread_wrap_init(void)
-+{
-+ pthread_mutexattr_t attr;
-+ pthread_mutexattr_init(&attr);
-+ pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST);
-+ pthread_mutex_init(&thread_lock, &attr);
-+ pthread_mutexattr_destroy(&attr);
-+
-+ call_pthread_create = __hook_pthread_create;
-+ call_pthread_join = __hook_pthread_join;
-+ call_pthread_detach = __hook_pthread_detach;
-+}
-+
-+static TEB *dead_teb;
-+static struct list active_list = LIST_INIT(active_list);
-+
-+static void take_thread_lock(void)
-+{
-+ int ret = pthread_mutex_lock(&thread_lock);
-+ if (ret == EOWNERDEAD)
-+ pthread_mutex_consistent(&thread_lock);
-+}
-+
-+static void detach_thread_unlock(TEB *own_teb)
-+{
-+ struct ntdll_thread_data *thread_data;
-+ TEB *teb = dead_teb;
-+
-+ dead_teb = own_teb;
-+
-+ pthread_mutex_unlock(&thread_lock);
-+ if (!teb)
-+ return;
-+
-+ thread_data = (struct ntdll_thread_data *)teb->SpareBytes1;
-+ __glob_pthread_join(thread_data->pthread_id, NULL);
-+ signal_free_thread(teb);
-+}
-+
-+static void reap_thread(TEB *teb)
-+{
-+ struct ntdll_thread_data *thread_data = (struct ntdll_thread_data *)teb->SpareBytes1;
-+ take_thread_lock();
-+ if (thread_data->detached)
-+ detach_thread_unlock(teb);
-+ else {
-+ /*
-+ * Do not unlock, wait until the thread is thoroughly dead.
-+ * This prevents a race condition where detach is called
-+ * after the thread has not finished dying yet.
-+ */
-+ }
-+}
-+
-+#else
-+#define __glob_pthread_create pthread_create
-+#define __glob_pthread_join pthread_join
-+#define __glob_pthread_detach pthread_detach
-+#define thread_wrap_init()
-+#endif
-+
- /***********************************************************************
- * thread_init
- *
-@@ -220,6 +294,7 @@ HANDLE thread_init(void)
- struct ntdll_thread_data *thread_data;
- static struct debug_info debug_info; /* debug info for initial thread */
-
-+ thread_wrap_init();
- virtual_init();
-
- /* reserve space for shared user data */
-@@ -349,14 +424,12 @@ void terminate_thread( int status )
- pthread_exit( UIntToPtr(status) );
- }
-
--
--/***********************************************************************
-- * exit_thread
-- */
--void exit_thread( int status )
-+static void exit_thread_common( int status )
- {
-+#ifndef __linux__
- static void *prev_teb;
- TEB *teb;
-+#endif
-
- if (status) /* send the exit code to the server (0 is already the default) */
- {
-@@ -380,24 +453,177 @@ void exit_thread( int status )
-
- pthread_sigmask( SIG_BLOCK, &server_block_set, NULL );
-
-+#ifndef __linux__
- if ((teb = interlocked_xchg_ptr( &prev_teb, NtCurrentTeb() )))
- {
- struct ntdll_thread_data *thread_data = (struct ntdll_thread_data *)teb->SpareBytes1;
-
- if (thread_data->pthread_id)
- {
-- pthread_join( thread_data->pthread_id, NULL );
-+ __glob_pthread_join( thread_data->pthread_id, NULL );
- signal_free_thread( teb );
- }
- }
-+#else
-+ reap_thread(NtCurrentTeb());
-+#endif
-
- close( ntdll_get_thread_data()->wait_fd[0] );
- close( ntdll_get_thread_data()->wait_fd[1] );
- close( ntdll_get_thread_data()->reply_fd );
- close( ntdll_get_thread_data()->request_fd );
-+}
-+
-+void exit_thread( int status )
-+{
-+ exit_thread_common(status);
- pthread_exit( UIntToPtr(status) );
- }
-
-+#ifdef __linux__
-+
-+struct unix_arg {
-+ void *(*start)(void *);
-+ void *arg;
-+};
-+
-+/* dummy used for comparison */
-+static DWORD native_unix_start;
-+
-+static void call_native_cleanup(void *arg)
-+{
-+ exit_thread_common(0);
-+}
-+
-+static int
-+__hook_pthread_create(pthread_t *thread, const pthread_attr_t *attr,
-+ void *(*start_routine) (void *), void *parm)
-+{
-+ NTSTATUS ret;
-+ pthread_t tid;
-+ size_t stack = 8 * 1024 * 1024;
-+ struct unix_arg arg;
-+ arg.start = start_routine;
-+ arg.arg = parm;
-+
-+ if (!thread)
-+ thread = &tid;
-+
-+ TRACE("Overriding thread creation!\n");
-+ if (attr) {
-+ static int once;
-+ if (!once++)
-+ FIXME("most thread attributes ignored!\n");
-+ else
-+ WARN("most thread attributes ignored!\n");
-+
-+ pthread_attr_getstacksize(attr, &stack);
-+ }
-+
-+ ret = RtlCreateUserThread( NtCurrentProcess(), NULL, FALSE, NULL, stack, 0, (void*)&native_unix_start, &arg, NULL, (void*)thread );
-+ if (ret != STATUS_SUCCESS)
-+ FIXME("ret: %08x\n", ret);
-+ switch (ret) {
-+ case STATUS_SUCCESS:
-+ TRACE("created thread %lx for %p/%p\n", *thread, start_routine, parm);
-+ return 0;
-+ case STATUS_NO_MEMORY:
-+ return ENOMEM;
-+ case STATUS_TOO_MANY_OPENED_FILES:
-+ return EMFILE;
-+ default:
-+ ERR("Unhandled ntstatus %08x\n", ret);
-+ return ENOMEM;
-+ }
-+}
-+
-+static int __hook_pthread_detach(pthread_t thread)
-+{
-+ struct ntdll_thread_data *thread_data;
-+ TEB *teb = NULL;
-+
-+ if (pthread_equal(thread, pthread_self())) {
-+ TRACE("Detached self: %lx\n", pthread_self());
-+ ntdll_get_thread_data()->detached = 1;
-+ return 0;
-+ }
-+
-+ take_thread_lock();
-+ LIST_FOR_EACH_ENTRY(thread_data, &active_list, typeof(*thread_data), entry) {
-+ if (pthread_equal(thread_data->pthread_id, thread)) {
-+ teb = CONTAINING_RECORD(thread_data, typeof(*teb), SpareBytes1);
-+
-+ list_remove(&thread_data->entry);
-+ if (!pthread_tryjoin_np(thread, NULL)) {
-+ detach_thread_unlock(NULL);
-+ TRACE("Thread %lx was dead, cleaning up\n", thread);
-+ signal_free_thread(teb);
-+ return 0;
-+ }
-+ thread_data->detached = 1;
-+ break;
-+ }
-+ }
-+ detach_thread_unlock(NULL);
-+ if (!teb)
-+ TRACE("Could not find thread %lx to detach\n", thread);
-+ else
-+ TRACE("Changed thread %lx to detached\n", thread);
-+ return teb ? 0 : ESRCH;
-+}
-+
-+static int __hook_pthread_join(pthread_t thread, void **retval)
-+{
-+ struct ntdll_thread_data *thread_data, *t2;
-+ int ret = ESRCH;
-+
-+ if (pthread_equal(thread, pthread_self()))
-+ return EDEADLK;
-+
-+ take_thread_lock();
-+ LIST_FOR_EACH_ENTRY(thread_data, &active_list, typeof(*thread_data), entry) {
-+ TEB *teb = CONTAINING_RECORD(thread_data, typeof(*teb), SpareBytes1);
-+
-+ if (pthread_equal(thread, thread_data->pthread_id)) {
-+
-+ ret = pthread_tryjoin_np(thread, retval);
-+ if (!ret) {
-+ TRACE("Thread %lx was dead fastpath, cleaning up\n", thread);
-+ goto free;
-+ }
-+ detach_thread_unlock(NULL);
-+
-+ ret = __glob_pthread_join(thread, retval);
-+ if (ret) {
-+ TRACE("Thread %lx join failed with %i, ignoring\n", thread, ret);
-+ return ret;
-+ }
-+
-+ take_thread_lock();
-+ /* Check if someone else freed the thread yet */
-+ LIST_FOR_EACH_ENTRY(t2, &active_list, typeof(*thread_data), entry)
-+ if (t2 == thread_data) {
-+ TRACE("Cleaning up after successful join\n");
-+ goto free;
-+ }
-+ TRACE("No clean up after successful join, multiple pthread_join's?\n");
-+ break;
-+
-+free:
-+ list_remove(&thread_data->entry);
-+ detach_thread_unlock(NULL);
-+ signal_free_thread(teb);
-+ return 0;
-+ }
-+ }
-+
-+ detach_thread_unlock(NULL);
-+ if (ret)
-+ TRACE("failed with %i\n", ret);
-+ return ret;
-+}
-+
-+#endif
-
- /***********************************************************************
- * start_thread
-@@ -426,9 +652,19 @@ static void start_thread( struct startup_info *info )
- if (TRACE_ON(relay))
- DPRINTF( "%04x:Starting thread proc %p (arg=%p)\n", GetCurrentThreadId(), func, arg );
-
-- call_thread_entry_point( (LPTHREAD_START_ROUTINE)func, arg );
--}
-+#ifdef __linux__
-+ if (info->native_thread) {
-+ void *(*start)(void*) = (void*)func;
-
-+ FIXME("Started native thread %08x\n", GetCurrentThreadId());
-+ pthread_cleanup_push(call_native_cleanup, NULL);
-+ pthread_exit(start(arg));
-+ pthread_cleanup_pop(1);
-+ return;
-+ }
-+#endif
-+ call_thread_entry_point( (LPTHREAD_START_ROUTINE)func, arg );
-+}
-
- /***********************************************************************
- * RtlCreateUserThread (NTDLL.@)
-@@ -440,14 +676,13 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, const SECURITY_DESCRIPTOR *
- HANDLE *handle_ptr, CLIENT_ID *id )
- {
- sigset_t sigset;
-- pthread_t pthread_id;
- pthread_attr_t attr;
- struct ntdll_thread_data *thread_data;
- struct startup_info *info = NULL;
- HANDLE handle = 0, actctx = 0;
- TEB *teb = NULL;
- DWORD tid = 0;
-- int request_pipe[2];
-+ int request_pipe[2], ret;
- NTSTATUS status;
-
- if (process != NtCurrentProcess())
-@@ -472,10 +707,14 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, const SECURITY_DESCRIPTOR *
- if (handle_ptr) *handle_ptr = wine_server_ptr_handle( result.create_thread.handle );
- else NtClose( wine_server_ptr_handle( result.create_thread.handle ));
- }
-+ TRACE("CreateThread for other process returns %08x\n", result.create_thread.status);
- return result.create_thread.status;
- }
-
-- if (server_pipe( request_pipe ) == -1) return STATUS_TOO_MANY_OPENED_FILES;
-+ if (server_pipe( request_pipe ) == -1) {
-+ TRACE("CreateThread cannot create request pipe: %m\n");
-+ return STATUS_TOO_MANY_OPENED_FILES;
-+ }
- wine_server_send_fd( request_pipe[0] );
-
- SERVER_START_REQ( new_thread )
-@@ -496,12 +735,16 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, const SECURITY_DESCRIPTOR *
- if (status)
- {
- close( request_pipe[1] );
-+ TRACE("CreateThread server request failed with %08x\n", status);
- return status;
- }
-
- pthread_sigmask( SIG_BLOCK, &server_block_set, &sigset );
-
-- if ((status = signal_alloc_thread( &teb ))) goto error;
-+ if ((status = signal_alloc_thread( &teb ))) {
-+ TRACE("CreateThread signal thread allocation failed with %08x\n", status);
-+ goto error;
-+ }
-
- teb->Peb = NtCurrentTeb()->Peb;
- teb->ClientId.UniqueProcess = ULongToHandle(GetCurrentProcessId());
-@@ -524,32 +767,64 @@ NTSTATUS WINAPI RtlCreateUserThread( HANDLE process, const SECURITY_DESCRIPTOR *
-
- info = (struct startup_info *)(teb + 1);
- info->teb = teb;
-- info->entry_point = start;
-- info->entry_arg = param;
-+#ifdef __linux__
-+ info->native_thread = (void*)start == (void*)&native_unix_start;
-+ if (info->native_thread) {
-+ struct unix_arg *arg = param;
-+ info->entry_point = (void*)arg->start;
-+ info->entry_arg = arg->arg;
-+ } else
-+#endif
-+ {
-+ info->entry_point = start;
-+ info->entry_arg = param;
-+ }
-
- thread_data = (struct ntdll_thread_data *)teb->SpareBytes1;
-+#ifdef __linux__
-+ thread_data->detached = !info->native_thread;
-+#endif
- thread_data->request_fd = request_pipe[1];
- thread_data->reply_fd = -1;
- thread_data->wait_fd[0] = -1;
- thread_data->wait_fd[1] = -1;
-+ thread_data->entry.next = NULL;
-
-- if ((status = virtual_alloc_thread_stack( teb, stack_reserve, stack_commit ))) goto error;
-+ if ((status = virtual_alloc_thread_stack( teb, stack_reserve ?: (8 << 20), stack_commit ?: (1 << 20) ))) {
-+ TRACE("Allocating virtual stack for %p (%li/%li) failed with %08x\n", start, stack_reserve, stack_commit, status);
-+ goto error;
-+ }
-
- pthread_attr_init( &attr );
- pthread_attr_setstack( &attr, teb->DeallocationStack,
- (char *)teb->Tib.StackBase - (char *)teb->DeallocationStack );
- pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM ); /* force creating a kernel thread */
- interlocked_xchg_add( &nb_threads, 1 );
-- if (pthread_create( &pthread_id, &attr, (void * (*)(void *))start_thread, info ))
-+
-+ take_thread_lock();
-+ ret = __glob_pthread_create( &thread_data->pthread_id, &attr, (void * (*)(void *))start_thread, info );
-+ if (ret)
- {
-+ TRACE("pthread create failed with %i/%m\n", ret);
- interlocked_xchg_add( &nb_threads, -1 );
- pthread_attr_destroy( &attr );
- status = STATUS_NO_MEMORY;
- goto error;
- }
-+ if (!thread_data->detached)
-+ list_add_tail(&active_list, &thread_data->entry);
-+ detach_thread_unlock(NULL);
-+
- pthread_attr_destroy( &attr );
- pthread_sigmask( SIG_SETMASK, &sigset, NULL );
-
-+ TRACE("Created thread succesfully, win handle: %04x, pthread: %lx\n", tid, thread_data->pthread_id);
-+
-+#ifdef __linux__
-+ if ((void*)start == (void*)&native_unix_start && id)
-+ *(pthread_t*)id = thread_data->pthread_id;
-+ else
-+#endif
- if (id) id->UniqueThread = ULongToHandle(tid);
- if (handle_ptr) *handle_ptr = handle;
- else NtClose( handle );
-diff --git a/dlls/winegstreamer/glibthread.c b/dlls/winegstreamer/glibthread.c
-index 0d829a0..46e22f4 100644
---- a/dlls/winegstreamer/glibthread.c
-+++ b/dlls/winegstreamer/glibthread.c
-@@ -43,6 +43,7 @@
- #include <stdlib.h>
- #include <stdio.h>
-
-+#if 0
- #include "windef.h"
- #include "winbase.h"
- #include "winnls.h"
-@@ -388,3 +389,15 @@ void g_thread_impl_init (void)
- g_thread_self_tls = TlsAlloc ();
- g_thread_init(&g_thread_functions_for_glib_use_default);
- }
-+
-+#else
-+
-+void g_thread_impl_init (void)
-+{
-+ static gboolean beenhere = FALSE;
-+
-+ if (!beenhere++)
-+ g_thread_init(NULL);
-+}
-+
-+#endif
-diff --git a/libs/wine/loader.c b/libs/wine/loader.c
-index 7261522..a8c31b9 100644
---- a/libs/wine/loader.c
-+++ b/libs/wine/loader.c
-@@ -73,6 +73,13 @@ char **__wine_main_argv = NULL;
- WCHAR **__wine_main_wargv = NULL;
- char **__wine_main_environ = NULL;
-
-+#ifdef __linux__
-+#include <pthread.h>
-+typeof(pthread_create) *call_pthread_create, *__glob_pthread_create;
-+typeof(pthread_join) *call_pthread_join, *__glob_pthread_join;
-+typeof(pthread_detach) *call_pthread_detach, *__glob_pthread_detach;
-+#endif
-+
- struct dll_path_context
- {
- unsigned int index; /* current index in the dll path list */
-diff --git a/libs/wine/wine.map b/libs/wine/wine.map
-index 2159fac..fb3b951 100644
---- a/libs/wine/wine.map
-+++ b/libs/wine/wine.map
-@@ -117,6 +117,12 @@ WINE_1.0
- wine_utf8_mbstowcs;
- wine_utf8_wcstombs;
- wine_wctype_table;
-+ __glob_pthread_create;
-+ call_pthread_create;
-+ __glob_pthread_join;
-+ call_pthread_join;
-+ __glob_pthread_detach;
-+ call_pthread_detach;
-
- local: *;
- };
-diff --git a/loader/Makefile.in b/loader/Makefile.in
-index 95e4798..a18dd02 100644
---- a/loader/Makefile.in
-+++ b/loader/Makefile.in
-@@ -1,4 +1,4 @@
--EXTRALIBS = $(PTHREAD_LIBS)
-+EXTRALIBS = $(PTHREAD_LIBS) $(DL_LIBS)
-
- C_SRCS = \
- main.c \
-diff --git a/loader/main.c b/loader/main.c
-index ac67290..76609e1 100644
---- a/loader/main.c
-+++ b/loader/main.c
-@@ -202,6 +202,45 @@ static int pre_exec(void)
-
- #endif
-
-+#ifdef __linux__
-+
-+extern typeof(pthread_create) *call_pthread_create, *__glob_pthread_create;
-+extern typeof(pthread_detach) *call_pthread_detach, *__glob_pthread_detach;
-+extern typeof(pthread_join) *call_pthread_join, *__glob_pthread_join;
-+
-+int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
-+ void *(*start_routine) (void *), void *arg)
-+{
-+ return call_pthread_create(thread, attr, start_routine, arg);
-+}
-+
-+int pthread_detach(pthread_t thread)
-+{
-+ return call_pthread_detach(thread);
-+}
-+
-+int pthread_join(pthread_t thread, void **retval)
-+{
-+ return call_pthread_join(thread, retval);
-+}
-+
-+static void init_thread_hook(void) {
-+ call_pthread_create = __glob_pthread_create = dlvsym(RTLD_NEXT, "pthread_create", "GLIBC_2.2.5");
-+ if (!__glob_pthread_create)
-+ call_pthread_create = __glob_pthread_create = dlvsym(RTLD_NEXT, "pthread_create", "GLIBC_2.1");
-+
-+ call_pthread_detach = __glob_pthread_detach = dlsym(RTLD_NEXT, "pthread_detach");
-+ call_pthread_join = __glob_pthread_join = dlsym(RTLD_NEXT, "pthread_join");
-+
-+ /* Call a function from libpthread to ensure being linked against it */
-+ pthread_yield();
-+}
-+
-+#else
-+
-+#define init_thread_hook()
-+
-+#endif
-
- /**********************************************************************
- * main
-@@ -211,6 +250,8 @@ int main( int argc, char *argv[] )
- char error[1024];
- int i;
-
-+ init_thread_hook();
-+
- if (!getenv( "WINELOADERNOEXEC" )) /* first time around */
- {
- static char noexec[] = "WINELOADERNOEXEC=1";
---
-1.7.6.6.GIT
-
diff --git a/app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-post.patch b/app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-post.patch
new file mode 100644
index 000000000000..3e597baba24c
--- /dev/null
+++ b/app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-post.patch
@@ -0,0 +1,50 @@
+From 0f579172142d290dc48b9d466f9cd699987aacf3 Mon Sep 17 00:00:00 2001
+From: Sebastian Lackner <sebastian@fds-team.de>
+Date: Wed, 25 Feb 2015 22:45:42 +0100
+Subject: [PATCH] ntdll: Fix race-condition when threads are killed during
+ shutdown.
+
+When exit_thread is executed, nb_threads is decremented before the thread is
+fully shutdown. When another thread runs ExitProcess() this will cause a SIGQUIT
+signal to all threads, effectively decrementing nb_threads twice. The process
+will terminate with a wrong exitcode then because the refcount reaches zero too
+early.
+
+Currently Wine has no locking protection of LdrShutdownProcess(), so it can
+only be executed safely when all other threads have terminated before. Most
+likely there are more Wine bugs in this area, but the attached patch should
+fix the most critical one (messed up refcounting of threads) for now.
+
+[Alexandre Rostovtsev <tetromino@gentoo.org> : rebase to be applied after
+ Maarten Lankhorst's "override pthreads to fix gstreamer v5" patch.]
+---
+ dlls/ntdll/thread.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
+index 936cabe..98e679e 100755
+--- a/dlls/ntdll/thread.c
++++ b/dlls/ntdll/thread.c
+@@ -459,6 +459,7 @@ static void exit_thread_common( int status )
+ {
+ #ifndef __linux__
+ static void *prev_teb;
++ sigset_t sigset;
+ TEB *teb;
+ #endif
+
+@@ -495,6 +496,11 @@ static void exit_thread_common( int status )
+ signal_free_thread( teb );
+ }
+ }
++
++ sigemptyset( &sigset );
++ sigaddset( &sigset, SIGQUIT );
++ pthread_sigmask( SIG_BLOCK, &sigset, NULL );
++ if (interlocked_xchg_add( &nb_threads, -1 ) <= 1) _exit( status );
+ #else
+ reap_thread(NtCurrentTeb());
+ #endif
+--
+2.3.1
+
diff --git a/app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-pre.patch b/app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-pre.patch
new file mode 100644
index 000000000000..eee42ff900f8
--- /dev/null
+++ b/app-emulation/wine/files/wine-1.7.38-gstreamer-v5-staging-pre.patch
@@ -0,0 +1,48 @@
+From 0d92921d264d5d0d1041c66353f022f1bc88577f Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Sun, 8 Mar 2015 00:10:31 -0500
+Subject: [PATCH] Revert "ntdll: Fix race-condition when threads are killed
+ during shutdown."
+
+This reverts Sebastian Lackner's Wine-Staging patch to allow Maarten
+Lankhorst's "override pthreads to fix gstreamer v5" to apply
+---
+ dlls/ntdll/thread.c | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
+index 74e64c9..3696c8e 100644
+--- a/dlls/ntdll/thread.c
++++ b/dlls/ntdll/thread.c
+@@ -370,7 +370,6 @@ void terminate_thread( int status )
+ void exit_thread( int status )
+ {
+ static void *prev_teb;
+- sigset_t sigset;
+ TEB *teb;
+
+ if (status) /* send the exit code to the server (0 is already the default) */
+@@ -384,7 +383,7 @@ void exit_thread( int status )
+ SERVER_END_REQ;
+ }
+
+- if (interlocked_xchg_add( &nb_threads, 0 ) <= 1)
++ if (interlocked_xchg_add( &nb_threads, -1 ) <= 1)
+ {
+ LdrShutdownProcess();
+ exit( status );
+@@ -406,11 +405,6 @@ void exit_thread( int status )
+ }
+ }
+
+- sigemptyset( &sigset );
+- sigaddset( &sigset, SIGQUIT );
+- pthread_sigmask( SIG_BLOCK, &sigset, NULL );
+- if (interlocked_xchg_add( &nb_threads, -1 ) <= 1) _exit( status );
+-
+ close( ntdll_get_thread_data()->wait_fd[0] );
+ close( ntdll_get_thread_data()->wait_fd[1] );
+ close( ntdll_get_thread_data()->reply_fd );
+--
+2.3.1
+
diff --git a/app-emulation/wine/metadata.xml b/app-emulation/wine/metadata.xml
index 2c9b917d9e74..34b2fcd2361d 100644
--- a/app-emulation/wine/metadata.xml
+++ b/app-emulation/wine/metadata.xml
@@ -2,6 +2,12 @@
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<herd>wine</herd>
+<herd>proxy-maintainers</herd>
+<maintainer>
+ <email>np.hardass@gmail.com</email>
+ <name>NP-Hardass</name>
+ <description>Proxied co-maintainer</description>
+</maintainer>
<longdescription>
Wine is an Open Source implementation of the Windows API on top of X and Unix.
@@ -18,14 +24,15 @@ Think of Wine as a compatibility layer for running Windows programs. Wine does n
<flag name='osmesa'>Add support for OpenGL in bitmaps using libOSMesa</flag>
<flag name='pcap'>Support packet capture software (e.g. wireshark)</flag>
<flag name='perl'>Install helpers written in perl (winedump/winemaker)</flag>
- <flag name='pipelight'>Apply unofficial Compholio patches for Pipelight/Silverlight support;
- use at your own peril</flag>
+ <flag name='pipelight'>Apply unofficial Wine-Staging patches for Pipelight/Silverlight support</flag>
<flag name='prelink'>Run prelink on DLLs during build -- do not disable if you do not know what this means as it can break things at runtime</flag>
<flag name='realtime'>Pull in <pkg>sys-auth/rtkit</pkg> for low-latency pulseaudio support</flag>
<flag name='run-exes'>Use Wine to open and run .EXE and .MSI files</flag>
+ <flag name='s3tc'>Pull in <pkg>media-libs/libtxc_dxtn</pkg> for DXTn texture compression, needed for many games</flag>
<flag name='samba'>Add support for NTLM auth. see
http://wiki.winehq.org/NtlmAuthSetupGuide and
http://wiki.winehq.org/NtlmSigningAndSealing</flag>
+ <flag name='staging'>Apply unofficial Wine-Staging patches for advanced feature support that haven't made it into upstream Wine yet</flag>
<flag name='win32'>Build a 32bit version of Wine (won't run Win64 binaries)</flag>
<flag name='win64'>Build a 64bit version of Wine (won't run Win32 binaries)</flag>
</use>
diff --git a/app-emulation/wine/wine-1.7.28.ebuild b/app-emulation/wine/wine-1.7.28.ebuild
index 37ec58490f6d..75bcf3d87a1a 100644
--- a/app-emulation/wine/wine-1.7.28.ebuild
+++ b/app-emulation/wine/wine-1.7.28.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-1.7.28.ebuild,v 1.2 2015/01/01 21:01:23 ryao Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-1.7.28.ebuild,v 1.3 2015/03/08 07:00:24 tetromino Exp $
EAPI="5"
@@ -26,6 +26,7 @@ GV="2.24"
MV="4.5.2"
COMPHOLIO_P="wine-compholio-${PV}"
WINE_GENTOO="wine-gentoo-2013.06.24"
+GST_P="wine-1.7.28-gstreamer-v4"
DESCRIPTION="Free implementation of Windows(tm) on Unix"
HOMEPAGE="http://www.winehq.org/"
SRC_URI="${SRC_URI}
@@ -36,6 +37,7 @@ SRC_URI="${SRC_URI}
mono? ( mirror://sourceforge/${PN}/Wine%20Mono/${MV}/wine-mono-${MV}.msi )
pipelight? ( https://github.com/compholio/wine-compholio-daily/archive/v${PV}.tar.gz -> ${COMPHOLIO_P}.tar.gz )
pulseaudio? ( https://github.com/compholio/wine-compholio-daily/archive/v${PV}.tar.gz -> ${COMPHOLIO_P}.tar.gz )
+ gstreamer? ( http://dev.gentoo.org/~tetromino/distfiles/${PN}/${GST_P}.patch.bz2 )
http://dev.gentoo.org/~tetromino/distfiles/${PN}/${WINE_GENTOO}.tar.bz2"
LICENSE="LGPL-2.1"
@@ -295,6 +297,7 @@ src_unpack() {
use pipelight || use pulseaudio && unpack "${COMPHOLIO_P}.tar.gz"
unpack "${WINE_GENTOO}.tar.bz2"
+ use gstreamer && unpack "${GST_P}.patch.bz2"
l10n_find_plocales_changes "${S}/po" "" ".po"
}
@@ -316,7 +319,7 @@ src_prepare() {
ewarn "Applying experimental patch to fix GStreamer support. Note that"
ewarn "this patch has been reported to cause crashes in certain games."
- PATCHES+=( "${FILESDIR}/${PN}-1.7.28-gstreamer-v4.patch" )
+ PATCHES+=( "${WORKDIR}/${GST_P}.patch" )
fi
if use pipelight; then
ewarn "Applying the unofficial Compholio patchset for Pipelight support,"
diff --git a/app-emulation/wine/wine-1.7.29.ebuild b/app-emulation/wine/wine-1.7.29.ebuild
index 021ef9048c67..6594da7ef5bd 100644
--- a/app-emulation/wine/wine-1.7.29.ebuild
+++ b/app-emulation/wine/wine-1.7.29.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-1.7.29.ebuild,v 1.2 2015/01/01 21:01:23 ryao Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-1.7.29.ebuild,v 1.3 2015/03/08 07:00:24 tetromino Exp $
EAPI="5"
@@ -26,6 +26,7 @@ GV="2.24"
MV="4.5.2"
COMPHOLIO_P="wine-staging-${PV}"
WINE_GENTOO="wine-gentoo-2013.06.24"
+GST_P="wine-1.7.28-gstreamer-v4"
DESCRIPTION="Free implementation of Windows(tm) on Unix"
HOMEPAGE="http://www.winehq.org/"
SRC_URI="${SRC_URI}
@@ -36,6 +37,7 @@ SRC_URI="${SRC_URI}
mono? ( mirror://sourceforge/${PN}/Wine%20Mono/${MV}/wine-mono-${MV}.msi )
pipelight? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${COMPHOLIO_P}.tar.gz )
pulseaudio? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${COMPHOLIO_P}.tar.gz )
+ gstreamer? ( http://dev.gentoo.org/~tetromino/distfiles/${PN}/${GST_P}.patch.bz2 )
http://dev.gentoo.org/~tetromino/distfiles/${PN}/${WINE_GENTOO}.tar.bz2"
LICENSE="LGPL-2.1"
@@ -294,6 +296,7 @@ src_unpack() {
use pipelight || use pulseaudio && unpack "${COMPHOLIO_P}.tar.gz"
unpack "${WINE_GENTOO}.tar.bz2"
+ use gstreamer && unpack "${GST_P}.patch.bz2"
l10n_find_plocales_changes "${S}/po" "" ".po"
}
@@ -315,7 +318,7 @@ src_prepare() {
ewarn "Applying experimental patch to fix GStreamer support. Note that"
ewarn "this patch has been reported to cause crashes in certain games."
- PATCHES+=( "${FILESDIR}/${PN}-1.7.28-gstreamer-v4.patch" )
+ PATCHES+=( "${WORKDIR}/${GST_P}.patch" )
fi
if use pipelight; then
ewarn "Applying the unofficial Compholio patchset for Pipelight support,"
diff --git a/app-emulation/wine/wine-1.7.33.ebuild b/app-emulation/wine/wine-1.7.33.ebuild
index dfa6477a7a79..6dda5b5031eb 100644
--- a/app-emulation/wine/wine-1.7.33.ebuild
+++ b/app-emulation/wine/wine-1.7.33.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-1.7.33.ebuild,v 1.1 2015/01/01 21:01:23 ryao Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-1.7.33.ebuild,v 1.2 2015/03/08 07:00:24 tetromino Exp $
EAPI="5"
@@ -26,6 +26,7 @@ GV="2.34"
MV="4.5.4"
COMPHOLIO_P="wine-staging-${PV}"
WINE_GENTOO="wine-gentoo-2013.06.24"
+GST_P="wine-1.7.28-gstreamer-v4"
DESCRIPTION="Free implementation of Windows(tm) on Unix"
HOMEPAGE="http://www.winehq.org/"
SRC_URI="${SRC_URI}
@@ -36,6 +37,7 @@ SRC_URI="${SRC_URI}
mono? ( mirror://sourceforge/${PN}/Wine%20Mono/${MV}/wine-mono-${MV}.msi )
pipelight? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${COMPHOLIO_P}.tar.gz )
pulseaudio? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${COMPHOLIO_P}.tar.gz )
+ gstreamer? ( http://dev.gentoo.org/~tetromino/distfiles/${PN}/${GST_P}.patch.bz2 )
http://dev.gentoo.org/~tetromino/distfiles/${PN}/${WINE_GENTOO}.tar.bz2"
LICENSE="LGPL-2.1"
@@ -296,6 +298,7 @@ src_unpack() {
use pipelight || use pulseaudio && unpack "${COMPHOLIO_P}.tar.gz"
unpack "${WINE_GENTOO}.tar.bz2"
+ use gstreamer && unpack "${GST_P}.patch.bz2"
l10n_find_plocales_changes "${S}/po" "" ".po"
}
@@ -317,7 +320,7 @@ src_prepare() {
ewarn "Applying experimental patch to fix GStreamer support. Note that"
ewarn "this patch has been reported to cause crashes in certain games."
- PATCHES+=( "${FILESDIR}/${PN}-1.7.28-gstreamer-v4.patch" )
+ PATCHES+=( "${WORKDIR}/${GST_P}.patch" )
fi
if use pipelight; then
ewarn "Applying the unofficial Compholio patchset for Pipelight support,"
diff --git a/app-emulation/wine/wine-1.7.38.ebuild b/app-emulation/wine/wine-1.7.38.ebuild
new file mode 100644
index 000000000000..78210970cd41
--- /dev/null
+++ b/app-emulation/wine/wine-1.7.38.ebuild
@@ -0,0 +1,530 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-1.7.38.ebuild,v 1.1 2015/03/08 07:00:24 tetromino Exp $
+
+EAPI="5"
+
+AUTOTOOLS_AUTORECONF=1
+PLOCALES="ar bg ca cs da de el en en_US eo es fa fi fr he hi hr hu it ja ko lt ml nb_NO nl or pa pl pt_BR pt_PT rm ro ru sk sl sr_RS@cyrillic sr_RS@latin sv te th tr uk wa zh_CN zh_TW"
+PLOCALE_BACKUP="en"
+
+inherit autotools-utils eutils fdo-mime flag-o-matic gnome2-utils l10n multilib multilib-minimal pax-utils toolchain-funcs virtualx
+
+if [[ ${PV} == "9999" ]] ; then
+ EGIT_REPO_URI="git://source.winehq.org/git/wine.git"
+ EGIT_BRANCH="master"
+ inherit git-r3
+ SRC_URI=""
+ #KEYWORDS=""
+else
+ MY_P="${PN}-${PV/_/-}"
+ SRC_URI="mirror://sourceforge/${PN}/Source/${MY_P}.tar.bz2"
+ KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd"
+ S=${WORKDIR}/${MY_P}
+fi
+
+GV="2.36"
+MV="4.5.6"
+STAGING_P="wine-staging-${PV}"
+STAGING_DIR="${WORKDIR}/${STAGING_P}"
+WINE_GENTOO="wine-gentoo-2015.03.07"
+GST_P="wine-1.7.34-gstreamer-v5"
+DESCRIPTION="Free implementation of Windows(tm) on Unix"
+HOMEPAGE="http://www.winehq.org/"
+SRC_URI="${SRC_URI}
+ gecko? (
+ abi_x86_32? ( mirror://sourceforge/${PN}/Wine%20Gecko/${GV}/wine_gecko-${GV}-x86.msi )
+ abi_x86_64? ( mirror://sourceforge/${PN}/Wine%20Gecko/${GV}/wine_gecko-${GV}-x86_64.msi )
+ )
+ mono? ( mirror://sourceforge/${PN}/Wine%20Mono/${MV}/wine-mono-${MV}.msi )
+ gstreamer? ( http://dev.gentoo.org/~tetromino/distfiles/${PN}/${GST_P}.patch.bz2 )
+ http://dev.gentoo.org/~tetromino/distfiles/${PN}/${WINE_GENTOO}.tar.bz2"
+
+if [[ ${PV} == "9999" ]] ; then
+ STAGING_EGIT_REPO_URI="git://github.com/wine-compholio/wine-staging.git"
+else
+ SRC_URI="${SRC_URI}
+ staging? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${STAGING_P}.tar.gz )
+ pulseaudio? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${STAGING_P}.tar.gz )"
+fi
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+IUSE="+abi_x86_32 +abi_x86_64 +alsa capi cups custom-cflags dos elibc_glibc +fontconfig +gecko gphoto2 gsm gstreamer +jpeg +lcms ldap +mono mp3 ncurses netapi nls odbc openal opencl +opengl osmesa oss +perl pcap pipelight +png +prelink pulseaudio +realtime +run-exes s3tc samba scanner selinux +ssl staging test +threads +truetype +udisks v4l vaapi +X +xcomposite xinerama +xml"
+REQUIRED_USE="|| ( abi_x86_32 abi_x86_64 )
+ test? ( abi_x86_32 )
+ elibc_glibc? ( threads )
+ mono? ( abi_x86_32 )
+ pipelight? ( staging )
+ s3tc? ( staging )
+ vaapi? ( staging )
+ osmesa? ( opengl )" #286560
+
+# FIXME: the test suite is unsuitable for us; many tests require net access
+# or fail due to Xvfb's opengl limitations.
+RESTRICT="test"
+
+NATIVE_DEPEND="
+ truetype? ( >=media-libs/freetype-2.0.0 )
+ capi? ( net-dialup/capi4k-utils )
+ ncurses? ( >=sys-libs/ncurses-5.2:= )
+ udisks? ( sys-apps/dbus )
+ fontconfig? ( media-libs/fontconfig:= )
+ gphoto2? ( media-libs/libgphoto2:= )
+ openal? ( media-libs/openal:= )
+ gstreamer? ( media-libs/gstreamer:0.10 media-libs/gst-plugins-base:0.10 )
+ X? (
+ x11-libs/libXcursor
+ x11-libs/libXext
+ x11-libs/libXrandr
+ x11-libs/libXi
+ x11-libs/libXxf86vm
+ )
+ xinerama? ( x11-libs/libXinerama )
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups:= )
+ opencl? ( virtual/opencl )
+ opengl? (
+ virtual/glu
+ virtual/opengl
+ )
+ gsm? ( media-sound/gsm:= )
+ jpeg? ( virtual/jpeg:0= )
+ ldap? ( net-nds/openldap:= )
+ lcms? ( media-libs/lcms:2= )
+ mp3? ( >=media-sound/mpg123-1.5.0 )
+ netapi? ( net-fs/samba[netapi(+)] )
+ nls? ( sys-devel/gettext )
+ odbc? ( dev-db/unixODBC:= )
+ osmesa? ( media-libs/mesa[osmesa] )
+ pcap? ( net-libs/libpcap )
+ staging? ( sys-apps/attr )
+ pulseaudio? ( media-sound/pulseaudio )
+ xml? ( dev-libs/libxml2 dev-libs/libxslt )
+ scanner? ( media-gfx/sane-backends:= )
+ ssl? ( net-libs/gnutls:= )
+ png? ( media-libs/libpng:0= )
+ v4l? ( media-libs/libv4l )
+ vaapi? ( x11-libs/libva[X] )
+ xcomposite? ( x11-libs/libXcomposite )"
+
+COMMON_DEPEND="
+ !amd64? ( ${NATIVE_DEPEND} )
+ amd64? (
+ abi_x86_64? ( ${NATIVE_DEPEND} )
+ abi_x86_32? (
+ truetype? ( || (
+ >=app-emulation/emul-linux-x86-xlibs-2.1[development,-abi_x86_32(-)]
+ >=media-libs/freetype-2.5.0.1[abi_x86_32(-)]
+ ) )
+ ncurses? ( || (
+ app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
+ >=sys-libs/ncurses-5.9-r3[abi_x86_32(-)]
+ ) )
+ udisks? ( || (
+ >=app-emulation/emul-linux-x86-baselibs-20130224[development,-abi_x86_32(-)]
+ >=sys-apps/dbus-1.6.18-r1[abi_x86_32(-)]
+ ) )
+ fontconfig? ( || (
+ app-emulation/emul-linux-x86-xlibs[development,-abi_x86_32(-)]
+ >=media-libs/fontconfig-2.10.92[abi_x86_32(-)]
+ ) )
+ gphoto2? ( || (
+ app-emulation/emul-linux-x86-medialibs[development,-abi_x86_32(-)]
+ >=media-libs/libgphoto2-2.5.3.1[abi_x86_32(-)]
+ ) )
+ openal? ( || (
+ app-emulation/emul-linux-x86-sdl[development,-abi_x86_32(-)]
+ >=media-libs/openal-1.15.1[abi_x86_32(-)]
+ ) )
+ gstreamer? ( || (
+ app-emulation/emul-linux-x86-medialibs[development,-abi_x86_32(-)]
+ (
+ >=media-libs/gstreamer-0.10.36-r2:0.10[abi_x86_32(-)]
+ >=media-libs/gst-plugins-base-0.10.36:0.10[abi_x86_32(-)]
+ )
+ ) )
+ X? ( || (
+ app-emulation/emul-linux-x86-xlibs[development,-abi_x86_32(-)]
+ (
+ >=x11-libs/libXcursor-1.1.14[abi_x86_32(-)]
+ >=x11-libs/libXext-1.3.2[abi_x86_32(-)]
+ >=x11-libs/libXrandr-1.4.2[abi_x86_32(-)]
+ >=x11-libs/libXi-1.7.2[abi_x86_32(-)]
+ >=x11-libs/libXxf86vm-1.1.3[abi_x86_32(-)]
+ )
+ ) )
+ xinerama? ( || (
+ app-emulation/emul-linux-x86-xlibs[development,-abi_x86_32(-)]
+ >=x11-libs/libXinerama-1.1.3[abi_x86_32(-)]
+ ) )
+ alsa? ( || (
+ app-emulation/emul-linux-x86-soundlibs[alsa,development,-abi_x86_32(-)]
+ >=media-libs/alsa-lib-1.0.27.2[abi_x86_32(-)]
+ ) )
+ cups? ( || (
+ app-emulation/emul-linux-x86-baselibs
+ >=net-print/cups-1.7.1-r1[abi_x86_32(-)]
+ ) )
+ opencl? ( >=virtual/opencl-0-r3[abi_x86_32(-)] )
+ opengl? ( || (
+ app-emulation/emul-linux-x86-opengl[development,-abi_x86_32(-)]
+ (
+ >=virtual/glu-9.0-r1[abi_x86_32(-)]
+ >=virtual/opengl-7.0-r1[abi_x86_32(-)]
+ )
+ ) )
+ gsm? ( || (
+ app-emulation/emul-linux-x86-soundlibs[development,-abi_x86_32(-)]
+ >=media-sound/gsm-1.0.13-r1[abi_x86_32(-)]
+ ) )
+ jpeg? ( || (
+ app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
+ >=virtual/jpeg-0-r2:0[abi_x86_32(-)]
+ ) )
+ ldap? ( || (
+ app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
+ >=net-nds/openldap-2.4.38-r1:=[abi_x86_32(-)]
+ ) )
+ lcms? ( || (
+ app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
+ >=media-libs/lcms-2.5:2[abi_x86_32(-)]
+ ) )
+ mp3? ( || (
+ app-emulation/emul-linux-x86-soundlibs[development,-abi_x86_32(-)]
+ >=media-sound/mpg123-1.15.4[abi_x86_32(-)]
+ ) )
+ netapi? ( >=net-fs/samba-3.6.23-r1[netapi(+),abi_x86_32(-)] )
+ nls? ( || (
+ app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
+ >=sys-devel/gettext-0.18.3.2[abi_x86_32(-)]
+ ) )
+ odbc? ( || (
+ app-emulation/emul-linux-x86-db[development,-abi_x86_32(-)]
+ >=dev-db/unixODBC-2.3.2:=[abi_x86_32(-)]
+ ) )
+ osmesa? ( || (
+ >=app-emulation/emul-linux-x86-opengl-20121028[development,-abi_x86_32(-)]
+ >=media-libs/mesa-9.1.6[osmesa,abi_x86_32(-)]
+ ) )
+ pcap? ( net-libs/libpcap[abi_x86_32(-)] )
+ pulseaudio? ( || (
+ app-emulation/emul-linux-x86-soundlibs[development,-abi_x86_32(-)]
+ >=media-sound/pulseaudio-5.0[abi_x86_32(-)]
+ ) )
+ staging? ( || (
+ app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
+ >=sys-apps/attr-2.4.47-r1[abi_x86_32(-)]
+ ) )
+ xml? ( || (
+ >=app-emulation/emul-linux-x86-baselibs-20131008[development,-abi_x86_32(-)]
+ (
+ >=dev-libs/libxml2-2.9.1-r4[abi_x86_32(-)]
+ >=dev-libs/libxslt-1.1.28-r1[abi_x86_32(-)]
+ )
+ ) )
+ scanner? ( || (
+ app-emulation/emul-linux-x86-medialibs[development,-abi_x86_32(-)]
+ >=media-gfx/sane-backends-1.0.23:=[abi_x86_32(-)]
+ ) )
+ ssl? ( || (
+ app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
+ >=net-libs/gnutls-2.12.23-r6:=[abi_x86_32(-)]
+ ) )
+ png? ( || (
+ app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
+ >=media-libs/libpng-1.6.10:0[abi_x86_32(-)]
+ ) )
+ v4l? ( || (
+ app-emulation/emul-linux-x86-medialibs[development,-abi_x86_32(-)]
+ >=media-libs/libv4l-0.9.5[abi_x86_32(-)]
+ ) )
+ vaapi? ( x11-libs/libva[X,abi_x86_32(-)] )
+ xcomposite? ( || (
+ app-emulation/emul-linux-x86-xlibs[development,-abi_x86_32(-)]
+ >=x11-libs/libXcomposite-0.4.4-r1[abi_x86_32(-)]
+ ) )
+ )
+ )"
+
+RDEPEND="${COMMON_DEPEND}
+ dos? ( games-emulation/dosbox )
+ perl? ( dev-lang/perl dev-perl/XML-Simple )
+ s3tc? ( >=media-libs/libtxc_dxtn-1.0.1-r1[${MULTILIB_USEDEP}] )
+ samba? ( >=net-fs/samba-3.0.25 )
+ selinux? ( sec-policy/selinux-wine )
+ udisks? ( sys-fs/udisks:2 )
+ pulseaudio? ( realtime? ( sys-auth/rtkit ) )"
+
+# tools/make_requests requires perl
+DEPEND="${COMMON_DEPEND}
+ amd64? ( abi_x86_32? ( !abi_x86_64? ( ${NATIVE_DEPEND} ) ) )
+ staging? ( dev-lang/perl dev-perl/XML-Simple )
+ X? (
+ x11-proto/inputproto
+ x11-proto/xextproto
+ x11-proto/xf86vidmodeproto
+ )
+ xinerama? ( x11-proto/xineramaproto )
+ prelink? ( sys-devel/prelink )
+ >=sys-kernel/linux-headers-2.6
+ virtual/pkgconfig
+ virtual/yacc
+ sys-devel/flex"
+
+# These use a non-standard "Wine" category, which is provided by
+# /etc/xdg/applications-merged/wine.menu
+QA_DESKTOP_FILE="usr/share/applications/wine-browsedrive.desktop
+usr/share/applications/wine-notepad.desktop
+usr/share/applications/wine-uninstaller.desktop
+usr/share/applications/wine-winecfg.desktop"
+
+wine_build_environment_check() {
+ [[ ${MERGE_TYPE} = "binary" ]] && return 0
+
+ if use abi_x86_64 && [[ $(( $(gcc-major-version) * 100 + $(gcc-minor-version) )) -lt 404 ]]; then
+ eerror "You need gcc-4.4+ to build 64-bit wine"
+ eerror
+ return 1
+ fi
+
+ if use abi_x86_32 && use opencl && [[ x$(eselect opencl show 2> /dev/null) = "xintel" ]]; then
+ eerror "You cannot build wine with USE=opencl because intel-ocl-sdk is 64-bit only."
+ eerror "See https://bugs.gentoo.org/487864 for more details."
+ eerror
+ return 1
+ fi
+}
+
+pkg_pretend() {
+ wine_build_environment_check || die
+}
+
+pkg_setup() {
+ wine_build_environment_check || die
+}
+
+src_unpack() {
+ if [[ ${PV} == "9999" ]] ; then
+ git-r3_src_unpack
+ if use staging || use pulseaudio; then
+ EGIT_REPO_URI=${STAGING_EGIT_REPO_URI}
+ unset ${PN}_LIVE_REPO;
+ EGIT_CHECKOUT_DIR=${STAGING_DIR} git-r3_src_unpack
+ fi
+ else
+ unpack ${MY_P}.tar.bz2
+ use staging || use pulseaudio && unpack "${STAGING_P}.tar.gz"
+ fi
+
+ unpack "${WINE_GENTOO}.tar.bz2"
+ use gstreamer && unpack "${GST_P}.patch.bz2"
+
+ l10n_find_plocales_changes "${S}/po" "" ".po"
+}
+
+src_prepare() {
+ local md5="$(md5sum server/protocol.def)"
+ local PATCHES=(
+ "${FILESDIR}"/${PN}-1.5.26-winegcc.patch #260726
+ "${FILESDIR}"/${PN}-1.4_rc2-multilib-portage.patch #395615
+ "${FILESDIR}"/${PN}-1.7.12-osmesa-check.patch #429386
+ "${FILESDIR}"/${PN}-1.6-memset-O3.patch #480508
+ )
+ if use gstreamer; then
+ # See http://bugs.winehq.org/show_bug.cgi?id=30557
+ ewarn "Applying experimental patch to fix GStreamer support. Note that"
+ ewarn "this patch has been reported to cause crashes in certain games."
+
+ # Wine-Staging 1.7.38 "ntdll: Fix race-condition when threads are killed
+ # during shutdown" patch prevents the gstreamer patch from applying cleanly.
+ # So undo the staging patch, apply gstreamer, then re-apply rebased staging
+ # patch on top.
+ if use staging; then
+ PATCHES+=(
+ "${FILESDIR}/${PN}-1.7.38-gstreamer-v5-staging-pre.patch"
+ "${WORKDIR}/${GST_P}.patch"
+ "${FILESDIR}/${PN}-1.7.38-gstreamer-v5-staging-post.patch" )
+ else
+ PATCHES+=( "${WORKDIR}/${GST_P}.patch" )
+ fi
+ fi
+ if use staging; then
+ ewarn "Applying the unofficial Wine-Staging patchset which is unsupported"
+ ewarn "by Wine developers. Please don't report bugs to Wine bugzilla"
+ ewarn "unless you can reproduce them with USE=-staging"
+
+ local STAGING_EXCLUDE=""
+ use pipelight || STAGING_EXCLUDE="${STAGING_EXCLUDE} -W Pipelight"
+
+ # Launch wine-staging patcher in a subshell, using epatch as a backend, and gitapply.sh as a backend for binary patches
+ ebegin "Running Wine-Staging patch installer"
+ (
+ set -- DESTDIR="${S}" --backend=epatch --no-autoconf --all ${STAGING_EXCLUDE}
+ cd "${STAGING_DIR}/patches"
+ source "${STAGING_DIR}/patches/patchinstall.sh"
+ )
+ eend $?
+ elif use pulseaudio; then
+ PATCHES+=( "${STAGING_DIR}/patches/winepulse-PulseAudio_Support"/*.patch )
+ fi
+ autotools-utils_src_prepare
+
+ # Modification of the server protocol requires regenerating the server requests
+ if [[ "$(md5sum server/protocol.def)" != "${md5}" ]]; then
+ einfo "server/protocol.def was patched; running tools/make_requests"
+ tools/make_requests || die #432348
+ fi
+ sed -i '/^UPDATE_DESKTOP_DATABASE/s:=.*:=true:' tools/Makefile.in || die
+ if ! use run-exes; then
+ sed -i '/^MimeType/d' tools/wine.desktop || die #117785
+ fi
+
+ # hi-res default icon, #472990, http://bugs.winehq.org/show_bug.cgi?id=24652
+ cp "${WORKDIR}"/${WINE_GENTOO}/icons/oic_winlogo.ico dlls/user32/resources/ || die
+
+ l10n_get_locales > po/LINGUAS # otherwise wine doesn't respect LINGUAS
+}
+
+src_configure() {
+ export LDCONFIG=/bin/true
+ use custom-cflags || strip-flags
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ local myconf=(
+ --sysconfdir=/etc/wine
+ $(use_with alsa)
+ $(use_with capi)
+ $(use_with lcms cms)
+ $(use_with cups)
+ $(use_with ncurses curses)
+ $(use_with udisks dbus)
+ $(use_with fontconfig)
+ $(use_with ssl gnutls)
+ $(use_with gphoto2 gphoto)
+ $(use_with gsm)
+ $(use_with gstreamer)
+ --without-hal
+ $(use_with jpeg)
+ $(use_with ldap)
+ $(use_with mp3 mpg123)
+ $(use_with netapi)
+ $(use_with nls gettext)
+ $(use_with openal)
+ $(use_with opencl)
+ $(use_with opengl)
+ $(use_with osmesa)
+ $(use_with oss)
+ $(use_with pcap)
+ $(use_with png)
+ $(use_with threads pthread)
+ $(use_with scanner sane)
+ $(use_enable test tests)
+ $(use_with truetype freetype)
+ $(use_with v4l)
+ $(use_with X x)
+ $(use_with xcomposite)
+ $(use_with xinerama)
+ $(use_with xml)
+ $(use_with xml xslt)
+ )
+
+ if use pulseaudio || use staging; then
+ myconf+=( $(use_with pulseaudio pulse) )
+ fi
+ use staging && myconf+=(
+ --with-xattr
+ $(use_with vaapi va)
+ )
+
+ local PKG_CONFIG AR RANLIB
+ # Avoid crossdev's i686-pc-linux-gnu-pkg-config if building wine32 on amd64; #472038
+ # set AR and RANLIB to make QA scripts happy; #483342
+ tc-export PKG_CONFIG AR RANLIB
+
+ if use amd64; then
+ if [[ ${ABI} == amd64 ]]; then
+ myconf+=( --enable-win64 )
+ else
+ myconf+=( --disable-win64 )
+ fi
+
+ # Note: using --with-wine64 results in problems with multilib.eclass
+ # CC/LD hackery. We're using separate tools instead.
+ fi
+
+ ECONF_SOURCE=${S} \
+ econf "${myconf[@]}"
+ emake depend
+}
+
+multilib_src_test() {
+ # FIXME: win32-only; wine64 tests fail with "could not find the Wine loader"
+ if [[ ${ABI} == x86 ]]; then
+ if [[ $(id -u) == 0 ]]; then
+ ewarn "Skipping tests since they cannot be run under the root user."
+ ewarn "To run the test ${PN} suite, add userpriv to FEATURES in make.conf"
+ return
+ fi
+
+ WINEPREFIX="${T}/.wine-${ABI}" \
+ Xemake test
+ fi
+}
+
+multilib_src_install_all() {
+ local DOCS=( ANNOUNCE AUTHORS README )
+ local l
+ add_locale_docs() {
+ local locale_doc="documentation/README.$1"
+ [[ ! -e ${locale_doc} ]] || DOCS+=( ${locale_doc} )
+ }
+ l10n_for_each_locale_do add_locale_docs
+
+ einstalldocs
+ prune_libtool_files --all
+
+ emake -C "../${WINE_GENTOO}" install DESTDIR="${D}" EPREFIX="${EPREFIX}"
+ if use gecko ; then
+ insinto /usr/share/wine/gecko
+ use abi_x86_32 && doins "${DISTDIR}"/wine_gecko-${GV}-x86.msi
+ use abi_x86_64 && doins "${DISTDIR}"/wine_gecko-${GV}-x86_64.msi
+ fi
+ if use mono ; then
+ insinto /usr/share/wine/mono
+ doins "${DISTDIR}"/wine-mono-${MV}.msi
+ fi
+ if ! use perl ; then # winedump calls function_grep.pl, and winemaker is a perl script
+ rm "${D}"usr/bin/{wine{dump,maker},function_grep.pl} "${D}"usr/share/man/man1/wine{dump,maker}.1 || die
+ fi
+
+ use abi_x86_32 && pax-mark psmr "${D}"usr/bin/wine{,-preloader} #255055
+ use abi_x86_64 && pax-mark psmr "${D}"usr/bin/wine64{,-preloader}
+
+ if use abi_x86_64 && ! use abi_x86_32; then
+ dosym /usr/bin/wine{64,} # 404331
+ dosym /usr/bin/wine{64,}-preloader
+ fi
+
+ # respect LINGUAS when installing man pages, #469418
+ for l in de fr pl; do
+ use linguas_${l} || rm -r "${D}"usr/share/man/${l}*
+ done
+}
+
+pkg_preinst() {
+ gnome2_icon_savelist
+}
+
+pkg_postinst() {
+ gnome2_icon_cache_update
+ fdo-mime_desktop_database_update
+}
+
+pkg_postrm() {
+ gnome2_icon_cache_update
+ fdo-mime_desktop_database_update
+}
diff --git a/app-emulation/wine/wine-9999.ebuild b/app-emulation/wine/wine-9999.ebuild
index 3909223f07d9..74ff097449ff 100644
--- a/app-emulation/wine/wine-9999.ebuild
+++ b/app-emulation/wine/wine-9999.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-9999.ebuild,v 1.173 2015/01/01 21:01:23 ryao Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-9999.ebuild,v 1.174 2015/03/08 07:00:24 tetromino Exp $
EAPI="5"
@@ -12,7 +12,8 @@ inherit autotools-utils eutils fdo-mime flag-o-matic gnome2-utils l10n multilib
if [[ ${PV} == "9999" ]] ; then
EGIT_REPO_URI="git://source.winehq.org/git/wine.git"
- inherit git-2
+ EGIT_BRANCH="master"
+ inherit git-r3
SRC_URI=""
#KEYWORDS=""
else
@@ -22,12 +23,12 @@ else
S=${WORKDIR}/${MY_P}
fi
-GV="2.24"
-MV="4.5.2"
-PULSE_PATCHES="winepulse-patches-1.7.21"
-COMPHOLIOV="1.7.21"
-COMPHOLIO_PATCHES="wine-compholio-daily-${COMPHOLIOV}"
-WINE_GENTOO="wine-gentoo-2013.06.24"
+GV="2.36"
+MV="4.5.6"
+STAGING_P="wine-staging-${PV}"
+STAGING_DIR="${WORKDIR}/${STAGING_P}"
+WINE_GENTOO="wine-gentoo-2015.03.07"
+GST_P="wine-1.7.34-gstreamer-v5"
DESCRIPTION="Free implementation of Windows(tm) on Unix"
HOMEPAGE="http://www.winehq.org/"
SRC_URI="${SRC_URI}
@@ -36,20 +37,28 @@ SRC_URI="${SRC_URI}
abi_x86_64? ( mirror://sourceforge/${PN}/Wine%20Gecko/${GV}/wine_gecko-${GV}-x86_64.msi )
)
mono? ( mirror://sourceforge/${PN}/Wine%20Mono/${MV}/wine-mono-${MV}.msi )
- pipelight? ( https://github.com/compholio/wine-compholio-daily/archive/v${COMPHOLIOV}.tar.gz -> ${COMPHOLIO_PATCHES}.tar.gz )
- pulseaudio? ( http://dev.gentoo.org/~tetromino/distfiles/${PN}/${PULSE_PATCHES}.tar.bz2 )
+ gstreamer? ( http://dev.gentoo.org/~tetromino/distfiles/${PN}/${GST_P}.patch.bz2 )
http://dev.gentoo.org/~tetromino/distfiles/${PN}/${WINE_GENTOO}.tar.bz2"
+if [[ ${PV} == "9999" ]] ; then
+ STAGING_EGIT_REPO_URI="git://github.com/wine-compholio/wine-staging.git"
+else
+ SRC_URI="${SRC_URI}
+ staging? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${STAGING_P}.tar.gz )
+ pulseaudio? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${STAGING_P}.tar.gz )"
+fi
+
LICENSE="LGPL-2.1"
SLOT="0"
-IUSE="+abi_x86_32 +abi_x86_64 +alsa capi cups custom-cflags dos elibc_glibc +fontconfig +gecko gphoto2 gsm gstreamer +jpeg lcms ldap +mono mp3 ncurses netapi nls odbc openal opencl +opengl osmesa oss +perl pipelight +png +prelink pulseaudio +realtime +run-exes samba scanner selinux +ssl test +threads +truetype +udisks v4l +X xcomposite xinerama +xml"
+IUSE="+abi_x86_32 +abi_x86_64 +alsa capi cups custom-cflags dos elibc_glibc +fontconfig +gecko gphoto2 gsm gstreamer +jpeg +lcms ldap +mono mp3 ncurses netapi nls odbc openal opencl +opengl osmesa oss +perl pcap pipelight +png +prelink pulseaudio +realtime +run-exes s3tc samba scanner selinux +ssl staging test +threads +truetype +udisks v4l vaapi +X +xcomposite xinerama +xml"
REQUIRED_USE="|| ( abi_x86_32 abi_x86_64 )
test? ( abi_x86_32 )
elibc_glibc? ( threads )
- gstreamer? ( pulseaudio )
mono? ( abi_x86_32 )
+ pipelight? ( staging )
+ s3tc? ( staging )
+ vaapi? ( staging )
osmesa? ( opengl )" #286560
-# winepulse patches needed for gstreamer due to http://bugs.winehq.org/show_bug.cgi?id=30557
# FIXME: the test suite is unsuitable for us; many tests require net access
# or fail due to Xvfb's opengl limitations.
@@ -88,13 +97,15 @@ NATIVE_DEPEND="
nls? ( sys-devel/gettext )
odbc? ( dev-db/unixODBC:= )
osmesa? ( media-libs/mesa[osmesa] )
- pipelight? ( sys-apps/attr )
+ pcap? ( net-libs/libpcap )
+ staging? ( sys-apps/attr )
pulseaudio? ( media-sound/pulseaudio )
xml? ( dev-libs/libxml2 dev-libs/libxslt )
scanner? ( media-gfx/sane-backends:= )
ssl? ( net-libs/gnutls:= )
png? ( media-libs/libpng:0= )
v4l? ( media-libs/libv4l )
+ vaapi? ( x11-libs/libva[X] )
xcomposite? ( x11-libs/libXcomposite )"
COMMON_DEPEND="
@@ -196,14 +207,15 @@ COMMON_DEPEND="
>=app-emulation/emul-linux-x86-opengl-20121028[development,-abi_x86_32(-)]
>=media-libs/mesa-9.1.6[osmesa,abi_x86_32(-)]
) )
- pipelight? ( || (
- app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
- >=sys-apps/attr-2.4.47-r1[abi_x86_32(-)]
- ) )
+ pcap? ( net-libs/libpcap[abi_x86_32(-)] )
pulseaudio? ( || (
app-emulation/emul-linux-x86-soundlibs[development,-abi_x86_32(-)]
>=media-sound/pulseaudio-5.0[abi_x86_32(-)]
) )
+ staging? ( || (
+ app-emulation/emul-linux-x86-baselibs[development,-abi_x86_32(-)]
+ >=sys-apps/attr-2.4.47-r1[abi_x86_32(-)]
+ ) )
xml? ( || (
>=app-emulation/emul-linux-x86-baselibs-20131008[development,-abi_x86_32(-)]
(
@@ -227,6 +239,7 @@ COMMON_DEPEND="
app-emulation/emul-linux-x86-medialibs[development,-abi_x86_32(-)]
>=media-libs/libv4l-0.9.5[abi_x86_32(-)]
) )
+ vaapi? ( x11-libs/libva[X,abi_x86_32(-)] )
xcomposite? ( || (
app-emulation/emul-linux-x86-xlibs[development,-abi_x86_32(-)]
>=x11-libs/libXcomposite-0.4.4-r1[abi_x86_32(-)]
@@ -237,13 +250,16 @@ COMMON_DEPEND="
RDEPEND="${COMMON_DEPEND}
dos? ( games-emulation/dosbox )
perl? ( dev-lang/perl dev-perl/XML-Simple )
+ s3tc? ( >=media-libs/libtxc_dxtn-1.0.1-r1[${MULTILIB_USEDEP}] )
samba? ( >=net-fs/samba-3.0.25 )
selinux? ( sec-policy/selinux-wine )
udisks? ( sys-fs/udisks:2 )
pulseaudio? ( realtime? ( sys-auth/rtkit ) )"
+# tools/make_requests requires perl
DEPEND="${COMMON_DEPEND}
amd64? ( abi_x86_32? ( !abi_x86_64? ( ${NATIVE_DEPEND} ) ) )
+ staging? ( dev-lang/perl dev-perl/XML-Simple )
X? (
x11-proto/inputproto
x11-proto/xextproto
@@ -290,61 +306,71 @@ pkg_setup() {
src_unpack() {
if [[ ${PV} == "9999" ]] ; then
- git-2_src_unpack
+ git-r3_src_unpack
+ if use staging || use pulseaudio; then
+ EGIT_REPO_URI=${STAGING_EGIT_REPO_URI}
+ unset ${PN}_LIVE_REPO;
+ EGIT_CHECKOUT_DIR=${STAGING_DIR} git-r3_src_unpack
+ fi
else
unpack ${MY_P}.tar.bz2
+ use staging || use pulseaudio && unpack "${STAGING_P}.tar.gz"
fi
- use pulseaudio && unpack "${PULSE_PATCHES}.tar.bz2"
- if use pipelight; then
- unpack "${COMPHOLIO_PATCHES}.tar.gz"
- # we use a separate pulseaudio patchset
- rm -r "${COMPHOLIO_PATCHES}/patches/06-winepulse" || die
- # ... and need special tools for binary patches
- mv "${COMPHOLIO_PATCHES}/patches/10-Missing_Fonts" "${T}" || die
- fi
unpack "${WINE_GENTOO}.tar.bz2"
+ use gstreamer && unpack "${GST_P}.patch.bz2"
l10n_find_plocales_changes "${S}/po" "" ".po"
}
src_prepare() {
local md5="$(md5sum server/protocol.def)"
- local f
local PATCHES=(
"${FILESDIR}"/${PN}-1.5.26-winegcc.patch #260726
"${FILESDIR}"/${PN}-1.4_rc2-multilib-portage.patch #395615
"${FILESDIR}"/${PN}-1.7.12-osmesa-check.patch #429386
"${FILESDIR}"/${PN}-1.6-memset-O3.patch #480508
)
- use pulseaudio && PATCHES+=(
- "../${PULSE_PATCHES}"/*.patch #421365
- )
if use gstreamer; then
# See http://bugs.winehq.org/show_bug.cgi?id=30557
ewarn "Applying experimental patch to fix GStreamer support. Note that"
ewarn "this patch has been reported to cause crashes in certain games."
- PATCHES+=( "../${PULSE_PATCHES}"/gstreamer/*.patch )
+ # Wine-Staging 1.7.38 "ntdll: Fix race-condition when threads are killed
+ # during shutdown" patch prevents the gstreamer patch from applying cleanly.
+ # So undo the staging patch, apply gstreamer, then re-apply rebased staging
+ # patch on top.
+ if use staging; then
+ PATCHES+=(
+ "${FILESDIR}/${PN}-1.7.38-gstreamer-v5-staging-pre.patch"
+ "${WORKDIR}/${GST_P}.patch"
+ "${FILESDIR}/${PN}-1.7.38-gstreamer-v5-staging-post.patch" )
+ else
+ PATCHES+=( "${WORKDIR}/${GST_P}.patch" )
+ fi
fi
- if use pipelight; then
- ewarn "Applying the unofficial Compholio patchset for Pipelight support,"
- ewarn "which is unsupported by Wine developers. Please don't report bugs"
- ewarn "to Wine bugzilla unless you can reproduce them with USE=-pipelight"
-
- PATCHES+=(
- "../${COMPHOLIO_PATCHES}/patches"/*/*.patch #507950
- "../${COMPHOLIO_PATCHES}/patches/patch-list.patch"
+ if use staging; then
+ ewarn "Applying the unofficial Wine-Staging patchset which is unsupported"
+ ewarn "by Wine developers. Please don't report bugs to Wine bugzilla"
+ ewarn "unless you can reproduce them with USE=-staging"
+
+ local STAGING_EXCLUDE=""
+ use pipelight || STAGING_EXCLUDE="${STAGING_EXCLUDE} -W Pipelight"
+
+ # Launch wine-staging patcher in a subshell, using epatch as a backend, and gitapply.sh as a backend for binary patches
+ ebegin "Running Wine-Staging patch installer"
+ (
+ set -- DESTDIR="${S}" --backend=epatch --no-autoconf --all ${STAGING_EXCLUDE}
+ cd "${STAGING_DIR}/patches"
+ source "${STAGING_DIR}/patches/patchinstall.sh"
)
- # epatch doesn't support binary patches
- ebegin "Applying Compholio font patches"
- for f in "${T}/10-Missing_Fonts"/*.patch; do
- "../${COMPHOLIO_PATCHES}/debian/tools/gitapply.sh" < "${f}" || die "Failed to apply Compholio font patches"
- done
- eend
+ eend $?
+ elif use pulseaudio; then
+ PATCHES+=( "${STAGING_DIR}/patches/winepulse-PulseAudio_Support"/*.patch )
fi
autotools-utils_src_prepare
+ # Modification of the server protocol requires regenerating the server requests
if [[ "$(md5sum server/protocol.def)" != "${md5}" ]]; then
einfo "server/protocol.def was patched; running tools/make_requests"
tools/make_requests || die #432348
@@ -392,6 +418,7 @@ multilib_src_configure() {
$(use_with opengl)
$(use_with osmesa)
$(use_with oss)
+ $(use_with pcap)
$(use_with png)
$(use_with threads pthread)
$(use_with scanner sane)
@@ -405,8 +432,13 @@ multilib_src_configure() {
$(use_with xml xslt)
)
- use pulseaudio && myconf+=( --with-pulse )
- use pipelight && myconf+=( --with-xattr )
+ if use pulseaudio || use staging; then
+ myconf+=( $(use_with pulseaudio pulse) )
+ fi
+ use staging && myconf+=(
+ --with-xattr
+ $(use_with vaapi va)
+ )
local PKG_CONFIG AR RANLIB
# Avoid crossdev's i686-pc-linux-gnu-pkg-config if building wine32 on amd64; #472038
@@ -465,7 +497,7 @@ multilib_src_install_all() {
insinto /usr/share/wine/mono
doins "${DISTDIR}"/wine-mono-${MV}.msi
fi
- if ! use perl ; then
+ if ! use perl ; then # winedump calls function_grep.pl, and winemaker is a perl script
rm "${D}"usr/bin/{wine{dump,maker},function_grep.pl} "${D}"usr/share/man/man1/wine{dump,maker}.1 || die
fi