This is the downside people in this thread are complaining about: compiling 32-bit programs on a 64-bit Ubuntu install is now slightly more difficult. However, Wine is currently the _only_ piece of software I've encountered that needs to be built for both arches on the same machine in order to be usable. We are beautiful special snowflakes here: Wine developers who aren't using the build daemons is about the extent of the current use case.
<snip>

I'm beginning to have memories of what happened when we removed gcc from the default install. Setting up a 32-bit chroot for building Wine should not be complicated -- I'll present a script to make it even easier soon. You can build in a single command and even use things like ccache and the like to speed it up.

to summarize:
ubuntu doesn't do anything to support developers
as it implies using ubuntu build daemons, not developers' machine (and all the relevant environment) as it implies to use chroot even on a multi lib arch => multi arch is then for users, not developers

bye bye ubuntu then

for the sake of record (I won't even dare to send it to wine-patches) a workaround ubuntu recvmsg breakage in order to get ptrace API to be usable on 12.04

diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index 8a01d22..6c8e759 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -1016,6 +1016,37 @@ void server_init_process(void)
     send_server_task_port();
 #endif
 #if defined(__linux__) && defined(HAVE_PRCTL)
+    /* work around Ubuntu's recvmsg breakage */
+    if (!server_pid)
+    {
+        int zfd;
+        struct flock fl;
+        char    tmp[4096];
+        strcpy(tmp, wine_get_server_dir());
+        strcat(tmp, "/");
+        strcat(tmp, LOCKNAME);
+
+        if ((zfd = open( tmp, O_RDONLY )) == -1)
+            fatal_error( "no lock present %s.\n", tmp );
+
+        fl.l_type   = F_WRLCK;
+        fl.l_whence = SEEK_SET;
+        fl.l_start  = 0;
+        fl.l_len    = 1;
+        if (fcntl( zfd, F_GETLK, &fl ) != -1)
+        {
+            if (fl.l_type == F_WRLCK)
+            {
+                /* the file is locked */
+ fprintf(stderr, "getting server_pid from lock %d\n", fl.l_pid);
+                server_pid = fl.l_pid;
+            }
+            fatal_error( "cannot get pid from lock (lock isn't locked)\n");
+        }
+        else
+            fatal_error( "cannot get pid from lock\n");
+        close(zfd);
+    }
     /* work around Ubuntu's ptrace breakage */
if (server_pid != -1) prctl( 0x59616d61 /* PR_SET_PTRACER */, server_pid );
 #endif

--
Eric Pouech
"The problem with designing something completely foolproof is to underestimate the 
ingenuity of a complete idiot." (Douglas Adams)



Reply via email to