From 846908867fa66ad98b3cbcd05c7e976af2ec6fd3 Mon Sep 17 00:00:00 2001 From: Yuan Liao Date: Fri, 3 Jan 2025 08:29:22 -0500 Subject: [PATCH] games-emulation/dosbox-x: Add 2025.01.01 Signed-off-by: Yuan Liao --- games-emulation/dosbox-x/Manifest | 1 + .../dosbox-x/dosbox-x-2025.01.01.ebuild | 216 ++++++++++++++++++ 2 files changed, 217 insertions(+) create mode 100644 games-emulation/dosbox-x/dosbox-x-2025.01.01.ebuild diff --git a/games-emulation/dosbox-x/Manifest b/games-emulation/dosbox-x/Manifest index 6b6cd8a96a..91efa26244 100644 --- a/games-emulation/dosbox-x/Manifest +++ b/games-emulation/dosbox-x/Manifest @@ -1,2 +1,3 @@ DIST dosbox-x-v2024.10.01.tar.gz 121316697 BLAKE2B 27e653fe341146c71ed4059b8aba6660c06e41f39635c9d3e08a215793b31e3f28b4e7ba923cc8cc644357f92bdcfc20d604e61a15fb0c995b047129d857e437 SHA512 8a0a27476b27197ed942e60915749589324199fd89eabd0377ff7aadf293630db292a9eb6304336da87220092cfee3975259660623ecd0d775aa13938fd43658 DIST dosbox-x-v2024.12.04.tar.gz 121318659 BLAKE2B 632218c2be7a7cb12d1fc865af59699af463b70ca76d739ea9837eb6ca80c87f4a04436000090c1ff1e98076cdc92f3f27cb2e4d0e47e00b413363bd0a3d9ce5 SHA512 698dc67f43be9f64f3d987b7c4cdc0e1217ce1386e405e6ca70c97346cf02abe65a68a097bb765502f8802930f12e3bcebca00aa1037c97d9c778fc79a3a9bda +DIST dosbox-x-v2025.01.01.tar.gz 121975330 BLAKE2B 6c214efe15e66d18f0253f9da7b3b2da7116f285e5154925f5ca69e382a0070399de46068e746d14981ff0ca66c58ec7a4259a596edf1b75da6a165d2233ce87 SHA512 01a4c34ab711edbc82b76a1a4d3ee261945b6475ed76e49af8d0dc1d17956a59715820c189226564bb7ba3e01df654b11e63d696d15c4151a720cbfd3785a118 diff --git a/games-emulation/dosbox-x/dosbox-x-2025.01.01.ebuild b/games-emulation/dosbox-x/dosbox-x-2025.01.01.ebuild new file mode 100644 index 0000000000..4bcf296beb --- /dev/null +++ b/games-emulation/dosbox-x/dosbox-x-2025.01.01.ebuild @@ -0,0 +1,216 @@ +# Copyright 2022-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools toolchain-funcs xdg + +if [[ "${PV}" == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/joncampbell123/dosbox-x.git" +else + SRC_URI="https://github.com/joncampbell123/dosbox-x/archive/dosbox-x-v${PV}.tar.gz" + S="${WORKDIR}/${PN}-${PN}-v${PV}" + KEYWORDS="~amd64" +fi + +DESCRIPTION="Complete, accurate DOS emulator forked from DOSBox" +HOMEPAGE="https://dosbox-x.com/" + +# Stay consistent with games-emulation/dosbox::gentoo even though source file +# headers specify the GPL version to be "either version 2 of the License, or +# (at your option) any later version." The same header is used in both the +# DOSBox source tree and the DOSBox-X source tree. +LICENSE="GPL-2" +SLOT="0" + +IUSE="X debug ffmpeg fluidsynth opengl png slirp truetype" +# Unit tests are only available in debug builds +RESTRICT="!debug? ( test )" + +BDEPEND=" + dev-lang/nasm + sys-libs/libcap +" + +# Unconditionally pulling in automagically-enabled optional dependencies: +# - media-libs/alsa-lib +# - media-libs/sdl2-net +# - net-libs/libpcap +# +# With media-libs/libsdl2[-X,wayland], this package does work on a Wayland +# desktop, but (at least on GNOME) the program does not launch in a movable +# and resizable window; whereas with media-libs/libsdl2[X], it does. Thus, +# unconditionally require media-libs/libsdl2[X] for better user experience. +# +# DOSBox-X works with multiple audio backends of SDL 2 but requires at least +# one available backend (https://bugs.gentoo.org/901303). Unconditionally +# depending on media-libs/libsdl2[alsa] to satisfy this requirement since +# this ebuild already unconditionally pulls in media-libs/alsa-lib. +COMMON_DEPEND=" + media-libs/alsa-lib + media-libs/libsdl2[X,alsa,opengl?,sound,threads(+),video] + media-libs/sdl2-net + net-libs/libpcap + sys-libs/zlib + X? ( + x11-libs/libX11 + x11-libs/libXrandr + x11-libs/libxkbfile + ) + debug? ( sys-libs/ncurses:= ) + ffmpeg? ( media-video/ffmpeg:= ) + fluidsynth? ( media-sound/fluidsynth:= ) + opengl? ( media-libs/libglvnd[X] ) + png? ( media-libs/libpng:= ) + slirp? ( net-libs/libslirp ) + truetype? ( media-libs/freetype ) +" + +DEPEND=" + ${COMMON_DEPEND} +" + +# DOSBox-X can still run normally without any of these dependencies -- +# it just cannot show a file dialog. However, upon the initial launch, +# DOSBox-X will try to show a file dialog to let the user choose the +# working directory; without one of these dependencies, the user would +# see nothing when they launch DOSBox-X for the first time. +FILE_DIALOG_DEPEND=" + || ( + gnome-extra/zenity + kde-apps/kdialog + x11-misc/xdialog + ) +" + +RDEPEND=" + ${COMMON_DEPEND} + ${FILE_DIALOG_DEPEND} +" + +pkg_pretend() { + if use ffmpeg && use !png; then + ewarn "Setting the 'ffmpeg' USE flag when the 'png' USE flag is" + ewarn "unset does not have any effect. Unsetting the 'png' USE" + ewarn "flag disables the video capture feature, so additional" + ewarn "video capture formats enabled by the 'ffmpeg' USE flag" + ewarn "will end up being unused." + fi +} + +src_prepare() { + default + + # https://bugs.gentoo.org/887669 + # Mask lines touching '-O*', and avoid creating an empty command + # list as a result to not break 'if', 'for', or functions + sed -i -E -e 's/((C|CXX)FLAGS=.*-O)/: \1/' configure.ac || + die "Failed to stop configure.ac from touching '-O*' compiler flags" + + eautoreconf +} + +src_configure() { + local myconf=( + # Always use SDL 2, even though the package provides the option to + # build with SDL 1.x, because this package is expected to be built + # with the bundled, heavily-modified version of SDL 1.x if that + # branch is used. Compiler errors are likely to occur if the + # bundled version of SDL 1.x is not used. Bundled dependencies + # should be avoided on Gentoo, so SDL 2 is more preferable. + --enable-sdl2 + + # Explicitly enable ALSA MIDI support, same as default. As of + # v2022.08.0, even when it is disabled, media-libs/alsa-lib will + # still be automagically linked if it is present in the build + # environment (presumably for other components of this package), + # so the dependency cannot be made optional by disabling this + # option. Plus, disabling this option has no observable effect + # on build time, build size, or the program's functionality, as + # 'mididevice=alsa' still works with '--disable-alsa-midi'. + --enable-alsa-midi + + $(use_enable debug '' heavy) + + $(use_enable X x11) + $(use_enable ffmpeg avcodec) + $(use_enable fluidsynth libfluidsynth) + $(use_enable opengl) + $(use_enable png screenshots) + $(use_enable slirp libslirp) + $(use_enable truetype freetype) + ) + + econf "${myconf[@]}" +} + +src_compile() { + # https://bugs.gentoo.org/856352 + emake AR="$(tc-getAR)" +} + +src_test() { + xdg_environment_reset # Tests may create config files in XDG_CONFIG_HOME + set -- src/dosbox-x -tests + echo "${@}" >&2 + "${@}" || die "Unit tests failed" +} + +pkg_preinst() { + xdg_pkg_preinst + + # Returns whether or not the USE flag specified with the first positional + # argument is newly enabled for this installation of the package. + newuse() { + local flag="${1}" + + # The 'has_version' call tests if any USE flags are newly enabled. + # It is to extract information about any existing copy of this + # package installed on the system, which is why it should be made + # before the new copy of this package just built is merged. + use "${flag}" && ! has_version "${CATEGORY}/${PN}[${flag}]" + } + + newuse debug && PRINT_NOTES_FOR_DEBUGGER=1 + newuse fluidsynth && PRINT_NOTES_FOR_FLUIDSYNTH=1 +} + +pkg_postinst() { + xdg_pkg_postinst + + if [[ "${PRINT_NOTES_FOR_DEBUGGER}" ]]; then + elog + elog "Note on the Debugger" + elog + elog "The debugger can only be started when DOSBox-X is launched" + elog "from a terminal. Otherwise, the \"Start DOSBox-X Debugger\"" + elog "option in the \"Debug\" drop-down menu would be unavailable." + elog + elog "For more information about the debugger, please consult:" + elog " ${EPREFIX}/usr/share/doc/${PF}/README.debugger*" + fi + + if [[ "${PRINT_NOTES_FOR_FLUIDSYNTH}" ]]; then + elog + elog "Note on FluidSynth" + elog + elog "To use FluidSynth as the MIDI device for DOSBox-X, a soundfont" + elog "is required. If no existing soundfont is available, a new one" + elog "can be installed and configured for DOSBox-X very easily:" + elog + elog "1. Install the following package:" + elog " media-sound/fluid-soundfont" + elog "2. Add the following lines to DOSBox-X's configuration file:" + elog " [midi]" + elog " mididevice=fluidsynth" + elog + elog "Usually, there is no need to explicitly specify the soundfont" + elog "file's path because the package mentioned in step 1 installs" + elog "soundfont files to a standard location, allowing them to be" + elog "detected and selected automatically." + elog + elog "For advanced FluidSynth configuration, please consult:" + elog " https://dosbox-x.com/wiki/Guide%3ASetting-up-MIDI-in-DOSBox%E2%80%90X#_fluidsynth" + fi +}