Re: Ubuntu 12.04 (version#2, drop previous mail)

2012-05-08 Thread Scott Ritchie

On 5/1/12 2:32 AM, Eric Pouech wrote:



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.




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


If this is a blocker for you then I can't blame you then.

For reference the only successful way to build Wine I'm aware of is
http://wiki.winehq.org/Wine64ForPackagers under the "Alternatives" 
section (ie, manually configuring and building 32 and 64 separately and 
copying files from one into the other.)  You may be able to do that 
without a chroot (or something similar like pbuilder),




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



I showed this to the developer who originally wrote the kernel ptrace 
stuff, and indeed this seems like an upstream kernel bug, albeit in 
recvmsg rather than ptrace (also note that the ptrace stuff is now in 
the mainline kernel as well, not just Ubuntu, so you may have found a 
problem that was just exposed in Ubuntu first).


Anyway, I'll follow up on it.  In the meantime I'm pushing your patch in 
a stable release update for Wine (once I test another thing), so thank 
you very much for it.


Thanks,
Scott Ritchie




Re: [2/5] gdi32: Set tmDigitizedAspectX/Y to 96 instead of 300 for consistency.

2012-05-08 Thread Dmitry Timoshkov
Dmitry Timoshkov  wrote:

> --- a/dlls/gdi32/freetype.c
> +++ b/dlls/gdi32/freetype.c
> @@ -6677,8 +6677,8 @@ static BOOL get_outline_text_metrics(GdiFont *font)
>  TM.tmWeight = pOS2->usWeightClass;
>  }
>  TM.tmOverhang = 0;
> -TM.tmDigitizedAspectX = 300;
> -TM.tmDigitizedAspectY = 300;
> +TM.tmDigitizedAspectX = 96; /* FIXME */
> +TM.tmDigitizedAspectY = 96; /* FIXME */

A couple of comments to the patch:
1. the values should be set to the resolution of the target device, and 96
looks more natural since most of the time the device is a display.
2. the change is for consystency with get_bitmap_text_metrics() which sets
these values to 96.
3. even if this pacth is rejected, other patches in the sequence should not
be affected by it.

-- 
Dmitry.




Re: running 16bit code

2012-05-08 Thread Stefan Dösinger
Am Dienstag, 8. Mai 2012, 13:31:00 schrieb Marcus Meissner:
> DOSBOX and DOSEMU can fall back to full emulation today, so vm86 not
> strictly required anymore these days. Speed is probably no longer an
> issue ;)
No, speed is still an issue. DOSBOX is too slow to run Settlers 2 and Screamer 
2(aka Bleifuß 2) on my Core 2 Duo CPU. Dosemu works for Settlers 2(I estimate 
that it is about 20 times faster), and Screamer 2 works with some 3DFX hacks 
that move the graphics calculations into the GPU.

Ok, I realize that this is borderline off-topic, and both games aren't real 
mode apps strictly speaking, but 32 bit protected mode DOS/4G programs. They 
still need 16 bit real mode to launch though.





Re: [PATCH 4/4] dmsynth: Add stubbed IKsControl interface to DirectMusicSynthSink object.

2012-05-08 Thread Alexandre Julliard
Christian Costa  writes:

> ---
>  dlls/dmsynth/dmsynth_private.h |1 +
>  dlls/dmsynth/synthsink.c   |   67 
> 
>  2 files changed, 68 insertions(+), 0 deletions(-)

It fails here:

../../../tools/runtest -q -P wine -M dmsynth.dll -T ../../.. -p 
dmsynth_test.exe.so dmsynth.c && touch dmsynth.ok
dmsynth.c:56: Test succeeded inside todo block: 
IDirectMusicSynthSink_QueryInterface returned: 0
make: *** [dmsynth.ok] Error 1

-- 
Alexandre Julliard
julli...@winehq.org




Re: [PATCH 5/5] d3dcompiler: Partially implement D3DCompile function.

