aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--games/zsnes/0012-Fix-build-with-gcc-4.7.patch24
-rw-r--r--games/zsnes/README19
-rw-r--r--games/zsnes/doinst.sh4
-rw-r--r--games/zsnes/sbo.diff71
-rw-r--r--games/zsnes/slack-desc6
-rw-r--r--games/zsnes/zsnes-1.51-libpng15.patch12
-rw-r--r--games/zsnes/zsnes.SlackBuild178
-rw-r--r--games/zsnes/zsnes.desktop12
-rw-r--r--games/zsnes/zsnes.info10
-rw-r--r--games/zsnes/zsnes.pngbin8010 -> 0 bytes
10 files changed, 174 insertions, 162 deletions
diff --git a/games/zsnes/0012-Fix-build-with-gcc-4.7.patch b/games/zsnes/0012-Fix-build-with-gcc-4.7.patch
deleted file mode 100644
index 2c29f5be4348..000000000000
--- a/games/zsnes/0012-Fix-build-with-gcc-4.7.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From: Etienne Millon <etienne.millon@gmail.com>
-Date: Thu, 12 Apr 2012 18:01:45 +0200
-Subject: Fix build with gcc 4.7
-
-Headers in the new C++ library do not implicitly import unistd.h, so it is
-necessary to do it in the source.
-
-Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=667429
----
- src/tools/depbuild.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/tools/depbuild.cpp b/src/tools/depbuild.cpp
-index 1e4bbc5..ea0854c 100644
---- a/src/tools/depbuild.cpp
-+++ b/src/tools/depbuild.cpp
-@@ -25,6 +25,7 @@ This program generates dependencies for all C/C++/Assembly files
- #include <string>
- #include <cstdio>
- #include <cstdlib>
-+#include <unistd.h>
- using namespace std;
-
- #include "fileutil.h"
diff --git a/games/zsnes/README b/games/zsnes/README
index 8b29ccbba8cb..ad29c79ef8ad 100644
--- a/games/zsnes/README
+++ b/games/zsnes/README
@@ -3,10 +3,23 @@ zsnes (SNES emulator)
ZSNES is a Super Nintendo emulator programmed by zsKnight and _Demo_.
On April 2, 2001 the ZSNES project was GPL'ed and its source released
to the public. It currently runs on Windows, Linux, FreeBSD, and DOS.
-Remember that this is a public beta so don't expect this to run on
-your machine.
-Note to 64-bit users: zsnes can't be built for 64-bit, and it's no
+The original zsnes developers' last release was 1.51, in 2007. This
+build is for xyproto's fork, which is still maintained as of 2023, and
+has several bugfixes and minor enhancements.
+
+Build options (environment variables):
+
+- AO=no - disable libao for audio output. Removes all audio output
+drivers except SDL. Probably not useful.
+
+- DEBUGGER=no - disable the built-in debugger. May give a slight speed
+boost on old/slow systems.
+
+Note to x86_64 users: zsnes can't be built for 64-bit, and it's no
longer practical to provide a static binary as was done in the past.
It should be possible to build zsnes if you install multilib, though
the SlackBuild maintainer hasn't tested this.
+
+Note to ARM/aarch64 users: because zsnes is partially written in x86
+assembly, it can't be built for ARM.
diff --git a/games/zsnes/doinst.sh b/games/zsnes/doinst.sh
index 5934a15ab1ef..65c7e2eeb9aa 100644
--- a/games/zsnes/doinst.sh
+++ b/games/zsnes/doinst.sh
@@ -1,9 +1,9 @@
if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database -q usr/share/applications
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
if [ -x /usr/bin/gtk-update-icon-cache ]; then
- /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
fi
fi
diff --git a/games/zsnes/sbo.diff b/games/zsnes/sbo.diff
new file mode 100644
index 000000000000..97a8fbbe3aa3
--- /dev/null
+++ b/games/zsnes/sbo.diff
@@ -0,0 +1,71 @@
+diff -Naur zsnes-2.0.12/Makefile zsnes-2.0.12.patched/Makefile
+--- zsnes-2.0.12/Makefile 2023-05-03 08:02:58.000000000 -0400
++++ zsnes-2.0.12.patched/Makefile 2023-11-14 03:21:25.391574152 -0500
+@@ -408,10 +408,10 @@
+ @echo "LDFLAGS = $(LDFLAGS)"
+
+ install:
+- install -Dm755 zsnes '$(DESTDIR)$(PREFIX)/bin/zsnes'
++ install -s -Dm755 zsnes '$(DESTDIR)$(PREFIX)/games/zsnes'
+ for ICON_SIZE in 16x16 32x32 48x48 64x64 128x128; do \
+ install -Dm644 icons/$${ICON_SIZE}x32.png "$(DESTDIR)$(PREFIX)/share/icons/hicolor/$$ICON_SIZE/apps/io.github.xyproto.zsnes.png" ; \
+ done
+- install -Dm755 linux/zsnes.desktop '$(DESTDIR)$(PREFIX)/share/applications/io.github.xyproto.zsnes.desktop'
+- install -Dm755 linux/io.github.xyproto.zsnes.metainfo.xml -t '$(DESTDIR)$(PREFIX)/share/metainfo'
+- install -Dm644 man/zsnes.1 '$(DESTDIR)$(PREFIX)/share/man/man1/zsnes.1'
++ install -Dm644 linux/zsnes.desktop '$(DESTDIR)$(PREFIX)/share/applications/io.github.xyproto.zsnes.desktop'
++ install -Dm644 linux/io.github.xyproto.zsnes.metainfo.xml -t '$(DESTDIR)$(PREFIX)/share/metainfo'
++ install -Dm644 man/zsnes.1 '$(DESTDIR)$(PREFIX)/man/man6/zsnes.6'
+diff -Naur zsnes-2.0.12/linux/zsnes.desktop zsnes-2.0.12.patched/linux/zsnes.desktop
+--- zsnes-2.0.12/linux/zsnes.desktop 2023-05-03 08:02:58.000000000 -0400
++++ zsnes-2.0.12.patched/linux/zsnes.desktop 2023-11-14 03:21:25.392574152 -0500
+@@ -3,8 +3,8 @@
+ Type=Application
+ Name=ZSNES
+ Comment=Super Nintendo emulator
+-Exec=zsnes %f
+-TryExec=zsnes
++Exec=/usr/games/zsnes %f
++TryExec=/usr/games/zsnes
+ Icon=io.github.xyproto.zsnes
+ Terminal=false
+ StartupNotify=false
+diff -Naur zsnes-2.0.12/man/zsnes.1 zsnes-2.0.12.patched/man/zsnes.1
+--- zsnes-2.0.12/man/zsnes.1 2023-05-03 08:02:58.000000000 -0400
++++ zsnes-2.0.12.patched/man/zsnes.1 2023-11-14 03:24:07.337558911 -0500
+@@ -1,4 +1,4 @@
+-.TH "ZSNES 2.0.12" 1
++.TH ZSNES "6" "November 2023" "2.0.12" "SlackBuilds.org"
+
+ .SH NAME
+ ZSNES - Super Nintendo console emulator
+@@ -10,7 +10,15 @@
+ .B ZSNES
+ is an emulator for the Super Nintendo video game console. It is written in a combination of x86 assembly, C, C++, and PSR. It is currently available on Windows, DOS, x86 Linux, x86 Mac OS X, and x86 BSD.
+
+-Visit http://www.zsnes.com/ for the latest updates.
++Visit https://github.com/xyproto/zsnes for the latest updates.
++
++.B Note:
++This man page hasn't been updated in a long time; see the output
++of
++.B
++zsnes --help
++for a complete, up-to-date list of options. Also, some of the URLs
++listed here no longer work.
+
+ .SH OPTIONS
+ Note: Many of these options can also be set in the GUI.
+@@ -204,10 +212,10 @@
+ http://zsnes-docs.sf.net/
+ .TP
+ ZSNES IRC:
+-#zsnes on irc.freenode.net
++#zsnes on irc.libera.chat
+ .TP
+ ZSNES Docs IRC:
+-#zsnes-docs on irc.freenode.net
++#zsnes-docs on irc.libera.chat
+
+ .SH "COPYRIGHT NOTICE"
+ Copyright \(co 1997-2008 ZSNES Team
diff --git a/games/zsnes/slack-desc b/games/zsnes/slack-desc
index 0c4a74c25572..d74e01afa7f8 100644
--- a/games/zsnes/slack-desc
+++ b/games/zsnes/slack-desc
@@ -11,9 +11,9 @@ zsnes:
zsnes: ZSNES is a Super Nintendo emulator programmed by zsKnight and _Demo_.
zsnes: On April 2, 2001 the ZSNES project was GPL'ed and its source released
zsnes: to the public. It currently runs on Windows, Linux, FreeBSD, and DOS.
-zsnes: Remember that this is a public beta so don't expect this to run on
-zsnes: your machine.
+zsnes: This is xyproto's fork, still maintained as of 2023.
zsnes:
-zsnes: Homepage: http://www.zsnes.com
+zsnes: Build options: AO=@A@, DEBUGGER=@D@
zsnes:
+zsnes: Homepage: https://github.com/xyproto/zsnes
zsnes:
diff --git a/games/zsnes/zsnes-1.51-libpng15.patch b/games/zsnes/zsnes-1.51-libpng15.patch
deleted file mode 100644
index b32c30967547..000000000000
--- a/games/zsnes/zsnes-1.51-libpng15.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Use existing png_set_IHDR() and stop accessing PNG structure members directly
-
---- src/zip/zpng.c
-+++ src/zip/zpng.c
-@@ -129,7 +129,6 @@
- png_set_IHDR(png_ptr, info_ptr, width, height, 8,
- PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE,
- PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
-- info_ptr->color_type = PNG_COLOR_TYPE_RGB;
-
- //Allocate an array of scanline pointers
- row_pointers = (png_bytep*)malloc(height*sizeof(png_bytep));
diff --git a/games/zsnes/zsnes.SlackBuild b/games/zsnes/zsnes.SlackBuild
index c3aa081f8728..40508e9927d1 100644
--- a/games/zsnes/zsnes.SlackBuild
+++ b/games/zsnes/zsnes.SlackBuild
@@ -2,53 +2,27 @@
# Slackware build script for zsnes
-# Copyright (c) 2008, Antonio Hernández Blas <email removed>
-# Copyright (c) 2010, 2012, Carlos Corbacho <email removed>
-# Copyright (c) 2018, B. Watson <urchlay@slackware.uk>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-# 1.- Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# 20211230 bkw:
-# - statifier's never going to work on current/15.0, its author hasn't
-# updated it since 2016. so get rid of the 64-bit download and code
-# to support it. sorry.
-
-# 20211215 bkw: BUILD=5
-# - fix -current 32-bit build.
-# - new-style icons.
-# - TODO: statified binary needs updating. Except statifier seems not
-# to work on -current. Sigh.
-# - TODO: investigate fork: https://github.com/xyproto/zsnes
-
-# 20180123 bkw: Finally, 64-bit support! Sort-of. Using a dirty hack.
-# Also, move binary to /usr/games and man page to section 6.
+# Written by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# Note: this is a completely new-from-template znes.SlackBuild,
+# written from scratch, for the "LTS" 2.x fork from xyproto. It shares
+# no code with the old zsnes.SlackBuild for the 1.51 release.
+
+# TODO: build a static 32-bit binary for x86_64 users. Can't be done
+# on Slackware (we don't have static X11, SDL, png16, nor GL libs),
+# but maybe it could be done on some other distro (one that uses musl,
+# maybe), then hosted as a DOWNLOAD_X86_64.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=zsnes
-VERSION=${VERSION:-1.51b}
-BUILD=${BUILD:-5}
+VERSION=${VERSION:-2.0.12}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-ZSNESSRC="$(echo $VERSION | tr -d .)src"
-ZSNESDIR="_$(echo $VERSION | tr . _)"
-
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
@@ -57,87 +31,89 @@ if [ -z "$ARCH" ]; then
esac
fi
+# No SLKCFLAGS here. Upstream's got a set of flags they've tested with,
+# and most of the code's in asm anyway.
+case "$ARCH" in
+ i?86) ;;
+ x86_64) MULTI=yes ;;
+ *) BADARCH=yes ;;
+esac
+
+# Hang on to this for use in error message, below.
+OLDARCH="$ARCH"
+
+# Always uses MMX extensions so i686 is correct.
+# PRINT_PACKAGE_NAME and the actual package name will always say i686.
+ARCH="i686"
+
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
+if [ "$MULTI" = "yes" ]; then
+ echo "=== Attempting multilib build on $OLDARCH..."
+ CTEST=$TMP/`mcookie`.c
+ echo 'main(){}' > $CTEST
+ if ! gcc -w -m32 -o /dev/null $CTEST 2>/dev/null; then
+ echo "*** You don't have multilib installed, bailing."
+ exit 1
+ fi
+ echo "=== Multilib gcc is installed..."
+ rm -f $CTEST
+fi
+
+if [ "$BADARCH" = "yes" ]; then
+ echo "*** Sorry, $PRGNAM can't be built on $OLDARCH." ; exit 1
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
-else
- printf "\n Error: $PRGNAM won't compile on $ARCH\n\n"
- exit 1
-fi
-
set -e
rm -rf $PKG
-mkdir -p $TMP $PKG/usr $OUTPUT
+mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM$ZSNESSRC.tar.bz2
-# Fix the directory tree in zsnes:
-mv $PRGNAM$ZSNESDIR $PRGNAM-$VERSION
-mv $PRGNAM-$VERSION/src/* $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
-
chown -R root:root .
-find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
- \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
-
-# GCC 4.7 fixes from Debian
-cat $CWD/0012-Fix-build-with-gcc-4.7.patch | patch -p2 --verbose
-
-# Fix for libpng16 (thanks to Arch Linux)
-# https://projects.archlinux.org/svntogit/community.git/plain/trunk/zsnes-1.51-libpng15.patch?h=packages/zsnes
-patch -p1 < $CWD/zsnes-1.51-libpng15.patch
-
-CFLAGS="$SLKCFLAGS -fcommon -std=c++11" \
-force_arch="$ARCH" \
-./configure \
- --prefix=/usr \
- --enable-release \
- --disable-cpucheck \
- --disable-debugger
-
-CFLAGS="$SLKCFLAGS -fcommon -std=c++11" \
-force_arch="$ARCH" \
-make
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} +
+
+# Patch does these things:
+# - Install binary to /usr/games
+# - Fix install permissions for icon, .desktop, metainfo (no +x).
+# - Install man page to /usr/man (not /usr/share/man)
+# - Change the section in the man page to 6, install in man6.
+# - Use the github URL in the man page, not zsnes.com.
+# - Use full path to binary in .desktop file.
+# I wanted to build a static binary, but Slackware doesn't ship a
+# full set of static libs, plus glibc's getpwnam() and getpwuid()
+# are used (which use dlopen() to load a shared lib at runtime).
+patch -p1 < $CWD/sbo.diff
+
+# Build options.
+# Disabling WITH_AO doesn't seem particularly useful, but allow it.
+# Disabling WITH_DEBUGGER might make sense for slow systems.
+A=no ; D=no
+[ "${AO:-yes}" = "yes" ] && ARGS+="WITH_AO=yes " && A=yes
+[ "${DEBUGGER:-yes}" = "yes" ] && ARGS+="WITH_DEBUGGER=yes " && D=yes
+echo "::: running: make $ARGS"
+
+make $ARGS
make install DESTDIR=$PKG
-mv $PKG/usr/bin $PKG/usr/games # configure ignores --bindir, grr!
-strip $PKG/usr/games/$PRGNAM
-
-# Man page belongs in section 6, since this is a game.
-mkdir -p $PKG/usr/man/man6
-sed '/^\.TH/s,1$,6,' $PKG/usr/man/man1/$PRGNAM.1 | \
- gzip -9c > $PKG/usr/man/man6/$PRGNAM.6.gz
-rm -rf $PKG/usr/man/man1
-
-# Add a .desktop file and icon for good menu integration
-mkdir -p $PKG/usr/share/applications $PKG/usr/share/pixmaps
-install -m 0644 $CWD/zsnes.desktop $PKG/usr/share/applications/zsnes.desktop
-
-for px in 16 32 48 64; do
- size=${px}x${px}
- dir=$PKG/usr/share/icons/hicolor/$size/apps
- mkdir -p $dir
- convert -resize $size $CWD/$PRGNAM.png $dir/$PRGNAM.png
-done
-
-ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png
+gzip -9 $PKG/usr/man/man*/*
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a docs/* $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a COPYING* README* TODO* $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
+sed -e "s,@A@,$A," -e "s,@D@,$D," < $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
diff --git a/games/zsnes/zsnes.desktop b/games/zsnes/zsnes.desktop
deleted file mode 100644
index 5d956ff6c4e3..000000000000
--- a/games/zsnes/zsnes.desktop
+++ /dev/null
@@ -1,12 +0,0 @@
-[Desktop Entry]
-Name=ZSNES
-Comment=SNES Emulator
-Exec=zsnes
-Icon=zsnes
-Terminal=false
-Type=Application
-Categories=Game;Emulator;
-StartupNotify=false
-GenericName=ZSNES Emulator
-X-KDE-StartupNotify=false
-X-DCOP-ServiceType=Multi
diff --git a/games/zsnes/zsnes.info b/games/zsnes/zsnes.info
index e94ab52cc541..4677393f0267 100644
--- a/games/zsnes/zsnes.info
+++ b/games/zsnes/zsnes.info
@@ -1,9 +1,9 @@
PRGNAM="zsnes"
-VERSION="1.51b"
-HOMEPAGE="http://www.zsnes.com"
-DOWNLOAD="http://zsnes.sf.net/zsnes151bsrc.tar.bz2"
-MD5SUM="904ee432f378609176ed30c01cf6ea28"
-DOWNLOAD_x86_64="UNSUPPORTED"
+VERSION="2.0.12"
+HOMEPAGE="https://github.com/xyproto/zsnes"
+DOWNLOAD="https://github.com/xyproto/zsnes/archive/2.0.12/zsnes-2.0.12.tar.gz"
+MD5SUM="6c28a252c887f1d697c1baa960a1db98"
+DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
diff --git a/games/zsnes/zsnes.png b/games/zsnes/zsnes.png
deleted file mode 100644
index 24c47f4a9335..000000000000
--- a/games/zsnes/zsnes.png
+++ /dev/null
Binary files differ