Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 736657

Summary: app-emulation/wine-vanilla and wine-staging: add option for PE builds (--with-mingw)
Product: Gentoo Linux Reporter: Simon <sur3>
Component: Current packagesAssignee: Wine Maintainers <wine>
Status: RESOLVED FIXED    
Severity: major CC: alecm, bob.mt.wya, carlphilippreh, chris, forenhampel, sam, thomas
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description Simon 2020-08-10 20:52:29 UTC
Updating from wine-staging-5.9 to 5.10 or higher breaks multiple games, because wine-5.10+ needs to be compiled with mingw toolchain for native PE libraries.
Please fix this and meanwhile add back wine-staging-5.9.

Reproducible: Always
Comment 1 Simon 2020-08-10 20:55:58 UTC
See also related arch bug:
https://bugs.archlinux.org/task/67326
Comment 2 Ionen Wolkens gentoo-dev 2020-08-10 23:15:21 UTC
There are several problems to making this streamlined in gentoo, but you can still build it using mingw by passing EXTRA_ECONF="--with-mingw" and having mingw available (typically through crossdev), that's what I do.

I do wish I could at least be spared from having to use EXTRA_ECONF, maybe a USE=mingw could be made which point to the mingw wiki page warning users to setup mingw themselves?
Comment 3 Mike Lothian 2020-08-16 11:31:14 UTC
If you have a working mingw environment I have wine-staging ebuilds in the FireBurn overlay with mingw support - it gets Blizzard's games working again
Comment 4 nvaert1986 2020-10-11 10:35:39 UTC
(In reply to Simon from comment #0)
> Updating from wine-staging-5.9 to 5.10 or higher breaks multiple games,
> because wine-5.10+ needs to be compiled with mingw toolchain for native PE
> libraries.
> Please fix this and meanwhile add back wine-staging-5.9.
> 
> Reproducible: Always

I have the exact same problem and the more the wine and wine-staging versions go up, the more that stops working. I've got like 12 applications and games that stopped working after going in the upper wine releases (luckily I still have wine-staging-5.0 installed). If mingw resolves the issue, then why isn't this a USE flag?

P.S.: While checking the ebuild I noticed 

multilib_src_configure() {
	local myconf=(

		--without-mingw # linux LDFLAGS leak in mingw32: bug #685172

	)

Wouldn't it be possible to simply just include a mingw USE flag?

It is referenced here: https://bugs.winehq.org/show_bug.cgi?id=45349#c14 and a bug that I created here: https://bugs.winehq.org/show_bug.cgi?id=49942
Comment 5 Chiitoo gentoo-dev 2020-10-11 12:28:09 UTC
Yeah, we'll probably add a flag for it mingw, it's just that no one got to it yet.  :]

If you're in a rush at all, you might like to test the ebuilds from the overlay that has been mentioned.  I'm sure they'll appreciate any testing and feedback there as well.

I'll try to look into this sooner rather than later if no one else gets to it first.

As for old versions, you can still find them via our Wine overlay (or/and Gentoo git history), but they aren't maintained too actively and may be broken from time to time.
Comment 6 Larry the Git Cow gentoo-dev 2020-11-24 03:19:19 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/proj/wine.git/commit/?id=0497bd02f32da6a89a4ee99a970c4b76147960e4

commit 0497bd02f32da6a89a4ee99a970c4b76147960e4
Author:     Jimi Huotari <chiitoo@gentoo.org>
AuthorDate: 2020-11-24 00:33:23 +0000
Commit:     Jimi Huotari <chiitoo@gentoo.org>
CommitDate: 2020-11-24 03:17:00 +0000

    app-emulation/wine-staging: add USE="mingw"
    
    Using MinGW to build PE files has become more or less a requirement
    for some applications to still run via Wine, so let's not
    hard-disable it any longer.
    
    Bug: https://bugs.gentoo.org/736657
    Package-Manager: Portage-3.0.10, Repoman-3.0.2
    Signed-off-by: Jimi Huotari <chiitoo@gentoo.org>

 app-emulation/wine-staging/metadata.xml            |   1 +
 .../wine-staging/wine-staging-5.22-r1.ebuild       | 650 +++++++++++++++++++++
 .../wine-staging/wine-staging-9999.ebuild          |  33 +-
 3 files changed, 682 insertions(+), 2 deletions(-)

https://gitweb.gentoo.org/repo/proj/wine.git/commit/?id=f4db3c824ac162b28dfdb3d57645fc120a856624

commit f4db3c824ac162b28dfdb3d57645fc120a856624
Author:     Jimi Huotari <chiitoo@gentoo.org>
AuthorDate: 2020-11-17 00:18:59 +0000
Commit:     Jimi Huotari <chiitoo@gentoo.org>
CommitDate: 2020-11-24 03:16:43 +0000

    app-emulation/wine-vanilla: add USE="mingw"
    
    Using MinGW to build PE files has become more or less a requirement
    for some applications to still run via Wine, so let's not
    hard-disable it any longer.
    
    Bug: https://bugs.gentoo.org/736657
    Package-Manager: Portage-3.0.9, Repoman-3.0.2
    Signed-off-by: Jimi Huotari <chiitoo@gentoo.org>

 app-emulation/wine-vanilla/metadata.xml            |   1 +
 .../wine-vanilla/wine-vanilla-5.22-r1.ebuild       | 568 +++++++++++++++++++++
 .../wine-vanilla/wine-vanilla-9999.ebuild          |  33 +-
 3 files changed, 600 insertions(+), 2 deletions(-)
Comment 7 Ionen Wolkens gentoo-dev 2020-11-24 05:41:02 UTC
># TODO: Will bug 685172 still need special handling?
wine now use CROSSLDFLAGS and CROSSCFLAGS with mingw so I believe no leakage should happen anymore.

CROSSCFLAGS defaults to "-g -O2" if unset
CROSSLDFLAGS default to empty if unset

Does raise the question of if we want to set those in the ebuild, or just leave it up to users. I've been using CROSSCFLAGS="${CFLAGS}" in a wine-staging.conf for a while myself, but questionable as to how generally safe this is.

That aside, the new USE=mingw been working as expected and I removed my EXTRA_ECONF, thanks :)
Comment 8 Chiitoo gentoo-dev 2020-11-24 15:50:30 UTC
Thanks for the info and feedback!

I didn't include any check for the posix threads yet, which I've seen others do.  I tested without, and so far did not notice any issues.  Maybe they will eventually crop up?

I did see it was mainly for building DXVK, and not for Wine itself, so perhaps that's to be expected.

I'll close this one now since the changes landed in ::gentoo as well.