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

Contents of /app-emulation/wine/wine-1.7.35.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 local STAGING_EXCLUDE=""
235 use pipelight || STAGING_EXCLUDE="${STAGING_EXCLUDE} -W Pipelight"
236
237 # Launch wine-staging patcher in a subshell, using epatch as a backend, and gitapply.sh as a backend for binary patches
238 ebegin "Running Wine-Staging patch installer"
239 (
240 set -- DESTDIR="${S}" --backend=epatch --no-autoconf --all ${STAGING_EXCLUDE}
241 cd "${STAGING_DIR}/patches"
242 source "${STAGING_DIR}/patches/patchinstall.sh"
243 )
244 eend $?
245 elif use pulseaudio; then
246 PATCHES+=( "${STAGING_DIR}/patches/winepulse-PulseAudio_Support"/*.patch )
247 fi
248 autotools-utils_src_prepare
249
250 # Modification of the server protocol requires regenerating the server requests
251 if [[ "$(md5sum server/protocol.def)" != "${md5}" ]]; then
252 einfo "server/protocol.def was patched; running tools/make_requests"
253 tools/make_requests || die #432348
254 fi
255 sed -i '/^UPDATE_DESKTOP_DATABASE/s:=.*:=true:' tools/Makefile.in || die
256 if ! use run-exes; then
257 sed -i '/^MimeType/d' tools/wine.desktop || die #117785
258 fi
259
260 # hi-res default icon, #472990, http://bugs.winehq.org/show_bug.cgi?id=24652
261 cp "${WORKDIR}"/${WINE_GENTOO}/icons/oic_winlogo.ico dlls/user32/resources/ || die
262
263 l10n_get_locales > po/LINGUAS # otherwise wine doesn't respect LINGUAS
264 }
265
266 src_configure() {
267 export LDCONFIG=/bin/true
268 use custom-cflags || strip-flags
269
270 multilib-minimal_src_configure
271 }
272
273 multilib_src_configure() {
274 local myconf=(
275 --sysconfdir=/etc/wine
276 $(use_with alsa)
277 $(use_with capi)
278 $(use_with lcms cms)
279 $(use_with cups)
280 $(use_with ncurses curses)
281 $(use_with udisks dbus)
282 $(use_with fontconfig)
283 $(use_with ssl gnutls)
284 $(use_enable gecko mshtml)
285 $(use_with gphoto2 gphoto)
286 $(use_with gsm)
287 $(use_with gstreamer)
288 --without-hal
289 $(use_with jpeg)
290 $(use_with ldap)
291 $(use_enable mono mscoree)
292 $(use_with mp3 mpg123)
293 $(use_with netapi)
294 $(use_with nls gettext)
295 $(use_with openal)
296 $(use_with opencl)
297 $(use_with opengl)
298 $(use_with osmesa)
299 $(use_with oss)
300 $(use_with pcap)
301 $(use_with png)
302 $(use_with threads pthread)
303 $(use_with scanner sane)
304 $(use_enable test tests)
305 $(use_with truetype freetype)
306 $(use_with v4l)
307 $(use_with X x)
308 $(use_with xcomposite)
309 $(use_with xinerama)
310 $(use_with xml)
311 $(use_with xml xslt)
312 )
313
314 if use pulseaudio || use staging; then
315 myconf+=( $(use_with pulseaudio pulse) )
316 fi
317 use staging && myconf+=(
318 --with-xattr
319 $(use_with s3tc txc_dxtn)
320 )
321
322 local PKG_CONFIG AR RANLIB
323 # Avoid crossdev's i686-pc-linux-gnu-pkg-config if building wine32 on amd64; #472038
324 # set AR and RANLIB to make QA scripts happy; #483342
325 tc-export PKG_CONFIG AR RANLIB
326
327 if use amd64; then
328 if [[ ${ABI} == amd64 ]]; then
329 myconf+=( --enable-win64 )
330 else
331 myconf+=( --disable-win64 )
332 fi
333
334 # Note: using --with-wine64 results in problems with multilib.eclass
335 # CC/LD hackery. We're using separate tools instead.
336 fi
337
338 ECONF_SOURCE=${S} \
339 econf "${myconf[@]}"
340 emake depend
341 }
342
343 multilib_src_test() {
344 # FIXME: win32-only; wine64 tests fail with "could not find the Wine loader"
345 if [[ ${ABI} == x86 ]]; then
346 if [[ $(id -u) == 0 ]]; then
347 ewarn "Skipping tests since they cannot be run under the root user."
348 ewarn "To run the test ${PN} suite, add userpriv to FEATURES in make.conf"
349 return
350 fi
351
352 WINEPREFIX="${T}/.wine-${ABI}" \
353 Xemake test
354 fi
355 }
356
357 multilib_src_install_all() {
358 local DOCS=( ANNOUNCE AUTHORS README )
359 local l
360 add_locale_docs() {
361 local locale_doc="documentation/README.$1"
362 [[ ! -e ${locale_doc} ]] || DOCS+=( ${locale_doc} )
363 }
364 l10n_for_each_locale_do add_locale_docs
365
366 einstalldocs
367 prune_libtool_files --all
368
369 emake -C "../${WINE_GENTOO}" install DESTDIR="${D}" EPREFIX="${EPREFIX}"
370 if use gecko ; then
371 insinto /usr/share/wine/gecko
372 use abi_x86_32 && doins "${DISTDIR}"/wine_gecko-${GV}-x86.msi
373 use abi_x86_64 && doins "${DISTDIR}"/wine_gecko-${GV}-x86_64.msi
374 fi
375 if use mono ; then
376 insinto /usr/share/wine/mono
377 doins "${DISTDIR}"/wine-mono-${MV}.msi
378 fi
379 if ! use perl ; then # winedump calls function_grep.pl, and winemaker is a perl script
380 rm "${D}"usr/bin/{wine{dump,maker},function_grep.pl} "${D}"usr/share/man/man1/wine{dump,maker}.1 || die
381 fi
382
383 use abi_x86_32 && pax-mark psmr "${D}"usr/bin/wine{,-preloader} #255055
384 use abi_x86_64 && pax-mark psmr "${D}"usr/bin/wine64{,-preloader}
385
386 if use abi_x86_64 && ! use abi_x86_32; then
387 dosym /usr/bin/wine{64,} # 404331
388 dosym /usr/bin/wine{64,}-preloader
389 fi
390
391 # respect LINGUAS when installing man pages, #469418
392 for l in de fr pl; do
393 use linguas_${l} || rm -r "${D}"usr/share/man/${l}*
394 done
395 }
396
397 pkg_preinst() {
398 gnome2_icon_savelist
399 }
400
401 pkg_postinst() {
402 gnome2_icon_cache_update
403 fdo-mime_desktop_database_update
404
405 if ! use gecko; then
406 ewarn "Without Wine Gecko, wine prefixes will not have a default"
407 ewarn "implementation of iexplore. Many older windows applications"
408 ewarn "rely upon the existence of an iexplore implementation, so"
409 ewarn "you will likely need to install an external one, like via winetricks"
410 fi
411 if ! use mono; then
412 ewarn "Without Wine Mono, wine prefixes will not have a default"
413 ewarn "implementation of .NET. Many windows applications rely upon"
414 ewarn "the existence of a .NET implementation, so you will likely need"
415 ewarn "to install an external one, like via winetricks"
416 fi
417 }
418
419 pkg_postrm() {
420 gnome2_icon_cache_update
421 fdo-mime_desktop_database_update
422 }

  ViewVC Help
Powered by ViewVC 1.1.20