Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index Assistance Gamers & Players
  • Search

play diabolo3 on gentoo - wine 1.5.2 patch tutorial

Having problems getting your favorite Linux game to work? Want to discuss strategies? This is the place!
Post Reply
  • Print view
Advanced search
30 posts
  • 1
  • 2
  • Next
Author
Message
casualx
n00b
n00b
User avatar
Posts: 58
Joined: Mon Feb 06, 2012 11:13 am
Location: switzerland

play diabolo3 on gentoo - wine 1.5.2 patch tutorial

  • Quote

Post by casualx » Mon May 14, 2012 11:47 pm

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.p ... &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: Select all

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: Select all

--- 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: Select all

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: Select all

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: Select all

# 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: Select all

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.
Top
Phancy Physicist
Apprentice
Apprentice
User avatar
Posts: 193
Joined: Sun Apr 10, 2005 9:00 pm
Contact:
Contact Phancy Physicist
Website

  • Quote

Post by Phancy Physicist » Tue May 15, 2012 5:44 am

Thanks casualx!!!

Installer runs perfectly if you follow this guide. Just be sure to modify wine 1.5.2 and no other version.
Top
casualx
n00b
n00b
User avatar
Posts: 58
Joined: Mon Feb 06, 2012 11:13 am
Location: switzerland

  • Quote

Post by casualx » Tue May 15, 2012 7:01 am

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
Top
nenemsis5
n00b
n00b
Posts: 72
Joined: Tue Oct 23, 2007 11:50 am

  • Quote

Post by nenemsis5 » Wed May 16, 2012 10:08 am

hi can u make this ebuild also on wine 1.5.4?

thanks
Top
simcop2387
Apprentice
Apprentice
Posts: 200
Joined: Wed Aug 14, 2002 10:06 pm
Location: Galactic Sector ZZ9 Plural Z Alpha

  • Quote

Post by simcop2387 » Wed May 16, 2012 4:07 pm

To make it work with 1.5.4, just use the patches directly from http://appdb.winehq.org/objectManager.p ... ngId=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
Top
calavicci
n00b
n00b
Posts: 50
Joined: Tue Mar 28, 2006 11:35 pm

  • Quote

Post by calavicci » Wed May 16, 2012 5:35 pm

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: Select all

***** 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.
Top
simcop2387
Apprentice
Apprentice
Posts: 200
Joined: Wed Aug 14, 2002 10:06 pm
Location: Galactic Sector ZZ9 Plural Z Alpha

  • Quote

Post by simcop2387 » Wed May 16, 2012 5:41 pm

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
Top
calavicci
n00b
n00b
Posts: 50
Joined: Tue Mar 28, 2006 11:35 pm

  • Quote

Post by calavicci » Wed May 16, 2012 6:11 pm

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: Select all

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
Top
simcop2387
Apprentice
Apprentice
Posts: 200
Joined: Wed Aug 14, 2002 10:06 pm
Location: Galactic Sector ZZ9 Plural Z Alpha

  • Quote

Post by simcop2387 » Wed May 16, 2012 7:55 pm

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: Select all

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
Last edited by simcop2387 on Wed May 16, 2012 11:37 pm, edited 2 times in total.
1+1=11=2
Top
kriz
Apprentice
Apprentice
User avatar
Posts: 231
Joined: Wed Jan 22, 2003 8:54 pm

  • Quote

Post by kriz » Wed May 16, 2012 10:54 pm

Code: Select all

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.
Top
nenemsis5
n00b
n00b
Posts: 72
Joined: Tue Oct 23, 2007 11:50 am

  • Quote

Post by nenemsis5 » Wed May 16, 2012 11:08 pm

* Adding overlay,...
* Exception: Overlay "https://simcop2387@github.com/simcop238 ... iablo3.git" does not exist.

* CLI: Errors occured processing action add
* Exception: Overlay "https://simcop2387@github.com/simcop238 ... iablo3.git" does not exist.
Top
simcop2387
Apprentice
Apprentice
Posts: 200
Joined: Wed Aug 14, 2002 10:06 pm
Location: Galactic Sector ZZ9 Plural Z Alpha

  • Quote

