/[gentoo-x86]/app-emulation/wine/wine-1.7.34.ebuild
Gentoo

Contents of /app-emulation/wine/wine-1.7.34.ebuild

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Sat Jul 11 07:54:37 2015 UTC (3 years, 9 months ago) by np-hardass
Branch: MAIN
CVS Tags: HEAD
Fixes bugs #548100, #539830, #543446, update to new multilib dependency code, and unify ebuild code/build system

(Portage version: 2.2.20/cvs/Linux x86_64, signed Manifest commit with key 18F89C67)

1 # Copyright 1999-2015 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: $
4
5 EAPI="5"
6
7 AUTOTOOLS_AUTORECONF=1
8 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 sk sl sr_RS@cyrillic sr_RS@latin sv te th tr uk wa zh_CN zh_TW"
9 PLOCALE_BACKUP="en"
10
11 inherit autotools-utils eutils fdo-mime flag-o-matic gnome2-utils l10n multilib multilib-minimal pax-utils toolchain-funcs virtualx
12
13 if [[ ${PV} == "9999" ]] ; then
14 EGIT_REPO_URI="git://source.winehq.org/git/wine.git http://source.winehq.org/git/wine.git"
15 EGIT_BRANCH="master"
16 inherit git-r3
17 SRC_URI=""
18 #KEYWORDS=""
19 else
20 MY_P="${PN}-${PV/_/-}"
21 SRC_URI="mirror://sourceforge/${PN}/Source/${MY_P}.tar.bz2"
22 KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd"
23 S=${WORKDIR}/${MY_P}
24 fi
25
26 GV="2.34"
27 MV="4.5.4"
28 STAGING_P="wine-staging-${PV}"
29 STAGING_DIR="${WORKDIR}/${STAGING_P}"
30 WINE_GENTOO="wine-gentoo-2015.03.07"
31 GST_P="wine-1.7.34-gstreamer-v5"
32 DESCRIPTION="Free implementation of Windows(tm) on Unix"
33 HOMEPAGE="http://www.winehq.org/"
34 SRC_URI="${SRC_URI}
35 gecko? (
36 abi_x86_32? ( mirror://sourceforge/${PN}/Wine%20Gecko/${GV}/wine_gecko-${GV}-x86.msi )
37 abi_x86_64? ( mirror://sourceforge/${PN}/Wine%20Gecko/${GV}/wine_gecko-${GV}-x86_64.msi )
38 )
39 mono? ( mirror://sourceforge/${PN}/Wine%20Mono/${MV}/wine-mono-${MV}.msi )
40 gstreamer? ( http://dev.gentoo.org/~tetromino/distfiles/${PN}/${GST_P}.patch.bz2 )
41 http://dev.gentoo.org/~tetromino/distfiles/${PN}/${WINE_GENTOO}.tar.bz2"
42
43 if [[ ${PV} == "9999" ]] ; then
44 STAGING_EGIT_REPO_URI="git://github.com/wine-compholio/wine-staging.git"
45 else
46 SRC_URI="${SRC_URI}
47 staging? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${STAGING_P}.tar.gz )
48 pulseaudio? ( https://github.com/wine-compholio/wine-staging/archive/v${PV}.tar.gz -> ${STAGING_P}.tar.gz )"
49 fi
50
51 LICENSE="LGPL-2.1"
52 SLOT="0"
53 IUSE="+abi_x86_32 +abi_x86_64 +alsa capi cups custom-cflags dos elibc_glibc +fontconfig +gecko gphoto2 gsm gstreamer +jpeg +lcms ldap +mono mp3 ncurses netapi nls odbc openal opencl +opengl osmesa oss +perl pcap pipelight +png +prelink pulseaudio +realtime +run-exes s3tc samba scanner selinux +ssl staging test +threads +truetype +udisks v4l +X +xcomposite xinerama +xml"
54 REQUIRED_USE="|| ( abi_x86_32 abi_x86_64 )
55 test? ( abi_x86_32 )
56 elibc_glibc? ( threads )
57 mono? ( abi_x86_32 )
58 pipelight? ( staging )
59 s3tc? ( staging )
60 osmesa? ( opengl )" #286560
61
62 # FIXME: the test suite is unsuitable for us; many tests require net access
63 # or fail due to Xvfb's opengl limitations.
64 RESTRICT="test"
65
66 COMMON_DEPEND="
67 truetype? ( >=media-libs/freetype-2.0.0[${MULTILIB_USEDEP}] )
68 capi? ( net-dialup/capi4k-utils )
69 ncurses? ( >=sys-libs/ncurses-5.2:=[${MULTILIB_USEDEP}] )
70 udisks? ( sys-apps/dbus[${MULTILIB_USEDEP}] )
71 fontconfig? ( media-libs/fontconfig:=[${MULTILIB_USEDEP}] )
72 gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] )
73 openal? ( media-libs/openal:=[${MULTILIB_USEDEP}] )
74 gstreamer? (
75 media-libs/gstreamer:0.10[${MULTILIB_USEDEP}]
76 media-libs/gst-plugins-base:0.10[${MULTILIB_USEDEP}]
77 )
78 X? (
79 x11-libs/libXcursor[${MULTILIB_USEDEP}]
80 x11-libs/libXext[${MULTILIB_USEDEP}]
81 x11-libs/libXrandr[${MULTILIB_USEDEP}]
82 x11-libs/libXi[${MULTILIB_USEDEP}]
83 x11-libs/libXxf86vm[${MULTILIB_USEDEP}]
84 )
85 xinerama? ( x11-libs/libXinerama[${MULTILIB_USEDEP}] )
86 alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
87 cups? ( net-print/cups:=[${MULTILIB_USEDEP}] )
88 opencl? ( virtual/opencl[${MULTILIB_USEDEP}] )
89 opengl? (
90 virtual/glu[${MULTILIB_USEDEP}]
91 virtual/opengl[${MULTILIB_USEDEP}]
92 )
93 gsm? ( media-sound/gsm:=[${MULTILIB_USEDEP}] )
94 jpeg? ( virtual/jpeg:0=[${MULTILIB_USEDEP}] )
95 ldap? ( net-nds/openldap:=[${MULTILIB_USEDEP}] )
96 lcms? ( media-libs/lcms:2=[${MULTILIB_USEDEP}] )
97 mp3? ( >=media-sound/mpg123-1.5.0[${MULTILIB_USEDEP}] )
98 netapi? ( net-fs/samba[netapi(+),${MULTILIB_USEDEP}] )
99 nls? ( sys-devel/gettext[${MULTILIB_USEDEP}] )
100 odbc? ( dev-db/unixODBC:=[${MULTILIB_USEDEP}] )
101 osmesa? ( media-libs/mesa[osmesa,${MULTILIB_USEDEP}] )
102 pcap? ( net-libs/libpcap[${MULTILIB_USEDEP}] )
103 pulseaudio? ( media-sound/pulseaudio[${MULTILIB_USEDEP}] )
104 s3tc? ( media-libs/libtxc_dxtn[${MULTILIB_USEDEP}] )
105 staging? ( sys-apps/attr[${MULTILIB_USEDEP}] )
106 xml? (
107 dev-libs/libxml2[${MULTILIB_USEDEP}]
108 dev-libs/libxslt[${MULTILIB_USEDEP}]
109 )
110 scanner? ( media-gfx/sane-backends:=[${MULTILIB_USEDEP}] )
111 ssl? ( net-libs/gnutls:=[${MULTILIB_USEDEP}] )
112 png? ( media-libs/libpng:0=[${MULTILIB_USEDEP}] )
113 v4l? ( media-libs/libv4l[${MULTILIB_USEDEP}] )
114 xcomposite? ( x11-libs/libXcomposite[${MULTILIB_USEDEP}] )
115 abi_x86_32? (
116 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
117 !<app-emulation/emul-linux-x86-baselibs-20140508-r14
118 !app-emulation/emul-linux-x86-db[-abi_x86_32(-)]
119 !<app-emulation/emul-linux-x86-db-20140508-r3
120 !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)]
121 !<app-emulation/emul-linux-x86-medialibs-20140508-r6
122 !app-emulation/emul-linux-x86-opengl[-abi_x86_32(-)]
123 !<app-emulation/emul-linux-x86-opengl-20140508-r1
124 !app-emulation/emul-linux-x86-sdl[-abi_x86_32(-)]
125 !<app-emulation/emul-linux-x86-sdl-20140508-r1
126 !app-emulation/emul-linux-x86-soundlibs[-abi_x86_32(-)]
127 !<app-emulation/emul-linux-x86-soundlibs-20140508
128 !app-emulation/emul-linux-x86-xlibs[-abi_x86_32(-)]
129 !<app-emulation/emul-linux-x86-xlibs-20140508
130 )"
131
132 RDEPEND="${COMMON_DEPEND}
133 dos? ( games-emulation/dosbox )
134 perl? ( dev-lang/perl dev-perl/XML-Simple )
135 samba? ( >=net-fs/samba-3.0.25 )
136 selinux? ( sec-policy/selinux-wine )
137 udisks? ( sys-fs/udisks:2 )
138 pulseaudio? ( realtime? ( sys-auth/rtkit ) )"
139
140 # tools/make_requests requires perl
141 DEPEND="${COMMON_DEPEND}
142 staging? ( dev-lang/perl dev-perl/XML-Simple )
143 X? (
144 x11-proto/inputproto
145 x11-proto/xextproto
146 x11-proto/xf86vidmodeproto
147 )
148 xinerama? ( x11-proto/xineramaproto )
149 prelink? ( sys-devel/prelink )
150 >=sys-kernel/linux-headers-2.6
151 virtual/pkgconfig
152 virtual/yacc
153 sys-devel/flex"
154
155 # These use a non-standard "Wine" category, which is provided by
156 # /etc/xdg/applications-merged/wine.menu
157 QA_DESKTOP_FILE="usr/share/applications/wine-browsedrive.desktop
158 usr/share/applications/wine-notepad.desktop
159 usr/share/applications/wine-uninstaller.desktop
160 usr/share/applications/wine-winecfg.desktop"
161
162 wine_build_environment_check() {
163 [[ ${MERGE_TYPE} = "binary" ]] && return 0
164
165 # bug #549768
166 if [[ $(gcc-major-version) = 5 ]]; then
167 eerror "You need gcc-4.x to build wine; see https://bugs.gentoo.org/549768"
168 eerror
169 return 1
170 fi
171
172 if use abi_x86_64 && [[ $(( $(gcc-major-version) * 100 + $(gcc-minor-version) )) -lt 404 ]]; then
173 eerror "You need gcc-4.4+ to build 64-bit wine"
174 eerror
175 return 1
176 fi
177
178 if use abi_x86_32 && use opencl && [[ x$(eselect opencl show 2> /dev/null) = "xintel" ]]; then
179 eerror "You cannot build wine with USE=opencl because intel-ocl-sdk is 64-bit only."
180 eerror "See https://bugs.gentoo.org/487864 for more details."
181 eerror
182 return 1
183 fi
184 }
185
186 pkg_pretend() {
187 wine_build_environment_check || die
188 }
189
190 pkg_setup() {
191 wine_build_environment_check || die
192 }
193
194 src_unpack() {
195 if [[ ${PV} == "9999" ]] ; then
196 git-r3_src_unpack
197 if use staging || use pulseaudio; then
198 EGIT_REPO_URI=${STAGING_EGIT_REPO_URI}
199 unset ${PN}_LIVE_REPO;
200 EGIT_CHECKOUT_DIR=${STAGING_DIR} git-r3_src_unpack
201 fi
202 else
203 unpack ${MY_P}.tar.bz2
204 use staging || use pulseaudio && unpack "${STAGING_P}.tar.gz"
205 fi
206
207 unpack "${WINE_GENTOO}.tar.bz2"
208 use gstreamer && unpack "${GST_P}.patch.bz2"
209
210 l10n_find_plocales_changes "${S}/po" "" ".po"
211 }
212
213 src_prepare() {
214 local md5="$(md5sum server/protocol.def)"
215 local PATCHES=(
216 "${FILESDIR}"/${PN}-1.5.26-winegcc.patch #260726
217 "${FILESDIR}"/${PN}-1.4_rc2-multilib-portage.patch #395615
218 "${FILESDIR}"/${PN}-1.7.12-osmesa-check.patch #429386
219 "${FILESDIR}"/${PN}-1.6-memset-O3.patch #480508
220 )
221
222 if use gstreamer; then
223 # See http://bugs.winehq.org/show_bug.cgi?id=30557
224 ewarn "Applying experimental patch to fix GStreamer support. Note that"
225 ewarn "this patch has been reported to cause crashes in certain games."
226
227 PATCHES+=( "${WORKDIR}/${GST_P}.patch" )
228 fi
229 if use staging; then
230 ewarn "Applying the unofficial Wine-Staging patchset which is unsupported"
231 ewarn "by Wine developers. Please don't report bugs to Wine bugzilla"
232 ewarn "unless you can reproduce them with USE=-staging"
233
234 # Apply temporary patch to wine-staging to allow for epatch as a backend to wine-staging's new patch script
235 pushd "${STAGING_DIR}"
236 epatch "${FILESDIR}"/wine-staging-gentoo-epatch-support.patch
237 popd
238
239 local STAGING_EXCLUDE=""
240 use pipelight || STAGING_EXCLUDE="${STAGING_EXCLUDE} -W Pipelight"
241
242 # Launch wine-staging patcher in a subshell, using epatch as a backend, and gitapply.sh as a backend for binary patches
243 ebegin "Running Wine-Staging patch installer"
244 (
245 set -- DESTDIR="${S}" --backend=epatch --no-autoconf --all ${STAGING_EXCLUDE}
246 cd "${STAGING_DIR}/patches"
247 source "${STAGING_DIR}/patches/patchinstall.sh"
248 )
249 eend $?
250 elif use pulseaudio; then
251 PATCHES+=( "${STAGING_DIR}/patches/winepulse-PulseAudio_Support"/*.patch )
252 fi
253 autotools-utils_src_prepare
254
255 # Modification of the server protocol requires regenerating the server requests
256 if [[ "$(md5sum server/protocol.def)" != "${md5}" ]]; then
257 einfo "server/protocol.def was patched; running tools/make_requests"
258 tools/make_requests || die #432348
259 fi
260 sed -i '/^UPDATE_DESKTOP_DATABASE/s:=.*:=true:' tools/Makefile.in || die
261 if ! use run-exes; then
262 sed -i '/^MimeType/d' tools/wine.desktop || die #117785
263 fi
264
265 # hi-res default icon, #472990, http://bugs.winehq.org/show_bug.cgi?id=24652
266 cp "${WORKDIR}"/${WINE_GENTOO}/icons/oic_winlogo.ico dlls/user32/resources/ || die
267
268 l10n_get_locales > po/LINGUAS # otherwise wine doesn't respect LINGUAS
269 }
270
271 src_configure() {
272 export LDCONFIG=/bin/true
273 use custom-cflags || strip-flags
274
275 multilib-minimal_src_configure
276 }
277
278 multilib_src_configure() {
279 local myconf=(
280 --sysconfdir=/etc/wine
281 $(use_with alsa)
282 $(use_with capi)
283 $(use_with lcms cms)
284 $(use_with cups)
285 $(use_with ncurses curses)
286 $(use_with udisks dbus)
287 $(use_with fontconfig)
288 $(use_with ssl gnutls)
289 $(use_enable gecko mshtml)
290 $(use_with gphoto2 gphoto)
291 $(use_with gsm)
292 $(use_with gstreamer)
293 --without-hal
294 $(use_with jpeg)
295 $(use_with ldap)
296 $(use_enable mono mscoree)
297 $(use_with mp3 mpg123)
298 $(use_with netapi)
299 $(use_with nls gettext)
300 $(use_with openal)
301 $(use_with opencl)
302 $(use_with opengl)
303 $(use_with osmesa)
304 $(use_with oss)
305 $(use_with pcap)
306 $(use_with png)
307 $(use_with threads pthread)
308 $(use_with scanner sane)
309 $(use_enable test tests)
310 $(use_with truetype freetype)
311 $(use_with v4l)
312 $(use_with X x)
313 $(use_with xcomposite)
314 $(use_with xinerama)
315 $(use_with xml)
316 $(use_with xml xslt)
317 )
318
319 if use pulseaudio || use staging; then
320 myconf+=( $(use_with pulseaudio pulse) )
321 fi
322 use staging && myconf+=(
323 --with-xattr
324 $(use_with s3tc txc_dxtn)
325 )
326
327 local PKG_CONFIG AR RANLIB
328 # Avoid crossdev's i686-pc-linux-gnu-pkg-config if building wine32 on amd64; #472038
329 # set AR and RANLIB to make QA scripts happy; #483342
330 tc-export PKG_CONFIG AR RANLIB
331
332 if use amd64; then
333 if [[ ${ABI} == amd64 ]]; then
334 myconf+=( --enable-win64 )
335 else
336 myconf+=( --disable-win64 )
337 fi
338
339 # Note: using --with-wine64 results in problems with multilib.eclass
340 # CC/LD hackery. We're using separate tools instead.
341 fi
342
343 ECONF_SOURCE=${S} \
344 econf "${myconf[@]}"
345 emake depend
346 }
347
348 multilib_src_test() {
349 # FIXME: win32-only; wine64 tests fail with "could not find the Wine loader"
350 if [[ ${ABI} == x86 ]]; then
351 if [[ $(id -u) == 0 ]]; then
352 ewarn "Skipping tests since they cannot be run under the root user."
353 ewarn "To run the test ${PN} suite, add userpriv to FEATURES in make.conf"
354 return
355 fi
356
357 WINEPREFIX="${T}/.wine-${ABI}" \
358 Xemake test
359 fi
360 }
361
362 multilib_src_install_all() {
363 local DOCS=( ANNOUNCE AUTHORS README )
364 local l
365 add_locale_docs() {
366 local locale_doc="documentation/README.$1"
367 [[ ! -e ${locale_doc} ]] || DOCS+=( ${locale_doc} )
368 }
369 l10n_for_each_locale_do add_locale_docs
370
371 einstalldocs
372 prune_libtool_files --all
373
374 emake -C "../${WINE_GENTOO}" install DESTDIR="${D}" EPREFIX="${EPREFIX}"
375 if use gecko ; then
376 insinto /usr/share/wine/gecko
377 use abi_x86_32 && doins "${DISTDIR}"/wine_gecko-${GV}-x86.msi
378 use abi_x86_64 && doins "${DISTDIR}"/wine_gecko-${GV}-x86_64.msi
379 fi
380 if use mono ; then
381 insinto /usr/share/wine/mono
382 doins "${DISTDIR}"/wine-mono-${MV}.msi
383 fi
384 if ! use perl ; then # winedump calls function_grep.pl, and winemaker is a perl script
385 rm "${D}"usr/bin/{wine{dump,maker},function_grep.pl} "${D}"usr/share/man/man1/wine{dump,maker}.1 || die
386 fi
387
388 use abi_x86_32 && pax-mark psmr "${D}"usr/bin/wine{,-preloader} #255055
389 use abi_x86_64 && pax-mark psmr "${D}"usr/bin/wine64{,-preloader}
390
391 if use abi_x86_64 && ! use abi_x86_32; then
392 dosym /usr/bin/wine{64,} # 404331
393 dosym /usr/bin/wine{64,}-preloader
394 fi
395
396 # respect LINGUAS when installing man pages, #469418
397 for l in de fr pl; do
398 use linguas_${l} || rm -r "${D}"usr/share/man/${l}*
399 done
400 }
401
402 pkg_preinst() {
403 gnome2_icon_savelist
404 }
405
406 pkg_postinst() {
407 gnome2_icon_cache_update
408 fdo-mime_desktop_database_update
409
410 if ! use gecko; then
411 ewarn "Without Wine Gecko, wine prefixes will not have a default"
412 ewarn "implementation of iexplore. Many older windows applications"
413 ewarn "rely upon the existence of an iexplore implementation, so"
414 ewarn "you will likely need to install an external one, like via winetricks"
415 fi
416 if ! use mono; then
417 ewarn "Without Wine Mono, wine prefixes will not have a default"
418 ewarn "implementation of .NET. Many windows applications rely upon"
419 ewarn "the existence of a .NET implementation, so you will likely need"
420 ewarn "to install an external one, like via winetricks"
421 fi
422 }
423
424 pkg_postrm() {
425 gnome2_icon_cache_update
426 fdo-mime_desktop_database_update
427 }

  ViewVC Help
Powered by ViewVC 1.1.20