Bug#946863: freewheeling FTBFS after libfluidsynth update

2019-12-18 Thread peter green

tags 946863 +patch
thanks

I just whipped up a patch that makes this build, I have not tested it beyond 
that.

I have no immediate plans to NMU, but I may do so later, especially if I get 
feedback from users that the package works.

diff -Nru freewheeling-0.6.4/debian/changelog 
freewheeling-0.6.4/debian/changelog
--- freewheeling-0.6.4/debian/changelog 2018-09-10 13:45:23.0 +
+++ freewheeling-0.6.4/debian/changelog 2019-12-19 02:43:24.0 +
@@ -1,3 +1,12 @@
+freewheeling (0.6.4-1.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix build with fluidsynth 2.x
+  * Bump fluidsynth build-dep because patch will break build
+with older fluidsynth.
+
+ -- Peter Michael Green   Thu, 19 Dec 2019 02:43:24 +
+
 freewheeling (0.6.4-1) unstable; urgency=medium
 
   * New upstream version 0.6.4 (closes: #906462)
diff -Nru freewheeling-0.6.4/debian/patches/072-fluidsynth-2.diff 
freewheeling-0.6.4/debian/patches/072-fluidsynth-2.diff
--- freewheeling-0.6.4/debian/patches/072-fluidsynth-2.diff 1970-01-01 
00:00:00.0 +
+++ freewheeling-0.6.4/debian/patches/072-fluidsynth-2.diff 2019-12-19 
02:43:24.0 +
@@ -0,0 +1,70 @@
+Description:  Fix build with fluidsynth 2.x
+Author: Peter Michael Green 
+
+--- freewheeling-0.6.4.orig/src/fweelin_browser.h
 freewheeling-0.6.4/src/fweelin_browser.h
+@@ -52,7 +52,7 @@ enum BrowserItemType {
+ class BrowserItem {
+  public:
+   // Initialize a browser item with name n
+-  BrowserItem(char *n = 0, char default_name = 1) : 
++  BrowserItem(const char *n = 0, char default_name = 1) : 
+ default_name(default_name), next(0), prev(0) {
+ if (n == 0)
+   name = 0;
+@@ -415,7 +415,7 @@ class PatchItem : public BrowserItem {
+ public:
+ 
+   PatchItem (int id = 0, int bank = 0, int prog = 0, int channel = 0,
+- char *name = 0, char bypasscc = 0, int bypasschannel = -1, float 
bypasstime1 = 0.0, float bypasstime2 = 10.0) :
++ const char *name = 0, char bypasscc = 0, int bypasschannel = -1, 
float bypasstime1 = 0.0, float bypasstime2 = 10.0) :
+ BrowserItem(name), id(id), bank(bank), prog(prog), channel(channel),
+ bypasscc(bypasscc), bypasschannel(bypasschannel), 
bypasstime1(bypasstime1), bypasstime2(bypasstime2), 
+ zones(0), numzones(0) {};
+--- freewheeling-0.6.4.orig/src/fweelin_fluidsynth.cc
 freewheeling-0.6.4/src/fweelin_fluidsynth.cc
+@@ -33,11 +33,13 @@
+ 
+ #include "fweelin_fluidsynth.h"
+ 
+-#define fluid_sfont_iteration_start(_sf) (*(_sf)->iteration_start)(_sf)
+-#define fluid_sfont_iteration_next(_sf,_pr) (*(_sf)->iteration_next)(_sf,_pr)
+-#define fluid_preset_get_name(_preset) (*(_preset)->get_name)(_preset)
+-#define fluid_preset_get_banknum(_preset) (*(_preset)->get_banknum)(_preset)
+-#define fluid_preset_get_num(_preset) (*(_preset)->get_num)(_preset)
++//fluidsynth 2.x provides it's own version of these (with slightly different 
parameter structure)
++//and does not allow direct access to structure fields anymore.
++//#define fluid_sfont_iteration_start(_sf) (*(_sf)->iteration_start)(_sf)
++//#define fluid_sfont_iteration_next(_sf,_pr) 
(*(_sf)->iteration_next)(_sf,_pr)
++//#define fluid_preset_get_name(_preset) (*(_preset)->get_name)(_preset)
++//#define fluid_preset_get_banknum(_preset) (*(_preset)->get_banknum)(_preset)
++//#define fluid_preset_get_num(_preset) (*(_preset)->get_num)(_preset)
+ 
+ void FluidSynthParam_Int::Send(fluid_settings_t *settings) {
+   printf("FLUID: Setting parameter '%s' = '%d'\n",name,val);
+@@ -160,7 +162,7 @@ void FluidSynthProcessor::SendPatchChang
+ 
+ // Sets up our internal patch list based on loaded soundfonts
+ void FluidSynthProcessor::SetupPatches() {
+-  fluid_preset_t preset;
++  fluid_preset_t * preset;
+ 
+   PatchBrowser *br = (PatchBrowser *) app->getBROWSER(B_Patch);
+ 
+@@ -174,12 +176,12 @@ void FluidSynthProcessor::SetupPatches()
+ for (int i = 0; i < sfcnt; i++) {
+   fluid_sfont_t *curfont = fluid_synth_get_sfont(synth,i);
+   fluid_sfont_iteration_start(curfont);
+-  while (fluid_sfont_iteration_next(curfont, ))
++  while ((preset = fluid_sfont_iteration_next(curfont)))
+ br->AddItem(new PatchItem(fluid_sfont_get_id(curfont),
+-  fluid_preset_get_banknum(),
+-  fluid_preset_get_num(),
++  fluid_preset_get_banknum(preset),
++  fluid_preset_get_num(preset),
+   fluidchan,
+-  fluid_preset_get_name()));
++  fluid_preset_get_name(preset)));
+ 
+   if (i+1 < sfcnt) {
+ // End of soundfont- put in a divider
diff -Nru freewheeling-0.6.4/debian/patches/series 
freewheeling-0.6.4/debian/patches/series
--- freewheeling-0.6.4/debian/patches/series2018-09-10 13:44:42.0 
+
+++ freewheeling-0.6.4/debian/patches/series

Bug#946863: freewheeling FTBFS after libfluidsynth update

2019-12-16 Thread Paul Gevers
Source: freewheeling
Version: 0.6.4-1
Severity: serious
Tags: ftbfs
Justification: ftbfs

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

Dear maintainers,

Your package is part of the libfluidsynth2 transition, so I scheduled
binNMU's. However, your package FTBFS on all architecutes.

Please fix your package.

Paul

https://buildd.debian.org/status/package.php?p=freewheeling

Tail of log for freewheeling on amd64:

  177 |   while (fluid_sfont_iteration_next(curfont, ))
  |  ^~
In file included from /usr/include/fluidsynth.h:95,
 from fweelin_fluidsynth.h:23,
 from fweelin_fluidsynth.cc:34:
/usr/include/fluidsynth/types.h:40:16: note: forward declaration of 
‘fluid_sfont_t’ {aka ‘struct _fluid_sfont_t’}
   40 | typedef struct _fluid_sfont_t fluid_sfont_t;/**< 
SoundFont */
  |^~
make[2]: *** [Makefile:464: fweelin_fluidsynth.o] Error 1
make[2]: *** Waiting for unfinished jobs
make[2]: Leaving directory '/<>/src'
make[1]: *** [Makefile:344: all-recursive] Error 1
make[1]: Leaving directory '/<>'
dh_auto_build: make -j4 returned exit code 2
make: *** [debian/rules:9: build-arch] Error 255



- -- System Information:
Debian Release: bullseye/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'testing-debug')
Architecture: amd64 (x86_64)

Kernel: Linux 5.3.0-3-amd64 (SMP w/2 CPU cores)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

-BEGIN PGP SIGNATURE-

iQEzBAEBCAAdFiEEWLZtSHNr6TsFLeZynFyZ6wW9dQoFAl332jsACgkQnFyZ6wW9
dQoTbAgA0JAxUNuYYm5UE40iJL4eIGd31L5HJmhyMiIddZS4vF4QimWrBXmI6cul
Iy4qR9+os4h0DSt/t3l3hT97RJstqIuVwONggYrmrU+Qe2I5aotaOfv7FsX2n4LA
Q3Qh69ThD00pYcociuN2qBl2JeXsuagB6FEOSNWskdtW8ZLbGWakBjNEaHN1dxdg
JG+PxJmgP3uHFF7eG6nBeWaSppl0EfPOCwk6tMCx8UysrHvRFBosBO2r3+8N1q2A
GmRIm2o3jNwtWli630tO2KAH5wmOe0kszJ+J2RQCffQPURXlTL8H0tetfZKx3+gn
k2iIZJuzmF58RVgBMdiGVvRKuW9S0Q==
=aXr0
-END PGP SIGNATURE-