wine-1.3.18-r1

Opublikowany: 30.04.2011

spatchowana wersja wolnej implementacji api Windowsa(tm) na Unixa

Strona projektu: Wine

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ą.

Dodatkowo dla tego ebuilda odfiltrowałem flagę kompilacyjną "-fomit-frame-pointer". Kompilacja wine z tą flagą uniemożliwiała uruchomienia wielu gier Windowsowych z powodu błędu uruchomionego debuggera.

Aby wykorzystać ten ebuild wykonaj następujące polecenia w terminalu:

echo "=app-emulation/wine-1.3.18-r1" >> /etc/portage/package.keywords
echo "=app-emulation/wine-1.3.18-r1" >> /etc/portage/package.unmask 
emerge -av =app-emulation/wine-1.3.18-r1

Wyświetl kod źródłowy ebuilda
  1. # Copyright 1999-2011 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.3.18.ebuild,v 1.1 2011/04/26 20:31:37 vapier Exp $
  4.  
  5. EAPI="2"
  6.  
  7. inherit eutils flag-o-matic multilib
  8.  
  9. if [[ ${PV} == "9999" ]] ; then
  10. EGIT_REPO_URI="git://source.winehq.org/git/wine.git"
  11. inherit git autotools
  12. SRC_URI=""
  13. #KEYWORDS=""
  14. else
  15. AUTOTOOLS_AUTO_DEPEND="no"
  16. inherit autotools
  17. MY_P="${PN}-${PV/_/-}"
  18. SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.bz2"
  19. KEYWORDS="-* ~amd64 ~x86 ~x86-fbsd"
  20. S=${WORKDIR}/${MY_P}
  21. fi
  22.  
  23. pulse_patches() { echo "$1"/winepulse-{0.39,configure.ac-1.3.10,winecfg-1.3.11}.patch ; }
  24. GV="1.2.0"
  25. DESCRIPTION="free implementation of Windows(tm) on Unix"
  26. HOMEPAGE="http://www.winehq.org/"
  27. SRC_URI="${SRC_URI}
  28. gecko? (
  29. mirror://sourceforge/wine/wine_gecko-${GV}-x86.msi
  30. win64? ( mirror://sourceforge/wine/wine_gecko-${GV}-x86_64.msi )
  31. )
  32. pulseaudio? ( `pulse_patches http://art.ified.ca/downloads/winepulse` )"
  33.  
  34. LICENSE="LGPL-2.1"
  35. SLOT="0"
  36. IUSE="alsa capi cups custom-cflags dbus esd fontconfig +gecko gnutls gphoto2 gsm gstreamer hal jack jpeg lcms ldap mp3 nas ncurses nls openal +opengl +oss +perl png pulseaudio samba scanner ssl test +threads +truetype +win32 +win64 +X xcomposite xinerama xml"
  37. RESTRICT="test" #72375
  38.  
  39. MLIB_DEPS="amd64? (
  40. truetype? ( >=app-emulation/emul-linux-x86-xlibs-2.1 )
  41. X? (
  42. >=app-emulation/emul-linux-x86-xlibs-2.1
  43. >=app-emulation/emul-linux-x86-soundlibs-2.1[pulseaudio?]
  44. )
  45. openal? ( app-emulation/emul-linux-x86-sdl )
  46. opengl? ( app-emulation/emul-linux-x86-opengl )
  47. app-emulation/emul-linux-x86-baselibs
  48. >=sys-kernel/linux-headers-2.6
  49. )"
  50. RDEPEND="truetype? ( >=media-libs/freetype-2.0.0 media-fonts/corefonts )
  51. perl? ( dev-lang/perl dev-perl/XML-Simple )
  52. capi? ( net-dialup/capi4k-utils )
  53. ncurses? ( >=sys-libs/ncurses-5.2 )
  54. fontconfig? ( media-libs/fontconfig )
  55. gphoto2? ( media-libs/libgphoto2 )
  56. jack? ( media-sound/jack-audio-connection-kit )
  57. openal? ( media-libs/openal )
  58. dbus? ( sys-apps/dbus )
  59. gnutls? ( net-libs/gnutls )
  60. gstreamer? ( media-libs/gstreamer media-libs/gst-plugins-base )
  61. hal? ( sys-apps/hal )
  62. X? (
  63. x11-libs/libXcursor
  64. x11-libs/libXrandr
  65. x11-libs/libXi
  66. x11-libs/libXmu
  67. x11-libs/libXxf86vm
  68. x11-apps/xmessage
  69. )
  70. xinerama? ( x11-libs/libXinerama )
  71. alsa? ( media-libs/alsa-lib )
  72. esd? ( media-sound/esound )
  73. nas? ( media-libs/nas )
  74. cups? ( net-print/cups )
  75. opengl? ( virtual/opengl )
  76. pulseaudio? ( media-sound/pulseaudio )
  77. gsm? ( media-sound/gsm )
  78. jpeg? ( virtual/jpeg )
  79. ldap? ( net-nds/openldap )
  80. lcms? ( =media-libs/lcms-1* )
  81. mp3? ( >=media-sound/mpg123-1.5.0 )
  82. nls? ( sys-devel/gettext )
  83. samba? ( >=net-fs/samba-3.0.25 )
  84. xml? ( dev-libs/libxml2 dev-libs/libxslt )
  85. scanner? ( media-gfx/sane-backends )
  86. ssl? ( dev-libs/openssl )
  87. png? ( media-libs/libpng )
  88. !win64? ( ${MLIB_DEPS} )
  89. win32? ( ${MLIB_DEPS} )
  90. xcomposite? ( x11-libs/libXcomposite ) "
  91. DEPEND="${RDEPEND}
  92. pulseaudio? ( ${AUTOTOOLS_DEPEND} )
  93. X? (
  94. x11-proto/inputproto
  95. x11-proto/xextproto
  96. x11-proto/xf86vidmodeproto
  97. )
  98. xinerama? ( x11-proto/xineramaproto )
  99. sys-devel/bison
  100. sys-devel/flex"
  101.  
  102. pkg_setup() {
  103. filter-flags -fomit-frame-pointer
  104. }
  105.  
  106. src_unpack() {
  107. if use win64 ; then
  108. [[ $(( $(gcc-major-version) * 100 + $(gcc-minor-version) )) -lt 404 ]] \
  109. && die "you need gcc-4.4+ to build 64bit wine"
  110. fi
  111.  
  112. if [[ ${PV} == "9999" ]] ; then
  113. git_src_unpack
  114. else
  115. unpack ${MY_P}.tar.bz2
  116. fi
  117. }
  118.  
  119. src_prepare() {
  120. if use pulseaudio ; then
  121. EPATCH_OPTS=-p1 epatch `pulse_patches "${DISTDIR}"`
  122. eautoreconf
  123. fi
  124. epatch "${FILESDIR}"/${PN}-1.1.15-winegcc.patch #260726
  125. epatch "${FILESDIR}"/prevent_oss_muting.patch #http://bugs.winehq.org/show_bug.cgi?id=15710
  126. epatch_user #282735
  127. sed -i '/^UPDATE_DESKTOP_DATABASE/s:=.*:=true:' tools/Makefile.in || die
  128. sed -i '/^MimeType/d' tools/wine.desktop || die #117785
  129. }
  130.  
  131. do_configure() {
  132. local builddir="${WORKDIR}/wine$1"
  133. mkdir -p "${builddir}"
  134. pushd "${builddir}" >/dev/null
  135.  
  136. ECONF_SOURCE=${S} \
  137. econf \
  138. --sysconfdir=/etc/wine \
  139. $(use_with alsa) \
  140. $(use_with capi) \
  141. $(use_with lcms cms) \
  142. $(use_with cups) \
  143. $(use_with ncurses curses) \
  144. $(use_with esd) \
  145. $(use_with fontconfig) \
  146. $(use_with gnutls) \
  147. $(use_with gphoto2 gphoto) \
  148. $(use_with gsm) \
  149. $(use_with gstreamer) \
  150. $(! use dbus && echo --without-hal || use_with hal) \
  151. $(use_with jack) \
  152. $(use_with jpeg) \
  153. $(use_with ldap) \
  154. $(use_with mp3 mpg123) \
  155. $(use_with nas) \
  156. $(use_with nls gettextpo) \
  157. $(use_with openal) \
  158. $(use_with opengl) \
  159. $(use_with ssl openssl) \
  160. $(use_with oss) \
  161. $(use_with png) \
  162. $(use_with threads pthread) \
  163. $(use pulseaudio && use_with pulseaudio pulse) \
  164. $(use_with scanner sane) \
  165. $(use_enable test tests) \
  166. $(use_with truetype freetype) \
  167. $(use_with X x) \
  168. $(use_with xcomposite) \
  169. $(use_with xinerama) \
  170. $(use_with xml) \
  171. $(use_with xml xslt) \
  172. $2
  173.  
  174. emake -j1 depend || die "depend"
  175.  
  176. popd >/dev/null
  177. }
  178. src_configure() {
  179. export LDCONFIG=/bin/true
  180. use custom-cflags || strip-flags
  181.  
  182. if use win64 ; then
  183. do_configure 64 --enable-win64
  184. use win32 && ABI=x86 do_configure 32 --with-wine64=../wine64
  185. else
  186. ABI=x86 do_configure 32 --disable-win64
  187. fi
  188. }
  189.  
  190. src_compile() {
  191. local b
  192. for b in 64 32 ; do
  193. local builddir="${WORKDIR}/wine${b}"
  194. [[ -d ${builddir} ]] || continue
  195. emake -C "${builddir}" all || die
  196. done
  197. }
  198.  
  199. src_install() {
  200. local b
  201. for b in 64 32 ; do
  202. local builddir="${WORKDIR}/wine${b}"
  203. [[ -d ${builddir} ]] || continue
  204. emake -C "${builddir}" install DESTDIR="${D}" || die
  205. done
  206. dodoc ANNOUNCE AUTHORS README
  207. if use gecko ; then
  208. insinto /usr/share/wine/gecko
  209. doins "${DISTDIR}"/wine_gecko-${GV}-x86.msi || die
  210. use win64 && { doins "${DISTDIR}"/wine_gecko-${GV}-x86_64.msi || die ; }
  211. fi
  212. if ! use perl ; then
  213. rm "${D}"/usr/bin/{wine{dump,maker},function_grep.pl} "${D}"/usr/share/man/man1/wine{dump,maker}.1 || die
  214. fi
  215. }
  216.  
  217. pkg_postinst() {
  218. paxctl -psmr "${ROOT}"/usr/bin/wine{,-preloader} 2>/dev/null #255055
  219. }

Oto lista wszystkich wersji ebuilda wine jakie możesz znaleźć w moim overlay'u: