commit: 1863774d994a4cd9b8af57e1882eaeef7a391d10 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Sun May 18 22:10:28 2025 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Mon May 19 16:19:45 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1863774d
app-emulation/86Box: Fix IUSE qt6 dependencies, backport crashfixes Add several missing dependencies Add missing dev-qt/qtbase:6= and media-sound/fluidsynth slot ops Move several RDEPEND(-only) -> (COMMON_)DEPEND Move kde-frameworks/extra-cmake-modules to BDEPEND See also: https://github.com/flathub/net._86box._86Box/issues/18 Bug: https://bugs.gentoo.org/953992 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> app-emulation/86Box/86Box-4.2.1-r2.ebuild | 79 ++++++++++++++++++++++ .../86Box/files/86Box-4.2.1-crashfix-1.patch | 22 ++++++ .../86Box/files/86Box-4.2.1-crashfix-2.patch | 36 ++++++++++ .../86Box/files/86Box-4.2.1-crashfix-3.patch | 40 +++++++++++ 4 files changed, 177 insertions(+) diff --git a/app-emulation/86Box/86Box-4.2.1-r2.ebuild b/app-emulation/86Box/86Box-4.2.1-r2.ebuild new file mode 100644 index 000000000000..d37ca0a97463 --- /dev/null +++ b/app-emulation/86Box/86Box-4.2.1-r2.ebuild @@ -0,0 +1,79 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake flag-o-matic + +DESCRIPTION="Emulator of x86-based machines based on PCem" +HOMEPAGE="https://github.com/86Box/86Box" +SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64" +IUSE="experimental +fluidsynth +munt new-dynarec +openal +qt6 +threads vde" + +DEPEND=" + app-emulation/faudio + dev-libs/libevdev + media-libs/freetype:2= + media-libs/libpng:= + media-libs/libsdl2 + media-libs/openal + media-libs/rtmidi + net-libs/libslirp + sys-libs/zlib + fluidsynth? ( media-sound/fluidsynth:= ) + munt? ( media-libs/munt-mt32emu ) + openal? ( media-libs/openal ) + qt6? ( + dev-libs/wayland + dev-qt/qtbase:6=[gui,network,opengl,widgets] + x11-libs/libX11 + x11-libs/libXi + x11-libs/libxkbcommon + ) +" +RDEPEND="${DEPEND} + qt6? ( dev-qt/qttranslations:6 ) + vde? ( net-misc/vde ) +" +BDEPEND=" + virtual/pkgconfig + qt6? ( kde-frameworks/extra-cmake-modules ) +" + +PATCHES=( "${FILESDIR}"/${P}-crashfix-{1,2,3}.patch ) # bug #953992, git master + +src_configure() { + # LTO needs to be filtered + # See https://bugs.gentoo.org/854507 + filter-lto + append-flags -fno-strict-aliasing + + local mycmakeargs=( + -DCPPTHREADS="$(usex threads)" + -DDEV_BRANCH="$(usex experimental)" + -DDYNAREC="ON" + -DMUNT_EXTERNAL="$(usex munt)" + -DFLUIDSYNTH="$(usex fluidsynth)" + -DMINITRACE="OFF" + -DMUNT="$(usex munt)" + -DNEW_DYNAREC="$(usex new-dynarec)" + -DOPENAL="$(usex openal)" + -DPREFER_STATIC="OFF" + -DRTMIDI="ON" + -DQT="$(usex qt6)" + -DRELEASE="ON" + $(usex qt6 '-DUSE_QT6=ON' '') + -DHAS_VDE="$(usex vde "${EPREFIX}/usr/$(get_libdir)/libvdeplug.so" "HAS_VDE-NOTFOUND")" + ) + + cmake_src_configure +} + +pkg_postinst() { + elog "In order to use 86Box, you will need some roms for various emulated systems." + elog "See https://github.com/86Box/roms for more information." +} diff --git a/app-emulation/86Box/files/86Box-4.2.1-crashfix-1.patch b/app-emulation/86Box/files/86Box-4.2.1-crashfix-1.patch new file mode 100644 index 000000000000..56dfae1cad56 --- /dev/null +++ b/app-emulation/86Box/files/86Box-4.2.1-crashfix-1.patch @@ -0,0 +1,22 @@ +From f37c2339dce9213c21c7ccc8f8ad01260ce80603 Mon Sep 17 00:00:00 2001 +From: Tarek Soliman <[email protected]> +Date: Fri, 6 Sep 2024 17:05:44 -0500 +Subject: [PATCH] Media history: fix buffer overflow + +--- + src/qt/qt_mediahistorymanager.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/qt/qt_mediahistorymanager.cpp b/src/qt/qt_mediahistorymanager.cpp +index 9886c205bd..cd9be766b3 100644 +--- a/src/qt/qt_mediahistorymanager.cpp ++++ b/src/qt/qt_mediahistorymanager.cpp +@@ -337,7 +337,7 @@ MediaHistoryManager::removeMissingImages(device_index_list_t &device_history) + } + + char *p = checked_path.toUtf8().data(); +- char temp[1024] = { 0 }; ++ char temp[MAX_IMAGE_PATH_LEN -1] = { 0 }; + + if (path_abs(p)) { + if (strlen(p) > (MAX_IMAGE_PATH_LEN - 1)) diff --git a/app-emulation/86Box/files/86Box-4.2.1-crashfix-2.patch b/app-emulation/86Box/files/86Box-4.2.1-crashfix-2.patch new file mode 100644 index 000000000000..2b7fca267f47 --- /dev/null +++ b/app-emulation/86Box/files/86Box-4.2.1-crashfix-2.patch @@ -0,0 +1,36 @@ +From ea5ef55bd13f504c26d075ce73f72867c1d4cea3 Mon Sep 17 00:00:00 2001 +From: RichardG867 <[email protected]> +Date: Fri, 11 Oct 2024 16:50:12 -0300 +Subject: [PATCH] qt: Fix another media menu string deallocation crash + +--- + src/qt/qt_mediahistorymanager.cpp | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/src/qt/qt_mediahistorymanager.cpp b/src/qt/qt_mediahistorymanager.cpp +index cd9be766b3..2acdc8e5bb 100644 +--- a/src/qt/qt_mediahistorymanager.cpp ++++ b/src/qt/qt_mediahistorymanager.cpp +@@ -336,17 +336,16 @@ MediaHistoryManager::removeMissingImages(device_index_list_t &device_history) + continue; + } + +- char *p = checked_path.toUtf8().data(); + char temp[MAX_IMAGE_PATH_LEN -1] = { 0 }; + +- if (path_abs(p)) { +- if (strlen(p) > (MAX_IMAGE_PATH_LEN - 1)) +- fatal("removeMissingImages(): strlen(p) > 2047\n"); ++ if (path_abs(checked_path.toUtf8().data())) { ++ if (checked_path.length() > (MAX_IMAGE_PATH_LEN - 1)) ++ fatal("removeMissingImages(): checked_path.length() > 2047\n"); + else +- snprintf(temp, (MAX_IMAGE_PATH_LEN - 1), "%s", p); ++ snprintf(temp, (MAX_IMAGE_PATH_LEN - 1), "%s", checked_path.toUtf8().constData()); + } else + snprintf(temp, (MAX_IMAGE_PATH_LEN - 1), "%s%s%s", usr_path, +- path_get_slash(usr_path), p); ++ path_get_slash(usr_path), checked_path.toUtf8().constData()); + path_normalize(temp); + + QString qstr = QString::fromUtf8(temp); diff --git a/app-emulation/86Box/files/86Box-4.2.1-crashfix-3.patch b/app-emulation/86Box/files/86Box-4.2.1-crashfix-3.patch new file mode 100644 index 000000000000..d97f4d274e1d --- /dev/null +++ b/app-emulation/86Box/files/86Box-4.2.1-crashfix-3.patch @@ -0,0 +1,40 @@ +From 6b05602ea4d1593edf8d0fff17e733b182e94637 Mon Sep 17 00:00:00 2001 +From: OBattler <[email protected]> +Date: Sun, 5 Jan 2025 22:35:50 +0100 +Subject: [PATCH] QT: Increase buffer size and improve sanity checking when + removing an image. + +--- + src/qt/qt_mediahistorymanager.cpp | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +diff --git a/src/qt/qt_mediahistorymanager.cpp b/src/qt/qt_mediahistorymanager.cpp +index 2acdc8e5bb..d548c0779c 100644 +--- a/src/qt/qt_mediahistorymanager.cpp ++++ b/src/qt/qt_mediahistorymanager.cpp +@@ -336,16 +336,20 @@ MediaHistoryManager::removeMissingImages(device_index_list_t &device_history) + continue; + } + +- char temp[MAX_IMAGE_PATH_LEN -1] = { 0 }; ++ char temp[MAX_IMAGE_PATH_LEN * 2] = { 0 }; + + if (path_abs(checked_path.toUtf8().data())) { + if (checked_path.length() > (MAX_IMAGE_PATH_LEN - 1)) +- fatal("removeMissingImages(): checked_path.length() > 2047\n"); ++ fatal("removeMissingImages(): checked_path.length() > %i\n", MAX_IMAGE_PATH_LEN - 1); + else + snprintf(temp, (MAX_IMAGE_PATH_LEN - 1), "%s", checked_path.toUtf8().constData()); +- } else +- snprintf(temp, (MAX_IMAGE_PATH_LEN - 1), "%s%s%s", usr_path, +- path_get_slash(usr_path), checked_path.toUtf8().constData()); ++ } else { ++ if ((strlen(usr_path) + strlen(path_get_slash(usr_path)) + checked_path.length()) > (MAX_IMAGE_PATH_LEN - 1)) ++ fatal("removeMissingImages(): Combined absolute path length > %i\n", MAX_IMAGE_PATH_LEN - 1); ++ else ++ snprintf(temp, (MAX_IMAGE_PATH_LEN - 1), "%s%s%s", usr_path, ++ path_get_slash(usr_path), checked_path.toUtf8().constData()); ++ } + path_normalize(temp); + + QString qstr = QString::fromUtf8(temp);
