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

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

  ViewVC Help
Powered by ViewVC 1.1.20