Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
play diabolo3 on gentoo - wine 1.5.2 patch tutorial
View unanswered posts
View posts from last 24 hours

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index Gamers & Players
View previous topic :: View next topic  
Author Message
casualx
n00b
n00b


Joined: 06 Feb 2012
Posts: 58
Location: switzerland

PostPosted: Mon May 14, 2012 11:47 pm    Post subject: play diabolo3 on gentoo - wine 1.5.2 patch tutorial Reply with quote

hello there
reccently d3 from blizzard was shipped and I get a guestcode from a friend!
playing it linux especially on gentoo is not so hard. what definitley works is the installation and the videos aswell as the mainmenu...couldnt play yet cause the servers were full

with a standard wine install it didnt work
http://appdb.winehq.org/objectManager.php?sClass=version&iId=25588

here are my ebuilds and partches. just add the patches to /usr/portage/app-emulation/wine/files and then redit the /usr/portage/app-emulation/wine/wine-1.5.2-eubuild.
finally regenerate the manifest with
Code:
repoman fix
in /usr/portage/app-emulation/wine

update from 17.05.2012
I add here the reset patch

/usr/portage/app-emulation/wine/files/reset.patch
source://http://bugs.winehq.org/attachment.cgi?id=39565
Code:
--- a/dlls/wined3d/device.c   
+++ a/dlls/wined3d/device.c   
@@ -5294,6 +5294,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
         wined3d_surface_decref(device->onscreen_depth_stencil);
         device->onscreen_depth_stencil = NULL;
     }
+    wined3d_device_set_depth_stencil(device, NULL);
 
     LIST_FOR_EACH_ENTRY_SAFE(resource, cursor, &device->resources, struct wined3d_resource, resource_list_entry)
     {
@@ -5393,11 +5394,9 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
         device->onscreen_depth_stencil = NULL;
     }
 
-    /* Reset the depth stencil */
+    /* Apply the auto depth stencil if the app requested one */
     if (swapchain_desc->enable_auto_depth_stencil)
         wined3d_device_set_depth_stencil(device, device->auto_depth_stencil);
-    else
-        wined3d_device_set_depth_stencil(device, NULL);
 
     TRACE("Resetting stateblock\n");
     wined3d_stateblock_decref(device->updateStateBlock);



/usr/portage/app-emulation/wine/files/diablo3_1.patch
source:http://bugs.winehq.org/attachment.cgi?id=39500
Code:

From 5154c12213cc2c960d8596660687add13d3421c7 Mon Sep 17 00:00:00 2001
From: William Pettersson <william.pettersson@gmail.com>
Date: Thu, 22 Mar 2012 22:20:40 +1000
Subject: [PATCH] GetExtendedTcpTable

Adds support for TCP_TABLE_OWNER_PID_ALL
in GetExtendedTcpTable.
---
 dlls/iphlpapi/iphlpapi_main.c  |   27 +++++-
 dlls/iphlpapi/ipstats.c        |  209 ++++++++++++++++++++++++++++++----------
 dlls/iphlpapi/ipstats.h        |    2 +
 include/wine/server_protocol.h |   19 ++++-
 server/process.c               |   18 ++++
 server/protocol.def            |    8 ++
 server/request.h               |    6 +
 server/trace.c                 |   13 +++
 8 files changed, 248 insertions(+), 54 deletions(-)

diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index a569041..f54cb50 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -1883,15 +1883,36 @@ DWORD WINAPI GetTcpTable(PMIB_TCPTABLE pTcpTable, PDWORD pdwSize, BOOL bOrder)
 DWORD WINAPI GetExtendedTcpTable(PVOID pTcpTable, PDWORD pdwSize, BOOL bOrder,
                                  ULONG ulAf, TCP_TABLE_CLASS TableClass, ULONG Reserved)
 {
+    DWORD table_size;
+    VOID *table;
+    DWORD ret;
+
     TRACE("pTcpTable %p, pdwSize %p, bOrder %d, ulAf %u, TableClass %u, Reserved %u\n",
            pTcpTable, pdwSize, bOrder, ulAf, TableClass, Reserved);
 
-    if (ulAf == AF_INET6 || TableClass != TCP_TABLE_BASIC_ALL)
+    if (!pdwSize) return ERROR_INVALID_PARAMETER;
+
+    if (ulAf == AF_INET6)
     {
-        FIXME("ulAf = %u, TableClass = %u not supportted\n", ulAf, TableClass);
+        FIXME("AF_INET6 not supported\n");
         return ERROR_NOT_SUPPORTED;
     }
-    return GetTcpTable(pTcpTable, pdwSize, bOrder);
+
+    ret = tcp_build_table(GetProcessHeap(), 0, &table, &table_size, bOrder, TableClass);
+    if (!ret) {
+        if (!pTcpTable || *pdwSize < table_size) {
+          *pdwSize = table_size;
+          ret = ERROR_INSUFFICIENT_BUFFER;
+        }
+        else {
+          *pdwSize = table_size;
+          memcpy(pTcpTable, table, table_size);
+        }
+        HeapFree(GetProcessHeap(), 0, table);
+    }
+
+    TRACE("returning %d\n", ret);
+    return ret;
 }
 
 /******************************************************************
diff --git a/dlls/iphlpapi/ipstats.c b/dlls/iphlpapi/ipstats.c
index db475fb..704160e 100644
--- a/dlls/iphlpapi/ipstats.c
+++ b/dlls/iphlpapi/ipstats.c
@@ -27,6 +27,7 @@
 #include <string.h>
 #include <errno.h>
 #include <sys/types.h>
+#include <dirent.h>
 #ifdef HAVE_ALIAS_H
 #include <alias.h>
 #endif
@@ -1617,15 +1618,17 @@ DWORD WINAPI AllocateAndGetUdpTableFromStack(PMIB_UDPTABLE *ppUdpTable, BOOL bOr
 }
 
 
-static MIB_TCPTABLE *append_tcp_row( HANDLE heap, DWORD flags, MIB_TCPTABLE *table,
-                                     DWORD *count, const MIB_TCPROW *row )
+static VOID *append_tcp_row( HANDLE heap, DWORD flags, VOID *table, DWORD *count,
+                             const VOID *row, DWORD row_size, DWORD table_struct_size )
 {
-    if (table->dwNumEntries >= *count)
+    DWORD dwNumEntries = *(DWORD *)table;
+
+    if (dwNumEntries >= *count)
     {
-        MIB_TCPTABLE *new_table;
-        DWORD new_count = table->dwNumEntries * 2;
+        VOID *new_table;
+        DWORD new_count = dwNumEntries * 2;
 
-        if (!(new_table = HeapReAlloc( heap, flags, table, FIELD_OFFSET(MIB_TCPTABLE, table[new_count] ))))
+        if (!(new_table = HeapReAlloc( heap, flags, table, table_struct_size + row_size*new_count )))
         {
             HeapFree( heap, 0, table );
             return NULL;
@@ -1633,7 +1636,8 @@ static MIB_TCPTABLE *append_tcp_row( HANDLE heap, DWORD flags, MIB_TCPTABLE *tab
         *count = new_count;
         table = new_table;
     }
-    memcpy( &table->table[table->dwNumEntries++], row, sizeof(*row) );
+    memcpy( (CHAR *)table + sizeof(DWORD) + dwNumEntries*row_size, row, row_size );
+    *(DWORD *)table = dwNumEntries+1;
     return table;
 }
 
@@ -1674,38 +1678,34 @@ static int compare_tcp_rows(const void *a, const void *b)
 }
 
 
-/******************************************************************
- *    AllocateAndGetTcpTableFromStack (IPHLPAPI.@)
- *
- * Get the TCP connection table.
- * Like GetTcpTable(), but allocate the returned table from heap.
- *
- * PARAMS
- *  ppTcpTable [Out] pointer into which the MIB_TCPTABLE is
- *                   allocated and returned.
- *  bOrder     [In]  whether to sort the table
- *  heap       [In]  heap from which the table is allocated
- *  flags      [In]  flags to HeapAlloc
- *
- * RETURNS
- *  ERROR_INVALID_PARAMETER if ppTcpTable is NULL, whatever GetTcpTable()
- *  returns otherwise.
- */
-DWORD WINAPI AllocateAndGetTcpTableFromStack( PMIB_TCPTABLE *ppTcpTable, BOOL bOrder,
-                                              HANDLE heap, DWORD flags)
+#include "wine/server.h"
+#define STATUS_SUCCESS 0
+DWORD tcp_build_table(HANDLE heap, DWORD flags, VOID **table, DWORD *table_size, BOOL bOrder,
+                      TCP_TABLE_CLASS TableClass)
 {
-    MIB_TCPTABLE *table;
-    MIB_TCPROW row;
-    DWORD ret = NO_ERROR, count = 16;
-
-    TRACE("table %p, bOrder %d, heap %p, flags 0x%08x\n", ppTcpTable, bOrder, heap, flags);
+    DWORD ret = NO_ERROR, row_size, table_struct_size;
+    MIB_TCPROW_OWNER_PID row;
+    DWORD count = 16;
 
-    if (!ppTcpTable) return ERROR_INVALID_PARAMETER;
+    switch(TableClass)
+    {
+        case TCP_TABLE_BASIC_ALL:
+            row_size = sizeof(MIB_TCPROW);
+            table_struct_size = sizeof(MIB_TCPTABLE)-row_size;
+            break;
+        case TCP_TABLE_OWNER_PID_ALL:
+            row_size = sizeof(MIB_TCPROW_OWNER_PID);
+            table_struct_size = sizeof(MIB_TCPTABLE_OWNER_PID)-row_size;
+            break;
+        default:
+            FIXME("TableClass = %u not supported\n", TableClass);
+            return ERROR_NOT_SUPPORTED;
+    }
 
-    if (!(table = HeapAlloc( heap, flags, FIELD_OFFSET(MIB_TCPTABLE, table[count] ))))
+    if (!(*table = HeapAlloc( heap, flags, table_struct_size+row_size*count )))
         return ERROR_OUTOFMEMORY;
 
-    table->dwNumEntries = 0;
+    *(DWORD *)*table = 0;
 
 #ifdef __linux__
     {
@@ -1720,14 +1720,86 @@ DWORD WINAPI AllocateAndGetTcpTableFromStack( PMIB_TCPTABLE *ppTcpTable, BOOL bO
             ptr = fgets(buf, sizeof(buf), fp);
             while ((ptr = fgets(buf, sizeof(buf), fp)))
             {
-                if (sscanf( ptr, "%x: %x:%x %x:%x %x", &dummy, &row.dwLocalAddr, &row.dwLocalPort,
-                            &row.dwRemoteAddr, &row.dwRemotePort, &row.u.dwState ) != 6)
+                int inode;
+                int status = 0; /* STATUS_SUCCESS if the corresponding row
+                                 * has a wine-pid. */
+
+                if (sscanf( ptr, "%x: %x:%x %x:%x %x %*s %*s %*s %*s %*s %d", &dummy, &row.dwLocalAddr, &row.dwLocalPort,
+                            &row.dwRemoteAddr, &row.dwRemotePort, &row.dwState, &inode ) != 7)
                     continue;
-                row.dwLocalPort = htons( row.dwLocalPort );
-                row.dwRemotePort = htons( row.dwRemotePort );
-                row.u.State = TCPStateToMIBState( row.u.dwState );
-                if (!(table = append_tcp_row( heap, flags, table, &count, &row )))
-                    break;
+                if (inode)
+                {
+                    char fdDir[40];
+                    char socketName[40];
+                    DIR *proc;
+                    struct dirent *procEnt;
+                    int unix_pid=0;
+                    sprintf(socketName,"socket:[%d]",inode);
+                   
+                    /* To find the unix PID owning an inode,
+                     * we traverse /proc, look inside each
+                     * process directory, and read symbolic
+                     * links in the fd subdirectory until
+                     * we find one that matches socketName.
+                     * We then check that this unix_pid
+                     * actually corresponds to a wine-pid. */
+
+                    if ( (proc = opendir("/proc")))
+                    {
+                        while ((procEnt = readdir(proc)))
+                        {
+                            if ((procEnt->d_name[0] >= '0') &&(procEnt->d_name[0] <= '9'))
+                            {
+                                DIR *fds;
+                                struct dirent *ent;
+                                sprintf(fdDir, "/proc/%d/fd", atoi(procEnt->d_name));
+                                if ((fds = opendir(fdDir)))
+                                {
+                                    while (( ent = readdir(fds) ) )
+                                    {
+                                        char fdLinkName[40];
+                                        char fdName[40];
+                                        int len;
+                                        sprintf(fdLinkName, "/proc/%s/fd/%s", procEnt->d_name, ent->d_name);
+                                        if ( (len = readlink(fdLinkName, fdName, 40)) > 0 )
+                                        {
+                                            fdName[len]='\0';
+                                            if ( (len == strlen(socketName)) && (strncmp(socketName,fdName, len) == 0))
+                                            {
+                                                unix_pid = atoi(procEnt->d_name);
+                                                SERVER_START_REQ( find_process )
+                                                {
+                                                    req->unix_pid = unix_pid;
+                                                    status = wine_server_call( req );
+                                                    if (status == STATUS_SUCCESS)
+                                                        row.dwOwningPid = reply->pid;
+                                                }
+                                                SERVER_END_REQ;
+                                                if (status == STATUS_SUCCESS)
+                                                {
+                                                    closedir(fds);
+                                                    closedir(proc);
+                                                    goto found_pid;
+                                                }
+                                            }
+                                        }
+                                    }
+                                    closedir(fds);
+                                }
+                            }
+                        }
+                        closedir(proc);
+                    }
+                }
+found_pid:
+                if (status == STATUS_SUCCESS)
+                {
+                  row.dwLocalPort = htons( row.dwLocalPort );
+                  row.dwRemotePort = htons( row.dwRemotePort );
+                  row.dwState = TCPStateToMIBState( row.dwState );
+                  if (!(*table = append_tcp_row( heap, flags, *table, &count, &row, row_size, table_struct_size )))
+                      break;
+                }
             }
             fclose( fp );
         }
@@ -1749,8 +1821,8 @@ DWORD WINAPI AllocateAndGetTcpTableFromStack( PMIB_TCPTABLE *ppTcpTable, BOOL bO
                     row.dwLocalPort = htons( entry->tcpConnLocalPort );
                     row.dwRemoteAddr = entry->tcpConnRemAddress;
                     row.dwRemotePort = htons( entry->tcpConnRemPort );
-                    row.u.dwState = entry->tcpConnState;
-                    if (!(table = append_tcp_row( heap, flags, table, &count, &row ))) break;
+                    row.dwState = entry->tcpConnState;
+                    if (!(*table = append_tcp_row( heap, flags, *table, &count, &row, row_size, table_struct_size ))) break;
                 }
                 HeapFree( GetProcessHeap(), 0, data );
             }
@@ -1828,8 +1900,8 @@ DWORD WINAPI AllocateAndGetTcpTableFromStack( PMIB_TCPTABLE *ppTcpTable, BOOL bO
             row.dwLocalPort = pINData->inp_lport;
             row.dwRemoteAddr = pINData->inp_faddr.s_addr;
             row.dwRemotePort = pINData->inp_fport;
-            row.u.State = TCPStateToMIBState (pTCPData->t_state);
-            if (!(table = append_tcp_row( heap, flags, table, &count, &row ))) break;
+            row.dwState = TCPStateToMIBState (pTCPData->t_state);
+            if (!(*table = append_tcp_row( heap, flags, *table, &count, &row, row_size, table_struct_size ))) break;
         }
 
     done:
@@ -1840,14 +1912,51 @@ DWORD WINAPI AllocateAndGetTcpTableFromStack( PMIB_TCPTABLE *ppTcpTable, BOOL bO
     ret = ERROR_NOT_SUPPORTED;
 #endif
 
-    if (!table) return ERROR_OUTOFMEMORY;
+    if (!*table) return ERROR_OUTOFMEMORY;
     if (!ret)
     {
-        if (bOrder && table->dwNumEntries)
-            qsort( table->table, table->dwNumEntries, sizeof(row), compare_tcp_rows );
-        *ppTcpTable = table;
+        DWORD dwNumEntries = *(DWORD *)*table;
+        if (bOrder && dwNumEntries)
+            qsort( (CHAR*)(*table) + sizeof(DWORD), dwNumEntries, row_size, compare_tcp_rows );
+        if (table_size)
+            *table_size = table_struct_size + row_size*dwNumEntries;
     }
-    else HeapFree( heap, flags, table );
+    else HeapFree( heap, flags, *table );
+    return ret;
+}
+
+
+/******************************************************************
+ *    AllocateAndGetTcpTableFromStack (IPHLPAPI.@)
+ *
+ * Get the TCP connection table.
+ * Like GetTcpTable(), but allocate the returned table from heap.
+ *
+ * PARAMS
+ *  ppTcpTable [Out] pointer into which the MIB_TCPTABLE is
+ *                   allocated and returned.
+ *  bOrder     [In]  whether to sort the table
+ *  heap       [In]  heap from which the table is allocated
+ *  flags      [In]  flags to HeapAlloc
+ *
+ * RETURNS
+ *  ERROR_INVALID_PARAMETER if ppTcpTable is NULL, whatever GetTcpTable()
+ *  returns otherwise.
+ */
+DWORD WINAPI AllocateAndGetTcpTableFromStack( PMIB_TCPTABLE *ppTcpTable, BOOL bOrder,
+                                              HANDLE heap, DWORD flags)
+{
+    MIB_TCPTABLE *table;
+    DWORD ret;
+
+    TRACE("table %p, bOrder %d, heap %p, flags 0x%08x\n", ppTcpTable, bOrder, heap, flags);
+
+    if (!ppTcpTable) return ERROR_INVALID_PARAMETER;
+
+    ret = tcp_build_table(heap, flags, (VOID **)&table, NULL, bOrder, TCP_TABLE_BASIC_ALL);
+    if (ret == NO_ERROR)
+        *ppTcpTable = table;
+
     TRACE( "returning ret %u table %p\n", ret, table );
     return ret;
 }
diff --git a/dlls/iphlpapi/ipstats.h b/dlls/iphlpapi/ipstats.h
index 3522716..c546512 100644
--- a/dlls/iphlpapi/ipstats.h
+++ b/dlls/iphlpapi/ipstats.h
@@ -27,6 +27,8 @@
 #include "winbase.h"
 #include "iprtrmib.h"
 
+DWORD tcp_build_table(HANDLE heap, DWORD flags, VOID **table, DWORD *table_size, BOOL bOrder, TCP_TABLE_CLASS TableClass);
+
 /* Fills in entry's interface stats, using name to find them.
  * Returns ERROR_INVALID_PARAMETER if name or entry is NULL, NO_ERROR otherwise.
  */
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index 0e989da..9851cbb 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -716,6 +716,20 @@ struct init_thread_reply
 
 
 
+struct find_process_request
+{
+    struct request_header __header;
+    int          unix_pid;
+};
+struct find_process_reply
+{
+    struct reply_header __header;
+    process_id_t pid;
+    char __pad_12[4];
+};
+
+
+
 struct terminate_process_request
 {
     struct request_header __header;
@@ -4897,6 +4911,7 @@ enum request
     REQ_get_startup_info,
     REQ_init_process_done,
     REQ_init_thread,
+    REQ_find_process,
     REQ_terminate_process,
     REQ_terminate_thread,
     REQ_get_process_info,
@@ -5151,6 +5166,7 @@ union generic_request
     struct get_startup_info_request get_startup_info_request;
     struct init_process_done_request init_process_done_request;
     struct init_thread_request init_thread_request;
+    struct find_process_request find_process_request;
     struct terminate_process_request terminate_process_request;
     struct terminate_thread_request terminate_thread_request;
     struct get_process_info_request get_process_info_request;
@@ -5403,6 +5419,7 @@ union generic_reply
     struct get_startup_info_reply get_startup_info_reply;
     struct init_process_done_reply init_process_done_reply;
     struct init_thread_reply init_thread_reply;
+    struct find_process_reply find_process_reply;
     struct terminate_process_reply terminate_process_reply;
     struct terminate_thread_reply terminate_thread_reply;
     struct get_process_info_reply get_process_info_reply;
@@ -5646,6 +5663,6 @@ union generic_reply
     struct set_suspend_context_reply set_suspend_context_reply;
 };
 
-#define SERVER_PROTOCOL_VERSION 431
+#define SERVER_PROTOCOL_VERSION 432
 
 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/server/process.c b/server/process.c
index de3b594..2acaf77 100644
--- a/server/process.c
+++ b/server/process.c
@@ -989,6 +989,24 @@ DECL_HANDLER(new_process)
     release_object( info );
 }
 
