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