Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Avoiding 32-bit dependency hell
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Installing Gentoo
View previous topic :: View next topic  
Author Message
javeree
Guru
Guru


Joined: 29 Jan 2006
Posts: 401

PostPosted: Tue May 05, 2020 3:34 pm    Post subject: Avoiding 32-bit dependency hell Reply with quote

I installed wine with both 64 and 32 bit support, because I want to be able to run some XP-era 32 bit programs.

Of course this requires that some dependecies are also compiled with abi_x86_32. But after that, this spreads to all packages in the system:

example: pulseaudio is a dependency.

pulseaudio has use flag samba, and even though the samba functionality will not be used for wine, samba must now get abi_x86_32.
samba has flag ncurses, so abi_x86_32 for ncurses.
ncurses has flag gpm, so the (console only!) based gpm daemon must be comiled with abi_x86_32

and on and on .....

Is there a way to avoid this:

e.g;
Tell portage to consider a certain set of use flags for 32 bit and another set for the 64 bit variant.
That would allow to have 64 pulseaudio with samba support and 32 pulseaudio without samba (and thus avoid all those samba dependencies to need 32 bit)

Alternatively, is the a way to specify in 'package.provided' that the 32 bit variant of the ebuild is provided, while still having portage emerge the 64 bit part ?
Back to top
View user's profile Send private message
dmpogo
Advocate
Advocate


Joined: 02 Sep 2004
Posts: 2686
Location: Canada

PostPosted: Tue May 05, 2020 7:37 pm    Post subject: Re: Avoiding 32-bit dependency hell Reply with quote

javeree wrote:
I installed wine with both 64 and 32 bit support, because I want to be able to run some XP-era 32 bit programs.

Of course this requires that some dependecies are also compiled with abi_x86_32. But after that, this spreads to all packages in the system:

example: pulseaudio is a dependency.

pulseaudio has use flag samba, and even though the samba functionality will not be used for wine, samba must now get abi_x86_32.
samba has flag ncurses, so abi_x86_32 for ncurses.
ncurses has flag gpm, so the (console only!) based gpm daemon must be comiled with abi_x86_32

and on and on .....

Is there a way to avoid this:

e.g;
Tell portage to consider a certain set of use flags for 32 bit and another set for the 64 bit variant.
That would allow to have 64 pulseaudio with samba support and 32 pulseaudio without samba (and thus avoid all those samba dependencies to need 32 bit)

Alternatively, is the a way to specify in 'package.provided' that the 32 bit variant of the ebuild is provided, while still having portage emerge the 64 bit part ?



Honestly, nowdays it seems easier to run 32-bit virtual machine, in your case, perhaps just 32-bit XP itself
Back to top
View user's profile Send private message
javeree
Guru
Guru


Joined: 29 Jan 2006
Posts: 401

PostPosted: Tue May 05, 2020 7:57 pm    Post subject: Reply with quote

Sure, I could even do it with a couple of desktop PCs I have standing around here, but there is nothing like a good challenge.

In fact the problem I face is not with wine. That works, and the application too. IT is just that portage forces here a lot of bloat that would not be there if you would compile ebuilds without dependecy tracking by portage, because then you would decide for each dependency if you would need it for the final 32 bit application.
I don't expect that portage can ever work so fine grained, but I feel like there is a slot-like quality to having 32 and 64 bit compiles. just as in the case with slots, these are two implementations that live next to each other on the same system.
So like you could provide a separate use flag for a separate slot, you could also have it for a separate 'n-bit slot'.
Back to top
View user's profile Send private message
C5ace
Guru
Guru


Joined: 23 Dec 2013
Posts: 342
Location: Brisbane, Australia

PostPosted: Wed May 06, 2020 12:17 am    Post subject: Reply with quote

In /etc/portage/package.use/ remove all USE flags that reference to abi_x86_32 and/or wine.
Then run
Code:
 emerge -av --unmerge [your version of wine]

Then update your system:
Code:
 emerge -av --update --deep --with-bdeps=y --changed-use --newuse --backtrack=300  --keep-going=y --verbose-conflicts --changed-deps=y @world

Followed by:
Code:
emerge --depclean
revdep-rebuild

Reboot.
Now run:
Code:
emerge -vp [your version of wine] > ~/Desktop/wine

The file ~/Desktop/wine will contain the list of all dependencies and required USE flags. Delete the dependencies and retain the USE flags. Then save the file named "wine" as /etc/portage/package.use/wine.
The contents of my /etc/portage/package.use/wine look like this:
Code:
# required by media-libs/mesa-19.3.4::gentoo[libglvnd]
# required by virtual/opengl-7.0-r2::gentoo
# required by media-libs/freeglut-3.2.1::gentoo
# required by media-libs/libwebp-1.0.2::gentoo[opengl]
# required by www-client/firefox-68.5.0::gentoo
# required by @selected
# required by @world (argument)
>=media-libs/libglvnd-1.3.1 abi_x86_32

# required by media-libs/glu-9.0.1::gentoo
# required by virtual/glu-9.0-r2::gentoo
# required by media-libs/freeglut-3.2.1::gentoo
# required by media-libs/libwebp-1.0.2::gentoo[opengl]
# required by www-client/firefox-68.5.0::gentoo
# required by @selected
# required by @world (argument)
>=virtual/opengl-7.0-r2 abi_x86_32

# required by sys-libs/ncurses-6.1_p20190609::gentoo[gpm]
# required by sys-apps/util-linux-2.33.2::gentoo[ncurses]
# required by @system
# required by @world (argument)
>=sys-libs/gpm-1.20.7-r2 abi_x86_32
# required by media-libs/harfbuzz-2.3.1::gentoo[graphite]
# required by media-libs/freetype-2.9.1-r3::gentoo[harfbuzz]
# required by media-libs/fontconfig-2.13.0-r4::gentoo
# required by app-emulation/wine-vanilla-4.0::gentoo[fontconfig]
# required by app-emulation/wine-vanilla (argument)
>=media-gfx/graphite2-1.3.13 abi_x86_32
# required by media-libs/harfbuzz-2.3.1::gentoo[glib]
# required by media-libs/freetype-2.9.1-r3::gentoo[harfbuzz]
# required by media-libs/fontconfig-2.13.0-r4::gentoo
# required by app-emulation/wine-vanilla-4.0::gentoo[fontconfig]
# required by app-emulation/wine-vanilla (argument)
>=dev-libs/glib-2.58.3 abi_x86_32
# required by x11-libs/libXxf86vm-1.1.4-r1::gentoo
# required by media-libs/mesa-18.3.6::gentoo
# required by virtual/opengl-7.0-r2::gentoo
# required by media-libs/glu-9.0.0-r1::gentoo
# required by virtual/glu-9.0-r2::gentoo
# required by media-libs/libsdl2-2.0.9::gentoo[opengl]
# required by app-emulation/wine-vanilla-4.0::gentoo[sdl]
# required by app-emulation/wine-vanilla (argument)
>=x11-libs/libXext-1.3.3-r1 abi_x86_32
# required by dev-libs/libxslt-1.1.32::gentoo[crypt]
# required by x11-libs/libxcb-1.13.1::gentoo
# required by x11-libs/libX11-1.6.7::gentoo
# required by x11-libs/libXrender-0.9.10-r1::gentoo
............
Total 464 lines

When done run:
Code:
emerge -av [your version of wine]
and check that no further USE flags are required.
_________________
Observation after 30 years working with computers:
All software has known and unknown bugs and vulnerabilities. Especially software written in complex, unstable and object oriented languages such as python, perl, C++, C#, Rust and the likes.
Back to top
View user's profile Send private message
javeree
Guru
Guru


Joined: 29 Jan 2006
Posts: 401

PostPosted: Thu May 07, 2020 11:51 am    Post subject: Reply with quote

@C5ace

That is approximately what I do, and the reason for my post:
Can you see how in your results also gpm and ncurses pop up as requiring abi_x86_32 ? This is not because wine needs it, but because wine needs something else e.g. samba, and thus forces all samba dependencies to be 32 bit too, even though wine does not need these parts (ncurses). so that is why I wanted to somehow say 'compile samba with ncurses if abi_64 and without ncurses if abi_32)
e.g have in package.use something like:

net-fs/samba:abi_x86_32 -ncurses
net-fs/samba:abi_x86_64 ncurses
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Installing Gentoo 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