From 73afddd2a5f4d15067a4aa08dbf755530763d62b Mon Sep 17 00:00:00 2001 From: Puck Meerburg Date: Wed, 20 Sep 2023 21:17:53 +0000 Subject: [PATCH 1/2] perlPackages.SDL: fix on perl >= 5.38.0 This applies the patch from [1], fixing the most important game in nixpkgs. [1]: https://github.com/PerlGameDev/SDL/pull/304 --- pkgs/top-level/perl-packages.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 8193fd271b1..16e0d438deb 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -21442,6 +21442,13 @@ with self; { url = "mirror://cpan/authors/id/F/FR/FROGGS/SDL-2.548.tar.gz"; hash = "sha256-JSoZK/qcIHCkiDcH0TnDpF2cRRjM1moeaZtbeVm9T7U="; }; + patches = [ + # https://github.com/PerlGameDev/SDL/pull/304 + (fetchpatch { + url = "https://github.com/PerlGameDev/SDL/commit/d734d03862d7dcc776bd2fa3ba662cdd5879b32e.patch"; + hash = "sha256-YjtnAbJxCvx5QckiatZjD8v7dKefG3DCnXeLaNnEO8U="; + }) + ]; perlPreHook = "export LD=$CC"; preCheck = "rm t/core_audiospec.t"; buildInputs = [ pkgs.SDL pkgs.SDL_gfx pkgs.SDL_mixer pkgs.SDL_image pkgs.SDL_ttf pkgs.SDL_Pango pkgs.SDL_net AlienSDL CaptureTiny TestDeep TestDifferences TestException TestMost TestWarn ]; From 5742d5a8fdee5dd31035b9b497458f1eea931a5b Mon Sep 17 00:00:00 2001 From: Puck Meerburg Date: Thu, 21 Sep 2023 09:14:44 +0000 Subject: [PATCH 2/2] perlPackages.SDL: import patch --- .../perl-modules/sdl-modern-perl.patch | 64 +++++++++++++++++++ pkgs/top-level/perl-packages.nix | 5 +- 2 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 pkgs/development/perl-modules/sdl-modern-perl.patch diff --git a/pkgs/development/perl-modules/sdl-modern-perl.patch b/pkgs/development/perl-modules/sdl-modern-perl.patch new file mode 100644 index 00000000000..c97eeb03448 --- /dev/null +++ b/pkgs/development/perl-modules/sdl-modern-perl.patch @@ -0,0 +1,64 @@ +From d734d03862d7dcc776bd2fa3ba662cdd5879b32e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Wed, 12 Jul 2023 17:55:27 +0200 +Subject: [PATCH] Adapt to perl 5.37.1 + +Perl 5.37.1 removed a deprecated sv_nv() macro and SDL fails to build +with Perl 5.38.0: + +lib/SDLx/Controller/Interface.xs:60:26: error: implicit declaration of function 'sv_nv' + 60 | out->dv_x = sv_nv(temp); + | ^~~~~ + +Users are advised to use SvNVx() macro instead. SvNVx() seems to have been +available all the time (it predates a commit from 1993-10-07). + +This patch does that. + +https://github.com/PerlGameDev/SDL/issues/303 +--- + src/SDLx/Controller/Interface.xs | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/SDLx/Controller/Interface.xs b/src/SDLx/Controller/Interface.xs +index 3dc202b7..d326c885 100644 +--- a/src/SDLx/Controller/Interface.xs ++++ b/src/SDLx/Controller/Interface.xs +@@ -57,15 +57,15 @@ void evaluate(SDLx_Interface *obj, SDLx_Derivative *out, SDLx_State *initial, fl + + SV *temp; + temp = av_pop(accel); +- out->dv_x = sv_nv(temp); ++ out->dv_x = SvNVx(temp); + SvREFCNT_dec(temp); + + temp = av_pop(accel); +- out->dv_y = sv_nv(temp); ++ out->dv_y = SvNVx(temp); + SvREFCNT_dec(temp); + + temp = av_pop(accel); +- out->dang_v = sv_nv(temp); ++ out->dang_v = SvNVx(temp); + SvREFCNT_dec(temp); + + SvREFCNT_dec((SV *)accel); +@@ -90,15 +90,15 @@ void evaluate_dt(SDLx_Interface *obj, SDLx_Derivative *out, SDLx_State *initial, + + SV *temp; + temp = av_pop(accel); +- out->dv_x = sv_nv(temp); ++ out->dv_x = SvNVx(temp); + SvREFCNT_dec(temp); + + temp = av_pop(accel); +- out->dv_y = sv_nv(temp); ++ out->dv_y = SvNVx(temp); + SvREFCNT_dec(temp); + + temp = av_pop(accel); +- out->dang_v = sv_nv(temp); ++ out->dang_v = SvNVx(temp); + SvREFCNT_dec(temp); + + SvREFCNT_dec((SV *)accel); diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 16e0d438deb..b45f7aff115 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -21444,10 +21444,7 @@ with self; { }; patches = [ # https://github.com/PerlGameDev/SDL/pull/304 - (fetchpatch { - url = "https://github.com/PerlGameDev/SDL/commit/d734d03862d7dcc776bd2fa3ba662cdd5879b32e.patch"; - hash = "sha256-YjtnAbJxCvx5QckiatZjD8v7dKefG3DCnXeLaNnEO8U="; - }) + ../development/perl-modules/sdl-modern-perl.patch ]; perlPreHook = "export LD=$CC"; preCheck = "rm t/core_audiospec.t";