Post by simcop2387 » Wed May 16, 2012 11:36 pm

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: Select all

git://github.com/simcop2387/wine-diablo3.git
I'll update the original post with the corrected url.
1+1=11=2
Top
nenemsis5
n00b
n00b
Posts: 72
Joined: Tue Oct 23, 2007 11:50 am

  • Quote

Post by nenemsis5 » Wed May 16, 2012 11:41 pm

# 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.
Top
calavicci
n00b
n00b
Posts: 50
Joined: Tue Mar 28, 2006 11:35 pm

  • Quote

Post by calavicci » Thu May 17, 2012 1:13 am

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!
Top
nukem996
l33t
l33t
Posts: 776
Joined: Thu Nov 13, 2003 2:12 am

  • Quote

Post by nukem996 » Thu May 17, 2012 3:14 am

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.
Top
casualx
n00b
n00b
User avatar
Posts: 58
Joined: Mon Feb 06, 2012 11:13 am
Location: switzerland

  • Quote

Post by casualx » Thu May 17, 2012 12:09 pm

dont you have a multilib installation?

Code: Select all

eselect profile list 

Code: Select all

  [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
Top
casualx
n00b
n00b
User avatar
Posts: 58
Joined: Mon Feb 06, 2012 11:13 am
Location: switzerland

  • Quote

Post by casualx » Thu May 17, 2012 12:11 pm

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: Select all

***** 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
Top
casualx
n00b
n00b
User avatar
Posts: 58
Joined: Mon Feb 06, 2012 11:13 am
Location: switzerland

  • Quote

Post by casualx » Thu May 17, 2012 3:13 pm

simcop2387 wrote:To make it work with 1.5.4, just use the patches directly from http://appdb.winehq.org/objectManager.p ... ngId=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.
Top
simcop2387
Apprentice
Apprentice
Posts: 200
Joined: Wed Aug 14, 2002 10:06 pm
Location: Galactic Sector ZZ9 Plural Z Alpha

  • Quote

Post by simcop2387 » Sun May 20, 2012 8:49 am

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
Top
lexming
Tux's lil' helper
Tux's lil' helper
Posts: 123
Joined: Thu Jan 04, 2007 3:26 pm
Location: Barcelona

  • Quote

Post by lexming » Tue May 22, 2012 1:57 pm

D3 running fine here on a patched wine-1.5.4!

A lot of thanks for posting the info! :twisted:
Top
simcop2387
Apprentice
Apprentice
Posts: 200
Joined: Wed Aug 14, 2002 10:06 pm
Location: Galactic Sector ZZ9 Plural Z Alpha

  • Quote

Post by simcop2387 » Tue May 22, 2012 10:00 pm

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
Top
tonyp
n00b
n00b
Posts: 9
Joined: Wed Apr 27, 2005 8:27 pm

  • Quote

Post by tonyp » Thu May 24, 2012 3:17 am

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.
Top
Clad in Sky
l33t
l33t
User avatar
Posts: 900
Joined: Fri May 04, 2007 6:40 am
Location: Germany

  • Quote

Post by Clad in Sky » Sat May 26, 2012 5:09 am

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
Top
simcop2387
Apprentice
Apprentice
Posts: 200
Joined: Wed Aug 14, 2002 10:06 pm
Location: Galactic Sector ZZ9 Plural Z Alpha

  • Quote

Post by simcop2387 » Sat May 26, 2012 2:36 pm

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
Top
amigo80
n00b
n00b
Posts: 2
Joined: Sat Oct 02, 2010 9:33 pm

  • Quote

Post by amigo80 » Wed May 30, 2012 7:15 pm

It is also possible just to put the 4 patch from here: http://appdb.winehq.org/objectManager.p ... &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.
Top
Post Reply
  • Print view

30 posts
  • 1
  • 2
  • Next

Return to “Gamers & Players”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic