]> git.draconx.ca Git - gentoo-fixes.git/blob - app-emulation/wine-vanilla/wine-vanilla-4.0.4-r2.ebuild
app-emulation/wine-vanilla-4.0.4: Adapt mpg123 dependency.
[gentoo-fixes.git] / app-emulation / wine-vanilla / wine-vanilla-4.0.4-r2.ebuild
1 # This ebuild is a modified version of the work originally distributed with
2 # Gentoo GNU/Linux, covered by the following copyright and permission notice:
3 #
4 #   Copyright 1999-2021 Gentoo Authors
5 #   Distributed under the terms of the GNU General Public License v2
6 #
7 # The modifications are:
8 #
9 #   * Apply patch to build successfully with Autoconf 2.71 (2021-11)
10 #   * Build with -fcommon to get compatible behaviour from GCC 10 (2022-04)
11 #   * Port to EAPI 8 for compatibility with current eclasses (2022-12)
12 #   * Update media-sound/mpg123 -> media-sound/mpg123-base (2024-02)
13
14 EAPI=8
15
16 PLOCALES="ar bg ca cs da de el en en_US eo es fa fi fr he hi hr hu it ja ko lt ml nb_NO nl or pa pl pt_BR pt_PT rm ro ru si sk sl sr_RS@cyrillic sr_RS@latin sv ta te th tr uk wa zh_CN zh_TW"
17 PLOCALE_BACKUP="en"
18
19 inherit autotools estack flag-o-matic multilib multilib-minimal pax-utils plocale toolchain-funcs virtualx wrapper xdg-utils
20
21 MY_PN="${PN%%-*}"
22 MY_P="${MY_PN}-${PV}"
23
24 if [[ ${PV} == "9999" ]] ; then
25         EGIT_REPO_URI="https://source.winehq.org/git/wine.git"
26         EGIT_BRANCH="master"
27         inherit git-r3
28         SRC_URI=""
29         #KEYWORDS=""
30 else
31         MAJOR_V=$(ver_cut 1)
32         MINOR_V=$(ver_cut 2)
33         SRC_URI="https://dl.winehq.org/wine/source/${MAJOR_V}.${MINOR_V}/${MY_P}.tar.xz"
34         KEYWORDS="-* ~amd64 ~x86"
35 fi
36 S="${WORKDIR}/${MY_P}"
37
38 GWP_V="20180120"
39 PATCHDIR="${WORKDIR}/gentoo-wine-patches"
40
41 DESCRIPTION="Free implementation of Windows(tm) on Unix, without external patchsets"
42 HOMEPAGE="https://www.winehq.org/"
43 SRC_URI="${SRC_URI}
44         https://dev.gentoo.org/~np-hardass/distfiles/wine/gentoo-wine-patches-${GWP_V}.tar.xz
45 "
46
47 LICENSE="LGPL-2.1"
48 SLOT="${PV}"
49 IUSE="+abi_x86_32 +abi_x86_64 +alsa capi cups custom-cflags dos elibc_glibc +fontconfig +gecko gphoto2 gsm gssapi gstreamer +jpeg kerberos kernel_FreeBSD +lcms ldap +mono mp3 ncurses netapi nls odbc openal opencl +opengl osmesa oss +perl pcap +png prelink pulseaudio +realtime +run-exes samba scanner sdl selinux +ssl test +threads +truetype udev +udisks v4l vkd3d vulkan +X +xcomposite xinerama +xml"
50 REQUIRED_USE="|| ( abi_x86_32 abi_x86_64 )
51         X? ( truetype )
52         elibc_glibc? ( threads )
53         osmesa? ( opengl )
54         test? ( abi_x86_32 )
55         vkd3d? ( vulkan )" # osmesa-opengl #286560 # X-truetype #551124
56
57 # FIXME: the test suite is unsuitable for us; many tests require net access
58 # or fail due to Xvfb's opengl limitations.
59 RESTRICT="test"
60
61 BDEPEND="virtual/pkgconfig
62         sys-devel/bison
63         sys-devel/flex"
64
65 COMMON_DEPEND="
66         X? (
67                 x11-libs/libXcursor[${MULTILIB_USEDEP}]
68                 x11-libs/libXext[${MULTILIB_USEDEP}]
69                 x11-libs/libXfixes[${MULTILIB_USEDEP}]
70                 x11-libs/libXrandr[${MULTILIB_USEDEP}]
71                 x11-libs/libXi[${MULTILIB_USEDEP}]
72                 x11-libs/libXxf86vm[${MULTILIB_USEDEP}]
73         )
74         alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
75         capi? ( net-libs/libcapi[${MULTILIB_USEDEP}] )
76         cups? ( net-print/cups:=[${MULTILIB_USEDEP}] )
77         fontconfig? ( media-libs/fontconfig:=[${MULTILIB_USEDEP}] )
78         gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] )
79         gsm? ( media-sound/gsm:=[${MULTILIB_USEDEP}] )
80         gssapi? ( virtual/krb5[${MULTILIB_USEDEP}] )
81         gstreamer? (
82                 media-libs/gstreamer:1.0[${MULTILIB_USEDEP}]
83                 media-plugins/gst-plugins-meta:1.0[${MULTILIB_USEDEP}]
84         )
85         jpeg? ( virtual/jpeg:0=[${MULTILIB_USEDEP}] )
86         kerberos? ( virtual/krb5[${MULTILIB_USEDEP}] )
87         lcms? ( media-libs/lcms:2=[${MULTILIB_USEDEP}] )
88         ldap? ( net-nds/openldap:=[${MULTILIB_USEDEP}] )
89         mp3? (
90                 || (
91                         >=media-sound/mpg123-base-1.5.0[${MULTILIB_USEDEP}]
92                         >=media-sound/mpg123-1.5.0[${MULTILIB_USEDEP}]
93                 )
94         )
95         ncurses? ( >=sys-libs/ncurses-5.2:0=[${MULTILIB_USEDEP}] )
96         netapi? ( net-fs/samba[netapi(+),${MULTILIB_USEDEP}] )
97         nls? ( sys-devel/gettext[${MULTILIB_USEDEP}] )
98         odbc? ( dev-db/unixODBC:=[${MULTILIB_USEDEP}] )
99         openal? ( media-libs/openal:=[${MULTILIB_USEDEP}] )
100         opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
101         opengl? (
102                 virtual/glu[${MULTILIB_USEDEP}]
103                 virtual/opengl[${MULTILIB_USEDEP}]
104         )
105         osmesa? ( >=media-libs/mesa-13[osmesa,${MULTILIB_USEDEP}] )
106         pcap? ( net-libs/libpcap[${MULTILIB_USEDEP}] )
107         png? ( media-libs/libpng:0=[${MULTILIB_USEDEP}] )
108         pulseaudio? ( media-sound/pulseaudio[${MULTILIB_USEDEP}] )
109         scanner? ( media-gfx/sane-backends:=[${MULTILIB_USEDEP}] )
110         sdl? ( media-libs/libsdl2:=[haptic,joystick,${MULTILIB_USEDEP}] )
111         ssl? ( net-libs/gnutls:=[${MULTILIB_USEDEP}] )
112         truetype? ( >=media-libs/freetype-2.0.0[${MULTILIB_USEDEP}] )
113         udev? ( virtual/libudev:=[${MULTILIB_USEDEP}] )
114         udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] )
115         v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
116         vkd3d? ( app-emulation/vkd3d[${MULTILIB_USEDEP}] )
117         vulkan? ( media-libs/vulkan-loader[${MULTILIB_USEDEP}] )
118         xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] )
119         xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] )
120         xml? (
121                 dev-libs/libxml2[${MULTILIB_USEDEP}]
122                 dev-libs/libxslt[${MULTILIB_USEDEP}]
123         )"
124
125 RDEPEND="${COMMON_DEPEND}
126         app-emulation/wine-desktop-common
127         >app-eselect/eselect-wine-0.3
128         !app-emulation/wine:0
129         dos? ( >=games-emulation/dosbox-0.74_p20160629 )
130         gecko? ( app-emulation/wine-gecko:2.47[abi_x86_32?,abi_x86_64?] )
131         mono? ( app-emulation/wine-mono:4.7.5 )
132         perl? (
133                 dev-lang/perl
134                 dev-perl/XML-Simple
135         )
136         pulseaudio? (
137                 realtime? ( sys-auth/rtkit )
138         )
139         samba? ( >=net-fs/samba-3.0.25[winbind] )
140         selinux? ( sec-policy/selinux-wine )
141         udisks? ( sys-fs/udisks:2 )"
142
143 # tools/make_requests requires perl
144 DEPEND="${COMMON_DEPEND}
145         >=sys-kernel/linux-headers-2.6
146         X? ( x11-base/xorg-proto )
147         prelink? ( sys-devel/prelink )
148         xinerama? ( x11-base/xorg-proto )"
149
150 # These use a non-standard "Wine" category, which is provided by
151 # /etc/xdg/applications-merged/wine.menu
152 QA_DESKTOP_FILE="usr/share/applications/wine-browsedrive.desktop
153 usr/share/applications/wine-notepad.desktop
154 usr/share/applications/wine-uninstaller.desktop
155 usr/share/applications/wine-winecfg.desktop"
156
157 PATCHES=(
158         "$FILESDIR/$PV-configure-fixes.patch"
159         "${PATCHDIR}/patches/${MY_PN}-1.5.26-winegcc.patch" #260726
160         "${PATCHDIR}/patches/${MY_PN}-1.9.5-multilib-portage.patch" #395615
161         "${PATCHDIR}/patches/${MY_PN}-1.6-memset-O3.patch" #480508
162         "${PATCHDIR}/patches/${MY_PN}-2.0-multislot-apploader.patch" #310611
163 )
164 PATCHES_BIN=()
165
166 # https://bugs.gentoo.org/show_bug.cgi?id=635222
167 if [[ ${#PATCHES_BIN[@]} -ge 1 ]] || [[ ${PV} == 9999 ]]; then
168         DEPEND+=" dev-util/patchbin"
169 fi
170
171 wine_compiler_check() {
172         [[ ${MERGE_TYPE} = "binary" ]] && return 0
173
174         # GCC-specific bugs
175         if tc-is-gcc; then
176                 # bug #549768
177                 if use abi_x86_64 && [[ $(gcc-major-version) = 5 && $(gcc-minor-version) -le 2 ]]; then
178                         ebegin "Checking for gcc-5 ms_abi compiler bug"
179                         $(tc-getCC) -O2 "${PATCHDIR}/files/pr66838.c" -o "${T}"/pr66838 || die
180                         # Run in subshell to prevent "Aborted" message
181                         ( "${T}"/pr66838 || false ) >/dev/null 2>&1
182                         if ! eend $?; then
183                                 eerror "64-bit wine cannot be built with gcc-5.1 or initial patchset of 5.2.0"
184                                 eerror "due to compiler bugs; please re-emerge the latest gcc-5.2.x ebuild,"
185                                 eerror "or use gcc-config to select a different compiler version."
186                                 eerror "See https://bugs.gentoo.org/549768"
187                                 eerror
188                                 return 1
189                         fi
190                 fi
191                 # bug #574044
192                 if use abi_x86_64 && [[ $(gcc-major-version) = 5 && $(gcc-minor-version) = 3 ]]; then
193                         ebegin "Checking for gcc-5-3 stack realignment compiler bug"
194                         # Compile in subshell to prevent "Aborted" message
195                         ( $(tc-getCC) -O2 -mincoming-stack-boundary=3 "${PATCHDIR}/files/pr69140.c" -o "${T}"/pr69140 ) >/dev/null 2>&1
196                         if ! eend $?; then
197                                 eerror "Wine cannot be built with this version of gcc-5.3"
198                                 eerror "due to compiler bugs; please re-emerge the latest gcc-5.3.x ebuild,"
199                                 eerror "or use gcc-config to select a different compiler version."
200                                 eerror "See https://bugs.gentoo.org/574044"
201                                 eerror
202                                 return 1
203                         fi
204                 fi
205         fi
206
207         # Ensure compiler support
208         if use abi_x86_64; then
209                 ebegin "Checking for 64-bit compiler with builtin_ms_va_list support"
210                 # Compile in subshell to prevent "Aborted" message
211                 ( $(tc-getCC) -O2 "${PATCHDIR}/files/builtin_ms_va_list.c" -o "${T}"/builtin_ms_va_list >/dev/null 2>&1)
212                 if ! eend $?; then
213                         eerror "This version of $(tc-getCC) does not support builtin_ms_va_list, can't enable 64-bit wine"
214                         eerror
215                         eerror "You need gcc-4.4+ or clang 3.8+ to build 64-bit wine"
216                         eerror
217                         return 1
218                 fi
219         fi
220 }
221
222 wine_build_environment_check() {
223         [[ ${MERGE_TYPE} = "binary" ]] && return 0
224
225         if use abi_x86_64; then
226                 if tc-is-gcc && [[ $(gcc-major-version) -lt 4 || ( $(gcc-major-version) -eq 4 && $(gcc-minor-version) -lt 4 ) ]]; then
227                         eerror "You need gcc-4.4+ to compile 64-bit wine"
228                         die
229                 elif tc-is-clang && [[ $(clang-major-version) -lt 3 || ( $(clang-major-version) -eq 3 && $(clang-minor-version) -lt 8 ) ]]; then
230                         eerror "You need clang-3.8+ to compile 64-bit wine"
231                         die
232                 fi
233         fi
234         if tc-is-gcc && [[ $(gcc-major-version) -eq 5 && $(gcc-minor-version) -le 3 ]]; then
235                 ewarn "GCC-5.0-5.3 suffered from compiler bugs and are no longer supported by"
236                 ewarn "Gentoo's Toolchain Team. If your ebuild fails the compiler checks in"
237                 ewarn "the configure phase, either update your compiler or switch to <5.0 || >=5.4"
238         fi
239         if tc-is-gcc && [[ $(gcc-major-version) -eq 5 && $(gcc-minor-version) -eq 4 ]]; then
240                 if has "-march=i686" ${CFLAGS} && ! has "-mtune=generic" ${CFLAGS}; then
241                         ewarn "Compilation can hang with CFLAGS=\"-march=i686\".  You can temporarily work"
242                         ewarn "around this by adding \"-mtune=generic\" to your CFLAGS for wine."
243                         ewarn "See package.env in man 5 portage for more information on how to do this."
244                         ewarn "See https://bugs.gentoo.org/show_bug.cgi?id=613128 for more details"
245                 fi
246         fi
247
248         if use abi_x86_32 && use opencl && [[ "$(eselect opencl show 2> /dev/null)" == "intel" ]]; then
249                 eerror "You cannot build wine with USE=opencl because intel-ocl-sdk is 64-bit only."
250                 eerror "See https://bugs.gentoo.org/487864 for more details."
251                 eerror
252                 return 1
253         fi
254 }
255
256 wine_env_vcs_vars() {
257         local pn_live_var="${PN//[-+]/_}_LIVE_COMMIT"
258         local pn_live_val="${pn_live_var}"
259         eval pn_live_val='$'${pn_live_val}
260         if [[ ! -z ${EGIT_COMMIT} ]]; then
261                 eerror "Commits must now be specified using the environmental variables"
262                 eerror "EGIT_OVERRIDE_COMMIT_WINE"
263                 eerror
264                 return 1
265         fi
266 }
267
268 pkg_pretend() {
269         wine_build_environment_check || die
270
271         # Verify OSS support
272         if use oss && ! use kernel_FreeBSD; then
273                 if ! has_version ">=media-sound/oss-4"; then
274                         eerror "You cannot build wine with USE=oss without having support from a"
275                         eerror "FreeBSD kernel or >=media-sound/oss-4 (only available through external repos)"
276                         eerror
277                         die
278                 fi
279         fi
280 }
281
282 pkg_setup() {
283         wine_build_environment_check || die
284         wine_env_vcs_vars || die
285
286         WINE_VARIANT="${PN#wine}-${PV}"
287         WINE_VARIANT="${WINE_VARIANT#-}"
288
289         MY_PREFIX="${EPREFIX}/usr/lib/wine-${WINE_VARIANT}"
290         MY_DATAROOTDIR="${EPREFIX}/usr/share/wine-${WINE_VARIANT}"
291         MY_DATADIR="${MY_DATAROOTDIR}"
292         MY_DOCDIR="${EPREFIX}/usr/share/doc/${PF}"
293         MY_INCLUDEDIR="${EPREFIX}/usr/include/wine-${WINE_VARIANT}"
294         MY_LIBEXECDIR="${EPREFIX}/usr/libexec/wine-${WINE_VARIANT}"
295         MY_LOCALSTATEDIR="${EPREFIX}/var/wine-${WINE_VARIANT}"
296         MY_MANDIR="${MY_DATADIR}/man"
297 }
298
299 src_unpack() {
300         if [[ ${PV} == "9999" ]] ; then
301                 EGIT_CHECKOUT_DIR="${S}" git-r3_src_unpack
302         fi
303
304         default
305
306         plocale_find_changes "${S}/po" "" ".po"
307 }
308
309 src_prepare() {
310
311         eapply_bin(){
312                 local patch
313                 for patch in ${PATCHES_BIN[@]}; do
314                         patchbin --nogit < "${patch}" || die
315                 done
316         }
317
318         local md5="$(md5sum server/protocol.def)"
319
320         default
321         eapply_bin
322         eautoreconf
323
324         # Modification of the server protocol requires regenerating the server requests
325         if [[ "$(md5sum server/protocol.def)" != "${md5}" ]]; then
326                 einfo "server/protocol.def was patched; running tools/make_requests"
327                 tools/make_requests || die #432348
328         fi
329         sed -i '/^UPDATE_DESKTOP_DATABASE/s:=.*:=true:' tools/Makefile.in || die
330         if ! use run-exes; then
331                 sed -i '/^MimeType/d' loader/wine.desktop || die #117785
332         fi
333
334         # Edit wine.desktop to work for specific variant
335         sed -e "/^Exec=/s/wine /wine-${WINE_VARIANT} /" -i loader/wine.desktop || die
336
337         # hi-res default icon, #472990, https://bugs.winehq.org/show_bug.cgi?id=24652
338         cp "${PATCHDIR}/files/oic_winlogo.ico" dlls/user32/resources/ || die
339
340         plocale_get_locales > po/LINGUAS || die # otherwise wine doesn't respect LINGUAS
341
342         # Fix manpage generation for locales #469418 and abi_x86_64 #617864
343
344         # Duplicate manpages input files for wine64
345         local f
346         for f in loader/*.man.in; do
347                 cp ${f} ${f/wine/wine64} || die
348         done
349         # Add wine64 manpages to Makefile
350         if use abi_x86_64; then
351                 sed -i "/wine.man.in/i \
352                         \\\twine64.man.in \\\\" loader/Makefile.in || die
353                 sed -i -E 's/(.*wine)(.*\.UTF-8\.man\.in.*)/&\
354 \164\2/' loader/Makefile.in || die
355         fi
356
357         rm_man_file(){
358                 local file="${1}"
359                 loc=${2}
360                 sed -i "/${loc}\.UTF-8\.man\.in/d" "${file}" || die
361         }
362
363         while read f; do
364                 plocale_for_each_disabled_locale rm_man_file "${f}"
365         done < <(find -name "Makefile.in" -exec grep -q "UTF-8.man.in" "{}" \; -print)
366 }
367
368 src_configure() {
369         wine_compiler_check || die
370
371         export LDCONFIG=/bin/true
372         use custom-cflags || strip-flags
373         append-flags -fcommon
374
375         multilib-minimal_src_configure
376 }
377
378 multilib_src_configure() {
379         local myconf=(
380                 --prefix="${MY_PREFIX}"
381                 --datarootdir="${MY_DATAROOTDIR}"
382                 --datadir="${MY_DATADIR}"
383                 --docdir="${MY_DOCDIR}"
384                 --includedir="${MY_INCLUDEDIR}"
385                 --libdir="${EPREFIX}/usr/$(get_libdir)/wine-${WINE_VARIANT}"
386                 --libexecdir="${MY_LIBEXECDIR}"
387                 --localstatedir="${MY_LOCALSTATEDIR}"
388                 --mandir="${MY_MANDIR}"
389                 --sysconfdir=/etc/wine
390                 $(use_with alsa)
391                 $(use_with capi)
392                 $(use_with lcms cms)
393                 $(use_with cups)
394                 $(use_with ncurses curses)
395                 $(use_with udisks dbus)
396                 $(use_with fontconfig)
397                 $(use_with ssl gnutls)
398                 $(use_enable gecko mshtml)
399                 $(use_with gphoto2 gphoto)
400                 $(use_with gsm)
401                 $(use_with gssapi)
402                 $(use_with gstreamer)
403                 --without-hal
404                 $(use_with jpeg)
405                 $(use_with kerberos krb5)
406                 $(use_with ldap)
407                 $(use_enable mono mscoree)
408                 $(use_with mp3 mpg123)
409                 $(use_with netapi)
410                 $(use_with nls gettext)
411                 $(use_with openal)
412                 $(use_with opencl)
413                 $(use_with opengl)
414                 $(use_with osmesa)
415                 $(use_with oss)
416                 $(use_with pcap)
417                 $(use_with png)
418                 $(use_with pulseaudio pulse)
419                 $(use_with threads pthread)
420                 $(use_with scanner sane)
421                 $(use_with sdl)
422                 $(use_enable test tests)
423                 $(use_with truetype freetype)
424                 $(use_with udev)
425                 $(use_with v4l)
426                 $(use_with vkd3d)
427                 $(use_with vulkan)
428                 $(use_with X x)
429                 $(use_with X xfixes)
430                 $(use_with xcomposite)
431                 $(use_with xinerama)
432                 $(use_with xml)
433                 $(use_with xml xslt)
434         )
435
436         local PKG_CONFIG AR RANLIB
437         # Avoid crossdev's i686-pc-linux-gnu-pkg-config if building wine32 on amd64; #472038
438         # set AR and RANLIB to make QA scripts happy; #483342
439         tc-export PKG_CONFIG AR RANLIB
440
441         if use amd64; then
442                 if [[ ${ABI} == amd64 ]]; then
443                         myconf+=( --enable-win64 )
444                 else
445                         myconf+=( --disable-win64 )
446                 fi
447
448                 # Note: using --with-wine64 results in problems with multilib.eclass
449                 # CC/LD hackery. We're using separate tools instead.
450         fi
451
452         ECONF_SOURCE=${S} \
453         econf "${myconf[@]}"
454         emake depend
455 }
456
457 multilib_src_test() {
458         # FIXME: win32-only; wine64 tests fail with "could not find the Wine loader"
459         if [[ ${ABI} == x86 ]]; then
460                 if [[ $(id -u) == 0 ]]; then
461                         ewarn "Skipping tests since they cannot be run under the root user."
462                         ewarn "To run the test ${MY_PN} suite, add userpriv to FEATURES in make.conf"
463                         return
464                 fi
465
466                 WINEPREFIX="${T}/.wine-${ABI}" \
467                 Xemake test
468         fi
469 }
470
471 multilib_src_install_all() {
472         local DOCS=( ANNOUNCE AUTHORS README )
473         add_locale_docs() {
474                 local locale_doc="documentation/README.$1"
475                 [[ ! -e ${locale_doc} ]] || DOCS+=( ${locale_doc} )
476         }
477         plocale_for_each_locale add_locale_docs
478
479         einstalldocs
480         find "${ED}" -name *.la -delete || die
481
482         if ! use perl ; then # winedump calls function_grep.pl, and winemaker is a perl script
483                 rm "${D%/}${MY_PREFIX}"/bin/{wine{dump,maker},function_grep.pl} \
484                         "${D%/}${MY_MANDIR}"/man1/wine{dump,maker}.1 || die
485         fi
486
487         # Remove wineconsole if neither backend is installed #551124
488         if ! use X && ! use ncurses; then
489                 rm "${D%/}${MY_PREFIX}"/bin/wineconsole* || die
490                 rm "${D%/}${MY_MANDIR}"/man1/wineconsole* || die
491                 rm_wineconsole() {
492                         rm "${D%/}${MY_PREFIX}/$(get_libdir)"/wine/{,fakedlls/}wineconsole.exe* || die
493                 }
494                 multilib_foreach_abi rm_wineconsole
495         fi
496
497         use abi_x86_32 && pax-mark psmr "${D%/}${MY_PREFIX}"/bin/wine{,-preloader} #255055
498         use abi_x86_64 && pax-mark psmr "${D%/}${MY_PREFIX}"/bin/wine64{,-preloader}
499
500         if use abi_x86_64 && ! use abi_x86_32; then
501                 dosym wine64 "${MY_PREFIX}"/bin/wine # 404331
502                 dosym wine64-preloader "${MY_PREFIX}"/bin/wine-preloader
503         fi
504
505         # Failglob for binloops, shouldn't be necessary, but including to stay safe
506         eshopts_push -s failglob #615218
507         # Make wrappers for binaries for handling multiple variants
508         # Note: wrappers instead of symlinks because some are shell which use basename
509         local b
510         for b in "${D%/}${MY_PREFIX}"/bin/*; do
511                 make_wrapper "${b##*/}-${WINE_VARIANT}" "${MY_PREFIX}/bin/${b##*/}"
512         done
513         eshopts_pop
514 }
515
516 pkg_postinst() {
517         eselect wine register ${P}
518         if [[ ${PN} == "wine-vanilla" ]]; then
519                 eselect wine register --vanilla ${P} || die
520         fi
521
522         eselect wine update --all --if-unset || die
523
524         xdg_desktop_database_update
525
526         if ! use gecko; then
527                 ewarn "Without Wine Gecko, wine prefixes will not have a default"
528                 ewarn "implementation of iexplore.  Many older windows applications"
529                 ewarn "rely upon the existence of an iexplore implementation, so"
530                 ewarn "you will likely need to install an external one, like via winetricks"
531         fi
532         if ! use mono; then
533                 ewarn "Without Wine Mono, wine prefixes will not have a default"
534                 ewarn "implementation of .NET.  Many windows applications rely upon"
535                 ewarn "the existence of a .NET implementation, so you will likely need"
536                 ewarn "to install an external one, like via winetricks"
537         fi
538 }
539
540 pkg_prerm() {
541         eselect wine deregister ${P}
542         if [[ ${PN} == "wine-vanilla" ]]; then
543                 eselect wine deregister --vanilla ${P} || die
544         fi
545
546         eselect wine update --all --if-unset || die
547 }
548
549 pkg_postrm() {
550         xdg_desktop_database_update
551 }