From 2fb0b1af8eaca82d0eef36eaa5de9145f5bc9919 Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Fri, 9 Sep 2022 14:16:50 +0200 Subject: games-emulation/mupen64plus-core: Backport crash fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes: https://bugs.gentoo.org/869326 Signed-off-by: Michał Górny --- .../files/mupen64plus-core-2.5.9-pitch.patch | 29 +++++ .../mupen64plus-core-2.5.9-r2.ebuild | 108 ------------------- .../mupen64plus-core-2.5.9-r3.ebuild | 117 +++++++++++++++++++++ 3 files changed, 146 insertions(+), 108 deletions(-) create mode 100644 games-emulation/mupen64plus-core/files/mupen64plus-core-2.5.9-pitch.patch delete mode 100644 games-emulation/mupen64plus-core/mupen64plus-core-2.5.9-r2.ebuild create mode 100644 games-emulation/mupen64plus-core/mupen64plus-core-2.5.9-r3.ebuild diff --git a/games-emulation/mupen64plus-core/files/mupen64plus-core-2.5.9-pitch.patch b/games-emulation/mupen64plus-core/files/mupen64plus-core-2.5.9-pitch.patch new file mode 100644 index 000000000000..449e4252dae2 --- /dev/null +++ b/games-emulation/mupen64plus-core/files/mupen64plus-core-2.5.9-pitch.patch @@ -0,0 +1,29 @@ +From 8fac78d8cb54da960ca85a49547dcc4fb952457d Mon Sep 17 00:00:00 2001 +From: VarNepvius <14352929+VarNepvius@users.noreply.github.com> +Date: Tue, 6 Sep 2022 20:31:03 +0200 +Subject: [PATCH] Fix wrong pitch argument in call to SDL_CreateRGBSurfaceFrom. + +--- + src/api/vidext_sdl2_compat.h | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/api/vidext_sdl2_compat.h b/src/api/vidext_sdl2_compat.h +index 06d778dd9..071a64402 100644 +--- a/src/api/vidext_sdl2_compat.h ++++ b/src/api/vidext_sdl2_compat.h +@@ -474,8 +474,14 @@ SDL_SetVideoMode(int width, int height, int bpp, Uint32 flags) + if (SDL_GL_MakeCurrent(SDL_VideoWindow, SDL_VideoContext) < 0) { + return NULL; + } ++ ++ /* Pitch: size of of line in bytes */ ++ /* Add 7 to bpp before division, to ensure correct rounding towards infinity ++ * in cases where bits per pixel do not cleanly divide by 8 (such as 15) ++ */ ++ int pitch = (bpp + 7) / 8 * width; + SDL_VideoSurface = +- SDL_CreateRGBSurfaceFrom(NULL, width, height, bpp, 0, 0, 0, 0, 0); ++ SDL_CreateRGBSurfaceFrom(NULL, width, height, bpp, pitch, 0, 0, 0, 0); + if (!SDL_VideoSurface) { + return NULL; + } diff --git a/games-emulation/mupen64plus-core/mupen64plus-core-2.5.9-r2.ebuild b/games-emulation/mupen64plus-core/mupen64plus-core-2.5.9-r2.ebuild deleted file mode 100644 index 459fd3cd6239..000000000000 --- a/games-emulation/mupen64plus-core/mupen64plus-core-2.5.9-r2.ebuild +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright 1999-2021 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -MY_P=${PN}-src-${PV} -inherit toolchain-funcs - -DESCRIPTION="A fork of Mupen64 Nintendo 64 emulator, core library" -HOMEPAGE="https://www.mupen64plus.org/" -SRC_URI="https://github.com/mupen64plus/${PN}/releases/download/${PV}/${MY_P}.tar.gz" - -LICENSE="GPL-2+" -SLOT="0/2-sdl2" -KEYWORDS="~amd64 ~x86" -IUSE="debugger gles2-only lirc new-dynarec opencv +osd cpu_flags_x86_sse" - -RDEPEND="media-libs/libpng:0= - media-libs/libsdl2:0=[joystick,opengl,video] - sys-libs/zlib:0=[minizip] - gles2-only? ( media-libs/libsdl2:0[gles2] ) - lirc? ( app-misc/lirc:0 ) - opencv? ( media-libs/opencv:= ) - osd? ( - media-fonts/dejavu - media-libs/freetype:2= - virtual/opengl:0= - virtual/glu:0= - )" -DEPEND="${RDEPEND}" -BDEPEND=" - cpu_flags_x86_sse? ( dev-lang/nasm ) - virtual/pkgconfig" - -REQUIRED_USE="gles2-only? ( !osd )" -S=${WORKDIR}/${MY_P} - -PATCHES=( "${FILESDIR}"/${PN}-2.5.9-fix-gcc10-fno-common.patch ) - -src_prepare() { - default - - # avoid implicitly appending CPU flags - sed -i -e 's:-mmmx::g' -e 's:-msse::g' projects/unix/Makefile || die - # fix building against opencv-4 - sed -i -e '/PKG_CONFIG/s:opencv:&4:' projects/unix/Makefile || die -} - -src_compile() { - MAKEARGS=( - # Note: please keep this in sync in all of mupen64plus-* packages - - -C projects/unix - - # this basically means: GNU userspace - UNAME=Linux - - # verbose output - V=1 - - CROSS_COMPILE="${CHOST}-" - CC="$(tc-getCC)" - CXX="$(tc-getCXX)" - PKG_CONFIG="$(tc-getPKG_CONFIG)" - # usual CFLAGS, CXXFLAGS and LDFLAGS are respected - # so we can leave OPTFLAGS empty - OPTFLAGS= - - # paths, some of them are used at compile time - PREFIX=/usr - LIBDIR=/usr/$(get_libdir) - - # disable unwanted magic - LDCONFIG=: - INSTALL_STRIP_FLAG= - - # Package-specific stuff - - # CROSS_COMPILE causes it to look for ${CHOST}-sdl2-config... - SDL_CFLAGS="$($(tc-getPKG_CONFIG) --cflags sdl2)" - SDL_LDLIBS="$($(tc-getPKG_CONFIG) --libs sdl2)" - - OSD=$(usex osd 1 0) - NO_ASM=$(usex cpu_flags_x86_sse 0 1) - LIRC=$(usex lirc 1 0) - OPENCV=$(usex opencv 1 0) - DEBUGGER=$(usex debugger 1 0) - NEW_DYNAREC=$(usex new-dynarec 1 0) - USE_GLES=$(usex gles2-only 1 0) - ) - - use amd64 && MAKEARGS+=( HOST_CPU=x86_64 ) - use x86 && MAKEARGS+=( HOST_CPU=i386 ) - - emake "${MAKEARGS[@]}" all -} - -src_install() { - emake "${MAKEARGS[@]}" DESTDIR="${D}" install - dodoc -r CREDITS README RELEASE doc/{emuwiki-api-doc,new_dynarec.mediawiki} - - # replace bundled font with a symlink - # TODO: fix the code to not rely on it - rm "${ED}/usr/share/mupen64plus/font.ttf" || die - if use osd; then - dosym ../fonts/dejavu/DejaVuSans.ttf /usr/share/mupen64plus/font.ttf - fi -} diff --git a/games-emulation/mupen64plus-core/mupen64plus-core-2.5.9-r3.ebuild b/games-emulation/mupen64plus-core/mupen64plus-core-2.5.9-r3.ebuild new file mode 100644 index 000000000000..38e80fb81924 --- /dev/null +++ b/games-emulation/mupen64plus-core/mupen64plus-core-2.5.9-r3.ebuild @@ -0,0 +1,117 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs + +MY_P=${PN}-src-${PV} +DESCRIPTION="A fork of Mupen64 Nintendo 64 emulator, core library" +HOMEPAGE="https://www.mupen64plus.org/" +SRC_URI=" + https://github.com/mupen64plus/${PN}/releases/download/${PV}/${MY_P}.tar.gz +" +S=${WORKDIR}/${MY_P} + +LICENSE="GPL-2+" +SLOT="0/2-sdl2" +KEYWORDS="~amd64 ~x86" +IUSE="debugger gles2-only lirc new-dynarec opencv +osd cpu_flags_x86_sse" +REQUIRED_USE="gles2-only? ( !osd )" + +DEPEND=" + media-libs/libpng:= + media-libs/libsdl2[joystick,opengl,video] + sys-libs/zlib[minizip] + gles2-only? ( media-libs/libsdl2[gles2] ) + lirc? ( app-misc/lirc ) + opencv? ( media-libs/opencv:= ) + osd? ( + media-fonts/dejavu + media-libs/freetype:2 + virtual/opengl + virtual/glu + ) +" +RDEPEND=" + ${DEPEND} +" +BDEPEND=" + cpu_flags_x86_sse? ( dev-lang/nasm ) + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}"/${P}-fix-gcc10-fno-common.patch + "${FILESDIR}"/${P}-pitch.patch +) + +src_prepare() { + default + + # avoid implicitly appending CPU flags + sed -i -e 's:-mmmx::g' -e 's:-msse::g' projects/unix/Makefile || die + # fix building against opencv-4 + sed -i -e '/PKG_CONFIG/s:opencv:&4:' projects/unix/Makefile || die +} + +src_compile() { + MAKEARGS=( + # Note: please keep this in sync in all of mupen64plus-* packages + + -C projects/unix + + # this basically means: GNU userspace + UNAME=Linux + + # verbose output + V=1 + + CROSS_COMPILE="${CHOST}-" + CC="$(tc-getCC)" + CXX="$(tc-getCXX)" + PKG_CONFIG="$(tc-getPKG_CONFIG)" + # usual CFLAGS, CXXFLAGS and LDFLAGS are respected + # so we can leave OPTFLAGS empty + OPTFLAGS= + + # paths, some of them are used at compile time + PREFIX=/usr + LIBDIR=/usr/$(get_libdir) + + # disable unwanted magic + LDCONFIG=: + INSTALL_STRIP_FLAG= + + # Package-specific stuff + + # CROSS_COMPILE causes it to look for ${CHOST}-sdl2-config... + SDL_CFLAGS="$($(tc-getPKG_CONFIG) --cflags sdl2)" + SDL_LDLIBS="$($(tc-getPKG_CONFIG) --libs sdl2)" + + OSD=$(usex osd 1 0) + NO_ASM=$(usex cpu_flags_x86_sse 0 1) + LIRC=$(usex lirc 1 0) + OPENCV=$(usex opencv 1 0) + DEBUGGER=$(usex debugger 1 0) + NEW_DYNAREC=$(usex new-dynarec 1 0) + USE_GLES=$(usex gles2-only 1 0) + ) + + use amd64 && MAKEARGS+=( HOST_CPU=x86_64 ) + use x86 && MAKEARGS+=( HOST_CPU=i386 ) + + emake "${MAKEARGS[@]}" all +} + +src_install() { + emake "${MAKEARGS[@]}" DESTDIR="${D}" install + dodoc -r CREDITS README RELEASE doc/{emuwiki-api-doc,new_dynarec.mediawiki} + + # replace bundled font with a symlink + # TODO: fix the code to not rely on it + rm "${ED}/usr/share/mupen64plus/font.ttf" || die + if use osd; then + dosym ../fonts/dejavu/DejaVuSans.ttf /usr/share/mupen64plus/font.ttf + fi +} -- cgit v1.2.3-65-gdbad