diff --git a/emulators/86Box/Makefile b/emulators/86Box/Makefile index 9e15cd3f7f9e..8e5d63b186bd 100644 --- a/emulators/86Box/Makefile +++ b/emulators/86Box/Makefile @@ -1,74 +1,81 @@ PORTNAME= 86Box DISTVERSIONPREFIX= v DISTVERSION= 4.2 +PORTREVISION= 1 CATEGORIES= emulators MAINTAINER= tiago.gasiba@gmail.com COMMENT= Emulator of x86-based machines based on PCem WWW= https://86box.net/ LICENSE= GPLv2 LICENSE_FILE= ${WRKSRC}/COPYING ONLY_FOR_ARCHS= amd64 BUILD_DEPENDS= evdev-proto>=5.8:devel/evdev-proto LIB_DEPENDS= libevdev.so:devel/libevdev \ libfluidsynth.so:audio/fluidsynth \ libfreetype.so:print/freetype2 \ libopenal.so:audio/openal-soft \ libpng.so:graphics/png \ librtmidi.so:audio/rtmidi \ libslirp.so:net/libslirp \ libsndfile.so:audio/libsndfile \ libxkbcommon.so:x11/libxkbcommon FLAVORS= qt5 qt6 FLAVOR?= ${FLAVORS:[2]} qt5_PKGNAMESUFFIX= -qt5 qt6_PKGNAMESUFFIX= -qt6 USES= cmake compiler gnome pkgconfig qmake sdl xorg USE_GITHUB= yes USE_GNOME= glib20 USE_SDL= sdl2 USE_XORG= x11 xcb xext xi .if ${FLAVOR} == qt5 USES+= qt:5 -USE_QT= core gui network opengl widgets buildtools:build linguisttools:build +USE_QT= core gui network opengl widgets buildtools:build \ + linguisttools:build .else BUILD_DEPENDS+= vulkan-headers>0:graphics/vulkan-headers USES+= gl qt:6 USE_GL= opengl USE_QT= base tools:build CMAKE_ON= USE_QT6 CXXFLAGS+= -I${LOCALBASE}/include/qt6/QtGui/`pkg-config --modversion Qt6Gui`/QtGui .endif +SUB_FILES= 86Box-install-roms.sh +SUB_LIST= DISTVERSION=${DISTVERSION} \ + DISTVERSIONPREFIX=${DISTVERSIONPREFIX} + OPTIONS_DEFINE= NLS WAYLAND OPTIONS_DEFAULT= WAYLAND NLS_USES= gettext-runtime NLS_CONFIGURE_ENABLE= nls WAYLAND_LIB_DEPENDS= libwayland-client.so:graphics/wayland WAYLAND_USES= kde:5 WAYLAND_USE= kde=ecm:build WAYLAND_CMAKE_OFF= -DCMAKE_DISABLE_FIND_PACKAGE_Wayland:BOOL=ON ICON_RESOLUTIONS= 128x128 192x192 256x256 48x48 512x512 64x64 72x72 96x96 do-install: ${INSTALL_PROGRAM} ${WRKDIR}/.build/src/86Box ${STAGEDIR}${PREFIX}/bin + ${INSTALL_SCRIPT} ${WRKDIR}/86Box-install-roms.sh ${STAGEDIR}${PREFIX}/bin ${REINPLACE_CMD} -e 's|Exec=86Box|Exec=/bin/sh -c "${PREFIX}/bin/86Box -C $${HOME}/86box.cfg"|' \ ${WRKSRC}/src/unix/assets/net.86box.86Box.desktop ${INSTALL_DATA} ${WRKSRC}/src/unix/assets/net.86box.86Box.desktop \ ${STAGEDIR}${DESKTOPDIR} .for F in ${ICON_RESOLUTIONS} ${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/${F}/apps ${INSTALL_DATA} ${WRKSRC}/src/unix/assets/${F}/net.86box.86Box.png \ ${STAGEDIR}${PREFIX}/share/icons/hicolor/${F}/apps .endfor .include diff --git a/emulators/86Box/files/86Box-install-roms.sh.in b/emulators/86Box/files/86Box-install-roms.sh.in new file mode 100644 index 000000000000..0c0cf18f342b --- /dev/null +++ b/emulators/86Box/files/86Box-install-roms.sh.in @@ -0,0 +1,69 @@ +#!/bin/sh + +URL="https://github.com/86Box/roms/archive/refs/tags/%%DISTVERSIONPREFIX%%%%DISTVERSION%%.zip" +DEFAULT_TARGET_DIR="$HOME/.local/share/86Box/" +TARGET_DIR=${TARGET_DIR:-$DEFAULT_TARGET_DIR} + +install_roms() { + if [ -d "$TARGET_DIR" ] && [ "$(ls -A $TARGET_DIR)" ]; then + echo "ROMs already installed in $TARGET_DIR" + echo "To (re)install, please first remove ROMs with -r parameter" + exit 1 + fi + + TMP_DIR=$(mktemp -d) + TMP_FILE="$TMP_DIR/86Box-ROMs.zip" + echo "Fetching ROMs..." + fetch -qo "$TMP_FILE" "$URL" + + if [ $? -ne 0 ]; then + echo "Failed to download the file from $URL" + exit 1 + fi + + echo "Extracting ROMs..." + mkdir -p "$TARGET_DIR" + unzip -q "$TMP_FILE" -d "$TARGET_DIR" + + if [ $? -ne 0 ]; then + echo "Failed to decompress the file" + rm "$TMP_FILE" + exit 1 + fi + + mv "$TARGET_DIR/roms-"* "$TARGET_DIR/roms" + rm -rf "$TMP_DIR" + echo "ROMs installed successfully in $TARGET_DIR" +} + +remove_roms() { + if [ -d "$TARGET_DIR/roms" ]; then + rm -rf "$TARGET_DIR/roms" + echo "ROMs removed successfully from $TARGET_DIR" + else + echo "No ROMs directory found in $TARGET_DIR" + fi +} + +help() { + echo "" + echo "$0 [-h|-i|-r]" + echo " -h : this help" + echo " -i : install ROMs (this parameter can be omitted)" + echo " -r : remove the ROMs" + echo "" +} + +case "$1" in + -h) + help + ;; + -r) + remove_roms + ;; + -i|*) + install_roms + ;; +esac + +exit 0 diff --git a/emulators/86Box/pkg-message b/emulators/86Box/pkg-message new file mode 100644 index 000000000000..3d817927cd34 --- /dev/null +++ b/emulators/86Box/pkg-message @@ -0,0 +1,9 @@ +[ +{ type: install + message: <