From 4595af3afc4a717c4690e091ece3620641928c46 Mon Sep 17 00:00:00 2001 From: Peter Volkov Date: Wed, 14 Jun 2006 17:08:23 +0000 Subject: [PATCH] A bunch of fixes as suggested by upstream developer Richard Drummond! Package-Manager: portage-2.0.54-r2 --- app-emulation/e-uae/ChangeLog | 10 +- app-emulation/e-uae/Manifest | 7 +- app-emulation/e-uae/e-uae-0.8.28-r1.ebuild | 124 ++++++++++++++++++ .../e-uae/files/digest-e-uae-0.8.28-r1 | 1 + ...e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch | 24 ++++ ...-0.8.28-fix-atoscroll-screen-support.patch | 85 ++++++++++++ .../e-uae-0.8.28-fix-joystick-conflicts.patch | 25 ++++ 7 files changed, 274 insertions(+), 2 deletions(-) create mode 100644 app-emulation/e-uae/e-uae-0.8.28-r1.ebuild create mode 100644 app-emulation/e-uae/files/digest-e-uae-0.8.28-r1 create mode 100644 app-emulation/e-uae/files/e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch create mode 100644 app-emulation/e-uae/files/e-uae-0.8.28-fix-atoscroll-screen-support.patch create mode 100644 app-emulation/e-uae/files/e-uae-0.8.28-fix-joystick-conflicts.patch diff --git a/app-emulation/e-uae/ChangeLog b/app-emulation/e-uae/ChangeLog index 60d09af76b9a..49ba7815f19c 100644 --- a/app-emulation/e-uae/ChangeLog +++ b/app-emulation/e-uae/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for app-emulation/e-uae # Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-emulation/e-uae/ChangeLog,v 1.9 2006/06/14 14:17:05 pva Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-emulation/e-uae/ChangeLog,v 1.10 2006/06/14 17:08:23 pva Exp $ + +*e-uae-0.8.28-r1 (14 Jun 2006) + + 14 Jun 2006; Peter Volkov + +files/e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch, + +files/e-uae-0.8.28-fix-atoscroll-screen-support.patch, + +files/e-uae-0.8.28-fix-joystick-conflicts.patch, +e-uae-0.8.28-r1.ebuild: + A bunch of fixes suggested by upstream developer Richard Drummond! 14 Jun 2006; Peter Volkov +files/e-uae-0.8.28-shm-crash.patch, e-uae-0.8.28.ebuild: diff --git a/app-emulation/e-uae/Manifest b/app-emulation/e-uae/Manifest index 96b6ed29f2ee..ed4e27eba84a 100644 --- a/app-emulation/e-uae/Manifest +++ b/app-emulation/e-uae/Manifest @@ -1,7 +1,12 @@ -MD5 9464ea4152adbbdd977cf85960bb365d ChangeLog 1463 +MD5 1ba5d65b48cb6fa4c5d849436e0c49ab ChangeLog 1799 MD5 624de9bf2b723d7882a4a8e2485f71ef e-uae-0.8.27.ebuild 1635 +MD5 d9c2dd5174bb239ea1bf58e729b8c0db e-uae-0.8.28-r1.ebuild 3595 MD5 1a85d3c4ef89e6d13eacb5f5a9f0b15d e-uae-0.8.28.ebuild 3431 MD5 851c3d9c0e2846a1241c99e5ff19bf01 files/digest-e-uae-0.8.27 66 MD5 856093362e575805efb4ef8117d8f98c files/digest-e-uae-0.8.28 66 +MD5 856093362e575805efb4ef8117d8f98c files/digest-e-uae-0.8.28-r1 66 +MD5 781bdea3cdebd0d2b11de41508613ab5 files/e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch 660 +MD5 9f2bf139b66d3a4c3e6c8405c428ae60 files/e-uae-0.8.28-fix-atoscroll-screen-support.patch 3178 +MD5 66a07fc56b355aa2bb8ce779b66e17d7 files/e-uae-0.8.28-fix-joystick-conflicts.patch 907 MD5 774c0436b6e91dd8f18b0df23f10c75b files/e-uae-0.8.28-shm-crash.patch 582 MD5 107be5d8d010a6b3dac228473128bdf4 metadata.xml 468 diff --git a/app-emulation/e-uae/e-uae-0.8.28-r1.ebuild b/app-emulation/e-uae/e-uae-0.8.28-r1.ebuild new file mode 100644 index 000000000000..1ee684c9bf8b --- /dev/null +++ b/app-emulation/e-uae/e-uae-0.8.28-r1.ebuild @@ -0,0 +1,124 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/e-uae/e-uae-0.8.28-r1.ebuild,v 1.1 2006/06/14 17:08:23 pva Exp $ + +inherit eutils flag-o-matic + +DESCRIPTION="The Eggplant Umiquious Amiga Emulator" +HOMEPAGE="http://www.rcdrummond.net/uae/" +SRC_URI="http://www.rcdrummond.net/uae/${P}/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="X dga ncurses sdl gtk alsa oss sdl-sound capslib" + +# Note: opposed to ./configure --help zlib support required! Check +# src/Makefile.am that includes zfile.c unconditionaly. +RDEPEND="X? ( || ( ( x11-libs/libXt + x11-libs/libxkbfile + x11-libs/libXext + dga? ( x11-libs/libXxf86dga + x11-libs/libXxf86vm ) + ) + virtual/x11 + ) + ) + !X? ( sdl? ( media-libs/libsdl ) + !sdl? ( sys-libs/ncurses ) ) + alsa? ( media-libs/alsa-lib ) + !alsa? ( sdl-sound? ( media-libs/sdl-sound ) ) + gtk? ( >=x11-libs/gtk+-2.0 ) + capslib? ( games-emulation/caps ) + sys-libs/zlib + app-cdr/cdrtools" + +DEPEND="$RDEPEND + X? ( dga? ( x11-proto/xf86vidmodeproto + x11-proto/xf86dgaproto ) )" + +pkg_setup() { + # Sound setup. + if use alsa; then + einfo "Choosing alsa as sound target to use." + myconf="--with-alsa --without-sdl-sound" + elif use sdl-sound ; then + if ! use sdl ; then + ewarn "sdl-sound is not enabled because sdl is switched off. Leaving" + ewarn "sound on oss autodetection." + myconf="--without-alsa --without-sdl-sound" + ebeep + else + einfo "Choosing sdl-sound as sound target to use." + myconf="--without-alsa --with-sdl-sound" + fi + elif use oss ; then + einfo "Choosing oss as sound target to use." + ewarn "oss will be autodetected. See output of configure." + myconf="--without-alsa --without-sdl-sound" + else + ewarn "There is no alsa, sdl-sound or oss in USE. Sound target disabled!" + myconf="--disable-audio" + fi + + # VIDEO setup. X is autodetected (there is no --with-X option). + if use X ; then + myconf="$myconf --without-curses --without-sdl-gfx" + use dga && myconf="$myconf --enable-dga --enable-vidmode" + elif use sdl ; then + myconf="$myconf --with-sdl --with-sdl-gfx --without-curses" + elif use ncurses; then + myconf="$myconf --with-curses --without-sdl-gfx" + else + ewarn "There is no X or sdl or ncurses in USE!" + ewarn "Following upstream falling back on ncurses." + myconf="$myconf --with-curses --without-sdl-gfx" + ebeep + fi + + use gtk && myconf="$myconf --enable-ui --enable-threads" + use gtk || myconf="$myconf --disable-ui" + + use capslib && myconf="$myconf --with-caps" + + myconf="$myconf --with-zlib" + + # And explicitly state defaults: + myconf="$myconf --enable-aga" + myconf="$myconf --enable-autoconfig --enable-scsi-device --enable-cdtv --enable-cd32" + myconf="$myconf --enable-bsdsock" +} + +src_unpack() { + unpack ${A} + cd ${S} + + epatch ${FILESDIR}/${P}-shm-crash.patch + epatch ${FILESDIR}/${P}-fix-joystick-conflicts.patch + epatch ${FILESDIR}/${P}-fix-atoscroll-screen-support.patch + epatch ${FILESDIR}/${P}-fix-JIT-cache-on-NX-cpu.patch +} + +src_compile() { + strip-flags + + econf ${myconf} \ + --with-libscg-includedir=/usr/include/scsilib \ + || die "./configure failed" + + emake -j1 || die "emake failed" +} + +src_install() { + make DESTDIR="${D}" install || die "make install failed" + + insinto /usr/share/uae/amiga-tools + doins amiga/{*hack,trans*,uae*,*.library} + + # Rename it to e-uae + mv ${D}/usr/bin/uae ${D}/usr/bin/e-uae + mv ${D}/usr/bin/readdisk ${D}/usr/bin/e-readdisk + mv ${D}/usr/share/uae ${D}/usr/share/${PN} + + dodoc docs/* README ChangeLog CHANGES +} diff --git a/app-emulation/e-uae/files/digest-e-uae-0.8.28-r1 b/app-emulation/e-uae/files/digest-e-uae-0.8.28-r1 new file mode 100644 index 000000000000..f84b6f678c51 --- /dev/null +++ b/app-emulation/e-uae/files/digest-e-uae-0.8.28-r1 @@ -0,0 +1 @@ +MD5 9fc186f9256d04f940304044e29175ef e-uae-0.8.28.tar.bz2 1148790 diff --git a/app-emulation/e-uae/files/e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch b/app-emulation/e-uae/files/e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch new file mode 100644 index 000000000000..43a14b2b108c --- /dev/null +++ b/app-emulation/e-uae/files/e-uae-0.8.28-fix-JIT-cache-on-NX-cpu.patch @@ -0,0 +1,24 @@ +diff -Naur e-uae-0.8.28.orig/src/od-generic/memory.c e-uae-0.8.28/src/od-generic/memory.c +--- e-uae-0.8.28.orig/src/od-generic/memory.c 2005-01-07 05:25:04.000000000 +0300 ++++ e-uae-0.8.28/src/od-generic/memory.c 2006-06-14 20:55:33.000000000 +0400 +@@ -14,6 +14,9 @@ + #ifdef JIT + + #include ++#include ++#include ++#include + + /* + * Allocate executable memory for JIT cache +@@ -22,7 +25,9 @@ + { + void *cache; + +- if ((cache = malloc (size))) ++ size = size < getpagesize() ? getpagesize() : size; ++ ++ if ((cache = valloc (size))) + mprotect (cache, size, PROT_READ|PROT_WRITE|PROT_EXEC); + + return cache; diff --git a/app-emulation/e-uae/files/e-uae-0.8.28-fix-atoscroll-screen-support.patch b/app-emulation/e-uae/files/e-uae-0.8.28-fix-atoscroll-screen-support.patch new file mode 100644 index 000000000000..50fec9aa8c5f --- /dev/null +++ b/app-emulation/e-uae/files/e-uae-0.8.28-fix-atoscroll-screen-support.patch @@ -0,0 +1,85 @@ +diff -Naur e-uae-0.8.28.orig/src/picasso96.c e-uae-0.8.28/src/picasso96.c +--- e-uae-0.8.28.orig/src/picasso96.c 2005-09-01 22:17:22.000000000 +0400 ++++ e-uae-0.8.28/src/picasso96.c 2006-06-14 20:53:06.000000000 +0400 +@@ -5,7 +5,7 @@ + * + * Copyright 1997-2001 Brian King + * Copyright 2000-2001 Bernd Roesch +- * Copyright 2003-2004 Richard Drummond ++ * Copyright 2003-2005 Richard Drummond + * + * Theory of operation: + * On the Amiga side, a Picasso card consists mainly of a memory area that +@@ -27,7 +27,6 @@ + * accesses which may be rather slow. + * + * TODO: +- * - add panning capability + * - we want to add a manual switch to override SetSwitch for hardware banging + * programs started from a Picasso workbench. + */ +@@ -615,7 +614,7 @@ + * coordinates for the source rectangle in the framebuffer - not the source + * coordinates. + */ +- srcp = ri->Memory + dstx * Bpp + dsty * ri->BytesPerRow; ++ srcp = ri->Memory + (dstx + xoff) * Bpp + (dsty + yoff) * ri->BytesPerRow; + + dstp += dsty * picasso_vidinfo.rowbytes + dstx * picasso_vidinfo.pixbytes; + +@@ -625,7 +624,6 @@ + width,height, picasso_vidinfo.pixbytes)); + P96TRACE (("P96: gfxmem is at 0x%x\n", gfxmemory)); + +- DX_Invalidate (dsty, dsty + height - 1); + + + +@@ -771,11 +769,11 @@ + + static void flush_currline (void) + { +- unsigned int line_no = (unsigned int)(currline_y - picasso96_state.YOffset); ++ int line_no = currline_y - picasso96_state.YOffset; + +- /* We only need to flush this line to the screen if the line +- * is acutally visible on screen */ +- if (/*line_no >= 0 && */line_no < picasso96_state.Height) { ++ /* We only need to flush this line to the screen if the line ++ * is acutally visible on screen */ ++ if (line_no >= 0 && line_no < picasso96_state.Height) { + + /* Tell the graphics system that this line needs to be + * redrawn */ +@@ -795,10 +793,11 @@ + srcp += first_byte; + first_byte = 0; + } +- if (first_byte + byte_count > picasso96_state.Width * fb_bpp) ++ if ((first_byte + byte_count) > (picasso96_state.Width * fb_bpp)) + byte_count = picasso96_state.Width * fb_bpp - first_byte; + +- write_currline (srcp, line_no, first_byte, byte_count); ++ if (byte_count > 0) ++ write_currline (srcp, line_no, first_byte, byte_count); + } + } + currline_start = 0xFFFFFFFF; +@@ -1548,6 +1547,8 @@ + picasso96_state.YOffset = (uae_s16) m68k_dreg (®s, 2); + picasso96_state.RGBFormat = m68k_dreg (®s, 7); + ++ wgfx_flushline(); ++ + /* Get our BoardInfo ptr's BitMapExtra ptr */ + bmeptr = get_long (bi + PSSO_BoardInfo_BitMapExtra); + +@@ -2830,7 +2831,7 @@ + + /* If this line is outside of the p96 screen in the framebuffer + * we ignore it */ +- if (line_no < picasso96_state.VirtualHeight) { ++ if ((line_no >= picasso96_state.YOffset) && (line_no < picasso96_state.YOffset + picasso96_state.Height)) { + currline_start = picasso96_state.Address + line_no * picasso96_state.BytesPerRow; + currline_end = currline_start + picasso96_state.BytesPerRow; + currline_min = addr; diff --git a/app-emulation/e-uae/files/e-uae-0.8.28-fix-joystick-conflicts.patch b/app-emulation/e-uae/files/e-uae-0.8.28-fix-joystick-conflicts.patch new file mode 100644 index 000000000000..f9aa388031d6 --- /dev/null +++ b/app-emulation/e-uae/files/e-uae-0.8.28-fix-joystick-conflicts.patch @@ -0,0 +1,25 @@ +diff -Naur e-uae-0.8.28.orig/src/jd-linuxold/joystick.c e-uae-0.8.28/src/jd-linuxold/joystick.c +--- e-uae-0.8.28.orig/src/jd-linuxold/joystick.c 2005-08-21 19:02:09.000000000 +0400 ++++ e-uae-0.8.28/src/jd-linuxold/joystick.c 2006-06-14 20:54:30.000000000 +0400 +@@ -8,7 +8,7 @@ + * + * Copyright 1997 Bernd Schmidt + * Copyright 1998 Krister Walfridsson +- * Copyright 2003-2005 Richard Drummond ++ * Copyright 2003-2006 Richard Drummond + * Copyright 2004 Nick Seow (Alternative Linux joystick device path) + */ + +@@ -75,8 +75,10 @@ + int fd = nr == 0 ? js0 : js1; + struct joy_range *r = nr == 0 ? &range0 : &range1; + +- if (nr >= nr_joysticks) +- return; ++ if (currprefs.input_selected_setting == 0) { ++ if (jsem_isjoy (0, &currprefs) != (int)nr && jsem_isjoy (1, &currprefs) != (int)nr) ++ return; ++ } + + len = read(fd, &buffer, sizeof(buffer)); + if (len != sizeof(buffer)) -- 2.26.2