New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support of the next version of macOS #26
Comments
What is "this repository" and "their solution"? |
The link was omitted: https://github.com/AndreRH/hangover Basically, the idea is to compile qemu and modified wine dlls thanks to winegcc. |
Hangover is one of the solutions being worked on The other is compiling wine using this version of clang to compile wine |
How does it work? |
Using that custom version of clang to compile wine using the He explains some of what’s he is doing in the commit notes |
Waho! Does it work well? |
Honestly I’ve had no time to test it out myself, due to my job and cram course so zero time off. This will work much better then hangover since it’s not emulation. |
Ok, we need to test this :) |
@Gcenx I tried to compile this clang version and it produces a binary that segault when it is run. I cannot find anything online to sort that out |
Ok, I can compile simple files with with -mwine32 (see last commit). |
At least you get the patched clang working that's something, we could even use that for all macOS compiles since it already includes the needed ms_hook_prologue support. I'm in class so I only got a quick look, I don't know why your setting target as x86_64, from my understanding it should be set as 32bit as usual but passing -mwine32 would do the trunking at compile time. Side Note; |
True
Yeah this is not shown in the commit but that's what I did. When mwine32 is set, #ifdef x86_64 returns true and wine "thinks" that we are compiling for a 64bits target, which is obviously not what we want. There is a i386_on_x86_64 flag for this but I think it depends on the cases
Thanks! Feel free :) |
By the way, the patch I have uploaded is slightly modified from cdavis5e's one so that it is compatible with Debian llvm 7.0 package. |
I’m assuming Winehq will just move to using the one from cdavis5e once it functions the way it’s intended, they already use a patch clang anyway. I need to do some more tests to confirm everything is still working fine, but I propose dropping the older environment in favor of the newer one, I’ve also gutted multi-lib since it won’t be needed with my changes. I did a quick look for a hangover builder but I don’t see a script? |
I think I did. |
Just wanted to be sure on that one. Yeah I didn’t really try hangover myself yet, I just made small changes to reflect the part I did read over. |
@Gcenx I have succesfully run a 32bits hello world program on wine64 thanks to hangover |
And ... also notepad++ |
Here is our first 32bits compatible build that runs on macOS 64bits: Of course, many many many programs won't run, but still promising |
@Gcenx In fact -mwine32 leads to a Segfault (11) with our current build (even with a small program). I don't know if I have missed something. |
@qparis I'm sure were still missing something but since regular wine builds I guess we should leave this alone until macOS Catalina is released/CrossOver version for it is released. |
@qparis I’ve been really busy as of late, but I got around to trying to test out hangover myself this time but the environment is failing at
Since I can’t build for what ever reason I checked over the builder and noticed something strange, wine-host is set to install into
But later we reference the unused location
I’m guessing a symlink would cover the above. |
We could rename this issue "Support OSes with no 32 bits libs", since ubuntu will drop 32 bits libs too. The 32 bits to 64 bits trunking seems the best option but it does not seem to have been updated for a while. Might be worth asking wine devs as @plata suggested in PhoenicisOrg/phoenicis#2012 |
@ImperatorS79, maybe yes. However, the solution may be different on Ubuntu since that they will probably still let the kernel execute 32bits software, contrary to macOS. @Gcenx, the first problem is weird. The command is just « workdir », it should work. Concerning your remark, /root/wine contains the built binary, which we’ll be extracted from the docker context. /root/hangover/build/wine-host contains the build objects which is a bit different |
@qparis yeah I’m guessing it failed on the next line where that was the last working one.
Seems I didn’t follow so we’re using the build folder instead of the install, but couldn’t that cause issues over using the install? @ImperatorS79 I would avoid using hangover for Linux as @qparis said unless they block executing 32Bit code drastic measures like Hangover shouldn’t be needed. I’m sure Valve will also be contacting them about this not just CodeWeavers. |
I did not talk about hangover ^^. But, since in the future every distro with certainly drop building 32 bits libs (which will not be downloadable from older distro due to too old versions), I am sure wine will have to come up with something |
@ImperatorS79 good as Hangover feels like dead end to me outside of arm64. As what’s stopping mingw cross-compiling 32Bit Windows dll files with 64Bit libs on Linux? Only blocker I can see is Wine being 32Bit, that’s lightly what ccdavis was working on the custom clang for trunking 32Bit to 64Bit |
To compile wine32on64 you must use the custom llvm/clang-8 or it won’t properly compile. You also need to use the disables I've posted that @qparis embedded into the script or it will end up just failing Even with the disables and the patched source from here or my own repository there will still be warnings when building but most can just be ignored. |
Right now we have two main tasks to achieve:
|
SIP is the major annoyance here Getting the winetools/winegcc/winebuild changes onto upstream wine was easy, the rest is more of a pain as you need to avoid patching items that are PE format in current upstream. Unfortunately some PE format items were reverted to ELF for CrossOver19 due to anti-virus false positives, I’d say reverting these back to being PE format again should help getting a viable patch set to apply onto upstream wine |
@Gcenx I was using modified llvm/clang from crossover sources and built it like normal llvm toolchains, and used wine source code from your repo
It still gives lots of "changes address space of pointer" errors:
I now think that maybe I was not using correct build options for llvm/clang, but can't figure out what I was missing there. It seems that the scripts of this repository is meant for cross-building on Linux, but I'm building it directly from Catalina. Could this be the reason? |
@HarukaMa Try to install Docker on Mac, the scripts will then work out of the box |
The issue is I'd like to tinker with the wine source code as I was trying to make a specific software install without error. Scripted builds within containers sounds troublesome when I need to frequently edit the wine source code... |
You can if you create a distribution targeting a custom git repository or a local file. |
@HarukaMa I'll run a clean build on Catalina and check the build log and get back to you but I've been able to build on Mojave and Catalina. Also managed to cross-build |
@HarukaMa completed a wine32on64 only build and I don't have that error so I'm not sure what's wrong on your end I have the following packages installed via brew;
|
I've completely forget that now many executables are compiled to PE format, and I was missing mingw-w64. It seems that after installing it the compilation is running good (still running right now but already passed dlls which were failing). Thanks for the tip! |
Yeah But not the macports section yet due to |
@qparis since this now builds I’ll update WineCX to 19.0.1. |
It seems that on macOS, compilation is good enough but the linker somewhat messed up and all 32-bit .so files are not loadable:
I'm not able to use LLD on macOS as it's currently broken on frameworks. Gonna try the docker build script... |
Oh that issue, you can actually resolve that one of two ways. You can set
Or alternately use Xcode11/10.15SDK has some weirdness |
@qparis I’ve had time over the weekend to update my “Darwin simplification” branch so it matches head.
The Darwin environment and all scripts were cleaned up considerably, examples were also updated accordingly. The only question is what to do with the mac32/mac64 scripts I have them updated to build macOS Catalina only compatible builds, or should I just drop them in favor of the current merged implementation? |
Apple made an interesting change with macOS Catalina 10.15.4. Setting the boot argument A single reboot to recovery mode and running the following command in terminal
|
I think it is still too complex... How does crossover managd to avoid this? |
All there binaries are code-signed and notarized fully also with some entitlements. |
This is not sufficient enough. I have try to sign and notarize and it did not work |
Hum I wonder what's missing then as that should be what's required, I've recently seen an explosion of new Catalina users so the above while not ideal is something. Did you get the read the other comment about "Darwin Simplification"? |
Yep, if mac32 and mac64 are no longer required, they can be deleted. If your branch is able to build macOS builds properly, I guess we can merge it :) |
I pushed it as a separate branch for the moment, I did a couple of test builds with it. |
I’d forgotten to post here, I’d downloaded macOS Big Sur beta onto my Mac and wine32on64 is still functional. |
…an-1.dll, see PhoenicisOrg/phoenicis-winebuild#26 (comment) for a configure line that is reported to work with Crossover 19
Sorry I still had the similar issue from compiler with whatever environment variables |
@zhoub unless you need to apply some custom patches onto the CX sources there’s not much point compiling it from source yourself as there’s now multiple prebuilt packages available. |
Closing this as for Intel/M series systems using rosetta2 we’ve long had a functional wine distribution that’s being used for the affected systems. If hangover is ever needed that should be it’s own issue. |
This is a memo to find a solution so that our wine builds work for 32bits programs in the next version of macOS.
It seems that there are no official solutions yet.
If have tried use this repository https://github.com/AndreRH/hangover. By tweaking a little bit their solution, I'm able to cross compile it but I'm unable to run binaries (A lot of DLLs are missing)
The text was updated successfully, but these errors were encountered: