Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
How to revert my abi_x86_32 laziness
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Portage & Programming
View previous topic :: View next topic  
Author Message
pizza-rat
Tux's lil' helper
Tux's lil' helper


Joined: 23 Dec 2022
Posts: 81

PostPosted: Mon Apr 08, 2024 10:20 pm    Post subject: How to revert my abi_x86_32 laziness Reply with quote

I put the abi_x86_32 USEflag in make.conf because I was lazy when installing wine/lutris.

1. is this bad?
2. what's the most painless way to remove this flag globally and set it to only the packages that need it?
Back to top
View user's profile Send private message
e8root
Tux's lil' helper
Tux's lil' helper


Joined: 09 Feb 2024
Posts: 94

PostPosted: Tue Apr 09, 2024 4:46 am    Post subject: Reply with quote

Unset abi_x86_32 and run something like
Code:
emerge -aev @world

to rebuild everything in one go. Maybe also add something like --jobs 4 (or however you think your system can handle, I use 16 for 64GB system and its fine because really heavy ebuilds usually run alone - do keep in mind in case you go overboard swap will be used and it unless you use zram it itsn't nice...) and --keep-going y to not need to baby-sit the emerge in case of issues.

Two packages that I know use/need abi_x86_32 are various wine versions and steam.
Steam you would need to use something like flatpak to not need 32-bit packages.
Wine if you use version 9.x you can put wow64 flag to remove need for 32-bit packages while still being able to run 32-bit Windows binaries. You apparently loose some performance through using wow64 but it is not something I could easily (read: at all) verify and really on any relatively modern computer (say built in the last decade) I would not really worry about performance of 32-bit apps, especially if it can only affect windows-linux system calls and nothing to do with 32-bit applications themselves running in Windows domain. You also cannot run 16-bit binaries with wow64 exactly like how WoW64 works on real 64-bit Windows systems.

Alternatively if you want to still use abi_x86_32 the list of packages where you absolutely need to set this USE flag will show up when you run the command.

p.s If you build app-emulation/dxvk to build your own optimized and/or latest and greatest (read -9999) version of .dll files for wine you might want to set abi_x86_32 there too otherwise you only get 64-bit dlls.
_________________
Unix Wars - Episode V: AT&T Strikes Back
Back to top
View user's profile Send private message
logrusx
Advocate
Advocate


Joined: 22 Feb 2018
Posts: 2424

PostPosted: Tue Apr 09, 2024 5:28 am    Post subject: Reply with quote

If you want to keep wine, keep abi_x86_32 on wine (in package.use), remove abi_x86_32 from make.conf and try to avoid putting anything there in the future and run:

Code:
USE="-abi_x86_32" emerge -DUav @world


If you want to get rid of abi_x86_32 altogether, remove abi_x86_32 on wine too (or just don't set it) and the rest is the same. However a few packages will remain because they'll always link against each other's 32bit version and you can't stop that. Come back here because you need to break the cycle and recompile them without abi_x86_32. I'll try to remember how I did it and help you but we need a few attempts.

Best Regards,
Georgi
Back to top
View user's profile Send private message
e8root
Tux's lil' helper
Tux's lil' helper


Joined: 09 Feb 2024
Posts: 94

PostPosted: Tue Apr 09, 2024 5:57 am    Post subject: Reply with quote

I checked it on my experimental chrooted Gentoo install with global abi_x86_32 and indeed --deep and --newuse parameters are enough. You don't need to use --emptytree
Also wine without wow64 by itself don't set abi_x86_32 flag - in this case as I understand you would completely loose support for 32-bit so either use abi_x86_32 or wow64 on wine. The wow64 USE flag is only available since wine 9.0
_________________
Unix Wars - Episode V: AT&T Strikes Back
Back to top
View user's profile Send private message
pizza-rat
Tux's lil' helper
Tux's lil' helper


Joined: 23 Dec 2022
Posts: 81

PostPosted: Tue Apr 09, 2024 7:30 am    Post subject: Reply with quote

Hmm, seems like it would be best to remove wine/lutris first, then remove the flag, then rebuild, then try to install them again and see what's needed. This will probably take a while, so I'll save it for a day when I have the time. Will report back.
Back to top
View user's profile Send private message
logrusx
Advocate
Advocate


Joined: 22 Feb 2018
Posts: 2424

PostPosted: Tue Apr 09, 2024 7:59 am    Post subject: Reply with quote

pizza-rat wrote:
and just gradually uncomment them whenever I'm updating...


That won't work. The only way to do it gradually is to keep abi_x86_32 on wine in package.use and rebuild that part of the world that doesn't need to be abi_x86_32 and later on deal with the remaining packages at once.

This is pretty much the choice you have because one 32bit lib depends on another and so on and you can't rebuild them gradually. At leas it won't happen naturally during regular updates.

Best Regards,
Georgi
Back to top
View user's profile Send private message
pizza-rat
Tux's lil' helper
Tux's lil' helper


Joined: 23 Dec 2022
Posts: 81

PostPosted: Tue Apr 09, 2024 9:17 am    Post subject: Reply with quote

Yeah, I edited that part of my post out after trying it and realizing it would be far more complicated :cry:
Back to top
View user's profile Send private message
logrusx
Advocate
Advocate


Joined: 22 Feb 2018
Posts: 2424

PostPosted: Tue Apr 09, 2024 11:03 am    Post subject: Reply with quote

When you come to the point to get rid of abi_x86_32 altogether, then you'll hit the circular dependency between harfbuzz and freetype. No amount of rebuilds will cause them to not link against each other and this will prevent you from getting rid of the 32bit part of them. From what I remember it was something like enabling abi_x86_32 on one and disabling it on the other until you break that cycle on the 32bit parts of them depending on each other. This is what I remember from my attempt to remove it a few years back. And then I enabled it again to play a game :-) And I haven't disabled it since. I hope wow64 gets better over time so we don't need to enable 32bit on anything ever again.

Best Regards,
Georgi
Back to top
View user's profile Send private message
pizza-rat
Tux's lil' helper
Tux's lil' helper


Joined: 23 Dec 2022
Posts: 81

PostPosted: Tue Apr 09, 2024 7:31 pm    Post subject: Reply with quote

logrusx wrote:
When you come to the point to get rid of abi_x86_32 altogether... I hope wow64 gets better over time so we don't need to enable 32bit on anything ever again.

I hope so too. Some of the games I play through wine are far too temperamental for me to want to mess with trying to switch to wow64 right now :lol:
Back to top
View user's profile Send private message
e8root
Tux's lil' helper
Tux's lil' helper


Joined: 09 Feb 2024
Posts: 94

PostPosted: Tue Apr 09, 2024 8:37 pm    Post subject: Reply with quote

logrusx wrote:
This is what I remember from my attempt to remove it a few years back. And then I enabled it again to play a game :-) And I haven't disabled it since. I hope wow64 gets better over time so we don't need to enable 32bit on anything ever again.

Commands I and logrusx provided should deal with abi_x86_32 all at once.

What game didn't run on wow64?
From my experience only 16-bit stuff doesn't work.

pizza-rat wrote:
logrusx wrote:
When you come to the point to get rid of abi_x86_32 altogether... I hope wow64 gets better over time so we don't need to enable 32bit on anything ever again.

I hope so too. Some of the games I play through wine are far too temperamental for me to want to mess with trying to switch to wow64 right now :lol:

You can test how wow64 works without having to rebuild anything else than wine itself.

Also what kind of issues did running emerge -DUav @world
On my test system there is zero conflicts.
There are numerous issues when trying to remove abi_x86_32 and still keep it enabled on wine but you should be able to add abi_x86_32 after you remove it from everything. I would really do not recommend it.
On my main system with 1416 packages where I use wow64 and do not have abi_x86_32 changing wine-staging flags from wow64 to abi_x86_32 results in 142 packages needing to be rebuilt with abi_x86_32.
This is exactly the kind of BS I didn't want to deal with and why I removed 32-bit from my own system.
_________________
Unix Wars - Episode V: AT&T Strikes Back
Back to top
View user's profile Send private message
pizza-rat
Tux's lil' helper
Tux's lil' helper


Joined: 23 Dec 2022
Posts: 81

PostPosted: Tue Apr 09, 2024 9:37 pm    Post subject: Reply with quote

e8root wrote:

Also what kind of issues did running emerge -DUav @world

None, thankfully. At least when I made sure to remove wine/lutris/dxvk first. I used my usual -avuDN @world and it handled it without issue.

I'm now reinstalling wine etc. I let emerge automatically add the USEflags this time but I have a question in regards to that: why does it always try to cram the new uses into an already existing file that I've edited recently instead of just asking me to name a new one and where to save it? Instead it triggers dispatch-conf and the USEflags aren't applied. I had to run dispatch-conf afterwards, edit new config, save to a new file with nano, zap new config to get everything in order. Is it supposed to work this way? Once I even had it try to write to /etc/environment of all things.
Back to top
View user's profile Send private message
logrusx
Advocate
Advocate


Joined: 22 Feb 2018
Posts: 2424

PostPosted: Wed Apr 10, 2024 9:18 am    Post subject: Reply with quote

pizza-rat wrote:
Is it supposed to work this way?


Yes. It uses the same mechanism that provides new configuration for the packages which needs to provide configuration to an existing file. It's more like a side effect or a happy coincidence that we can use it that way. You can go and manually rename the file in package.use or package.accept_keywords. It uses the same naming convention for the updates - they start with ._#### where # is a digit. You can directly rename it and you won't be asked to run dispatch-conf or etc-update.

When I want to redirect it in some already existing file I grep for what I want and append to the file I want it to go, then delete the update and edit the destination file manually if necessary.

I guess a bug can be filed asking for the functionality to give you choice where to write the configuration but I personally wouldn't bother the developers with it.

p.s. I didn't exactly understand you. Did you remove the 32 bit support? If so, show me the output of `emerge -pv harfbuzz freetype` because I'm pretty sure those are still 32bit enabled and they need more work because of that circular dependency which will prevent the abi_x86_32 to be disabled on either of them.

Best Regards,
Georgi
Back to top
View user's profile Send private message
pizza-rat
Tux's lil' helper
Tux's lil' helper


Joined: 23 Dec 2022
Posts: 81

PostPosted: Wed Apr 10, 2024 11:26 am    Post subject: Reply with quote

logrusx wrote:

I guess a bug can be filed asking for the functionality to give you choice where to write the configuration but I personally wouldn't bother the developers with it.

It's not a huge deal, it just felt kind of odd and unintuitive for what seems like it's meant to be a quick and easy automation.
logrusx wrote:

p.s. I didn't exactly understand you. Did you remove the 32 bit support?

Nope, I just removed the global use flag I had and didn't try to remove 32bit from anything that has it enabled by default.
Back to top
View user's profile Send private message
Hu
Administrator
Administrator


Joined: 06 Mar 2007
Posts: 22654

PostPosted: Wed Apr 10, 2024 3:04 pm    Post subject: Reply with quote

pizza-rat wrote:
I let emerge automatically add the USEflags this time but I have a question in regards to that: why does it always try to cram the new uses into an already existing file that I've edited recently instead of just asking me to name a new one and where to save it?
I think emerge should not do that. Rather, it should have picked the file with the name that sorts highest lexicographically, so that your new changes will override any earlier conflicting instructions in lower lexicographic names. If it is always picking the most recent file, even when that has a lower position in the sort order, that would be unexpected. Can you give a specific example of it behaving incorrectly?
pizza-rat wrote:
Once I even had it try to write to /etc/environment of all things.
Are you saying that emerge --autounmask-write tried to modify /etc/environment? That seems wrong. I could believe that some package update had scheduled a change to /etc/environment and that you only handled that update while trying to handle the autounmask.
Back to top
View user's profile Send private message
pizza-rat
Tux's lil' helper
Tux's lil' helper


Joined: 23 Dec 2022
Posts: 81

PostPosted: Wed Apr 10, 2024 8:42 pm    Post subject: Reply with quote

Hu wrote:
If it is always picking the most recent file, even when that has a lower position in the sort order, that would be unexpected. Can you give a specific example of it behaving incorrectly?

If I'm remembering correctly, when I let it auto add USEflags for all the abi_x86_32 stuff I needed, it tried to put them all in /etc/portage/package.use/xfce4-pulseaudio-plugin or /etc/portage/package.use/xfce. I've had it try to write to 00cpu-flags before as well. For reference this is my package.use directory:
Code:
00cpu-flags  feh       krita       qpdfview     wine-proton
calibre      firejail  lutris      qutebrowser  wine-staging
claws        gimp      mc          shotcut      winetricks
cmus         grub      mpv         tint2        wine-vanilla
conky        gvfs      opensnitch  vulkan       xfce
curl         ibus      pipewire    wine         xfce4-pulseaudio-plugin

As for the /etc/environment one, yeah it's very possible I'm just misremembering here. If I see it happen again I'll make a thread.
Back to top
View user's profile Send private message
logrusx
Advocate
Advocate


Joined: 22 Feb 2018
Posts: 2424

PostPosted: Thu Apr 11, 2024 9:04 am    Post subject: Reply with quote

I successfully switched to wow64 but I had to rebuild wine manually to make it let go of the 32bit abi.

I don't know if wow64 will be problematic, I don't intend to run anything 32bit for now.

I didn't hit the circular dependency between harfbuzz and freetype, maybe because one of them pulled in the binary packages, so the cycle had already been broken.

A few packages are still 32bi enabled and when I failed to find out what pulled them in I realized the 32 part in:

Code:
[ebuild   R    ] dev-libs/boehm-gc-8.2.4::gentoo  USE="large threads -cxx -static-libs" ABI_X86="(32) (64) (-x32)" 0 KiB

was in brackets which meant it was profile forced so I dug up the following:

Code:
# Michał Górny <mgorny@gentoo.org> (2023-10-06)
# Require ABIs matching MULTILIB_ABIS in gcc dependencies -- otherwise
# sys-devel/gcc[multilib] (which is forced) will fail late in build.
dev-libs/libatomic_ops abi_x86_32
dev-libs/boehm-gc abi_x86_32

...

# Michał Górny <mgorny@gentoo.org> (2017-04-08)
# Require sandbox to be multilib-capable to avoid failures when building
# multilib packages, #611292.
sys-apps/sandbox abi_x86_32


And the rest still insisted on abi_x86_32 for no apparent reason so I just let them be.

Now I have the following 32bit enabled packages:

Code:
eix -I --installed-with-use abi_x86_32 --format '<installedversions:NAMEVERSION>'
dev-libs/boehm-gc-8.2.4
dev-libs/libatomic_ops-7.8.2
sys-apps/sandbox-2.38
sys-devel/clang-runtime-17.0.6
sys-libs/compiler-rt-17.0.6
sys-libs/compiler-rt-sanitizers-17.0.6
sys-libs/libomp-17.0.6
sys-libs/libxcrypt-4.4.36
virtual/libcrypt-2-r1


Best Regards,
Georgi
Back to top
View user's profile Send private message
Chiitoo
Administrator
Administrator


Joined: 28 Feb 2010
Posts: 2730
Location: Here and Away Again

PostPosted: Thu Apr 11, 2024 9:48 pm    Post subject: Reply with quote

logrusx wrote:
I successfully switched to wow64 but I had to rebuild wine manually to make it let go of the 32bit abi.

Could you elaborate on that a bit?

How exactly were you doing it, and what exactly was happening?

I've tested it a few times, and haven't noticed that yet.

By the by, from earlier, wouldn't

Code:
USE="-abi_x86_32" emerge -DUav @world

remove it from Wine as well? :]
_________________
Kindest of regardses.
Back to top
View user's profile Send private message
logrusx
Advocate
Advocate


Joined: 22 Feb 2018
Posts: 2424

PostPosted: Fri Apr 12, 2024 7:46 am    Post subject: Reply with quote

Chiitoo wrote:
logrusx wrote:
I successfully switched to wow64 but I had to rebuild wine manually to make it let go of the 32bit abi.

Could you elaborate on that a bit?

How exactly were you doing it, and what exactly was happening?

I've tested it a few times, and haven't noticed that yet.

By the by, from earlier, wouldn't

Code:
USE="-abi_x86_32" emerge -DUav @world

remove it from Wine as well? :]


Well, I had to run the same command but for win-staging explicitly because full world update just didn't want to disable abi_x86_32 on it. Maybe it was default on in the ebuild, I don't know, it didn't pass through my mind to investigate further.

EDIT: even if it was default on in the ebuild, that should not have prevented dropping it when USE="-abi+x86_32" was on the command line.

Best Regards,
Georgi
Back to top
View user's profile Send private message
Chiitoo
Administrator
Administrator


Joined: 28 Feb 2010
Posts: 2730
Location: Here and Away Again

PostPosted: Fri Apr 12, 2024 5:20 pm    Post subject: Reply with quote

logrusx wrote:
Chiitoo wrote:
logrusx wrote:
I successfully switched to wow64 but I had to rebuild wine manually to make it let go of the 32bit abi.

