commit: 2ee8d3cdcc28cf690a08153a57ae35e779da3225 Author: Pavel Sobolev <contact <AT> paveloom <DOT> dev> AuthorDate: Sat Aug 2 07:31:50 2025 +0000 Commit: Pavel Sobolev <contact <AT> paveloom <DOT> dev> CommitDate: Sat Aug 2 10:41:05 2025 +0000 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=2ee8d3cd
games-emulation/eden: new package, add 0.0.3_rc2 Signed-off-by: Pavel Sobolev <contact <AT> paveloom.dev> games-emulation/eden/Manifest | 1 + games-emulation/eden/eden-0.0.3_rc2.ebuild | 166 +++++++++++++++++++++ ...-add-a-missing-include-for-the-log-header.patch | 15 ++ ...finition-of-create_target_directory_group.patch | 59 ++++++++ ...0.0.3_rc2-relax-the-dependency-on-httplib.patch | 16 ++ ...en-0.0.3_rc2-use-the-system-Boost-library.patch | 16 ++ ...n-0.0.3_rc2-use-the-system-QuaZip-library.patch | 22 +++ ...-0.0.3_rc2-use-the-system-mbedtls-library.patch | 33 ++++ ...en-0.0.3_rc2-use-the-system-sirit-library.patch | 16 ++ games-emulation/eden/metadata.xml | 20 +++ 10 files changed, 364 insertions(+) diff --git a/games-emulation/eden/Manifest b/games-emulation/eden/Manifest new file mode 100644 index 0000000000..fde27891c7 --- /dev/null +++ b/games-emulation/eden/Manifest @@ -0,0 +1 @@ +DIST eden-0.0.3_rc2.tar.gz 33625981 BLAKE2B c570dcf78e2cfd00e43ef55f0586c95313b66a8f8026c770060f103dfbc8b995232f2fd6077654ad0b5e48546d63bfed90b2021992a26f38816cafde82f8627e SHA512 c69f9693888251d2d9e23fcd38519a33a0ea350cae913b31ff67342fab4e83c404547753fb62004d01bade4f2c132c448298bbfe30311977aa67ef8bb982abf5 diff --git a/games-emulation/eden/eden-0.0.3_rc2.ebuild b/games-emulation/eden/eden-0.0.3_rc2.ebuild new file mode 100644 index 0000000000..87cce2410c --- /dev/null +++ b/games-emulation/eden/eden-0.0.3_rc2.ebuild @@ -0,0 +1,166 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake xdg + +DESCRIPTION="Nintendo Switch Emulator" +HOMEPAGE="https://eden-emu.dev" +SRC_URI="https://git.eden-emu.dev/eden-emu/eden/archive/v${PV/_/-}.tar.gz -> ${P}.tar.gz" + +S="${WORKDIR}/${PN}" + +LICENSE="GPL-3+" +SLOT="0" +KEYWORDS="~amd64" +IUSE="camera cubeb discord gui lto sdl ssl test web-applet wifi" +REQUIRED_USE="!gui? ( !camera !discord !web-applet )" +RESTRICT="!test? ( test )" + +RDEPEND=" + app-arch/lz4 + app-arch/zstd + dev-cpp/cpp-httplib:=[ssl] + dev-libs/libfmt:= + dev-libs/libusb + dev-libs/sirit + dev-util/spirv-tools + llvm-core/llvm + media-libs/libva + media-libs/opus + media-video/ffmpeg + net-libs/enet + net-libs/mbedtls:0[cmac] + sys-libs/zlib + + amd64? ( dev-libs/dynarmic ) + arm64? ( dev-libs/dynarmic ) + + camera? ( dev-qt/qtmultimedia:6 ) + cubeb? ( media-libs/cubeb ) + discord? ( + dev-libs/discord-rpc + dev-qt/qtbase:6[network] + ) + gui? ( + dev-libs/quazip[qt6] + dev-qt/qtbase:6[concurrent,dbus,widgets] + ) + sdl? ( media-libs/libsdl2 ) + ssl? ( dev-libs/openssl:= ) + web-applet? ( dev-qt/qtwebengine:6[widgets] ) + wifi? ( net-wireless/wireless-tools ) +" +DEPEND=" + ${RDEPEND} + dev-cpp/cpp-jwt + dev-cpp/nlohmann_json + dev-cpp/simpleini + dev-libs/boost:=[context] + dev-util/vulkan-headers + dev-util/vulkan-utility-libraries + games-util/gamemode + media-gfx/renderdoc + media-libs/VulkanMemoryAllocator + sys-libs/timezone-data + + amd64? ( dev-libs/xbyak ) + arm64? ( dev-libs/oaknut ) + x86? ( dev-libs/xbyak ) +" +BDEPEND=" + dev-build/make + dev-vcs/git + sys-apps/coreutils + virtual/pkgconfig + test? ( dev-cpp/catch ) +" + +PATCHES=( + "${FILESDIR}/${PN}-0.0.3_rc2-add-a-missing-include-for-the-log-header.patch" + "${FILESDIR}/${PN}-0.0.3_rc2-move-the-definition-of-create_target_directory_group.patch" + "${FILESDIR}/${PN}-0.0.3_rc2-relax-the-dependency-on-httplib.patch" + "${FILESDIR}/${PN}-0.0.3_rc2-use-the-system-Boost-library.patch" + "${FILESDIR}/${PN}-0.0.3_rc2-use-the-system-mbedtls-library.patch" + "${FILESDIR}/${PN}-0.0.3_rc2-use-the-system-QuaZip-library.patch" + "${FILESDIR}/${PN}-0.0.3_rc2-use-the-system-sirit-library.patch" +) + +# [directory]=license +declare -A KEEP_BUNDLED=( + # Generated or copied files for internal usage + [bc_decoder]=MPL-2.0 + [cmake-modules]=Boost-1.0 + [FidelityFX-FSR]=MIT + [glad]=GPL-2+ + [microprofile]=public-domain + [nx_tzdb]="GPL-2+ MIT" + [stb]="MIT public-domain" + [tz]=BSD-2 +) + +add_bundled_licenses() { + for license in "${KEEP_BUNDLED[@]}"; do + if [[ -n "$license" ]]; then + LICENSE+=" ${license}" + fi + done +} +add_bundled_licenses + +src_prepare() { + local s remove=() + for s in externals/*; do + [[ -f ${s} ]] && continue + if ! has "${s#externals/}" "${!KEEP_BUNDLED[@]}"; then + remove+=( "${s}" ) + fi + done + + einfo "removing sources: ${remove[*]}" + rm -r "${remove[@]}" || die + + cmake_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DYUZU_CHECK_SUBMODULES=no + -DYUZU_ENABLE_PORTABLE=no + -DYUZU_USE_BUNDLED_FFMPEG=no + -DYUZU_USE_BUNDLED_SDL2=no + -DYUZU_USE_EXTERNAL_SDL2=no + -DYUZU_USE_EXTERNAL_VULKAN_HEADERS=no + -DYUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS=no + -DYUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES=no + -DYUZU_USE_PRECOMPILED_HEADERS=no + -DTZDB2NX_VERSION=gentoo + -DTZDB2NX_ZONEINFO_DIR=/usr/share/zoneinfo + + -DENABLE_CUBEB=$(usex cubeb) + -DENABLE_OPENSSL=$(usex ssl) + -DENABLE_QT=$(usex gui) + -DENABLE_SDL2=$(usex sdl) + -DENABLE_WIFI_SCAN=$(usex wifi) + -DUSE_DISCORD_PRESENCE=$(usex discord) + -DYUZU_ENABLE_LTO=$(usex lto) + -DYUZU_TESTS=$(usex test) + -DYUZU_USE_QT_MULTIMEDIA=$(usex camera) + -DYUZU_USE_QT_WEB_ENGINE=$(usex web-applet) + + # Support for this flag is broken by upstream + -DENABLE_WEB_SERVICE=yes + + -Wno-dev + ) + + cmake_src_configure +} + +src_test() { + cd "${BUILD_DIR}" || die + + # See https://git.eden-emu.dev/eden-emu/eden/issues/126 + ./bin/tests "~Fibers::InterExchange" "~RingBuffer: Threaded Test" +} diff --git a/games-emulation/eden/files/eden-0.0.3_rc2-add-a-missing-include-for-the-log-header.patch b/games-emulation/eden/files/eden-0.0.3_rc2-add-a-missing-include-for-the-log-header.patch new file mode 100644 index 0000000000..6931a0ec60 --- /dev/null +++ b/games-emulation/eden/files/eden-0.0.3_rc2-add-a-missing-include-for-the-log-header.patch @@ -0,0 +1,15 @@ +From: Pavel Sobolev <[email protected]> +Subject: [PATCH] Add a missing `include` for the log header. + +Signed-off-by: Pavel Sobolev <[email protected]> + +--- a/src/core/hle/service/nvnflinger/hos_binder_driver_server.cpp ++++ b/src/core/hle/service/nvnflinger/hos_binder_driver_server.cpp +@@ -4,6 +4,7 @@ + #include <mutex> + + #include "common/common_types.h" ++#include "common/logging/log.h" + #include "core/hle/service/nvnflinger/hos_binder_driver_server.h" + + namespace Service::Nvnflinger { diff --git a/games-emulation/eden/files/eden-0.0.3_rc2-move-the-definition-of-create_target_directory_group.patch b/games-emulation/eden/files/eden-0.0.3_rc2-move-the-definition-of-create_target_directory_group.patch new file mode 100644 index 0000000000..dabbe6f42b --- /dev/null +++ b/games-emulation/eden/files/eden-0.0.3_rc2-move-the-definition-of-create_target_directory_group.patch @@ -0,0 +1,59 @@ +From: Pavel Sobolev <[email protected]> +Subject: [PATCH] Move the definition of `create_target_directory_groups`. + +This way, the function can be used by the external projects. + +Signed-off-by: Pavel Sobolev <[email protected]> + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -455,6 +455,24 @@ set(FFmpeg_COMPONENTS + avutil + swscale) + ++# This function should be passed a list of all files in a target. It will automatically generate ++# file groups following the directory hierarchy, so that the layout of the files in IDEs matches the ++# one in the filesystem. ++function(create_target_directory_groups target_name) ++ # Place any files that aren't in the source list in a separate group so that they don't get in ++ # the way. ++ source_group("Other Files" REGULAR_EXPRESSION ".") ++ ++ get_target_property(target_sources "${target_name}" SOURCES) ++ ++ foreach(file_name IN LISTS target_sources) ++ get_filename_component(dir_name "${file_name}" PATH) ++ # Group names use '\' as a separator even though the entire rest of CMake uses '/'... ++ string(REPLACE "/" "\\" group_name "${dir_name}") ++ source_group("${group_name}" FILES "${file_name}") ++ endforeach() ++endfunction() ++ + add_subdirectory(externals) + + if (ENABLE_QT) +@@ -628,24 +646,6 @@ endif() + # Include source code + # =================== + +-# This function should be passed a list of all files in a target. It will automatically generate +-# file groups following the directory hierarchy, so that the layout of the files in IDEs matches the +-# one in the filesystem. +-function(create_target_directory_groups target_name) +- # Place any files that aren't in the source list in a separate group so that they don't get in +- # the way. +- source_group("Other Files" REGULAR_EXPRESSION ".") +- +- get_target_property(target_sources "${target_name}" SOURCES) +- +- foreach(file_name IN LISTS target_sources) +- get_filename_component(dir_name "${file_name}" PATH) +- # Group names use '\' as a separator even though the entire rest of CMake uses '/'... +- string(REPLACE "/" "\\" group_name "${dir_name}") +- source_group("${group_name}" FILES "${file_name}") +- endforeach() +-endfunction() +- + # Adjustments for MSVC + Ninja + if (MSVC AND CMAKE_GENERATOR STREQUAL "Ninja") + add_compile_options( diff --git a/games-emulation/eden/files/eden-0.0.3_rc2-relax-the-dependency-on-httplib.patch b/games-emulation/eden/files/eden-0.0.3_rc2-relax-the-dependency-on-httplib.patch new file mode 100644 index 0000000000..d3ec6f1d60 --- /dev/null +++ b/games-emulation/eden/files/eden-0.0.3_rc2-relax-the-dependency-on-httplib.patch @@ -0,0 +1,16 @@ +From: Pavel Sobolev <[email protected]> +Subject: [PATCH] Relax the dependency on `httplib`. + +Signed-off-by: Pavel Sobolev <[email protected]> + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -404,7 +404,7 @@ if (ENABLE_WEB_SERVICE) + endif() + + if (ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER) +- find_package(httplib 0.12 MODULE COMPONENTS OpenSSL) ++ find_package(httplib MODULE COMPONENTS OpenSSL REQUIRED) + endif() + + if (YUZU_TESTS) diff --git a/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-Boost-library.patch b/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-Boost-library.patch new file mode 100644 index 0000000000..1f986652fa --- /dev/null +++ b/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-Boost-library.patch @@ -0,0 +1,16 @@ +From: Pavel Sobolev <[email protected]> +Subject: [PATCH] Use the system `Boost` library. + +Signed-off-by: Pavel Sobolev <[email protected]> + +--- a/externals/CMakeLists.txt ++++ b/externals/CMakeLists.txt +@@ -161,7 +161,7 @@ if (YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS) + endif() + + # Boost headers +-add_subdirectory(boost-headers) ++find_package(Boost COMPONENTS context REQUIRED GLOBAL) + + # TZDB (Time Zone Database) + add_subdirectory(nx_tzdb) diff --git a/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-QuaZip-library.patch b/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-QuaZip-library.patch new file mode 100644 index 0000000000..e0131c621e --- /dev/null +++ b/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-QuaZip-library.patch @@ -0,0 +1,22 @@ +From: Pavel Sobolev <[email protected]> +Subject: [PATCH] Use the system `QuaZip` library. + +Signed-off-by: Pavel Sobolev <[email protected]> + +--- a/src/yuzu/externals/CMakeLists.txt ++++ b/src/yuzu/externals/CMakeLists.txt +@@ -5,13 +5,4 @@ set(BUILD_TESTING OFF) + set(BUILD_SHARED_LIBS OFF) + + # QuaZip +-include(CPM) +-set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm) +-set(CPM_USE_LOCAL_PACKAGES ON) +- +-CPMAddPackage( +- NAME QuaZip-Qt6 +- VERSION 1.3 +- GIT_REPOSITORY "https://github.com/crueter/quazip-qt6.git" +- GIT_TAG v1.5-qt6 +-) ++find_package(QuaZip-Qt6 REQUIRED) diff --git a/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-mbedtls-library.patch b/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-mbedtls-library.patch new file mode 100644 index 0000000000..5ef7617cd4 --- /dev/null +++ b/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-mbedtls-library.patch @@ -0,0 +1,33 @@ +From: Pavel Sobolev <[email protected]> +Subject: [PATCH] Use the system `mbedtls` library. + +Signed-off-by: Pavel Sobolev <[email protected]> + +--- a/externals/CMakeLists.txt ++++ b/externals/CMakeLists.txt +@@ -40,13 +40,7 @@ endif() + add_subdirectory(glad) + + # mbedtls +-add_subdirectory(mbedtls) +-target_include_directories(mbedtls PUBLIC ./mbedtls/include) +-if (NOT MSVC) +- target_compile_options(mbedcrypto PRIVATE +- -Wno-unused-but-set-variable +- -Wno-string-concatenation) +-endif() ++add_library(mbedtls SHARED IMPORTED) + + # MicroProfile + add_library(microprofile INTERFACE) +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -1185,7 +1185,7 @@ else() + endif() + + target_link_libraries(core PUBLIC common PRIVATE audio_core hid_core network video_core nx_tzdb tz) +-target_link_libraries(core PUBLIC Boost::headers PRIVATE fmt::fmt nlohmann_json::nlohmann_json mbedtls RenderDoc::API) ++target_link_libraries(core PUBLIC Boost::headers PRIVATE fmt::fmt nlohmann_json::nlohmann_json mbedtls mbedcrypto RenderDoc::API) + if (MINGW) + target_link_libraries(core PRIVATE ${MSWSOCK_LIBRARY}) + endif() diff --git a/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-sirit-library.patch b/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-sirit-library.patch new file mode 100644 index 0000000000..7d3638126d --- /dev/null +++ b/games-emulation/eden/files/eden-0.0.3_rc2-use-the-system-sirit-library.patch @@ -0,0 +1,16 @@ +From: Pavel Sobolev <[email protected]> +Subject: [PATCH] Use the system `sirit` library. + +Signed-off-by: Pavel Sobolev <[email protected]> + +--- a/externals/CMakeLists.txt ++++ b/externals/CMakeLists.txt +@@ -110,7 +110,7 @@ if (USE_DISCORD_PRESENCE AND NOT TARGET DiscordRPC::discord-rpc) + endif() + + # Sirit +-add_subdirectory(sirit) ++add_library(sirit SHARED IMPORTED) + + # httplib + if ((ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER) AND NOT TARGET httplib::httplib) diff --git a/games-emulation/eden/metadata.xml b/games-emulation/eden/metadata.xml new file mode 100644 index 0000000000..620064929e --- /dev/null +++ b/games-emulation/eden/metadata.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>[email protected]</email> + <name>Pavel Sobolev</name> + </maintainer> + <use> + <flag name="camera">Enable camera support</flag> + <flag name="cubeb">Enable the cubeb audio backend</flag> + <flag name="discord">Enable Discord Rich Presence</flag> + <flag name="sdl">Enable the SDL2 frontend</flag> + <flag name="ssl">Enable OpenSSL backend for ISslConnection</flag> + <flag name="web-applet">Enable web applet support</flag> + <flag name="wifi">Enable Wi-Fi scanning</flag> + </use> + <upstream> + <bugs-to>https://git.eden-emu.dev/eden-emu/eden/issues</bugs-to> + </upstream> +</pkgmetadata>
