From 42ebd9dfae490b95f99e110354f759e26cd2e745 Mon Sep 17 00:00:00 2001 From: Christian Krause Date: Jul 04 2021 20:37:57 +0000 Subject: Rebuilt for fluidsynth soname bump (#1976457) Add upstream patches to support fluidsynth 2.2 Add upstream patch to fix compile issue on non-x86 architectures Correct LGPLv2+ license tag --- diff --git a/0001-AUDIO-Fix-compilation-with-Fluidsynth2.patch b/0001-AUDIO-Fix-compilation-with-Fluidsynth2.patch new file mode 100644 index 0000000..1de7885 --- /dev/null +++ b/0001-AUDIO-Fix-compilation-with-Fluidsynth2.patch @@ -0,0 +1,30 @@ +From 6ef406ac20a68f53e66bb98a0c9842dc9553da07 Mon Sep 17 00:00:00 2001 +From: Thierry Crozat +Date: Tue, 9 Mar 2021 11:32:57 +0000 +Subject: [PATCH] AUDIO: Fix compilation with Fluidsynth2 + +--- + audio/softsynth/fluidsynth.cpp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/audio/softsynth/fluidsynth.cpp b/audio/softsynth/fluidsynth.cpp +index 215547c6ba..3b9f553464 100644 +--- a/audio/softsynth/fluidsynth.cpp ++++ b/audio/softsynth/fluidsynth.cpp +@@ -46,7 +46,12 @@ + #include "backends/platform/ios7/ios7_common.h" + #endif + +-static void logHandler(int level, char *message, void *data) { ++#if defined(FLUIDSYNTH_VERSION_MAJOR) && FLUIDSYNTH_VERSION_MAJOR > 1 ++static void logHandler(int level, const char *message, void *data) ++#else ++static void logHandler(int level, char *message, void *data) ++#endif ++{ + switch (level) { + case FLUID_PANIC: + error("FluidSynth: %s", message); +-- +2.26.3 + diff --git a/0001-FLUIDSYNTH-Fix-build.patch b/0001-FLUIDSYNTH-Fix-build.patch new file mode 100644 index 0000000..fe38dc8 --- /dev/null +++ b/0001-FLUIDSYNTH-Fix-build.patch @@ -0,0 +1,25 @@ +From a3bc5d64b8c4041326c8a214c47f9a206fb8b693 Mon Sep 17 00:00:00 2001 +From: sluicebox <22204938+sluicebox@users.noreply.github.com> +Date: Mon, 8 Mar 2021 21:00:59 -0800 +Subject: [PATCH] FLUIDSYNTH: Fix build + +--- + audio/softsynth/fluidsynth.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/audio/softsynth/fluidsynth.cpp b/audio/softsynth/fluidsynth.cpp +index e41a7515b2..215547c6ba 100644 +--- a/audio/softsynth/fluidsynth.cpp ++++ b/audio/softsynth/fluidsynth.cpp +@@ -46,7 +46,7 @@ + #include "backends/platform/ios7/ios7_common.h" + #endif + +-static void logHandler(int level, const char *message, void *data) { ++static void logHandler(int level, char *message, void *data) { + switch (level) { + case FLUID_PANIC: + error("FluidSynth: %s", message); +-- +2.26.3 + diff --git a/0001-FLUIDSYNTH-Fix-compilation-with-Fluidsynth-2.2.patch b/0001-FLUIDSYNTH-Fix-compilation-with-Fluidsynth-2.2.patch new file mode 100644 index 0000000..511b6f3 --- /dev/null +++ b/0001-FLUIDSYNTH-Fix-compilation-with-Fluidsynth-2.2.patch @@ -0,0 +1,111 @@ +From d0d38b0199dae9a1dbfecc53db54dd0a070694b4 Mon Sep 17 00:00:00 2001 +From: Le Philousophe +Date: Mon, 5 Apr 2021 12:23:26 +0200 +Subject: [PATCH] FLUIDSYNTH: Fix compilation with Fluidsynth 2.2 + +We replace deprecated functions as well +--- + audio/softsynth/fluidsynth.cpp | 43 ++++++++++++++++++++++++++++++++++ + 1 file changed, 43 insertions(+) + +diff --git a/audio/softsynth/fluidsynth.cpp b/audio/softsynth/fluidsynth.cpp +index e770fb6854..f01dd8c736 100644 +--- a/audio/softsynth/fluidsynth.cpp ++++ b/audio/softsynth/fluidsynth.cpp +@@ -180,11 +180,19 @@ static void *SoundFontMemLoader_open(const char *filename) { + return p; + } + ++#if FS_API_VERSION >= 0x0202 ++static int SoundFontMemLoader_read(void *buf, fluid_long_long_t count, void *handle) { ++#else + static int SoundFontMemLoader_read(void *buf, int count, void *handle) { ++#endif + return ((Common::SeekableReadStream *) handle)->read(buf, count) == (uint32)count ? FLUID_OK : FLUID_FAILED; + } + ++#if FS_API_VERSION >= 0x0202 ++static int SoundFontMemLoader_seek(void *handle, fluid_long_long_t offset, int origin) { ++#else + static int SoundFontMemLoader_seek(void *handle, long offset, int origin) { ++#endif + return ((Common::SeekableReadStream *) handle)->seek(offset, origin) ? FLUID_OK : FLUID_FAILED; + } + +@@ -193,7 +201,11 @@ static int SoundFontMemLoader_close(void *handle) { + return FLUID_OK; + } + ++#if FS_API_VERSION >= 0x0202 ++static fluid_long_long_t SoundFontMemLoader_tell(void *handle) { ++#else + static long SoundFontMemLoader_tell(void *handle) { ++#endif + return ((Common::SeekableReadStream *) handle)->pos(); + } + #endif +@@ -237,7 +249,11 @@ int MidiDriver_FluidSynth::open() { + _synth = new_fluid_synth(_settings); + + if (ConfMan.getBool("fluidsynth_chorus_activate")) { ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_chorus_on(_synth, -1, 1); ++#else + fluid_synth_set_chorus_on(_synth, 1); ++#endif + + int chorusNr = ConfMan.getInt("fluidsynth_chorus_nr"); + double chorusLevel = (double)ConfMan.getInt("fluidsynth_chorus_level") / 100.0; +@@ -252,22 +268,49 @@ int MidiDriver_FluidSynth::open() { + chorusType = FLUID_CHORUS_MOD_TRIANGLE; + } + ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_set_chorus_group_nr(_synth, -1, chorusNr); ++ fluid_synth_set_chorus_group_level(_synth, -1, chorusLevel); ++ fluid_synth_set_chorus_group_speed(_synth, -1, chorusSpeed); ++ fluid_synth_set_chorus_group_depth(_synth, -1, chorusDepthMs); ++ fluid_synth_set_chorus_group_type(_synth, -1, chorusType); ++#else + fluid_synth_set_chorus(_synth, chorusNr, chorusLevel, chorusSpeed, chorusDepthMs, chorusType); ++#endif + } else { ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_chorus_on(_synth, -1, 0); ++#else + fluid_synth_set_chorus_on(_synth, 0); ++#endif + } + + if (ConfMan.getBool("fluidsynth_reverb_activate")) { ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_reverb_on(_synth, -1, 1); ++#else + fluid_synth_set_reverb_on(_synth, 1); ++#endif + + double reverbRoomSize = (double)ConfMan.getInt("fluidsynth_reverb_roomsize") / 100.0; + double reverbDamping = (double)ConfMan.getInt("fluidsynth_reverb_damping") / 100.0; + int reverbWidth = ConfMan.getInt("fluidsynth_reverb_width"); + double reverbLevel = (double)ConfMan.getInt("fluidsynth_reverb_level") / 100.0; + ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_set_reverb_group_roomsize(_synth, -1, reverbRoomSize); ++ fluid_synth_set_reverb_group_damp(_synth, -1, reverbDamping); ++ fluid_synth_set_reverb_group_width(_synth, -1, reverbWidth); ++ fluid_synth_set_reverb_group_level(_synth, -1, reverbLevel); ++#else + fluid_synth_set_reverb(_synth, reverbRoomSize, reverbDamping, reverbWidth, reverbLevel); ++#endif + } else { ++#if FS_API_VERSION >= 0x0202 ++ fluid_synth_reverb_on(_synth, -1, 0); ++#else + fluid_synth_set_reverb_on(_synth, 0); ++#endif + } + + Common::String interpolation = ConfMan.get("fluidsynth_misc_interpolation"); +-- +2.26.3 + diff --git a/0001-FLUIDSYNTH-Make-FluidSynth-logging-less-noisy-by-def.patch b/0001-FLUIDSYNTH-Make-FluidSynth-logging-less-noisy-by-def.patch new file mode 100644 index 0000000..97f8927 --- /dev/null +++ b/0001-FLUIDSYNTH-Make-FluidSynth-logging-less-noisy-by-def.patch @@ -0,0 +1,60 @@ +From 08b54f489b663793168764986c1d1a834c33add3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Torbj=C3=B6rn=20Andersson?= + +Date: Wed, 13 Jan 2021 09:44:44 +0100 +Subject: [PATCH] FLUIDSYNTH: Make FluidSynth logging less noisy by default + +--- + audio/softsynth/fluidsynth.cpp | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +diff --git a/audio/softsynth/fluidsynth.cpp b/audio/softsynth/fluidsynth.cpp +index e0d7c4e3df..fe2b0689c2 100644 +--- a/audio/softsynth/fluidsynth.cpp ++++ b/audio/softsynth/fluidsynth.cpp +@@ -46,6 +46,29 @@ + #include "backends/platform/ios7/ios7_common.h" + #endif + ++static void logHandler(int level, const char *message, void *data) { ++ switch (level) { ++ case FLUID_PANIC: ++ error("FluidSynth: %s", message); ++ break; ++ case FLUID_ERR: ++ warning("FluidSynth: %s", message); ++ break; ++ case FLUID_WARN: ++ debug(2, "FluidSynth: %s", message); ++ break; ++ case FLUID_INFO: ++ debug(1, "FluidSynth: %s", message); ++ break; ++ case FLUID_DBG: ++ debug(3, "FluidSynth: %s", message); ++ break; ++ default: ++ fluid_default_log_function(level, message, data); ++ break; ++ } ++} ++ + class MidiDriver_FluidSynth : public MidiDriver_Emulated { + private: + MidiChannel_MPU401 _midiChannels[16]; +@@ -166,6 +189,12 @@ int MidiDriver_FluidSynth::open() { + if (_isOpen) + return MERR_ALREADY_OPEN; + ++ fluid_set_log_function(FLUID_PANIC, logHandler, NULL); ++ fluid_set_log_function(FLUID_ERR, logHandler, NULL); ++ fluid_set_log_function(FLUID_WARN, logHandler, NULL); ++ fluid_set_log_function(FLUID_INFO, logHandler, NULL); ++ fluid_set_log_function(FLUID_DBG, logHandler, NULL); ++ + #if defined(FLUIDSYNTH_VERSION_MAJOR) && FLUIDSYNTH_VERSION_MAJOR > 1 + // When provided with in-memory SoundFont data, only use the configured + // SoundFont instead if it's explicitly configured on the current game. +-- +2.26.3 + diff --git a/0001-FLUIDSYNTH-Simplify-FluidSynth-version-check.patch b/0001-FLUIDSYNTH-Simplify-FluidSynth-version-check.patch new file mode 100644 index 0000000..2089156 --- /dev/null +++ b/0001-FLUIDSYNTH-Simplify-FluidSynth-version-check.patch @@ -0,0 +1,69 @@ +From 631b13b5f4990b667e19d9fbdc467f0c873b6c15 Mon Sep 17 00:00:00 2001 +From: Le Philousophe +Date: Mon, 5 Apr 2021 12:22:51 +0200 +Subject: [PATCH] FLUIDSYNTH: Simplify FluidSynth version check + +--- + audio/softsynth/fluidsynth.cpp | 18 +++++++++++++----- + 1 file changed, 13 insertions(+), 5 deletions(-) + +diff --git a/audio/softsynth/fluidsynth.cpp b/audio/softsynth/fluidsynth.cpp +index 3b9f553464..e770fb6854 100644 +--- a/audio/softsynth/fluidsynth.cpp ++++ b/audio/softsynth/fluidsynth.cpp +@@ -46,7 +46,15 @@ + #include "backends/platform/ios7/ios7_common.h" + #endif + +-#if defined(FLUIDSYNTH_VERSION_MAJOR) && FLUIDSYNTH_VERSION_MAJOR > 1 ++// We assume here Fluidsynth minor will never be above 255 and ++// that micro versions won't break API compatibility ++#if defined(FLUIDSYNTH_VERSION_MAJOR) && defined(FLUIDSYNTH_VERSION_MINOR) ++#define FS_API_VERSION ((FLUIDSYNTH_VERSION_MAJOR << 8) | FLUIDSYNTH_VERSION_MINOR) ++#else ++#define FS_API_VERSION 0 ++#endif ++ ++#if FS_API_VERSION >= 0x0200 + static void logHandler(int level, const char *message, void *data) + #else + static void logHandler(int level, char *message, void *data) +@@ -103,7 +111,7 @@ public: + + void setEngineSoundFont(Common::SeekableReadStream *soundFontData) override; + bool acceptsSoundFontData() override { +-#if defined(FLUIDSYNTH_VERSION_MAJOR) && FLUIDSYNTH_VERSION_MAJOR > 1 ++#if FS_API_VERSION >= 0x0200 + return true; + #else + return false; +@@ -162,7 +170,7 @@ void MidiDriver_FluidSynth::setStr(const char *name, const char *val) { + + // Soundfont memory loader callback functions. + +-#if defined(FLUIDSYNTH_VERSION_MAJOR) && FLUIDSYNTH_VERSION_MAJOR > 1 ++#if FS_API_VERSION >= 0x0200 + static void *SoundFontMemLoader_open(const char *filename) { + void *p; + if (filename[0] != '&') { +@@ -200,7 +208,7 @@ int MidiDriver_FluidSynth::open() { + fluid_set_log_function(FLUID_INFO, logHandler, NULL); + fluid_set_log_function(FLUID_DBG, logHandler, NULL); + +-#if defined(FLUIDSYNTH_VERSION_MAJOR) && FLUIDSYNTH_VERSION_MAJOR > 1 ++#if FS_API_VERSION >= 0x0200 + // When provided with in-memory SoundFont data, only use the configured + // SoundFont instead if it's explicitly configured on the current game. + bool isUsingInMemorySoundFontData = _engineSoundFontData && !ConfMan.getActiveDomain()->contains("soundfont"); +@@ -280,7 +288,7 @@ int MidiDriver_FluidSynth::open() { + const char *soundfont = !isUsingInMemorySoundFontData ? + ConfMan.get("soundfont").c_str() : Common::String::format("&%p", (void *)_engineSoundFontData).c_str(); + +-#if defined(FLUIDSYNTH_VERSION_MAJOR) && FLUIDSYNTH_VERSION_MAJOR > 1 ++#if FS_API_VERSION >= 0x0200 + if (isUsingInMemorySoundFontData) { + fluid_sfloader_t *soundFontMemoryLoader = new_fluid_defsfloader(_settings); + fluid_sfloader_set_callbacks(soundFontMemoryLoader, +-- +2.26.3 + diff --git a/0001-FLUIDSYNTH-Swapped-debug-levels-for-FLUID_WARN-and-F.patch b/0001-FLUIDSYNTH-Swapped-debug-levels-for-FLUID_WARN-and-F.patch new file mode 100644 index 0000000..a644e12 --- /dev/null +++ b/0001-FLUIDSYNTH-Swapped-debug-levels-for-FLUID_WARN-and-F.patch @@ -0,0 +1,35 @@ +From 21d65cedf231cb03cd2e63863bd6d9d6bc70ed1d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Torbj=C3=B6rn=20Andersson?= + +Date: Mon, 8 Mar 2021 20:19:22 +0100 +Subject: [PATCH] FLUIDSYNTH: Swapped debug levels for FLUID_WARN and + FLUID_INFO + +If FLUID_INFO is "verbose informational messages", perhaps they should +be better hidden from the average user than warnings. Particularly since +warnings are the only kind I've actually seen in the wild. (Change +suggested by criezy.) +--- + audio/softsynth/fluidsynth.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/audio/softsynth/fluidsynth.cpp b/audio/softsynth/fluidsynth.cpp +index fe2b0689c2..e41a7515b2 100644 +--- a/audio/softsynth/fluidsynth.cpp ++++ b/audio/softsynth/fluidsynth.cpp +@@ -55,10 +55,10 @@ static void logHandler(int level, const char *message, void *data) { + warning("FluidSynth: %s", message); + break; + case FLUID_WARN: +- debug(2, "FluidSynth: %s", message); ++ debug(1, "FluidSynth: %s", message); + break; + case FLUID_INFO: +- debug(1, "FluidSynth: %s", message); ++ debug(2, "FluidSynth: %s", message); + break; + case FLUID_DBG: + debug(3, "FluidSynth: %s", message); +-- +2.26.3 + diff --git a/0001-SDL-build-fix-for-various-non-x86-architectures.patch b/0001-SDL-build-fix-for-various-non-x86-architectures.patch new file mode 100644 index 0000000..3fce3ff --- /dev/null +++ b/0001-SDL-build-fix-for-various-non-x86-architectures.patch @@ -0,0 +1,84 @@ +From b0832788ecfb4d99fc21f08888da3ee7aa4066b1 Mon Sep 17 00:00:00 2001 +From: Christian Krause +Date: Sun, 4 Jul 2021 10:45:35 +0200 +Subject: [PATCH] SDL: build fix for various non-x86 architectures + +- allow certain symbols from unistd.h within SDL backend +- e.g. on armv7, ppc64, aarch and s390, SDL.h would include indirectly + unistd.h after common/forbidden.h and so the preprocessor would + generate broken code even if the symbols are never called by + scummvm +--- + backends/platform/sdl/sdl-sys.h | 51 +++++++++++++++++++++++++++++++++ + 1 file changed, 51 insertions(+) + +diff --git a/backends/platform/sdl/sdl-sys.h b/backends/platform/sdl/sdl-sys.h +index 219aca830a..d33f1453ee 100644 +--- a/backends/platform/sdl/sdl-sys.h ++++ b/backends/platform/sdl/sdl-sys.h +@@ -111,6 +111,32 @@ + + #endif // FORBIDDEN_SYMBOL_EXCEPTION_time_h + ++// Fix compilation on non-x86 architectures ++// It needs various (usually forbidden) symbols from unistd.h ++#ifndef FORBIDDEN_SYMBOL_EXCEPTION_unistd_h ++ ++ #if !defined(FORBIDDEN_SYMBOL_ALLOW_ALL) && !defined(FORBIDDEN_SYMBOL_EXCEPTION_chdir) ++ #undef chdir ++ #define chdir FAKE_chdir ++ #endif ++ ++ #if !defined(FORBIDDEN_SYMBOL_ALLOW_ALL) && !defined(FORBIDDEN_SYMBOL_EXCEPTION_getcwd) ++ #undef getcwd ++ #define getcwd FAKE_getcwd ++ #endif ++ ++ #if !defined(FORBIDDEN_SYMBOL_ALLOW_ALL) && !defined(FORBIDDEN_SYMBOL_EXCEPTION_getwd) ++ #undef getwd ++ #define getwd FAKE_getwd ++ #endif ++ ++ #if !defined(FORBIDDEN_SYMBOL_ALLOW_ALL) && !defined(FORBIDDEN_SYMBOL_EXCEPTION_unlink) ++ #undef unlink ++ #define unlink FAKE_unlink ++ #endif ++ ++#endif // FORBIDDEN_SYMBOL_EXCEPTION_unistd_h ++ + // HACK: SDL might include windows.h which defines its own ARRAYSIZE. + // However, we want to use the version from common/util.h. Thus, we make sure + // that we actually have this definition after including the SDL headers. +@@ -274,4 +300,29 @@ + + #endif // FORBIDDEN_SYMBOL_EXCEPTION_time_h + ++// re-forbid all those unistd.h symbols again (if they were forbidden) ++#ifndef FORBIDDEN_SYMBOL_EXCEPTION_unistd_h ++ ++ #if !defined(FORBIDDEN_SYMBOL_ALLOW_ALL) && !defined(FORBIDDEN_SYMBOL_EXCEPTION_chdir) ++ #undef chdir ++ #define chdir(a) FORBIDDEN_look_at_common_forbidden_h_for_more_info SYMBOL !%* ++ #endif ++ ++ #if !defined(FORBIDDEN_SYMBOL_ALLOW_ALL) && !defined(FORBIDDEN_SYMBOL_EXCEPTION_getcwd) ++ #undef getcwd ++ #define getcwd(a,b) FORBIDDEN_look_at_common_forbidden_h_for_more_info SYMBOL !%* ++ #endif ++ ++ #if !defined(FORBIDDEN_SYMBOL_ALLOW_ALL) && !defined(FORBIDDEN_SYMBOL_EXCEPTION_getwd) ++ #undef getwd ++ #define getwd(a) FORBIDDEN_look_at_common_forbidden_h_for_more_info SYMBOL !%* ++ #endif ++ ++ #if !defined(FORBIDDEN_SYMBOL_ALLOW_ALL) && !defined(FORBIDDEN_SYMBOL_EXCEPTION_unlink) ++ #undef unlink ++ #define unlink(a) FORBIDDEN_look_at_common_forbidden_h_for_more_info SYMBOL !%* ++ #endif ++ ++#endif // FORBIDDEN_SYMBOL_EXCEPTION_unistd_h ++ + #endif +-- +2.26.3 + diff --git a/scummvm.spec b/scummvm.spec index 91ab3d8..113e8c2 100644 --- a/scummvm.spec +++ b/scummvm.spec @@ -14,14 +14,23 @@ Name: scummvm Version: 2.2.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Interpreter for several adventure games # GPLv3+ and OFL only used by font files (distributed as fonts.dat) -License: GPLv2+ and LGPLv2.1+ and GPLv3+ and BSD and OFL +License: GPLv2+ and LGPLv2+ and GPLv3+ and BSD and OFL URL: http://www.scummvm.org/ Source0: http://www.scummvm.org/frs/%{name}/%{version}/%{name}-%{version}.tar.bz2 Patch0004: gcc-lto-2.2.0.patch Patch0005: scummvm-2.1.1-ftbfs-use-bfd-linker-on-x86.patch +# Upstream patches to support fluidsynth 2.2.x +Patch0006: 0001-FLUIDSYNTH-Make-FluidSynth-logging-less-noisy-by-def.patch +Patch0007: 0001-FLUIDSYNTH-Swapped-debug-levels-for-FLUID_WARN-and-F.patch +Patch0008: 0001-FLUIDSYNTH-Fix-build.patch +Patch0009: 0001-AUDIO-Fix-compilation-with-Fluidsynth2.patch +Patch0010: 0001-FLUIDSYNTH-Simplify-FluidSynth-version-check.patch +Patch0011: 0001-FLUIDSYNTH-Fix-compilation-with-Fluidsynth-2.2.patch +# Upstream patch to fix compile issue on armv7hl, aarch64, ppc64le and s390x +Patch0012: 0001-SDL-build-fix-for-various-non-x86-architectures.patch # Needed for AppData check. BuildRequires: make @@ -145,6 +154,12 @@ find $RPM_BUILD_ROOT%{_libdir} -type f -name '*.so' | xargs chmod -Rc 0755 %changelog +* Sun Jul 04 2021 Christian Krause - 2.2.0-4 +- Rebuilt for fluidsynth soname bump (#1976457) +- Add upstream patches to support fluidsynth 2.2 +- Add upstream patch to fix compile issue on non-x86 architectures +- Correct LGPLv2+ license tag + * Wed Jan 27 2021 Fedora Release Engineering - 2.2.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild