sty 14, 2010

1.1.35-r1


Patched version of free implementation of Windows(tm) api on Unix.
Kategoria: wine
Napisał: kardasa

This is wine ebuild with additional patch to prevent, a known OSS PCM muting device bug which was introduced in wine version 1.1.6. If you want to know more about this bug you can read full bug info here

The patch is removing two lines of code which are cosing the problem.

View the source of prevent_oss_muting.patch
  1. --- wine/a/wine-1.1.6/dlls/dsound/primary.c 2008-10-10 16:57:22.000000000 +0200
  2. +++ wine/b/wine-1.1.6/dlls/dsound/primary.c 2009-05-18 19:37:01.000000000 +0200
  3. @@ -169,8 +169,6 @@
  4. return err;
  5. }
  6. }
  7. - if (device->hwbuf)
  8. - IDsDriverBuffer_SetVolumePan(device->hwbuf, &device->volpan);
  9.  
  10. DSOUND_RecalcPrimary(device);
  11. device->prebuf = ds_snd_queue_max;

You can access the patch file on my svn server by following this link.

The OSS PCM muting device bug is not noticeable to most of the wine users because they are using alsa sound system. Unfortunately I'm using some applications like Ventrilo voice communication software which forced me to run them in OSS. I couldn't make my input sound device work with alsa under wine. This way mentioned above bug was very annoying for me. I did not noticed any problem with this patch, but as this bug is not being fixed by upstream wine developers, and they may have some reason not to fix it this way, I'm keeping the ebuild hard mask in my overlay.

projectpage: Wine
summarypl: Spatchowana wersja wolnej implementacji api Windowsa(tm) na Unixa.
contentpl: 

To jest ebuld wine z dodatkowym paczem zapobiegającym, znanemu błędowi wyciszania urządzenia PCM dla OSS, który pojawił się w wersji wine 1.1.6. Jeśli chcesz dowiedzieć się więcej na temat tego błędu przeczytaj pełną informację tutaj

Wspomniany patch usuwa dwie linie kodu powodujące problem.

Wyświetl kod źródłowy patcha prevent_oss_muting.patch
  1. --- wine/a/wine-1.1.6/dlls/dsound/primary.c 2008-10-10 16:57:22.000000000 +0200
  2. +++ wine/b/wine-1.1.6/dlls/dsound/primary.c 2009-05-18 19:37:01.000000000 +0200
  3. @@ -169,8 +169,6 @@
  4. return err;
  5. }
  6. }
  7. - if (device->hwbuf)
  8. - IDsDriverBuffer_SetVolumePan(device->hwbuf, &device->volpan);
  9.  
  10. DSOUND_RecalcPrimary(device);
  11. device->prebuf = ds_snd_queue_max;

Możesz uzyskać dostęp do pliku z patchem na moim serwerze svn podążając za tym linkiem.

Błąd zapobiegający wyciszeniu urządzenia PCM dla OSS jest niezauważalny dla większości użytkowników wine, gdyż używają oni systemu dźwiękowego alsa. Niestety osobiście wykorzystuję kilka aplikacji takich jak na przykład komunikator Ventrilo, które zmuszają mnie do uruchamiania ich w oparciu o standard OSS. Nie mogłem zmusić moich urządzeń wejściowych do poprawnej pracy w standardzie alsa pod wine. Tym sposobem wspomniany powyżej bug był dla mnie wyjątkowo denerwujący. Nie dostrzegam, żadnych poważnych problemów z tym patchem ale, ponieważ błąd nie jest poprawiony przez deweloperów wine, i obawiam się, że mogą mieć powód aby nie poprawiać go w ten sposób, postanowiłem trzymać ten ebuild w moim overlayu z twardą maską.