+/* Find a process from the Unix pid */
+DECL_HANDLER(find_process)
+{
+    struct process *process;
+    int i;
+
+    for(i=0; i<used_ptid_entries; i++)
+    {
+        process = (struct process *) ptid_entries[i].ptr;
+        if (process && process->unix_pid == req->unix_pid)
+        {
+            reply->pid = get_process_id( process );
+            return;
+        }
+    }
+    set_error( STATUS_INVALID_PARAMETER );
+}
+
 /* Retrieve information about a newly started process */
 DECL_HANDLER(get_new_process_info)
 {
diff --git a/server/protocol.def b/server/protocol.def
index 80c0cd3..b36b878 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -695,6 +695,14 @@ typedef union
 @END
 
 
+/* Find a process from the Unix pid  */
+@REQ(find_process)
+    int          unix_pid;     /* Unix pid of the process */
+@REPLY
+    process_id_t pid;          /* Wine process id of the process */
+@END
+
+
 /* Terminate a process */
 @REQ(terminate_process)
     obj_handle_t handle;       /* process handle to terminate */
diff --git a/server/request.h b/server/request.h
index 5b45cf9..8d59a46 100644
--- a/server/request.h
+++ b/server/request.h
@@ -117,6 +117,7 @@ DECL_HANDLER(new_thread);
 DECL_HANDLER(get_startup_info);
 DECL_HANDLER(init_process_done);
 DECL_HANDLER(init_thread);
+DECL_HANDLER(find_process);
 DECL_HANDLER(terminate_process);
 DECL_HANDLER(terminate_thread);
 DECL_HANDLER(get_process_info);
@@ -370,6 +371,7 @@ static const req_handler req_handlers[REQ_NB_REQUESTS] =
     (req_handler)req_get_startup_info,
     (req_handler)req_init_process_done,
     (req_handler)req_init_thread,
+    (req_handler)req_find_process,
     (req_handler)req_terminate_process,
     (req_handler)req_terminate_thread,
     (req_handler)req_get_process_info,
@@ -696,6 +698,10 @@ C_ASSERT( FIELD_OFFSET(struct init_thread_reply, info_size) == 24 );
 C_ASSERT( FIELD_OFFSET(struct init_thread_reply, version) == 28 );
 C_ASSERT( FIELD_OFFSET(struct init_thread_reply, all_cpus) == 32 );
 C_ASSERT( sizeof(struct init_thread_reply) == 40 );
+C_ASSERT( FIELD_OFFSET(struct find_process_request, unix_pid) == 12 );
+C_ASSERT( sizeof(struct find_process_request) == 16 );
+C_ASSERT( FIELD_OFFSET(struct find_process_reply, pid) == 8 );
+C_ASSERT( sizeof(struct find_process_reply) == 16 );
 C_ASSERT( FIELD_OFFSET(struct terminate_process_request, handle) == 12 );
 C_ASSERT( FIELD_OFFSET(struct terminate_process_request, exit_code) == 16 );
 C_ASSERT( sizeof(struct terminate_process_request) == 24 );
diff --git a/server/trace.c b/server/trace.c
index cfef963..5b0c85e 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -1100,6 +1100,16 @@ static void dump_init_thread_reply( const struct init_thread_reply *req )
     fprintf( stderr, ", all_cpus=%08x", req->all_cpus );
 }
 
