NP-Hardass / wine-a-holics

An overlay filled with lots of goodies for those who are hooked on WINE
2 stars 5 forks source link

app-emulation/wine: Install shared libraries to $(get_libdir). #2

Closed leycec closed 9 years ago

leycec commented 9 years ago

This pull request installs Wine shared libraries to multilib- and Gentoo Prefix-aware directories, fixing issue #1. Specifically, absolute paths defined by pkg_setup() are:

For simplicity, these changes apply only to the 1.7.40 ebuild. While they could be manually backported to the other Wine ebuilds, I'd recommend a different tact. To avoid these sorts of DRY issues in the future, consider a new wine.eclass defining at least the following common phase functions: pkg_pretend(), pkg_setup(), src_configure(), multilib_src_test(), pkg_preinst(), pkg_postinst(), and pkg_postrm(). Those appear to be reduplicated in entirety between the various Wine ebuilds, and could probably benefit from refactoring out.

Thanks for the Sisyphean amount of hard work here, NP-Hardass and eroen. It'd be awesome to see your efforts eventually wind up in Portage. But even if that never happens (...and let's be honest, this is Gentoo), you've both done a legendary job.

Your names shall be preserved into antiquity.

leycec commented 9 years ago

I should note that, after applying these changes, I still receive an (apparently) non-fatal installation error:

--- /usr/bin/
>>> /usr/bin/wmc-1.7.40
>>> /usr/bin/notepad-1.7.40
>>> /usr/bin/winecpp-1.7.40
>>> /usr/bin/regsvr32-1.7.40
>>> /usr/bin/winedbg-1.7.40
>>> /usr/bin/msiexec-1.7.40
>>> /usr/bin/wine-preloader-1.7.40
>>> /usr/bin/winegcc-1.7.40
>>> /usr/bin/regedit-1.7.40
>>> /usr/bin/function_grep.pl-1.7.40
>>> /usr/bin/wineconsole-1.7.40
>>> /usr/bin/wineboot-1.7.40
>>> /usr/bin/winedump-1.7.40
>>> /usr/bin/winemine-1.7.40
>>> /usr/bin/winebuild-1.7.40
>>> /usr/bin/wine64-1.7.40
>>> /usr/bin/wine64-preloader-1.7.40
>>> /usr/bin/wine-1.7.40
>>> /usr/bin/wrc-1.7.40
>>> /usr/bin/wineserver-1.7.40
>>> /usr/bin/winepath-1.7.40
>>> /usr/bin/winemaker-1.7.40
>>> /usr/bin/winecfg-1.7.40
>>> /usr/bin/winefile-1.7.40
>>> /usr/bin/wineg++-1.7.40
>>> /usr/bin/widl-1.7.40
>>> /usr/lib64/wine-1.7.40/lib32/libwine.so.1 -> libwine.so.1.0
>>> /usr/lib64/wine-1.7.40/lib64/libwine.so.1 -> libwine.so.1.0
>>> /usr/lib64/wine-1.7.40/man/man1/winecpp.1 -> winegcc.1
Current wine is not valid, will update to newest
Updating desktop mime database ...
Updating desktop mime database ...
Current wine-staging is not valid, will update to newest
/usr/share/eselect/modules/wine.eselect: line 187: targets: bad array subscript
!!! Error: Target "" doesn't appear to be valid!
Call stack:
    * set_variant_symlinks (wine.eselect:191)
    * do_set (wine.eselect:381)
    * do_update (wine.eselect:447)
    * do_update (wine.eselect:412)
    * check_do (core.bash:24)
    * do_action (core.bash:105)
    * main (eselect:179)
exiting
 * Updating desktop mime database ...
>>> app-emulation/wine-1.7.40 merged.
>>> Regenerating /etc/ld.so.cache...

>>> Recording app-emulation/wine in "world" favorites file...

Despite that, running eselect wine list after installation suggests that wine.eselect properly activated the recently installed version of Wine:

Available wine versions:
  [1]   wine-1.7.40 *

In other words, app-admin/eselect-wine is non-fatally bugged. Also, that package should probably be moved to app-eselect/eselect-wine (in light of recent Portage refactorings). :hurtrealbad:

leycec commented 9 years ago

Possibly you meant to put EPREFIX in stead of EROOT?

Good catch. I'd happily fix this, but... see below.

If so, it would be nice if you explicitly say whether it has been tested on a Gentoo/Prefix system. :-)

I absolutely didn't! Take that, reliability.

Given that the current Wine ebuilds are broken with respect to Gentoo Prefix anyway, I presumed untested changes not breaking anything else to be better than nothing. ¯_(ツ)_/¯

Additionally, modifying MY_PREFIX requires at least modifying eselect-wine at the same time,

Tragically, you're right. It's a trivial change. Unfortunately, modifying eselect-wine in that way requires modifying every other Wine ebuild as well. I was rather hoping to avoid that. Since (A) I obviously can't, (B) I don't have time to pursue this to its logical conclusion, and (C) I'm unsure how you'd even like this to be pursued (e.g., by adding a new wine.eclass or by duplicating this changeset across every Wine ebuild), I'm dutifully closing this.

That said, these ebuilds remain broken with respect to both multilib-strict and Gentoo Prefix. Something should be done, but I'm clearly not the doe-eyed volunteer for that job. Best of bug-hunting luck. And thanks for all the tireless work.