2012-05-08 Thread Matteo Bruni
2012/5/8 Henri Verbeet :
> I realize compile_shader() is mostly a copy of assemble_shader(), but
> nevertheless:
>
> On 8 May 2012 16:17, Matteo Bruni  wrote:
>> +struct bwriter_shader *parse_hlsl_shader(const char *text, enum shader_type 
>> type, DWORD version,
> If this isn't called outside of compiler.c it should be static.
>

This is going to change in the following patches, but yeah, right now
it can be static.

>> +    LPD3DBLOB buffer;
> "ID3DBlob *"
>
>> +                CopyMemory(pos, preproc_messages, strlen(preproc_messages) 
>> + 1);
> memcpy() should do fine.
>
>> +    hr = SlWriteBytecode(shader, 9, &res);
> ...
>> +        size = HeapSize(GetProcessHeap(), 0, res);
>> +        hr = D3DCreateBlob(size, &buffer);
> That's not very pretty, SlWriteBytecode() should probably just return
> the size as well.
>
>

True. I'll change that in assemble_shader() too, while I'm at it.




Re: [PATCH 5/5] d3dcompiler: Partially implement D3DCompile function.

2012-05-08 Thread Henri Verbeet
I realize compile_shader() is mostly a copy of assemble_shader(), but
nevertheless:

On 8 May 2012 16:17, Matteo Bruni  wrote:
> +struct bwriter_shader *parse_hlsl_shader(const char *text, enum shader_type 
> type, DWORD version,
If this isn't called outside of compiler.c it should be static.

> +LPD3DBLOB buffer;
"ID3DBlob *"

> +CopyMemory(pos, preproc_messages, strlen(preproc_messages) + 
> 1);
memcpy() should do fine.

> +hr = SlWriteBytecode(shader, 9, &res);
...
> +size = HeapSize(GetProcessHeap(), 0, res);
> +hr = D3DCreateBlob(size, &buffer);
That's not very pretty, SlWriteBytecode() should probably just return
the size as well.




Re: mscoree: Implement vtable fixups.

2012-05-08 Thread Vincent Povirk
> This will cause warnings on 64-bit.

Casting a pointer to a DWORD?

Well, any 64-bit image that reaches that line would be broken, so I
don't think there's any more correct thing to do. I'd rather not
change the code depending on architecture just to avoid a warning.




Re: running 16bit code

2012-05-08 Thread Alexandre Julliard
David Laight  writes:

> Does wine support running of 16bit windows apps?
> If so does it rely on the underlying OS having support
> for 'virtual 8086 emulation'?
>
> I'm thinking of removing the VM86 support from NetBSD,
> and wine is about the only likley user.

Wine is not going to use vm86 on NetBSD. In fact it will probably stop
using vm86 on Linux in the near future. Note that 16-bit Windows apps
don't need vm86, only DOS apps do.

-- 
Alexandre Julliard
julli...@winehq.org




Re: mscoree: Implement vtable fixups.

2012-05-08 Thread Alexandre Julliard
Vincent Povirk  writes:

> +if (fixup->fixup->type & COR_VTABLE_32BIT)
> +{
> +DWORD *vtable = fixup->vtable;
> +DWORD *tokens = fixup->tokens;
> +for (i=0; ifixup->count; i++)
> +{
> +TRACE("%x\n", tokens[i]);
> +vtable[i] = 
> (DWORD)host->mono->mono_marshal_get_vtfixup_ftnptr(
> +image, tokens[i], fixup->fixup->type);

This will cause warnings on 64-bit.

-- 
Alexandre Julliard
julli...@winehq.org




Re: running 16bit code

2012-05-08 Thread Marcus Meissner
On Tue, May 08, 2012 at 12:06:23PM +0100, David Laight wrote:
> On Tue, May 08, 2012 at 12:03:52PM +0200, Damjan Jovanovic wrote:
> > On Tue, May 8, 2012 at 11:40 AM, David Laight  wrote:
> > > Does wine support running of 16bit windows apps?
> > > If so does it rely on the underlying OS having support
> > > for 'virtual 8086 emulation'?
> > >
> > > I'm thinking of removing the VM86 support from NetBSD,
> > > and wine is about the only likely user.
> > >
> > > ? ? ? ?David
> > >
> > > --
> > > David Laight: da...@l8s.co.uk
> > >
> > >
> > 
> > 16 bit Windows applications are written and compiled to either use
> > real mode or 16 bit protected mode.
> > Those that use real mode (mostly MS-DOS and Windows 1 and 2
> > applications) need virtual 8086 mode.
> > Those that use protected mode (mostly Windows >= 3.0 applications)
> > don't need virtual 8086 mode.
> 
> Ok, so wine users would be very unlikely to be affected.
> Since most of the 16bit apps post-date windows 3.

Correct.

> > You'd break DOSBOX a lot more than Wine.
> 
> Possibly, although some emulators are probably better bets for DOS.
> 
> > But why do you want to remove
> > this from NetBSD? I thought compatibility with other operating systems
> > was one of its major features?
> 
> Mainly because it isn't used much, and may well contain security holes.
> There are two separate kernel options VM86 (usually enabled) and
> KVM86 (usually disabled).
> Both change some low level code is obscure ways.

for what it is worth...

DOSBOX and DOSEMU can fall back to full emulation today, so vm86 not
strictly required anymore these days. Speed is probably no longer an
issue ;)

Ciao, Marcus




Re: running 16bit code

2012-05-08 Thread David Laight
On Tue, May 08, 2012 at 12:03:52PM +0200, Damjan Jovanovic wrote:
> On Tue, May 8, 2012 at 11:40 AM, David Laight  wrote:
> > Does wine support running of 16bit windows apps?
> > If so does it rely on the underlying OS having support
> > for 'virtual 8086 emulation'?
> >
> > I'm thinking of removing the VM86 support from NetBSD,
> > and wine is about the only likely user.
> >
> > ? ? ? ?David
> >
> > --
> > David Laight: da...@l8s.co.uk
> >
> >
> 
> 16 bit Windows applications are written and compiled to either use
> real mode or 16 bit protected mode.
> Those that use real mode (mostly MS-DOS and Windows 1 and 2
> applications) need virtual 8086 mode.
> Those that use protected mode (mostly Windows >= 3.0 applications)
> don't need virtual 8086 mode.

Ok, so wine users would be very unlikely to be affected.
Since most of the 16bit apps post-date windows 3.

> You'd break DOSBOX a lot more than Wine.

Possibly, although some emulators are probably better bets for DOS.

> But why do you want to remove
> this from NetBSD? I thought compatibility with other operating systems
> was one of its major features?

Mainly because it isn't used much, and may well contain security holes.
There are two separate kernel options VM86 (usually enabled) and
KVM86 (usually disabled).
Both change some low level code is obscure ways.

David

-- 
David Laight: da...@l8s.co.uk




Re: running 16bit code

2012-05-08 Thread Damjan Jovanovic
On Tue, May 8, 2012 at 11:40 AM, David Laight  wrote:
> Does wine support running of 16bit windows apps?
> If so does it rely on the underlying OS having support
> for 'virtual 8086 emulation'?
>
> I'm thinking of removing the VM86 support from NetBSD,
> and wine is about the only likley user.
>
>        David
>
> --
> David Laight: da...@l8s.co.uk
>
>

16 bit Windows applications are written and compiled to either use
real mode or 16 bit protected mode.
Those that use real mode (mostly MS-DOS and Windows 1 and 2
applications) need virtual 8086 mode.
Those that use protected mode (mostly Windows >= 3.0 applications)
don't need virtual 8086 mode.

You'd break DOSBOX a lot more than Wine. But why do you want to remove
this from NetBSD? I thought compatibility with other operating systems
was one of its major features?

Damjan




running 16bit code

2012-05-08 Thread David Laight
Does wine support running of 16bit windows apps?
If so does it rely on the underlying OS having support
for 'virtual 8086 emulation'?

I'm thinking of removing the VM86 support from NetBSD,
and wine is about the only likley user.

David

-- 
David Laight: da...@l8s.co.uk