+static void dump_find_process_request( const struct find_process_request *req )
+{
+    fprintf( stderr, " unix_pid=%d", req->unix_pid );
+}
+
+static void dump_find_process_reply( const struct find_process_reply *req )
+{
+    fprintf( stderr, " pid=%04x", req->pid );
+}
+
 static void dump_terminate_process_request( const struct terminate_process_request *req )
 {
     fprintf( stderr, " handle=%04x", req->handle );
@@ -3920,6 +3930,7 @@ static const dump_func req_dumpers[REQ_NB_REQUESTS] = {
     (dump_func)dump_get_startup_info_request,
     (dump_func)dump_init_process_done_request,
     (dump_func)dump_init_thread_request,
+    (dump_func)dump_find_process_request,
     (dump_func)dump_terminate_process_request,
     (dump_func)dump_terminate_thread_request,
     (dump_func)dump_get_process_info_request,
@@ -4170,6 +4181,7 @@ static const dump_func reply_dumpers[REQ_NB_REQUESTS] = {
     (dump_func)dump_get_startup_info_reply,
     NULL,
     (dump_func)dump_init_thread_reply,
+    (dump_func)dump_find_process_reply,
     (dump_func)dump_terminate_process_reply,
     (dump_func)dump_terminate_thread_reply,
     (dump_func)dump_get_process_info_reply,
@@ -4420,6 +4432,7 @@ static const char * const req_names[REQ_NB_REQUESTS] = {
     "get_startup_info",
     "init_process_done",
     "init_thread",
+    "find_process",
     "terminate_process",
     "terminate_thread",
     "get_process_info",
--
1.7.3.4


/usr/portage/app-emulation/wine/files/diablo3_2.patch
source:http://bugs.winehq.org/attachment.cgi?id=39494

Code:

diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index d3a4590..dd818f2 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -1700,7 +1700,7 @@ static NTSTATUS WS2_async_accept( void *arg, IO_STATUS_BLOCK *iosb, NTSTATUS sta
     if (status != STATUS_PENDING)
         goto finish;
 
-    return STATUS_SUCCESS;
+    return STATUS_ALERTED;
 
 finish:
     iosb->u.Status = status;
@@ -1708,8 +1708,6 @@ finish:
 
     if (wsa->user_overlapped->hEvent)
         SetEvent(wsa->user_overlapped->hEvent);
-    if (wsa->cvalue)
-        WS_AddCompletion( HANDLE2SOCKET(wsa->listen_socket), wsa->cvalue, iosb->u.Status, iosb->Information );
 
     *apc = ws2_async_accept_apc;
     return status;
@@ -2040,7 +2038,9 @@ static BOOL WINAPI WS2_AcceptEx(SOCKET listener, SOCKET acceptor, PVOID dest, DW
         req->async.callback = wine_server_client_ptr( WS2_async_accept );
         req->async.iosb     = wine_server_client_ptr( overlapped );
         req->async.arg      = wine_server_client_ptr( wsa );
-        /* We don't set event or completion since we may also have to read */
+        req->async.cvalue   = cvalue;
+        /* We don't set event since we may also have to read, completion returns STATUS_ALERTED
+         * to indicate that no completion should be queued. */
         status = wine_server_call( req );
     }
     SERVER_END_REQ;
diff --git a/server/async.c b/server/async.c
index dd28dff..b8be5cd 100644
--- a/server/async.c
+++ b/server/async.c
@@ -256,10 +256,12 @@ void async_set_result( struct object *obj, unsigned int status, unsigned int tot
     else
     {
         if (async->timeout) remove_timeout_user( async->timeout );
+        if (async->completion && async->data.cvalue && status != STATUS_ALERTED)
+            add_completion( async->completion, async->comp_key, async->data.cvalue, status, total );
+        else if (async->completion && async->data.cvalue && status == STATUS_ALERTED)
+            status = STATUS_SUCCESS;
         async->timeout = NULL;
         async->status = status;
-        if (async->completion && async->data.cvalue)
-            add_completion( async->completion, async->comp_key, async->data.cvalue, status, total );
         if (apc)
         {
             apc_call_t data;



/usr/portage/app-emulation/wine/wine-1.5.2.ebuild
source: gentoo, patches added by casualX

Code:

# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-1.5.2.ebuild,v 1.3 2012/05/12 21:12:50 tetromino Exp $

EAPI="4"

inherit autotools eutils flag-o-matic multilib pax-utils

if [[ ${PV} == "9999" ]] ; then
   EGIT_REPO_URI="git://source.winehq.org/git/wine.git"
   inherit git-2
   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="1.5"
DESCRIPTION="free implementation of Windows(tm) on Unix"
HOMEPAGE="http://www.winehq.org/"
SRC_URI="${SRC_URI}
   gecko? (
      mirror://sourceforge/wine/wine_gecko-${GV}-x86.msi
      win64? ( mirror://sourceforge/wine/wine_gecko-${GV}-x86_64.msi )
   )"

LICENSE="LGPL-2.1"
SLOT="0"
IUSE="alsa capi cups custom-cflags elibc_glibc fontconfig +gecko gnutls gphoto2 gsm gstreamer hardened jpeg lcms ldap mp3 ncurses nls odbc openal opencl +opengl +oss +perl png samba scanner selinux ssl test +threads +truetype udisks v4l +win32 +win64 +X xcomposite xinerama xml"
REQUIRED_USE="elibc_glibc? ( threads )" #286560
RESTRICT="test" #72375

MLIB_DEPS="amd64? (
   truetype? ( >=app-emulation/emul-linux-x86-xlibs-2.1 )
   X? (
      >=app-emulation/emul-linux-x86-xlibs-2.1
      >=app-emulation/emul-linux-x86-soundlibs-2.1
   )
   mp3? ( app-emulation/emul-linux-x86-soundlibs )
   odbc? ( app-emulation/emul-linux-x86-db )
   openal? ( app-emulation/emul-linux-x86-sdl )
   opengl? ( app-emulation/emul-linux-x86-opengl )
   scanner? ( app-emulation/emul-linux-x86-medialibs )
   v4l? ( app-emulation/emul-linux-x86-medialibs )
   app-emulation/emul-linux-x86-baselibs
   >=sys-kernel/linux-headers-2.6
   )"
RDEPEND="truetype? ( >=media-libs/freetype-2.0.0 media-fonts/corefonts )
   perl? ( dev-lang/perl dev-perl/XML-Simple )
   capi? ( net-dialup/capi4k-utils )
   ncurses? ( >=sys-libs/ncurses-5.2 )
   fontconfig? ( media-libs/fontconfig )
   gphoto2? ( media-libs/libgphoto2 )
   openal? ( media-libs/openal )
   udisks? (
      sys-apps/dbus
      sys-fs/udisks:0
   )
   gnutls? ( net-libs/gnutls )
   gstreamer? ( media-libs/gstreamer media-libs/gst-plugins-base )
   X? (
      x11-libs/libXcursor
      x11-libs/libXrandr
      x11-libs/libXi
      x11-libs/libXmu
      x11-libs/libXxf86vm
      x11-apps/xmessage
   )
   xinerama? ( x11-libs/libXinerama )
   alsa? ( media-libs/alsa-lib )
   cups? ( net-print/cups )
   opencl? ( virtual/opencl )
   opengl? ( virtual/opengl )
   gsm? ( media-sound/gsm )
   jpeg? ( virtual/jpeg )
   ldap? ( net-nds/openldap )
   lcms? ( =media-libs/lcms-1* )
   mp3? ( >=media-sound/mpg123-1.5.0 )
   nls? ( sys-devel/gettext )
   odbc? ( dev-db/unixODBC )
   samba? ( >=net-fs/samba-3.0.25 )
   selinux? ( sec-policy/selinux-wine )
   xml? ( dev-libs/libxml2 dev-libs/libxslt )
   scanner? ( media-gfx/sane-backends )
   ssl? ( dev-libs/openssl )
   png? ( media-libs/libpng )
   v4l? ( media-libs/libv4l )
   !win64? ( ${MLIB_DEPS} )
   win32? ( ${MLIB_DEPS} )
   xcomposite? ( x11-libs/libXcomposite )"
DEPEND="${RDEPEND}
   X? (
      x11-proto/inputproto
      x11-proto/xextproto
      x11-proto/xf86vidmodeproto
   )
   xinerama? ( x11-proto/xineramaproto )
   !hardened? ( sys-devel/prelink )
   virtual/pkgconfig
   virtual/yacc
   sys-devel/flex"

src_unpack() {
   if use win64 ; then
      [[ $(( $(gcc-major-version) * 100 + $(gcc-minor-version) )) -lt 404 ]] \
         && die "you need gcc-4.4+ to build 64bit wine"
   fi

   if use win32 && use opencl; then
      [[ x$(eselect opencl show) = "xintel" ]] &&
         die "Cannot build wine[opencl,win32]: intel-ocl-sdk is 64-bit only" # 403947
   fi

   if [[ ${PV} == "9999" ]] ; then
      git-2_src_unpack
   else
      unpack ${MY_P}.tar.bz2
   fi
}

src_prepare() {

        epatch "${FILESDIR}"/reset.patch
   epatch "${FILESDIR}"/diablo3_1.patch
   epatch "${FILESDIR}"/diablo3_2.patch
   epatch "${FILESDIR}"/${PN}-1.1.15-winegcc.patch #260726
   epatch "${FILESDIR}"/${PN}-1.4_rc2-multilib-portage.patch #395615
   epatch_user #282735
   eautoreconf
   sed -i '/^UPDATE_DESKTOP_DATABASE/s:=.*:=true:' tools/Makefile.in || die
   sed -i '/^MimeType/d' tools/wine.desktop || die #117785
}

do_configure() {
   local builddir="${WORKDIR}/wine$1"
   mkdir -p "${builddir}"
   pushd "${builddir}" >/dev/null

   ECONF_SOURCE=${S} \
   econf \
      --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 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 nls gettext) \
      $(use_with openal) \
      $(use_with opencl) \
      $(use_with opengl) \
      $(use_with ssl openssl) \
      $(use_with oss) \
      $(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) \
      $2

   emake -j1 depend

   popd >/dev/null
}

src_configure() {
   export LDCONFIG=/bin/true
   use custom-cflags || strip-flags

   if use win64 ; then
      do_configure 64 --enable-win64
      use win32 && ABI=x86 do_configure 32 --with-wine64=../wine64
   else
      ABI=x86 do_configure 32 --disable-win64
   fi
}

src_compile() {
   local b
   for b in 64 32 ; do
      local builddir="${WORKDIR}/wine${b}"
      [[ -d ${builddir} ]] || continue
      emake -C "${builddir}" all
   done
}

src_install() {
   local b
   for b in 64 32 ; do
      local builddir="${WORKDIR}/wine${b}"
      [[ -d ${builddir} ]] || continue
      emake -C "${builddir}" install DESTDIR="${D}"
   done
   dodoc ANNOUNCE AUTHORS README
   if use gecko ; then
      insinto /usr/share/wine/gecko
      doins "${DISTDIR}"/wine_gecko-${GV}-x86.msi
      use win64 && doins "${DISTDIR}"/wine_gecko-${GV}-x86_64.msi
   fi
   if ! use perl ; then
      rm "${D}"usr/bin/{wine{dump,maker},function_grep.pl} "${D}"usr/share/man/man1/wine{dump,maker}.1 || die
   fi

   if use win32 || ! use win64; then
      pax-mark psmr "${D}"usr/bin/wine{,-preloader} #255055
   fi
   use win64 && pax-mark psmr "${D}"usr/bin/wine64{,-preloader}

   if use win64 && ! use win32; then
      dosym /usr/bin/wine{64,} # 404331
      dosym /usr/bin/wine{64,}-preloader
   fi
}


the changes are I added these two lines
Code:

epatch "${FILESDIR}"/diablo3_1.patch
epatch "${FILESDIR}"/diablo3_2.patch


Last edited by casualx on Thu May 17, 2012 3:06 pm; edited 2 times in total
Back to top
View user's profile Send private message
Phancy Physicist
Apprentice
Apprentice


Joined: 10 Apr 2005
Posts: 193

PostPosted: Tue May 15, 2012 5:44 am    Post subject: Reply with quote

Thanks casualx!!!

Installer runs perfectly if you follow this guide. Just be sure to modify wine 1.5.2 and no other version.
Back to top
View user's profile Send private message
casualx
n00b
n00b


Joined: 06 Feb 2012
Posts: 58
Location: switzerland

PostPosted: Tue May 15, 2012 7:01 am    Post subject: Reply with quote

youre welcome! its a bring back to this forum for the help they gave me in the past
I have played allready but after waiting so long cause the servers were full it was very late but the game seems to work under linux with very good conditions
Back to top
View user's profile Send private message
nenemsis5
n00b
n00b


Joined: 23 Oct 2007
Posts: 72

PostPosted: Wed May 16, 2012 10:08 am    Post subject: Reply with quote

hi can u make this ebuild also on wine 1.5.4?

thanks
Back to top
View user's profile Send private message
simcop2387
Apprentice
Apprentice


Joined: 14 Aug 2002
Posts: 200
Location: Galactic Sector ZZ9 Plural Z Alpha

PostPosted: Wed May 16, 2012 4:07 pm    Post subject: Reply with quote

To make it work with 1.5.4, just use the patches directly from http://appdb.winehq.org/objectManager.php?sClass=version&iId=25953&iTestingId=71519 in the Recommended Source Code patches section. They all apply cleanly to 1.5.4 and it installed fine for me yesterday.
_________________
1+1=11=2
Back to top
View user's profile Send private message
calavicci
n00b
n00b


Joined: 28 Mar 2006
Posts: 50

PostPosted: Wed May 16, 2012 5:35 pm    Post subject: Reply with quote

Patch 2 dies painfully; it can't seem to find anything. Here's the output:

/var/tmp/portage/app-emulation/wine-1.5.2/temp/diablo3_2.patch.out
Code:

***** diablo3_2.patch *****
PWD: /var/tmp/portage/app-emulation/wine-1.5.2/work/wine-1.5.2

===========================

PATCH COMMAND:  patch -p0 -g0 -E --no-backup-if-mismatch  < '/usr/portage/app-emulation/wine/files/diablo3_2.patch'

===========================
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|index d3a4590..dd818f2 100644
|--- a/dlls/ws2_32/socket.c
|+++ b/dlls/ws2_32/socket.c
--------------------------
No file to patch.  Skipping patch.
3 out of 3 hunks ignored
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/server/async.c b/server/async.c
|index dd28dff..b8be5cd 100644
|--- a/server/async.c
|+++ b/server/async.c
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored

patch program exited with status 1
===========================

PATCH COMMAND:  patch -p1 -g0 -E --no-backup-if-mismatch  < '/usr/portage/app-emulation/wine/files/diablo3_2.patch'

===========================
patching file dlls/ws2_32/socket.c
Hunk #1 FAILED at 1700.
Hunk #2 FAILED at 1708.
Hunk #3 FAILED at 2038.
3 out of 3 hunks FAILED -- saving rejects to file dlls/ws2_32/socket.c.rej
patching file server/async.c
Hunk #1 FAILED at 256.
1 out of 1 hunk FAILED -- saving rejects to file server/async.c.rej

patch program exited with status 1
===========================

PATCH COMMAND:  patch -p2 -g0 -E --no-backup-if-mismatch  < '/usr/portage/app-emulation/wine/files/diablo3_2.patch'

===========================
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|index d3a4590..dd818f2 100644
|--- a/dlls/ws2_32/socket.c
|+++ b/dlls/ws2_32/socket.c
--------------------------
No file to patch.  Skipping patch.
3 out of 3 hunks ignored
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/server/async.c b/server/async.c
|index dd28dff..b8be5cd 100644
|--- a/server/async.c
|+++ b/server/async.c
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored

patch program exited with status 1
===========================

PATCH COMMAND:  patch -p3 -g0 -E --no-backup-if-mismatch  < '/usr/portage/app-emulation/wine/files/diablo3_2.patch'

===========================
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|index d3a4590..dd818f2 100644
|--- a/dlls/ws2_32/socket.c
|+++ b/dlls/ws2_32/socket.c
--------------------------
No file to patch.  Skipping patch.
3 out of 3 hunks ignored
missing header for unified diff at line 38 of patch
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/server/async.c b/server/async.c
|index dd28dff..b8be5cd 100644
|--- a/server/async.c
|+++ b/server/async.c
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored

patch program exited with status 1
===========================

PATCH COMMAND:  patch -p4 -g0 -E --no-backup-if-mismatch  < '/usr/portage/app-emulation/wine/files/diablo3_2.patch'

===========================
missing header for unified diff at line 5 of patch
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|index d3a4590..dd818f2 100644
|--- a/dlls/ws2_32/socket.c
|+++ b/dlls/ws2_32/socket.c
--------------------------
No file to patch.  Skipping patch.
3 out of 3 hunks ignored
missing header for unified diff at line 38 of patch
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/server/async.c b/server/async.c
|index dd28dff..b8be5cd 100644
|--- a/server/async.c
|+++ b/server/async.c
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored

patch program exited with status 1


My today is essentially dedicated to making this work, so I'll post if I resolve it; but my ability here is limited, so it'll probably be slow going.
Back to top
View user's profile Send private message
simcop2387
Apprentice
Apprentice


Joined: 14 Aug 2002
Posts: 200
Location: Galactic Sector ZZ9 Plural Z Alpha

PostPosted: Wed May 16, 2012 5:41 pm    Post subject: Reply with quote

I'll try to post a real ebuild or overlay for you tonight for it. (Though I'll likely only add 1.5.4 to it) Since I've got it working on that version (install, resolution changes, and gameplay)
_________________
1+1=11=2
Back to top
View user's profile Send private message
calavicci
n00b
n00b


Joined: 28 Mar 2006
Posts: 50

PostPosted: Wed May 16, 2012 6:11 pm    Post subject: Reply with quote

1.5.4
Adding WINE version in bold to the top of posts to help readers quickly sort out which fix we're discussing.

Yeah, tried the rec patches for 1.5.4. They cause problems during compilation.

relevant part of /var/tmp/portage/app-emulation/wine-1.5.4/temp/build.log:
Code:

In file included from /var/tmp/portage/app-emulation/wine-1.5.4/work/wine-1.5.4/server/request.c:66:
/var/tmp/portage/app-emulation/wine-1.5.4/work/wine-1.5.4/server/request.h:617: error: size of array 'type name' is negative
/var/tmp/portage/app-emulation/wine-1.5.4/work/wine-1.5.4/server/request.h:773: error: size of array 'type name' is negative
/var/tmp/portage/app-emulation/wine-1.5.4/work/wine-1.5.4/server/request.h:820: error: size of array 'type name' is negative
/var/tmp/portage/app-emulation/wine-1.5.4/work/wine-1.5.4/server/request.h:821: error: size of array 'type name' is negative
Back to top
View user's profile Send private message
simcop2387
Apprentice
Apprentice


Joined: 14 Aug 2002
Posts: 200
Location: Galactic Sector ZZ9 Plural Z Alpha

PostPosted: Wed May 16, 2012 7:55 pm    Post subject: Reply with quote

WINE 1.5.4

Those errors are because you're building win64 version of wine also. The patches don't play well with it for some reason that I haven't investigated yet, however I have made an overlay with the ebuild and patches that will work. The ebuild forcibly disables the win64 version of wine to avoid that problem as it isn't needed for diablo 3.

Code:
layman -a git://github.com/simcop2387/wine-diablo3.git


should add the overlay for you and then you can emerge/cave resolve it without problems. I'll investigate what's going on with the win64 build later as i suspect it'll be fairly simple to fix.

edit: fixed url
_________________
1+1=11=2


Last edited by simcop2387 on Wed May 16, 2012 11:37 pm; edited 2 times in total
Back to top
View user's profile Send private message
kriz
Apprentice
Apprentice


Joined: 22 Jan 2003
Posts: 231

PostPosted: Wed May 16, 2012 10:54 pm    Post subject: Reply with quote

Code:

git clone git://source.winehq.org/git/wine.git ~/wine-git
cd ~/wine-git
wget http://source.winehq.org/patches/data/86102
wget http://source.winehq.org/patches/data/86103
wget http://source.winehq.org/patches/data/86104
wget http://source.winehq.org/patches/data/86105
patch -p1 < 86102
patch -p1 < 86103
patch -p1 < 86104
patch -p1 < 86105
./tools/make_requests
./configure
make -j8 (Intel Core i7)
make prefix="~/wine_diablo3" install


Last edited by kriz on Thu May 17, 2012 8:13 am; edited 1 time in total
Back to top
View user's profile Send private message
nenemsis5
n00b
n00b


Joined: 23 Oct 2007
Posts: 72

PostPosted: Wed May 16, 2012 11:08 pm    Post subject: Reply with quote

* Adding overlay,...
* Exception: Overlay "https://simcop2387@github.com/simcop2387/wine-diablo3.git" does not exist.

* CLI: Errors occured processing action add
* Exception: Overlay "https://simcop2387@github.com/simcop2387/wine-diablo3.git" does not exist.
Back to top
View user's profile Send private message
simcop2387
Apprentice
Apprentice


Joined: 14 Aug 2002
Posts: 200
Location: Galactic Sector ZZ9 Plural Z Alpha

PostPosted: Wed May 16, 2012 11:36 pm    Post subject: Reply with quote

Whoops! very sorry about that. I screwed up the URL earlier. I'm not used to giving out links to the repo and accidentally put in one that was a private url.

use the url
Code:
git://github.com/simcop2387/wine-diablo3.git
I'll update the original post with the corrected url.
_________________
1+1=11=2
Back to top
View user's profile Send private message
nenemsis5
n00b
n00b


Joined: 23 Oct 2007
Posts: 72

PostPosted: Wed May 16, 2012 11:41 pm    Post subject: Reply with quote

# layman -a git://github.com/simcop2387/wine-diablo3.git

* Adding overlay,...
* Exception: Overlay "git://github.com/simcop2387/wine-diablo3.git" does not exist.

* CLI: Errors occured processing action add
* Exception: Overlay "git://github.com/simcop2387/wine-diablo3.git" does not exist.
Back to top
View user's profile Send private message
calavicci
n00b
n00b


Joined: 28 Mar 2006
Posts: 50

PostPosted: Thu May 17, 2012 1:13 am    Post subject: Reply with quote

1.5.4

Yeah, just caught that 64-bit thing... guess I'll have to install in two places if I want all my programs to work. Thanks a bunch for your help!
Back to top
View user's profile Send private message
nukem996
l33t
l33t


Joined: 13 Nov 2003
Posts: 776

PostPosted: Thu May 17, 2012 3:14 am    Post subject: Reply with quote

calavicci wrote:
1.5.4

Yeah, just caught that 64-bit thing... guess I'll have to install in two places if I want all my programs to work. Thanks a bunch for your help!


Most windows programs are still 32-bit. You can apply the patches above and build with USE="-win64" and it will work.
Back to top
View user's profile Send private message
casualx
n00b
n00b


Joined: 06 Feb 2012
Posts: 58
Location: switzerland

PostPosted: Thu May 17, 2012 12:09 pm    Post subject: Reply with quote

dont you have a multilib installation?
Code:
eselect profile list

Code:
  [1]   default/linux/amd64/10.0
  [2]   default/linux/amd64/10.0/selinux
  [3]   default/linux/amd64/10.0/desktop
  [4]   default/linux/amd64/10.0/desktop/gnome *
  [5]   default/linux/amd64/10.0/desktop/kde
  [6]   default/linux/amd64/10.0/developer
  [7]   default/linux/amd64/10.0/no-multilib
  [8]   default/linux/amd64/10.0/server
  [9]   hardened/linux/amd64
  [10]  hardened/linux/amd64/selinux
  [11]  hardened/linux/amd64/no-multilib
  [12]  hardened/linux/amd64/no-multilib/selinux


as example and it worked fine for me...building a real ebuild was a good idea cause I havent any server to do that.thx
Back to top
View user's profile Send private message
casualx
n00b
n00b


Joined: 06 Feb 2012
Posts: 58
Location: switzerland

PostPosted: Thu May 17, 2012 12:11 pm    Post subject: Reply with quote

calavicci wrote:
Patch 2 dies painfully; it can't seem to find anything. Here's the output:

/var/tmp/portage/app-emulation/wine-1.5.2/temp/diablo3_2.patch.out
Code:

***** diablo3_2.patch *****
PWD: /var/tmp/portage/app-emulation/wine-1.5.2/work/wine-1.5.2

===========================

PATCH COMMAND:  patch -p0 -g0 -E --no-backup-if-mismatch  < '/usr/portage/app-emulation/wine/files/diablo3_2.patch'

===========================
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|index d3a4590..dd818f2 100644
|--- a/dlls/ws2_32/socket.c
|+++ b/dlls/ws2_32/socket.c
--------------------------
No file to patch.  Skipping patch.
3 out of 3 hunks ignored
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/server/async.c b/server/async.c
|index dd28dff..b8be5cd 100644
|--- a/server/async.c
|+++ b/server/async.c
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored

patch program exited with status 1
===========================

PATCH COMMAND:  patch -p1 -g0 -E --no-backup-if-mismatch  < '/usr/portage/app-emulation/wine/files/diablo3_2.patch'

===========================
patching file dlls/ws2_32/socket.c
Hunk #1 FAILED at 1700.
Hunk #2 FAILED at 1708.
Hunk #3 FAILED at 2038.
3 out of 3 hunks FAILED -- saving rejects to file dlls/ws2_32/socket.c.rej
patching file server/async.c
Hunk #1 FAILED at 256.
1 out of 1 hunk FAILED -- saving rejects to file server/async.c.rej

patch program exited with status 1
===========================

PATCH COMMAND:  patch -p2 -g0 -E --no-backup-if-mismatch  < '/usr/portage/app-emulation/wine/files/diablo3_2.patch'

===========================
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|index d3a4590..dd818f2 100644
|--- a/dlls/ws2_32/socket.c
|+++ b/dlls/ws2_32/socket.c
--------------------------
No file to patch.  Skipping patch.
3 out of 3 hunks ignored
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/server/async.c b/server/async.c
|index dd28dff..b8be5cd 100644
|--- a/server/async.c
|+++ b/server/async.c
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored

patch program exited with status 1
===========================

PATCH COMMAND:  patch -p3 -g0 -E --no-backup-if-mismatch  < '/usr/portage/app-emulation/wine/files/diablo3_2.patch'

===========================
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|index d3a4590..dd818f2 100644
|--- a/dlls/ws2_32/socket.c
|+++ b/dlls/ws2_32/socket.c
--------------------------
No file to patch.  Skipping patch.
3 out of 3 hunks ignored
missing header for unified diff at line 38 of patch
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/server/async.c b/server/async.c
|index dd28dff..b8be5cd 100644
|--- a/server/async.c
|+++ b/server/async.c
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored

patch program exited with status 1
===========================

PATCH COMMAND:  patch -p4 -g0 -E --no-backup-if-mismatch  < '/usr/portage/app-emulation/wine/files/diablo3_2.patch'

===========================
missing header for unified diff at line 5 of patch
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|index d3a4590..dd818f2 100644
|--- a/dlls/ws2_32/socket.c
|+++ b/dlls/ws2_32/socket.c
--------------------------
No file to patch.  Skipping patch.
3 out of 3 hunks ignored
missing header for unified diff at line 38 of patch
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/server/async.c b/server/async.c
|index dd28dff..b8be5cd 100644
|--- a/server/async.c
|+++ b/server/async.c
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored

patch program exited with status 1


My today is essentially dedicated to making this work, so I'll post if I resolve it; but my ability here is limited, so it'll probably be slow going.


you must have done a mistake I know a handfull people who play it allready with my code and its working fine
Back to top
View user's profile Send private message
casualx
n00b
n00b


Joined: 06 Feb 2012
Posts: 58
Location: switzerland

PostPosted: Thu May 17, 2012 3:13 pm    Post subject: Reply with quote

simcop2387 wrote:
To make it work with 1.5.4, just use the patches directly from http://appdb.winehq.org/objectManager.php?sClass=version&iId=25953&iTestingId=71519 in the Recommended Source Code patches section. They all apply cleanly to 1.5.4 and it installed fine for me yesterday.


its strange on some systems it doesnt work with 1.5.2 and on some like mine it doesnt work 1.5.4...I hope for you guys out there you find a way to play this awesome game on your machine.

by the way I update my post and add the reset.patch for providing that the games break when change resolution and it worked all fine.
Back to top
View user's profile Send private message
simcop2387
Apprentice
Apprentice


Joined: 14 Aug 2002
Posts: 200
Location: Galactic Sector ZZ9 Plural Z Alpha

PostPosted: Sun May 20, 2012 8:49 am    Post subject: Reply with quote

1.5.4

Apparently layman doesn't let you just give it a repository url. I could swear it did. I've gotten mine listed today finally. "layman -a wine-diablo3" will get it going. I'll try to get it fixed up for win64 now and try to bring in the changes from above for 1.5.2 for people who would prefer that version, but this should help simplify things for people until wine gets the fixes into the next release or two.
_________________
1+1=11=2
Back to top
View user's profile Send private message
lexming
Tux's lil' helper
Tux's lil' helper


Joined: 04 Jan 2007
Posts: 123
Location: Barcelona

PostPosted: Tue May 22, 2012 1:57 pm    Post subject: Reply with quote

D3 running fine here on a patched wine-1.5.4!

A lot of thanks for posting the info! :twisted:
Back to top
View user's profile Send private message
simcop2387
Apprentice
Apprentice


Joined: 14 Aug 2002
Posts: 200
Location: Galactic Sector ZZ9 Plural Z Alpha

PostPosted: Tue May 22, 2012 10:00 pm    Post subject: Reply with quote

I just pushed a new version of the ebuild out with the new patches for 1.5.4. This enables it to build a 32 and 64bit version of wine.
_________________
1+1=11=2
Back to top
View user's profile Send private message
tonyp
n00b
n00b


Joined: 27 Apr 2005
Posts: 9

PostPosted: Thu May 24, 2012 3:17 am    Post subject: Reply with quote

simcop2387 wrote:
I just pushed a new version of the ebuild out with the new patches for 1.5.4. This enables it to build a 32 and 64bit version of wine.

Thanks for the patches! Got everything to download, install and play fine!

One question, I can't change out of windowed mode and it will only allow me to play at 1024x768. Is anyone else having this issue, or am I missing something?

P.S., running on 64/32 bit system.
Back to top
View user's profile Send private message
Clad in Sky
l33t
l33t


Joined: 04 May 2007
Posts: 884
Location: Germany

PostPosted: Sat May 26, 2012 5:09 am    Post subject: Reply with quote

Running fine here. Thanks for the ebuild.

The highest resolution I can choose is 1280x1024, but that is the resolution of my monitor, so that's ok. And due to my aged hardware, it's more than I can play at anyway.
_________________
Kali Ma
Now it's autumn of the aeons
Dance with your sword
Now it's time for the harvest
Back to top
View user's profile Send private message
simcop2387
Apprentice
Apprentice


Joined: 14 Aug 2002
Posts: 200
Location: Galactic Sector ZZ9 Plural Z Alpha

PostPosted: Sat May 26, 2012 2:36 pm    Post subject: Reply with quote

tonyp wrote:
simcop2387 wrote:
I just pushed a new version of the ebuild out with the new patches for 1.5.4. This enables it to build a 32 and 64bit version of wine.

Thanks for the patches! Got everything to download, install and play fine!

One question, I can't change out of windowed mode and it will only allow me to play at 1024x768. Is anyone else having this issue, or am I missing something?

P.S., running on 64/32 bit system.


I haven't had that issue, i've been able to go to 1920x1080 fine. Have you tried to give it a virtual desktop with winecfg? if that doesn't do it try wine 1.5.5 i just pushed an ebuild for it and the new patches for it.
_________________
1+1=11=2
Back to top
View user's profile Send private message
amigo80
n00b
n00b


Joined: 02 Oct 2010
Posts: 2

PostPosted: Wed May 30, 2012 7:15 pm    Post subject: Reply with quote

It is also possible just to put the 4 patch from here: http://appdb.winehq.org/objectManager.php?sClass=version&iId=25953 (will need to rename them to something ending on .patch) into /etc/portage/patches/app-emulation/wine and then just then just install wine normally with emerge wine. No need for an altered ebuild.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Gamers & Players All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum