Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
build 32bit stuff on mostly-stable amd64 without emul-linux
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
mmogilvi
n00b
n00b


Joined: 13 May 2011
Posts: 47

PostPosted: Sun Mar 02, 2014 1:16 am    Post subject: build 32bit stuff on mostly-stable amd64 without emul-linux Reply with quote

abi_x86_32 is now stable!

I will probably stop maintaining this post after this update.

Steps 1, 2, and 4 through 6 are mostly obsolete now. Kept mostly just for historical reference.

For the transition, the list of packages that need abi_x86 in step 3 (using limited wildcards) may still be a useful compromise between enabling it globally, and needing to set it individually on something like 200 packages (as the "eselect news" release suggests).

Also, until Qt 4.8.6 is stabilized, you might prefer to unmask emul-linux-x86-qtlibs (in /etc/package.unmask) if you want to install some out-of-tree or unstable package (like skype) that depends on 32 bit Qt. See also the "Qt Exception" note in step 1.

OLD: Problem/Background

It is now very practical to remove emul-linux libraries in favor of directly enabling 32 bit builds of source packages instead, even on a "stable" system. There are currently only three issues blocking official stabilization in bug 525254, none of which I currently need myself.

My solution, detailed further below, involves uninstalling emul-linux-x86-* packages and using natively compiled 32-bit packages instead.

OLD: Other Possible 32-bit Solutions: (which I haven't tested)

Although the native 32-bit builds is the way of the future (hopefully any day now...), in the short term it isn't officially supported, and so here are some alternative short-term strategies:

A 32-bit chroot gives you the maximum flexibility in configuring what you want, but requires extra effort to setup, use, and maintain. See https://www.gentoo.org/proj/en/base/amd64/howtos/chroot.xml

As of 2014-05-12, the official way to get a fully-functional, mostly stable system working is still to leave ABI_X86=-32 masked/disabled for most packages (except actual applications like wine), and do a world update to pick up the latest versions of the emul-linux packages. Although be aware that this will probably be a relatively short-term solution only: it could be masked any week [or day?] now.

Another alternative I haven't tried is to switch to a mostly unstable ~amd64 install with ABI_X86=32 globally enabled. This might still install emul-linux libraries, but only for the parts that can't be supplied by individual package ebuilds. I think this may be where most developers focus their efforts. Since development occurs here, it may break random things (including 64-bit stuff) moderately often, but any one break will likely be fixed quickly. See https://wiki.gentoo.org/wiki/Multilib_System_without_emul-linux_Packages for detailed instructions.

Or see comment 28 of bug 499952 to try a (probably fully obsolete) hybrid/combined native (where possible) and emul-linux (to fill in the gaps) solution that installs more unstable packages than my solution, but fewer than the full-on ~amd64 install. But I expect its list of ~amd64 packages is probably out of date. There are similar lists elsewhere, but they are probably also out of date.

OLD: Some related links:

http://unix.stackexchange.com/questions/89678/using-abi-x86-in-gentoo
The best explanation of the ABI_X86 stuff I've found.

http://wiki.gentoo.org/wiki/Project:Multilib
Relatively new project page for the multilib conversion effort. Roadmap, how to adapt ebuilds, etc.

https://wiki.gentoo.org/wiki/Multilib_System_without_emul-linux_Packages
How to eliminate emul-linux when running an unstable (~amd64) system. Lists abi_x86_32 packages individually (no wildcards), which has pluses and minuses. May eventually replace this page, once abi_x86_32 is unmasked for stable.

http://wiki.gentoo.org/wiki/Multilib/gx86-multilib
Very brief description of how to enable abi_x86_32. Should probably be merged with above.

https://wiki.gentoo.org/wiki/Multilib_porting_status
During the main portion of the multilib conversion effort, this was the main status page. But these days it is mostly obsolete.

--------

My Solution

The following steps should allow you to install wine without emul-linux packages. If you don't care about wine, it can still be used as a proxy for "can build most 32-bit software, with or without portage".

One line summary: My solution is to completely uninstall emul-linux-x86-* packages, enable ABI_X86=32 fairly widely but selectively, and (main gotcha:) disable anything that still has missing dependencies in this configuration.

---
Step 1: Find and disable anything that still requires emul-linux-x86*:

The number of unstable packages that need unmasked ~amd64 explodes (below) if you allow anything to pull in emul-linux-x86-baselibs with abi_x86_32 enabled.

Main gotcha: If you need something that still requires emul-linux*, then you obviously can't remove them, and this solution is not for you. But see some of the "optional"s below, or other solutions above. Qt exception: emul-linux-x86-qtlibs-20140508-r1 (only) can now be installed without the rest of the emul-linux packages, if you enable abi_x86_32 and ~amd64 in appropriate native dependencies, and stop using a wildcard in step 5 below. This should be an acceptable alternative solution until qt multilib is stabilized (bug 530238). I don't think any other emul-linux packages have dependencies setup to allow this.

Make sure the emul-linux-* packages aren't in /var/lib/portage/world. Use "emerge --deselect emul-linux-WHATEVER".

Use "equery d emul-linux-WHATEVER" to see what else may depend on them. The dependencies it prints are relatively useless; go look at the original ebuild (as well as other versions) to see if they can be satisfied with multilib packages instead. Then either uninstall such packages, or disable use flags for individual packages (if the dependency is conditional on use flags).

Recently I only need to disable a couple of use flags on my machine:

/etc/portage/package.use:

app-emulation/wine -gstreamer
www-plugins/adobe-flash -abi_x86_32

## If you do NOT need "wine gstreamer", then disabling the below
## also allows you to avoid installing various other abi_x86_32 packages.
## But if you want "wine gstreamer", leave this line out
## so that abi_x86_32 will be enabled by the wildcards in step 3.
## (This take precedence over wildcards in step 3.)
virtual/ffmpeg -abi_x86_32


Optional 1: All of wine's USE flags are now available with mostly-stable multilib, except for gstreamer. (gstreamer still also requires more package.use abi_x86_32 flags and ~amd64 keywords as described in the comments above and in step 3.)

Optional 2: adobe-flash looks like it supports native 32-bit dependencies now (untested), but it is only useful if you want to run it in a 32-bit browser for some reason.

---
OLD: Step 2: Unmask abi_x86_32

/etc/portage/profile/use.mask:

-abi_x86_32


---
Step 3: Enable abi_x86_32

Either add ABI_X86="32" to make.conf, or try to be more selective about it. For example:

/etc/portage/package.use:

dev-libs/* abi_x86_32
media-libs/* abi_x86_32
media-sound/* abi_x86_32
net-libs/* abi_x86_32
sys-devel/* abi_x86_32
sys-libs/* abi_x86_32
virtual/* abi_x86_32
x11-libs/* abi_x86_32
x11-proto/* abi_x86_32

app-accessibility/at-spi2-core abi_x86_32
app-accessibility/at-spi2-atk abi_x86_32
app-admin/gamin abi_x86_32
app-arch/bzip2 abi_x86_32
app-i18n/enca abi_x86_32
dev-lang/orc abi_x86_32
dev-util/pkgconfig abi_x86_32
sys-apps/attr abi_x86_32
sys-apps/dbus abi_x86_32
sys-fs/udev abi_x86_32

dev-db/unixODBC abi_x86_32
dev-db/sqlite abi_x86_32
sys-apps/util-linux abi_x86_32
net-nds/openldap abi_x86_32
net-print/cups abi_x86_32
media-gfx/sane-backends abi_x86_32
media-gfx/graphite2 abi_x86_32

app-emulation/wine abi_x86_32

## OPTIONAL: To enable wine gstreamer, you
## need these, as well re-enabling virtual/ffmpeg abi_x86_32
## from step 1:
#media-plugins/libvisual-plugins abi_x86_32
#media-plugins/gst-plugins*:0.10 abi_x86_32
#media-video/mjpegtools abi_x86_32
#media-video/ffmpeg abi_x86_32
## END OPTIONAL: "wine gstreamer"

## OPTIONAL: Some 64-bit video players (like totem) may
## indirectly depend on quvi and lua stuff.  I'm not sure
## about the best long-term strategy here; I suspect that
## more stuff may eventually depend on these.  (Perhaps
## video could use more research and have instructions
## that are split off from the rest of the "base" multilib instructions?)
## ALTERNATIVE 1: Just disable abi_x86_32 for stuff
## that is usually only needed for 64 bit players:
#media-libs/libquvi-scripts -abi_x86_32
#media-libs/libquvi -abi_x86_32
## ALTERNATIVE 2: Enable abi_x86_32 for stuff that
## isn't actually used in 32 bit code (yet?):
#net-misc/curl abi_x86_32
#dev-lang/lua abi_x86_32
#dev-lua/* abi_x86_32
## END OPTIONAL: totem / quvi / lua stuff


In many cases you could probably trim this down based on your specific needs (which packages and USE flags you want to install, eliminate wildcards in favor of individual packages, etc). You might also need to add more, if you enable something I don't use and haven't otherwise noticed.

It would be nice if there were an easy way to only build 32 bit libs that you actually need to meet other dependencies, but I don't know a good way of automating that.

---
OLD: Step 4: Unmask ~amd64 in several packages to support abi_x86_32:

I currently don't need to unmask any unstable packages.

A year ago the package.keyword list was fairly long. Before it finally shrunk to zero, it most recently had one required ("=net-libs/gnutls-3.3.10-r2 ~amd64") and two optional [for "wine gstreamer"]: ("=media-libs/libbluray-0.5.0-r1 ~amd64" and "=media-video/mjpegtools-2.1.0-r2 ~amd64"). But it is empty now.

---
OLD: Step 5: Mask emul-linux-x86-*:

/etc/portage/package.mask:

app-emulation/emul-linux-x86-*


---
Step 6: Update

Run "emerge -uDNva world", and/or fix any remaining problems. Might need to revisit step 1, make a few more USE flag tweaks, and/or adjust some more package keywords.

--------

History of Edits

  • 2014-03-07: "wine nls" supported (with "gettext abi_x86_32"). Remove "libiconv ~amd64" and "llvm ~amd64".
  • 2014-03-16: Remove "bzip2 ~amd64". New version of "freetype ~amd64" (old ebuild gone).
  • 2014-03-28: Remove 8 more ~amd64 lines from step 4. Clarify purpose of and extend description of step 1. Remove "Priorities" section.
  • 2014-04-06: Remove "*/libffi ~amd64".
  • 2014-04-20: Remove "libvorbis ~amd64" and "flac ~amd64". Add optional "wine xml" instructions. Rewrite problem/background section, including references to alternatives.
  • 2014-05-05: Describe alternative that the new emul-linux (20140406) is finally stabilized. (And then further updated to mention bug 509556 a few minutes later.)
  • 2014-05-12: Update bug 509556 information.
  • 2014-05-20: Remove "mpg123 ~amd64" and "xml2 ~amd64". Minor rewording some parts.
  • 2014-05-27: Remove "ncurses ~amd64". Mention that there are now ways to enable all the USE flags except for "wine gstreamer", although some flags still require hardmasked packages.
  • 2014-05-28: Added "attr abi_x86_32" with note.
  • 2014-06-07: Remove "libvdpau ~amd64". Numerous edits and additions to step 3 (abi_x86_32). Added several more optional sections to step 4 (~amd64).
  • 2014-06-15: Remove optional "libtasn1 ~amd64". Mention that "wine gstreamer" is now possible, but still requires many unstable packages.
  • 2014-06-30: Remove "wine-1.6.2 ~amd64". Mention that the latest emul-linux-x86-qtlibs can be used without the rest of emul-linux.
  • 2014-07-07: Remove "*/pkgconfig ~amd64" and "readline ~amd64". Add two links to multilib project pages. Reword and shorten some paragraphs, including the one describing the current-stable ABI_X86=-32 option.
  • 2014-07-18: Add "gamin abi_x86_32". Remove libtool, util-linux, and freetype ~amd64.
  • 2014-07-22: Remove several stabilized ~amd64 packages from step 4. Add several entries to steps 1, 3, and 4 to fix several errors/conflicts caused by newly stabilized packages (flagged with comments).
  • 2014-08-03: Add "sqlite abi_x86_32". Remove "fribidi ~amd64". Integrate/remove some of the 07-22 flag comments. Link to new wiki page about eliminating emul-linux on ~amd64 systems.
  • 2014-10-10: Remove "gpg-error ~amd64". Adjust versions for now-removed ~amd64 versions of optional libgcrypt and gnutls. Add real instructions for optionally enabling "wine gstreamer". Tweak wording of various other text.
  • 2014-10-25: Remove optional "libgcrypt ~amd64" and"libsdl ~amd64". Remove "xslt -abi_x86_32" special case; "wine xml" no longer requires other unstable packages. Grub:0 patch is in -r14. Reference comment about stabilization hoped for in late November. Reference 32-bit chroot instructions.
  • 2014-11-05: Remove "lcms ~amd64" and optional "sane-backends ~amd64".
  • 2014-11-11: Fix several references to non-sensical "AMD_X86" to "ABI_X86" instead, although none of the errors were in the block-quoted text. (Thanks thumper.)
  • 2014-12-06: Remove libSM -uuid. Remove optional libSM ~amd64, nettle ~amd64, and unixODBC ~amd64. Tweak paragraph about Qt.
  • 2014-12-26: Remove optional a52dec ~amd64.
  • 2015-01-18: Remove "grub:0 -ncurses". Remove mention of wine-1.7.19-r1; stable handles all USE flags now. Only two wine USE flags need optional unstable packages. Remove some nearly year old notes about libpng header/lib version mismatch problems (bug 499952 and bug 506900). Remove 6 month old note about troubleshooting a temporary problem with bad 32-bit headers (bug 509556). A few other wording tweaks.
  • 2015-01-31: Remove "cairo ~amd64" (would have been last required ~amd64, but:). Add required gnutls ~amd64 with associated simplifications (instead of avoiding several packages and use flags that require multilib gnutls). Remove "wine -ssl". Remove "libsoup -abi_x86_32" and "glib-networking -abi_x86_32".
  • 2015-02-02: Fix missing "4" in "gnutls ~amd64". Oops.
  • 2015-02-21: Step 4 (package.keywords) is now unnecessary. Add some notes and options about totem / quvi / lua to step 3.
  • 2015-03-29: Finally stabilized! Add a new pre-intro section focused on the what is relevant now that it is stable. Add two accessibility packages needed by the a recent gtk update to step 3.


Last edited by mmogilvi on Sun Mar 29, 2015 6:34 pm; edited 34 times in total
Back to top
View user's profile Send private message
pinion
n00b
n00b


Joined: 11 Feb 2006
Posts: 35

PostPosted: Wed Mar 05, 2014 4:54 am    Post subject: Reply with quote

I followed your post, and I'm not sure how to get around this... trying to emerge -avuDN world

Code:
Calculating dependencies... done!

emerge: there are no ebuilds built with USE flags to satisfy "sys-libs/zlib[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?]".
!!! One of the following packages is required to complete your request:
- media-libs/freetype-2.4.12::gentoo (Change USE: -abi_x86_32)
(dependency required by "media-libs/freetype-2.4.12" [ebuild])
(dependency required by "media-libs/fontconfig-2.10.92" [installed])
(dependency required by "dev-lang/tk-8.5.13-r1" [installed])
(dependency required by "dev-lang/python-2.7.5-r3[tk,-build]" [installed])
(dependency required by "app-editors/vim-7.3.762[python]" [installed])
(dependency required by "@selected" [set])
(dependency required by "@world" [argument])


Adding the following to package.use
Code:
=media-libs/freetype-2.4.12 -abi_x86_32


Gives me:
Code:
Calculating dependencies... done!

emerge: there are no ebuilds to satisfy "media-libs/tiff:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?]".
(dependency required by "media-libs/lcms-2.5-r1" [ebuild])
(dependency required by "net-print/cups-filters-1.0.43-r1" [installed])
(dependency required by "net-print/cups-1.7.1" [installed])
(dependency required by "x11-libs/gtk+-2.24.22" [installed])
(dependency required by "media-sound/grip-3.3.1-r3" [installed])
(dependency required by "@selected" [set])
(dependency required by "@world" [argument])


Thanks :)
Back to top
View user's profile Send private message
mmogilvi
n00b
n00b


Joined: 13 May 2011
Posts: 47

PostPosted: Wed Mar 05, 2014 6:12 am    Post subject: Reply with quote

I'm not sure, but if I am interpreting the output correctly, it looks like abi_x86_32 is somehow not enabled for zlib.

Does "emerge -pv zlib" provide any useful information? Especially regarding the ABI_X86=32 flag it is trying to use?

The /etc/portage/profile/use.mask change (step 2) should have unmasked it, and the sys-libs/* abi_x86_32 line in package.use (step 3) should have enabled it for zlib.

----

Also, in today's update I had to add =media-libs/libvorbis-1.3.3-r1 ~amd64 to the package.keywords file, because a newly-stabilized libsndfile depends on it when abi_x86_32 is enabled. I'll edit the original post appropriately.
Back to top
View user's profile Send private message
pinion
n00b
n00b


Joined: 11 Feb 2006
Posts: 35

PostPosted: Wed Mar 05, 2014 7:18 am    Post subject: Reply with quote

Yeah, I'm not sure why it isn't working correctly for me. Perhaps I am missing something...

Code:
 ~ $ sudo grep -i abi /etc/portage/*
grep: /etc/portage/bin: Is a directory
/etc/portage/make.conf:ABI_X86="64"
grep: /etc/portage/make.profile: Is a directory
/etc/portage/package.use:media-libs/libpng apng static-libs abi_x86_32
/etc/portage/package.use:dev-libs/* abi_x86_32
/etc/portage/package.use:x11-libs/* abi_x86_32
/etc/portage/package.use:x11-proto/* abi_x86_32
/etc/portage/package.use:media-sound/* abi_x86_32
/etc/portage/package.use:media-libs/* abi_x86_32
/etc/portage/package.use:sys-libs/* abi_x86_32
/etc/portage/package.use:virtual/* abi_x86_32
/etc/portage/package.use:app-arch/bzip2 abi_x86_32
/etc/portage/package.use:sys-apps/dbus abi_x86_32
/etc/portage/package.use:sys-devel/llvm abi_x86_32
/etc/portage/package.use:sys-fs/udev abi_x86_32
/etc/portage/package.use:app-emulation/wine abi_x86_32
grep: /etc/portage/patches: Is a directory
grep: /etc/portage/postsync.d: Is a directory
grep: /etc/portage/repos.conf: Is a directory
grep: /etc/portage/savedconfig: Is a directory
/etc/portage/use.mask:-abi_x86_32


Code:
 ~ $ sudo emerge -pv zlib

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] sys-libs/zlib-1.2.8-r1  USE="minizip static-libs" ABI_X86="(64) (-32) (-x32)" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB
Back to top
View user's profile Send private message
TomWij
Retired Dev
Retired Dev


Joined: 04 Jul 2012
Posts: 1553

PostPosted: Wed Mar 05, 2014 8:11 am    Post subject: Reply with quote

pinion wrote:
~ $ sudo emerge -pv zlib


Use -pvuN such that it can upgrade and/or use the new USE flag.
Back to top
View user's profile Send private message
mmogilvi
n00b
n00b


Joined: 13 May 2011
Posts: 47

PostPosted: Thu Mar 06, 2014 2:59 am    Post subject: Reply with quote

This should be /etc/portage/profile/use.mask, not /etc/portage/use.mask:
Quote:
/etc/portage/use.mask:-abi_x86_32


Also, FYI: In 'ABI_X86="(64) (-32) (-x32)"', the parentheses around each of the words (especially the "-32") mean it is masked (not modifiable), and the "-" means it is disabled.
Back to top
View user's profile Send private message
pinion
n00b
n00b


Joined: 11 Feb 2006
Posts: 35

PostPosted: Thu Mar 06, 2014 6:54 am    Post subject: Reply with quote

Thanks.. that was it. I had the use.mask file in the wrong location.
Back to top
View user's profile Send private message
pinion
n00b
n00b


Joined: 11 Feb 2006
Posts: 35

PostPosted: Thu Mar 06, 2014 7:01 pm    Post subject: Reply with quote

Here is where I am currently at; not sure how to remove those hard blocks in this case. If I add emul-linux-x86* abi_x86_32 to package.use, it removes 41 hard blocks, but I'm not sure if that's the best way to go. My thought was to emerge those packages with abi_x86_32 in order to more easily replace them with the new packages since it will not let me just unemerge them.

Currently:
http://pastebin.com/RQjET16C

With emul-linux-x86* abi_x86_32:
http://pastebin.com/LBka2ztq

Thanks
Back to top
View user's profile Send private message
mmogilvi
n00b
n00b


Joined: 13 May 2011
Posts: 47

PostPosted: Fri Mar 07, 2014 5:31 am    Post subject: Reply with quote

General Notes:

My going-in goal was to uninstall all emul-linux-x86* packages completely. If you have anything that still requires them when abi_x86_32 is enabled (they lack alternative dependency options that use individual packages with abi_x86_32), your options include:

  • Uninstall whatever it is, if you can do without it.
  • Use package.keyword to upgrade to an unstable version that doesn't require emul-linux-x86*. (Possible if you can find a version that can use individual packages with abi_x86_32 instead of emul-linux, using "alternative option" dependencies.)
  • Disable use flags for that package, if the dependency is conditional on particular flags. I used this option for stuff I'm using, via the flags in Step 1.
  • Go ahead and pull in emul-linux-x86 after all. If you go with this option, then you are outside the scope of what I've tried myself. However, some tips for installing emul-linux with abi_x86_32 enabled:

    • You need to enable abi_x86_32 basically everywhere: At least in emul-linux-x86 packages, and in ALL individual packages they depend on.
    • Note that emul-linux-x86 packages can basically be installed two ways: Either everything WITHOUT abi_x86_32, or everything WITH abi_x86_32. Mixing and matching abi_x86_32 settings isn't allowed by emul-linux-x86 dependency rules and build scripts.
    • I think the list of packages that need to be put into packages.keywords (Step 4) is much larger when installing emul-linux-x86 with abi_x86_32 enabled, because emul-linux-x86 itself depends on them (even though they aren't needed much) and abi_x86_32 aware versions haven't been stabilized.
    • I was rather careful building the list in Step 4: Instead of using the latest version that emerge recommended, I usually looked at the availabe .ebuild files and found the smallest upgrade from stable that supported abi_x86_32.

On my machine, I think I uninstalled some of the emul-linu-x86 packages manually before my big update, while some of the others were automatically unstalled by the big update.

Specific Ideas:

Make sure you've masked out the emul-linux packages (Step 5).

Try "grep emul-linux /var/lib/portage/world". If found, remove them from the world set with "emerge --deselect emul-linux-WHATEVER", and/or completely uninstall them with "emerge -Cva emul-linux-WHATEVER". (Note: Uninstalling them will likely break 32-bit programs until you get the big update working, or until you reinstall them, which might require commenting out a lot of configuration file changes...)

Find out what packages may depend on them using "equery d emul-linux-x86-baselibs" or similar for the other emul-linux packages. On my machine, it only lists wine-1.6.2, grub-0.97-r12, adobe-flash-11.2.202.341, and libSM-1.2.2. It also seems to try to indicate the conditions when each of those actually depend on emul-linux-x86-baselibs, but it looks like it oversimplified the dependencies to the point of uselessness.

I often find it useful to look at actual .ebuild files to really understand what their dependencies are.
Back to top
View user's profile Send private message
pinion
n00b
n00b


Joined: 11 Feb 2006
Posts: 35

PostPosted: Fri Mar 07, 2014 3:30 pm    Post subject: Reply with quote

Thanks for the help.

I identified about 4 programs that required emul-linux-x86* libs explicitly, and 4 more that had an or condition for them that I removed anyway to get rid of the hard blocks. Right now, I have half the emul-linux-x86* libs removed, and am doing an update to remove the rest.. I hope :)

So.. I know it might be messy, but for the time being I can create an overlay that pulls in the individual libraries for the programs I need that require emul-linux-x86 stuff, right? For instance, net-misc/teamviewer has:

Code:
                amd64? (
                        app-emulation/emul-linux-x86-baselibs
                        app-emulation/emul-linux-x86-soundlibs
                        || (
                                (
                                        x11-libs/libSM[abi_x86_32]
                                        x11-libs/libX11[abi_x86_32]
                                        x11-libs/libXau[abi_x86_32]
                                        x11-libs/libXdamage[abi_x86_32]
                                        x11-libs/libXext[abi_x86_32]
                                        x11-libs/libXfixes[abi_x86_32]
                                        x11-libs/libXtst[abi_x86_32]
                                )
                                app-emulation/emul-linux-x86-xlibs
                        )
                )


So, couldn't I create an overlay with an ebuild that calls out the individual packages app-emulation/emul-linux-x86-baselibs and app-emulation/emul-linux-x86-xlibs provide?

If I need to, I can put some of these programs in a Windows VM, but I really don't like any dependencies on Windows :)
Back to top
View user's profile Send private message
steveL
Watchman
Watchman


Joined: 13 Sep 2006
Posts: 5153
Location: The Peanut Gallery

PostPosted: Fri Mar 07, 2014 5:36 pm    Post subject: Reply with quote

pinion wrote:
So, couldn't I create an overlay with an ebuild that calls out the individual packages app-emulation/emul-linux-x86-baselibs and app-emulation/emul-linux-x86-xlibs provide?

If it works, then for sure. I really like the approach above, and would ask that you file a bug with a patch for that package; more broadly you can then start a discussion about using the same approach for other packages, and provide the url for your overlay (if you have it available over the net) or further patches. I can't see anyone complaining given that you've done the work.

Give us the bug url when you have (Bug button), so we can see how things progress.
Back to top
View user's profile Send private message
megaflow
n00b
n00b


Joined: 11 Mar 2005
Posts: 60
Location: Maasmechelen

PostPosted: Fri Mar 07, 2014 5:54 pm    Post subject: skype Reply with quote

what about qt apps like skype.
Quote:
emerge: there are no ebuilds to satisfy "dev-qt/qtdbus:4[abi_x86_32(-)]"

even dev-qt/qtcore have no abi-x86-amd64 support
_________________
----------------------------
Dell System XPS L702X/0XN71K,Intel(R) Core(TM) i7-2720QM
Back to top
View user's profile Send private message
mmogilvi
n00b
n00b


Joined: 13 May 2011
Posts: 47

PostPosted: Sat Mar 08, 2014 12:02 am    Post subject: Reply with quote

@megaflow: According to https://wiki.gentoo.org/wiki/Multilib_porting_status (or manual inspection of ebuilds), there hasn't been any progress in adding native support for abi_x86_32 to Qt. I'm sure new ebuilds contributed to bugzilla would be appreciated, though.

@pinion: Any help you want to provide would be appreciated. However, I suspect you may be slightly misinterpreting those dependencies. The "||" applies to the two parts inside the following parentheses, either the list of x11-libs packages OR the emul-linux-x86-xlibs. Which means that emul-linux-x86-xlibs should already be taken care of, and any improvements need to focus on baselibs and soundlibs.

It is possible that the dependencies are out of date, and you could simply discover and add some OR dependencies for baselibs and soundlibs, and it would just work without any more substantive changes. If you have an executable, "ldd" can tell you what shared libraries it is trying to load. Or start with the x86 section as a guide...

Also, that whole section appears to be conditional on the system-wine use flag being disabled. Perhaps you could just enable "system-wine" instead?

Regarding a VM, you could always run a 32 bit gentoo in a VM instead of windows. Or you don't even need a VM: You could do it with a 32-bit chroot, as described here: https://www.gentoo.org/proj/en/base/amd64/howtos/chroot.xml
Back to top
View user's profile Send private message
pinion
n00b
n00b


Joined: 11 Feb 2006
Posts: 35

PostPosted: Sat Mar 08, 2014 4:33 am    Post subject: Reply with quote

I thought I may have misinterpreted the OR statement.. thanks for clarifying that.

I like the 32bit chroot idea.. I think that may the road I want to go to get some of these programs running in the meantime.

I have used overlays a ton, and maintained simple ones.. so once I refresh my knowledge on setting it up, I will post a link to it.

Thanks!
Back to top
View user's profile Send private message
XQZS
n00b
n00b


Joined: 20 Oct 2013
Posts: 56

PostPosted: Wed May 28, 2014 8:13 am    Post subject: Reply with quote

Some questions:
1. Why use wine-1.6.2? In this thread, you say wine-1.6.1 depends on lcms:0, but why not use wine-1.7 or other latest ~amd64 version?
2. grub:2 have no "ncurses" USE flag, so why not use grub2?
3. If my system is stable now, just no ~amd64 packages in it, then I want to install wine, could I just emerge ~amd64 packages as new slots, preserve and not update the stable version?
Back to top
View user's profile Send private message
mmogilvi
n00b
n00b


Joined: 13 May 2011
Posts: 47

PostPosted: Thu May 29, 2014 2:50 am    Post subject: Reply with quote

Some Answers:

1. It should work with any version of wine larger than 1.6.1. But with these instructions I try to stay as close to the stabilized version as I can, for both wine and other packages. And with the way the package.keywords entries are done, as soon as a newer version is stabilized, the new version will be installed instead, and the old version entry will essentially be ignored.

2. grub2 didn't exist when I first setup many of my machines, and the upgrade isn't trivial (new config file format, etc). I intend to use grub2 on new machines (I've already experimented with it some on a USB drive), but don't want to mess with older ones. If you are already using grub2, you should continue using it. Also, having a stray grub:0 entry in your files won't touch grub:2.

3. The only one of the 6 packages that need ~amd64 that is slotted at all is lcms, and both the multilib (~amd64) version and the main stable (amd64) version install into SLOT=2, so they can't be installed at the same time. One or the other is probably also true of all of the other stable packages that need to be rebuilt with AMD_X86=32 enabled.


Alternative:

Although I haven't tried it recently, if you want a completely stable system, the simplest technique for now is probably to use the default configuration (NOT all the changes I describe in my various steps), run emerge wine, let it pick up emul-linux packages, etc, as I outline as the first of my "Other Possible Solutions" near the top. There have been various issues with this option this year (hence my instructions as a somewhat involved but hopefully future-proof alternative), but I think it is probably working currently. One thing to watch out for is enabling AMD_X86=32 for native packages that are also supplied by emul-linux; doing so can cause confusing conflict messages.
Back to top
View user's profile Send private message
SeeksTheMoon
Apprentice
Apprentice


Joined: 24 Sep 2003
Posts: 163

PostPosted: Fri Aug 01, 2014 6:02 pm    Post subject: Reply with quote

Great posting, OP!
I tried it out myself because my RadeonSI performance deeply sucked: mesa, drivers, kernel were bleeding edge, but emul-linux-opengl was so old that no games in wine worked at all.
Some years ago I compiled the mesa library and such in a 32bit chroot and replaced the emul libs with these but having a proper useflag is really elegant.
So I followed your example yesterday and had immediate success. The framerate went up from about 1fps-creepy-stuttering-cannot-even-leave-the-menu to really-playable-darn-good-looking-fast :-)

To give you all something back, I wrote this article:
https://wiki.gentoo.org/wiki/Multilib_System_without_emul-linux_Packages

Feel free to improve it.
Back to top
View user's profile Send private message
archenroot
Apprentice
Apprentice


Joined: 13 Dec 2011
Posts: 204
Location: Lake Macha, Czech republic

PostPosted: Sun Aug 03, 2014 11:36 pm    Post subject: Pure multilib finally arrived! :-) Reply with quote

This is great new. I tried already this once upon a time without success:-) ... I jumped today in my KDE dekstop system and was able to recompile everything with abi 32 use flag. The one remaining stuff is only proprietary nvidia-drivers...

Superior job Gentoo devs. Thank you.
_________________
Emperor wants to control outer space Yoda wants to explore inner space that's the fundamental difference between good and bad sides of the Force
Back to top
View user's profile Send private message
thumper
Guru
Guru


Joined: 06 Dec 2002
Posts: 533
Location: Venice FL

PostPosted: Tue Nov 11, 2014 9:58 pm    Post subject: Reply with quote

There are several references in this thread to AMD_X86.

Is that actually AMD_X86 or were they meant to be ABI_X86?

George
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