push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
{
lib,
stdenv,
fetchFromGitHub,
SDL,
libGL,
libGLU,
libpng,
libX11,
nasm,
pkg-config,
zlib,
udevCheckHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "zsnes2";
version = "2.0.12";
src = fetchFromGitHub {
owner = "xyproto";
repo = "zsnes";
tag = finalAttrs.version;
hash = "sha256-Xz+9YgMpnHyno7vP67aut4tIyG/gTn7SnU2FO2QMND0=";
};
nativeBuildInputs = [
nasm
pkg-config
udevCheckHook
];
buildInputs = [
SDL
libGL
libGLU
libpng
libX11
zlib
];
dontConfigure = true;
env.NIX_CFLAGS_COMPILE = toString [
# Until upstream fixes the issues...
"-Wp,-D_FORTIFY_SOURCE=0"
];
installFlags = [
"PREFIX=${placeholder "out"}"
];
postInstall = ''
install -Dm644 linux/zsnes.desktop $out/share/applications/zsnes.desktop
install -Dm644 icons/16x16x32.png $out/share/icons/hicolor/16x16/apps/zsnes.png
install -Dm644 icons/32x32x32.png $out/share/icons/hicolor/32x32/apps/zsnes.png
install -Dm644 icons/48x48x32.png $out/share/icons/hicolor/48x48/apps/zsnes.png
install -Dm644 icons/64x64x32.png $out/share/icons/hicolor/64x64/apps/zsnes.png
'';
doInstallCheck = true;
meta = {
homepage = "https://github.com/xyproto/zsnes";
description = "Maintained fork of zsnes";
license = lib.licenses.gpl2Plus;
maintainers = [ ];
platforms = lib.intersectLists lib.platforms.linux lib.platforms.x86;
};
})

View File

@@ -0,0 +1,98 @@
{
lib,
stdenv,
fetchFromGitHub,
nasm,
SDL,
zlib,
libpng,
ncurses,
libGLU,
libGL,
makeDesktopItem,
}:
let
desktopItem = makeDesktopItem {
name = "zsnes";
exec = "zsnes";
icon = "zsnes";
comment = "A SNES emulator";
desktopName = "zsnes";
genericName = "zsnes";
categories = [ "Game" ];
};
in
stdenv.mkDerivation {
pname = "zsnes";
version = "1.51";
src = fetchFromGitHub {
owner = "emillon";
repo = "zsnes";
rev = "fc160b2538738995f600f8405d23a66b070dac02";
sha256 = "1gy79d5wdaacph0cc1amw7mqm7i0716n6mvav16p1svi26iz193v";
};
patches = [
./zlib-1.3.patch
./fortify3.patch
];
buildInputs = [
nasm
SDL
zlib
libpng
ncurses
libGLU
libGL
];
prePatch = ''
for i in $(cat debian/patches/series); do
echo "applying $i"
patch -p1 < "debian/patches/$i"
done
'';
# Workaround build failure on -fno-common toolchains:
# ld: initc.o:(.bss+0x28): multiple definition of `HacksDisable'; cfg.o:(.bss+0x59e3): first defined here
# Use pre-c++17 standard (c++17 forbids throw annotations)
env.NIX_CFLAGS_COMPILE = "-fcommon -std=c++14";
preConfigure = ''
cd src
sed -i "/^STRIP/d" configure
sed -i "/\$STRIP/d" configure
'';
configureFlags = [ "--enable-release" ];
postInstall = ''
function installIcon () {
mkdir -p $out/share/icons/hicolor/$1/apps/
cp icons/$1x32.png $out/share/icons/hicolor/$1/apps/zsnes.png
}
installIcon "16x16"
installIcon "32x32"
installIcon "48x48"
installIcon "64x64"
mkdir -p $out/share/applications
ln -s ${desktopItem}/share/applications/* $out/share/applications/
'';
meta = {
description = "Super Nintendo Entertainment System Emulator";
license = lib.licenses.gpl2Plus;
maintainers = [ lib.maintainers.sander ];
homepage = "https://www.zsnes.com";
platforms = [
"i686-linux"
"x86_64-linux"
];
mainProgram = "zsnes";
};
}

View File

@@ -0,0 +1,20 @@
pal16bxcl is an array of 256 dwords, not bytes:
src/endmem.asm:NEWSYM pal16bxcl, resd 256
While at it fixes off-by-4 out of bounds exit.
Detected by _FORTIFY_SOURCE=3:
*** buffer overflow detected ***: terminated
#7 0x08057c14 in memset (__len=2, __ch=255, __dest=<optimized out>) at ...-glibc-2.38-23-dev/include/bits/string_fortified.h:59
#8 clearmem () at initc.c:1461
--- a/src/initc.c
+++ b/src/initc.c
@@ -1389,7 +1389,7 @@ extern unsigned char vidmemch8[4096];
extern unsigned char pal16b[1024];
extern unsigned char pal16bcl[1024];
extern unsigned char pal16bclha[1024];
-extern unsigned char pal16bxcl[256];
+extern unsigned char pal16bxcl[1024];
extern unsigned char SPCRAM[65472];
unsigned char *SPCState = SPCRAM;

View File

@@ -0,0 +1,41 @@
Add support for 2-digit zlib version like "1.3".
--- a/src/acinclude.m4
+++ b/src/acinclude.m4
@@ -67,7 +67,7 @@ char* my_strdup (char *str)
int main (int argc, char *argv[])
{
- int major, minor, micro, zlib_major_version, zlib_minor_version, zlib_micro_version;
+ int major, minor, micro, zlib_major_version, zlib_minor_version, zlib_micro_version = 0;
char *zlibver, *tmp_version;
@@ -85,7 +85,7 @@ int main (int argc, char *argv[])
printf("%s, bad version string for\n\tmin_zlib_version... ", "$min_zlib_version");
exit(1);
}
- if (sscanf(zlibver, "%d.%d.%d", &zlib_major_version, &zlib_minor_version, &zlib_micro_version) != 3) {
+ if (sscanf(zlibver, "%d.%d.%d", &zlib_major_version, &zlib_minor_version, &zlib_micro_version) != 3 && sscanf(zlibver, "%d.%d", &zlib_major_version, &zlib_minor_version) != 2) {
printf("%s, bad version string given\n", zlibver);
puts("\tby zlib, sometimes due to very old zlibs that didnt correctly");
printf("\tdefine their version. Please upgrade if you are running an\n\told zlib... ");
--- a/src/configure
+++ b/src/configure
@@ -3817,7 +3817,7 @@ char* my_strdup (char *str)
int main (int argc, char *argv[])
{
- int major, minor, micro, zlib_major_version, zlib_minor_version, zlib_micro_version;
+ int major, minor, micro, zlib_major_version, zlib_minor_version, zlib_micro_version = 0;
char *zlibver, *tmp_version;
@@ -3835,7 +3835,7 @@ int main (int argc, char *argv[])
printf("%s, bad version string for\n\tmin_zlib_version... ", "$min_zlib_version");
exit(1);
}
- if (sscanf(zlibver, "%d.%d.%d", &zlib_major_version, &zlib_minor_version, &zlib_micro_version) != 3) {
+ if (sscanf(zlibver, "%d.%d.%d", &zlib_major_version, &zlib_minor_version, &zlib_micro_version) != 3 && sscanf(zlibver, "%d.%d", &zlib_major_version, &zlib_minor_version) != 2) {
printf("%s, bad version string given\n", zlibver);
puts("\tby zlib, sometimes due to very old zlibs that didnt correctly");
printf("\tdefine their version. Please upgrade if you are running an\n\told zlib... ");