overlaycommands: echo "=app-emulation/wine-1.1.35-r1" >> /etc/portage/package.keywords echo "=app-emulation/wine-1.1.35-r1" >> /etc/portage/package.unmask emerge -av =app-emulation/wine-1.1.35-r1
ebuildsource: 
  1. # Copyright 1999-2009 Gentoo Foundation
  2. # Distributed under the terms of the GNU General Public License v2
  3. # $Header: /var/cvsroot/gentoo-x86/app-emulation/wine/wine-1.1.35-r1.ebuild,v 1.2 2009/12/26 17:25:38 vapier Exp $
  4. EAPI="2"
  5.  
  6. inherit eutils flag-o-matic multilib
  7.  
  8. if [[ ${PV} == "9999" ]] ; then
  9. EGIT_REPO_URI="git://source.winehq.org/git/wine.git"
  10. inherit git
  11. SRC_URI=""
  12. #KEYWORDS=""
  13. else
  14. MY_P="${PN}-${PV/_/-}"
  15. SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.bz2"
  16. KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd"
  17. S=${WORKDIR}/${MY_P}
  18. fi
  19.  
  20. GV="1.0.0-x86"
  21. DESCRIPTION="free implementation of Windows(tm) on Unix"
  22. HOMEPAGE="http://www.winehq.org/"
  23. SRC_URI="${SRC_URI}
  24. gecko? ( mirror://sourceforge/wine/wine_gecko-${GV}.cab )"
  25.  
  26. LICENSE="LGPL-2.1"
  27. SLOT="0"
  28. IUSE="alsa capi cups custom-cflags dbus esd fontconfig +gecko gnutls gphoto2 gsm hal jack jpeg lcms ldap mp3 nas ncurses openal +opengl oss +perl png samba scanner ssl test +threads +truetype win64 +X xcomposite xinerama xml"
  29. RESTRICT="test" #72375
  30.  
  31. RDEPEND="truetype? ( >=media-libs/freetype-2.0.0 media-fonts/corefonts )
  32. perl? ( dev-lang/perl dev-perl/XML-Simple )
  33. capi? ( net-dialup/capi4k-utils )
  34. ncurses? ( >=sys-libs/ncurses-5.2 )
  35. fontconfig? ( media-libs/fontconfig )
  36. gphoto2? ( media-libs/libgphoto2 )
  37. jack? ( media-sound/jack-audio-connection-kit )
  38. openal? ( media-libs/openal )
  39. dbus? ( sys-apps/dbus )
  40. gnutls? ( net-libs/gnutls )
  41. hal? ( sys-apps/hal )
  42. X? (
  43. x11-libs/libXcursor
  44. x11-libs/libXrandr
  45. x11-libs/libXi
  46. x11-libs/libXmu
  47. x11-libs/libXxf86vm
  48. x11-apps/xmessage
  49. )
  50. xinerama? ( x11-libs/libXinerama )
  51. alsa? ( media-libs/alsa-lib )
  52. esd? ( media-sound/esound )
  53. nas? ( media-libs/nas )
  54. cups? ( net-print/cups )
  55. opengl? ( virtual/opengl )
  56. gsm? ( media-sound/gsm )
  57. jpeg? ( media-libs/jpeg )
  58. ldap? ( net-nds/openldap )
  59. lcms? ( media-libs/lcms )
  60. mp3? ( media-sound/mpg123 )
  61. samba? ( >=net-fs/samba-3.0.25 )
  62. xml? ( dev-libs/libxml2 dev-libs/libxslt )
  63. scanner? ( media-gfx/sane-backends )
  64. ssl? ( dev-libs/openssl )
  65. png? ( media-libs/libpng )
  66. !win64? ( amd64? (
  67. truetype? ( >=app-emulation/emul-linux-x86-xlibs-2.1 )
  68. X? (
  69. >=app-emulation/emul-linux-x86-xlibs-2.1
  70. >=app-emulation/emul-linux-x86-soundlibs-2.1
  71. )
  72. app-emulation/emul-linux-x86-baselibs
  73. >=sys-kernel/linux-headers-2.6
  74. ) )
  75. xcomposite? ( x11-libs/libXcomposite ) "
  76. DEPEND="${RDEPEND}
  77. X? (
  78. x11-proto/inputproto
  79. x11-proto/xextproto
  80. x11-proto/xf86vidmodeproto
  81. )
  82. xinerama? ( x11-proto/xineramaproto )
  83. sys-devel/bison
  84. sys-devel/flex"
  85.  
  86. src_unpack() {
  87. if [[ $(( $(gcc-major-version) * 100 + $(gcc-minor-version) )) -lt 404 ]] ; then
  88. use win64 && die "you need gcc-4.4+ to build 64bit wine"
  89. fi
  90.  
  91. if [[ ${PV} == "9999" ]] ; then
  92. git_src_unpack
  93. else
  94. unpack ${MY_P}.tar.bz2
  95. fi
  96. }
  97.  
  98. src_prepare() {
  99. epatch "${FILESDIR}"/${PN}-1.1.15-winegcc.patch #260726
  100. epatch_user #282735
  101. epatch "${FILESDIR}"/prevent_oss_muting.patch #http://bugs.winehq.org/show_bug.cgi?id=15710
  102. sed -i '/^UPDATE_DESKTOP_DATABASE/s:=.*:=true:' tools/Makefile.in || die
  103. sed -i '/^MimeType/d' tools/wine.desktop || die #117785
  104. }
  105.  
  106. src_configure() {
  107. export LDCONFIG=/bin/true
  108.  
  109. use custom-cflags || strip-flags
  110. use amd64 && ! use win64 && multilib_toolchain_setup x86
  111.  
  112. econf \
  113. --sysconfdir=/etc/wine \
  114. $(use_with alsa) \
  115. $(use_with capi) \
  116. $(use_with lcms cms) \
  117. $(use_with cups) \
  118. $(use_with ncurses curses) \
  119. $(use_with esd) \
  120. $(use_with fontconfig) \
  121. $(use_with gnutls) \
  122. $(use_with gphoto2 gphoto) \
  123. $(use_with gsm) \
  124. $(! use dbus && echo --without-hal || use_with hal) \
  125. $(use_with jack) \
  126. $(use_with jpeg) \
  127. $(use_with ldap) \
  128. $(use_with mp3 mpg123) \
  129. $(use_with nas) \
  130. $(use_with openal) \
  131. $(use_with opengl) \
  132. $(use_with ssl openssl) \
  133. $(use_with oss) \
  134. $(use_with png) \
  135. $(use_with threads pthread) \
  136. $(use_with scanner sane) \
  137. $(use_enable test tests) \
  138. $(use_with truetype freetype) \
  139. $(use_enable win64) \
  140. $(use_with X x) \
  141. $(use_with xcomposite) \
  142. $(use_with xinerama) \
  143. $(use_with xml) \
  144. $(use_with xml xslt) \
  145. || die "configure failed"
  146.  
  147. emake -j1 depend || die "depend"
  148. }
  149.  
  150. src_compile() {
  151. emake all || die "all"
  152. }
  153.  
  154. src_install() {
  155. emake DESTDIR="${D}" install || die
  156. dodoc ANNOUNCE AUTHORS README
  157. if use gecko ; then
  158. insinto /usr/share/wine/gecko
  159. doins "${DISTDIR}"/wine_gecko-${GV}.cab || die
  160. fi
  161. if ! use perl ; then
  162. rm "${D}"/usr/bin/{wine{dump,maker},function_grep.pl} "${D}"/usr/share/man/man1/wine{dump,maker}.1 || die
  163. fi
  164. }
  165.  
  166. pkg_postinst() {
  167. paxctl -psmr "${ROOT}"/usr/bin/wine{,-preloader} 2>/dev/null #255055
  168. }
svnlink: http://www.kardasa.pl/websvn/filedetails.php?repname=KardasA+Overlay&path=%2Fapp-emulation%2Fwine%2Fwine-1.1.35-r1.ebuild