Steamuxulation redux

OP
S

shkhln

Daemon

Reaction score: 683
Messages: 1,677

Have you also tested proton with the native wine?
Yes, I have a native Wine build from https://github.com/ValveSoftware/wine + steamclient.so working through my glibc shim since November (still need to commit the corresponding changes to the shim). There are some limitations, but overall it's quite feasible. However, it requires manual setup and there is no way in hell the necessary bits are ever going to be in the Ports, so this method is not for everyone.

I'd assume this should work better than the linux emulated one?
You'd be surprised. Wine's amd64 FreeBSD port receives almost zero attention, so it has some really annoying showstopper bugs, which Linux Wine running under Linuxulator avoids.
 

malavon

Active Member

Reaction score: 151
Messages: 248

Ok, I'm actually taking a look at this. It'll take a while before I have a good wine wow64 back up (need to poudriere bulk here) and them I'm going to try if I can run steam etc.
Expect an update somewhere after the weekend.
 

malavon

Active Member

Reaction score: 151
Messages: 248

Yes, I have a native Wine build from https://github.com/ValveSoftware/wine + steamclient.so working through my glibc shim since November (still need to commit the corresponding changes to the shim).
I assume you mean you have a wow64 build up and running? Could you elaborate on how you did it and with which compiler? I've been messing with it for a few days and came up with nothing working.
The only thing I am able to compile successfully is the 64-bit wine, but I need both working well to be able to debug wine starting actual games. Apparently I have a lack of knowledge when it comes to 32-bit on amd64.
 

malavon

Active Member

Reaction score: 151
Messages: 248

What were you trying to do in the first place? I imagine the patch from PR 242625 should be reasonably fool proof.
I've just been backtracking a lot and I do have some progress, but not much. I'll try to write down my main attempt here first. The messes I've created aren't really worth mentioning much (see bottom of the post).
Note that earlier on I was doing this with the -devel packages since that's what your patch patches, but I got nowhere. Today I got something more or less running with the regular wine and i386-wine packages.

What I was trying to do was basically create a i386-wine package that contains the 32-bit part of a wow64 installation only so I could install both:
  • Built emulators/i386-wine on an i386 jail using poudriere (wine 5.0)
  • Copied the resulting package to where the port expects to find it on amd64 (distfiles/freebsd:12:x86:64, different for -devel packages)
  • Changed the pkg-plist to contain everything that's not in the 64-bit version but nothing more (no include files, man pages etc).
  • Built emulators/i386-wine on an amd64 jail using poudriere; package contains only the stuff that's in the pkg-plist
  • Installed both emulators/wine and emulators/i386-wine (both 5.0 of course)
  • Then the steam setup emits error messages like 003e:err:module:find_forwarded_export module not found for forward 'shcore.SHCreateStreamOnFileW' used by L"C:\\windows\\system32\\shlwapi.dll"
I'd like to backtrack all the way and install something created using only your patch just to get up and running, but I'm not sure how I can install both since they install files in the same place.

Error log (condensed) - set to Windows 7, shows as Server 2008 apparently:
Code:
Unhandled exception: unimplemented function shlwapi.dll.SHCreateStreamOnFileW called in 32-bit code (0x7bc77ce1).
(snip)
System information:
    Wine build: wine-5.0
    Platform: i386 (WOW64)
    Version: Windows Server 2008 R2
    Host system: FreeBSD
    Host version: 12.1-RELEASE-p3
Note that I've also tried building wine (with wow64) from source entirely, without the ports system. But that was a pretty awful experience.
 
OP
S

shkhln

Daemon

Reaction score: 683
Messages: 1,677

  • Copied the resulting package to where the port expects to find it on amd64 (distfiles/freebsd:12:x86:64, different for -devel packages)
  • Changed the pkg-plist to contain everything that's not in the 64-bit version but nothing more (no include files, man pages etc).
  • Built emulators/i386-wine on an amd64 jail using poudriere; package contains only the stuff that's in the pkg-plist