Could you elaborate on that a bit?

How exactly were you doing it, and what exactly was happening?

I've tested it a few times, and haven't noticed that yet.

By the by, from earlier, wouldn't

Code:
USE="-abi_x86_32" emerge -DUav @world

remove it from Wine as well? :]


Well, I had to run the same command but for win-staging explicitly because full world update just didn't want to disable abi_x86_32 on it. Maybe it was default on in the ebuild, I don't know, it didn't pass through my mind to investigate further.

EDIT: even if it was default on in the ebuild, that should not have prevented dropping it when USE="-abi+x86_32" was on the command line.

Best Regards,
Georgi

Yeah, the command-line would, or at least should prevail there. I don't think we force it anywhere either.

If you see it happen again, do let us know!

As a general note on the new-style 'wow64' in Wine, some Wine developers still consider it having "crippled 3D support" [1], so it will not work for everything, but for some things, it indeed does.

1. https://www.winehq.org/mailman3/hyperkitty/list/wine-devel@winehq.org/message/K4AKMFXJ27KHE6LMVLWXV5QU5UBXDENV/
_________________
Kindest of regardses.
Back to top
View user's profile Send private message
logrusx
Advocate
Advocate


Joined: 22 Feb 2018
Posts: 2424

PostPosted: Fri Apr 12, 2024 6:11 pm    Post subject: Reply with quote

Fortunately I have that buffer still in memory.

After several attempts I decided to let that go: https://bpa.st/G5JA and continue later;

It completed with: https://bpa.st/AZ7A

Another try at full world update didn't report anything for update;

Then I did that: https://bpa.st/ODFA and here I realized I had two slots of wine emerged;

Here I finally realized I had abi_x86_32 for xz-utils in a separate file for some reason, so I got rid of it, although that should not have had a role in it;

So I cleaned up 9:0, finished with preserved libraries, I'm posting the output because of them: https://bpa.st/EZDA

Then I finally run this and let it go: https://bpa.st/EXKA It finished without preserved libraries;

And here I decided to make my life harder in case I decide to play another time-wasting game and finally removed wine: https://bpa.st/IABA

What I realized just now, pasting the output is I had two slots of wine-mono, but I don't think this should have caused it either.

Then I forcefully rebuilt some more packages with 32bit abi disabled and then I let the few ones portage wanted to enable 32bit abi on get rebuilt with it but I think this is already irrelevant.

Best Regards,
Georgi
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portage & Programming All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum