[pkg-wine-party] Bug#769234: Automatically detect wine32 and wine64.

Austin English austinenglish at gmail.com
Sun Dec 13 03:41:52 UTC 2015


On Sat, Dec 12, 2015 at 4:05 PM, Jens Reyer <jre.winesim at gmail.com> wrote:
> On 12/11/2015 11:08 PM, Austin English wrote:
>> On Fri, Dec 11, 2015 at 3:52 PM, Jens Reyer <jre.winesim at gmail.com> wrote:
>>> Hi,
>>>
>>> please see below for another patch. IMO it is clean, simple and
>>> matches the logic of the wine-script perfectly.
>>>
>>> It tries to detect the correct wine version using the following
>>> precedence:
>>>
>>> 1. WINEARCH - can't be misinterpreted and was also used
>>>    previously.
>>> 2. WINEPREFIX - if it is set and system.reg exists, we have a
>>>    clean indicator if it is a 32-bit or 64-bit installation,
>>>    and therefore which wine to use.
>>> 3. WINELOADER - if it is set to a known loader, use this for
>>>    deciding which wine to use.
>>>    The 32-bit loaders seem to work with both wine32 and wine64,
>>>    but I see no point in doing this here. Instead it is easier
>>>    to choose the correct 32-bit or 64-bit wineprefix later if
>>>    wine loader and binary match.
>>>    Note that I'm not really familiar with the preloader.
>>> 4. Test with "file" if $1 is a 64-bit application. Note that some
>>>    64-bit applications have PE32 installers, or install single
>>>    PE32 executables. But those also seem to work with wine64 as
>>>    long as wine32 is installed. Therefore only testing for PE32+.
> [...]
>> Only speaking as an upstream observer, I haven't followed the issues
>> with the debian wine packaging too closely..
>
> Thanks a lot for your constructive and informational feedback Austin. I
> appreciate this very much. I'll definitely not insist on using my
> patches (this and the WoW64 patch), but I think they help to discuss
> this matter.
>
> The current status in Debian is to prefer Wine32, even if Wine64 is
> installed. This is a constant source for bugreports of users thinking
> that Wine64 doesn't work - generally, and specifically in combination
> with binfmt.
>
> However I now see the benefit of defaulting to wine32 (even despite of
> my new knowledge that WoW64 already works), given the maybe typical
> installation on amd64:
> 1.) Install wine, pulling in wine64.
> 2.) Realize that wine32 is missing.
> 3.) Add the foreign arch and install wine32.
> Because of this, and "wine" depending on "wine64|wine32", the default on
> Debian (amd64) is to have wine64 installed.
>
> Further we have to avoid breaking existing installations. With current
> default 32-bit wineprefixes (although many have wine64 installed), a
> simple change to WoW64 (=prefer Wine64 if installed) would cause a lot
> of breakage. However if we do it, now (close to a new stable upstream
> release, and a year before Debian freeeze) would be the best time.
>
>
>> That said, I think going out of your way to detect what sort of prefix
>> to use is the wrong approach. A properly built wow64 install will
>> automatically use the correct wine bitness when launching
>> applications. Trying to detect what architecture to use is prone to
>> breakage, as you've seen.
>
> I see two reasons for it:
>
> 1.)
> Checking with "file" (but honoring the WINE* variables first) allows to
> continue to default to Wine32, while you still can install 64-bit apps
> without manual intervention. However at least 64-bit apps with PE32
> installers make this as a sole solution "problematic" and obfuscating
> problems (-> consider tagging #769234 as "wontfix").

Wine will choose the appropriate loader without intervention. Choosing
the architecture of the prefix should be up to the user.

> 2.)
> Testing existing wineprefixes allows to change the default to WoW64 (if
> wine64 is installed) without breaking old installations
>
>
>> In general, upstream recommends running 32-bit Wine if 64-bit
>> executables are not needed. For users on 64-bit OSes, the
>> recommendation is usually to remove Wine64 packages if you don't want
>> them.
>
> Oh, I'd been under the impression that WoW64 is the default and
> recommended by upstream. Seeing that it may also cause problems, and
> reading you, I'm glad that we have 32-bit as default and I think we
> should stay with that, even if wine64 is installed.

I should clarify that. Upstream generally recommends packagers to ship
WOW64 and enable that by default, yes. I was speaking with my
bugzilla/user support hat on, where the first thing recommended if
you're having issues is to use a 32-bit prefix (since a large portion
of 64-bit installers don't work, and there's generally little gain for
more problems, unless it's a memory intensive application).

> However we definitely should add something to the README. Given no other
> changes in the packaging I'd propose [2].
>
> Maybe we should consider dropping the automatic setting of WINEPREFIX,
> because it is not set session-wide. Like the automatic detection, this
> is a feature that may obfuscate problems. Yet, how to handle this for
> existing installations? Setting the WINEPREFIX made sense for separate
> 32-/64-bit installation. But now that I know that WoW64 works, I see
> less use in it.
>
> Maybe we should offer a separate "wine-wow64" package similar to the
> "wine" package (but conflicting with it), that offers a version of the
> wine script that prefers win64 and depends on wine32 _and_ wine64.
>
> The "Depends: wine64|wine32" in the wine package might be reversed to
> "wine32|wine64".
>
>
>> I don't know what issues these wrapper scripts the package is using
>> are supposed to solve, they seem to be causing more issues than they
>> solve, AFAICT.
>
> I honestly can't comment on the general usefulness of/requirement for
> the wrapper scripts (yet). Maybe I agree with you, maybe there's a hard
> reason to use them. For me, I just started to work in the existing system.
>
>
>> In any case, good luck, thanks for packaging/updating Wine on Debian.
>
> Thanks again, and at the same time honoring Mike's and Stephen's work.
>
> Greets
> jre
>
>
> [1]: This might be done more fine-grained, distinguishing between wine32
> not being installed, and foreign arch i386 missing.
>
>
> [2]: Proposal for README and wiki:
> -------- snip --------
> 32-bit/64-bit/WoW64
> ===================
>
> To run 64-bit Windows applications you have to install both wine32 and
> wine64 (or wine32-development and wine64-development). It is not
> recommended to only install wine64 (or wine64-development).
>
> This alone will still use 32-bit Wine uniquely. To run 64-bit
> applications you have to set "WINEARCH=win64". Then both 32-bit and
> 64-bit applications will be installed in 64-bit wineprefixes (WoW64).
>
> Examples:
> $ WINEARCH=win64 wine
> $ WINEARCH=win64 wine-development
>
> If you generally use Wine32, you have to manually add "WINEARCH=win64"
> to Desktop launchers of applications installed that way.
>
> If you want to use Wine64/WoW64 permanently, include the following two
> lines in your ~/.bashrc file. Because Wine64 on Debian uses ~/.wine64 as
> default wineprefix, you should specify that at the same time:
> export WINEARCH=win64
> export WINEPREFIX="~/.wine64"
>
> Some 32-bit applications only run with Wine32 (but not with WoW64). If
> you generally use Wine64, use "WINEARCH=win32" and a separate wineprefix
> for these applications.
> -------- snap --------
>



-- 
-Austin



More information about the pkg-wine-party mailing list