You can (and should) install the i386-wine package built in an i386 jail directly on amd64 system, copying it into an amd64 jail is completely pointless.
 

malavon

Active Member

Reaction score: 151
Messages: 248

You can (and should) install the i386-wine package built in an i386 jail directly on amd64 system, copying it into an amd64 jail is completely pointless.
Hi, just tested and installing the i386-wine package and then forcing the wine (amd64) package does seem to work (the inverse doesn't).
I would like to point out that as far as I understand the i386-wine port, what I did was basically how I understand the port is intended to work.
As far as I understand it, the result of the 32-bit i386-wine build becomes the distfile for the amd64 i386-wine build.
That said, I probably filtered out something too much while creating a wow64 build. I'm going to investigate this so that I don't have to force pkg to install the same files from two different packages.
Not having to force them to install will make it easier for me to debug/alter/reinstall since I haven't been able to build wine natively from source (i.e. a 32-bit build under amd64).
 

malavon

Active Member

Reaction score: 151
Messages: 248

Yeah, I've got it. I finally can update the i386-wine and i386-wine-devel ports like the previous author did but now with wow64 🙃 . And yes, it is quite cumbersome but it should prove helpful in debugging windows programs that don't work.
 

malavon

Active Member

Reaction score: 151
Messages: 248

It doesn't really matter I guess, on my local system (with either the i386 package or my modified one) I can't get OpenGL to work. I suspect something is wrong with my current setup using the latest nvidia driver (which includes 32-bit drivers).
On another system with an older driver it sort of works but any screen in steam is just black. I can't even get firefox (64-bit) running either, so that's not much of something.
Anyway, next up I'll be experimenting with the linux steam which is more in line with this topic as well.
 

shuryanc

New Member

Reaction score: 5
Messages: 11

Is there any site (wiki?) we can add a list of games that is working under linux-steam-utils?
 
OP
S

shkhln

Daemon

Reaction score: 683
Messages: 1,677

No, not really. Should we make a wiki page on GitHub? Who would keep it updated? I'm definitely not interested in spending a significant chunk of my time on it.
 

Menelkir

Member

Reaction score: 41
Messages: 48

No, not really. Should we make a wiki page on GitHub? Who would keep it updated? I'm definitely not interested in spending a significant chunk of my time on it.
I can help, I have a good number of games in my account. I have tested some games (none of them worked so far, but still).
 
OP
S

shkhln

Daemon

Reaction score: 683
Messages: 1,677

Or maybe it's worth trolling someone (koobs@?) into creating a general game compatibility page in FreeBSD wiki. It does not have to be limited to Linux games on Steam. Or this can be a separate wiki/site altogether.

I have tested some games (none of them worked so far, but still).
Definitely report nonworking games unless you would like them to remain in broken state.
 

Menelkir

Member

Reaction score: 41
Messages: 48

No and, for the record, I don't require screenshots either.
Actually I just collected the error logs when it crashes with ID and game

So far I've tested here:

233230 - Kairo - Works without sound, crashes at exit.
239430 - Qube Director's Cut - Works perfectly fine, crashes steam at exit.
 

Menelkir

Member

Reaction score: 41
Messages: 48

224760 - Fez - Broken
234650 - Shadowrun Returns - Broken
113020 - Monaco - Works without audio.
214560 - Mark of The Ninja - Loads fine, can navigate to menus and freeze at loading screen.
236090 - Dust: An Elysian Tale - Broken
26800 - Braid - Crashes badly, needs further investigation
200900 - Cave Story+ - Segfaults, needs further investigation

Just in case, I see your update at wiki. Qube is quite playable, it just mess up Steam at exit.
 
OP
S

shkhln

Daemon

Reaction score: 683
Messages: 1,677

Just in case, I see your update at wiki. Qube is quite playable, it just mess up Steam at exit.
Are you sure it doesn't have the same problem with sound? FMOD is used by pretty much all Unity titles.
 
Top