Bug#946917: muse FTBFS after libfluidsynth update
tags 946917 +patch
thanks
I whipped up a patch that makes this build, I have not tested it beyond that. There were two main fixes, the first is that delete_fluid_synth no longer returns an error code, the second is a few structures are now opaque and have to be accessed through accessors.
I also found I had to add a build-dependency on libegl-dev to make the configure script complete successfully. It seems that /usr/lib/x86_64-linux-gnu/libEGL.so has moved from libglvnd-dev to libegl-dev
The debdiff is attached, I don't have any immediate plans to NMU, but I may do so later, especially if I get positive feedback about the patch from users.
diff -Nru muse-3.0.2+ds1/debian/changelog muse-3.0.2+ds1/debian/changelog
--- muse-3.0.2+ds1/debian/changelog 2018-12-16 13:37:01.000000000 +0000
+++ muse-3.0.2+ds1/debian/changelog 2019-12-19 17:49:59.000000000 +0000
@@ -1,3 +1,13 @@
+muse (3.0.2+ds1-1.1) UNRELEASED; urgency=medium
+
+ * Non-maintainer upload.
+ * Fix build with fluidsynth 2.
+ * Bump fluidsynth build-dependency since patch will make the code incompatible
+ with fluidsynth 1.
+ * Add build-depends on libegl-dev
+
+ -- Peter Michael Green <plugwash@debian.org> Thu, 19 Dec 2019 17:49:59 +0000
+
muse (3.0.2+ds1-1) unstable; urgency=medium
* Team upload.
diff -Nru muse-3.0.2+ds1/debian/control muse-3.0.2+ds1/debian/control
--- muse-3.0.2+ds1/debian/control 2018-12-16 13:37:01.000000000 +0000
+++ muse-3.0.2+ds1/debian/control 2019-12-19 17:49:59.000000000 +0000
@@ -11,7 +11,7 @@
dssi-dev,
libasound2-dev,
libdssialsacompat-dev [!linux-any],
- libfluidsynth-dev,
+ libfluidsynth-dev (>= 2),
libjack-dev,
liblilv-dev (>= 0.22),
liblo-dev,
@@ -21,7 +21,8 @@
libsord-dev (>= 0.14),
lv2-dev (>= 1.12),
qtbase5-dev,
- qttools5-dev
+ qttools5-dev,
+ libegl-dev
Standards-Version: 4.2.1
Homepage: http://www.muse-sequencer.org/
Vcs-Git: https://salsa.debian.org/multimedia-team/muse.git
diff -Nru muse-3.0.2+ds1/debian/patches/0005-fluidsynth2.patch muse-3.0.2+ds1/debian/patches/0005-fluidsynth2.patch
--- muse-3.0.2+ds1/debian/patches/0005-fluidsynth2.patch 1970-01-01 00:00:00.000000000 +0000
+++ muse-3.0.2+ds1/debian/patches/0005-fluidsynth2.patch 2019-12-19 17:49:59.000000000 +0000
@@ -0,0 +1,112 @@
+Description: Fix build with fluidsynth 2.
+ The changes consist of some adjustments for the fact that some structures are
+ nowopaque and the removal of error handling for delete_fluid_synth which no
+ longer returns an error value.
+Author: Peter Michael Green <plugwash@debian.org>
+
+---
+The information above should follow the Patch Tagging Guidelines, please
+checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
+are templates for supplementary fields that you might want to add:
+
+Origin: <vendor|upstream|other>, <url of original patch>
+Bug: <url in upstream bugtracker>
+Bug-Debian: https://bugs.debian.org/<bugnumber>
+Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
+Forwarded: <no|not-needed|url proving that it has been forwarded>
+Reviewed-By: <name and email of someone who approved the patch>
+Last-Update: 2019-12-19
+
+Index: muse-3.0.2+ds1/synti/fluidsynth/fluidsynti.cpp
+===================================================================
+--- muse-3.0.2+ds1.orig/synti/fluidsynth/fluidsynti.cpp
++++ muse-3.0.2+ds1/synti/fluidsynth/fluidsynti.cpp
+@@ -155,16 +155,12 @@ FluidSynth::~FluidSynth()
+ std::cerr << DEBUG_ARGS << "Error unloading soundfont!" << fluid_synth_error(fluidsynth) << std::endl;
+ }
+
+- int err = delete_fluid_synth (fluidsynth);
++ delete_fluid_synth (fluidsynth);
+ if(gui)
+ delete gui;
+
+ if (initBuffer)
+ delete [] initBuffer;
+- if (err == -1) {
+- std::cerr << DEBUG_ARGS << "error while destroying synth: " << fluid_synth_error(fluidsynth) << std::endl;
+- return;
+- }
+ }
+
+ bool FluidSynth::init(const char* name)
+@@ -1368,7 +1364,7 @@ const char* FluidSynth::getPatchName(int
+ else {
+ fluid_preset_t *preset = fluid_synth_get_channel_preset(fluidsynth, i);
+ if (!preset) return "<unknown>";
+- return preset->get_name(preset);
++ return fluid_preset_get_name(preset);
+ }
+ }
+ //---------------------------------------------------------
+@@ -1414,12 +1410,12 @@ const MidiPatch* FluidSynth::getFirstPat
+ if (!channels[channel].drumchannel) {
+ for (unsigned bank = 0; bank < 128; ++bank) {
+ for (unsigned patch = 0; patch < 128; ++patch) {
+- preset = sfont->get_preset (sfont, bank, patch);
++ preset = fluid_sfont_get_preset (sfont, bank, patch);
+ if (preset) {
+ midiPatch.hbank = bank;
+ midiPatch.lbank = 0xff; // Off
+ midiPatch.prog = patch;
+- midiPatch.name = preset->get_name (preset);
++ midiPatch.name = fluid_preset_get_name (preset);
+ return &midiPatch;
+ }
+ }
+@@ -1429,12 +1425,12 @@ const MidiPatch* FluidSynth::getFirstPat
+ else { //This is a drumchannel
+ int bank = 128;
+ for (unsigned patch = 0; patch < 128; ++patch) {
+- preset = sfont->get_preset (sfont, bank, patch);
++ preset = fluid_sfont_get_preset (sfont, bank, patch);
+ if (preset) {
+ midiPatch.hbank = 0xff; // Off
+ midiPatch.lbank = 0xff; // Off
+ midiPatch.prog = patch;
+- midiPatch.name = preset->get_name(preset);
++ midiPatch.name = fluid_preset_get_name(preset);
+ return &midiPatch;
+ }
+ }
+@@ -1466,13 +1462,13 @@ const MidiPatch* FluidSynth::getNextPatc
+
+ for (unsigned bank = patch->hbank; bank < 128; ++bank) {
+ for ( ; prog < 128; ++prog) {
+- preset = sfont->get_preset (sfont, bank, prog);
++ preset = fluid_sfont_get_preset (sfont, bank, prog);
+ if (preset) {
+ //printf("Preset info: bank: %d prog: %d name: %s\n", bank, prog, preset->get_name(preset));
+ midiPatch.hbank = bank;
+ midiPatch.lbank = 0xff; // Off
+ midiPatch.prog = prog;
+- midiPatch.name = preset->get_name (preset);
++ midiPatch.name = fluid_preset_get_name (preset);
+ return &midiPatch;
+ }
+ }
+@@ -1483,13 +1479,13 @@ const MidiPatch* FluidSynth::getNextPatc
+ unsigned bank = 128;
+ unsigned prog = patch->prog;
+ for (prog = patch->prog + 1; prog < 128; ++prog) {
+- preset = sfont->get_preset (sfont, bank, prog);
++ preset = fluid_sfont_get_preset (sfont, bank, prog);
+ if (preset) {
+ //printf("Preset info: bank: %d prog: %d name: %s\n",bank, prog, preset->get_name(preset));
+ midiPatch.hbank = 0xff; // Off
+ midiPatch.lbank = 0xff; // Off
+ midiPatch.prog = prog;
+- midiPatch.name = preset->get_name (preset);
++ midiPatch.name = fluid_preset_get_name (preset);
+ return &midiPatch;
+ }
+ }
diff -Nru muse-3.0.2+ds1/debian/patches/series muse-3.0.2+ds1/debian/patches/series
--- muse-3.0.2+ds1/debian/patches/series 2018-12-16 13:18:40.000000000 +0000
+++ muse-3.0.2+ds1/debian/patches/series 2019-12-19 17:49:59.000000000 +0000
@@ -2,3 +2,4 @@
0002-Add-f-option-to-desktop-file-Exec-key.patch
0003-Fixes-compile-issue-with-QButtonGroup.patch
0004-Added-missing-includes-needed-by-newer-Qt-5.11.patch
+0005-fluidsynth2.patch
Reply to: