Source: jackd2
Version: 1.9.21~dfsg-3
Severity: important
Tags: patch
X-Debbugs-Cc: t...@mirbsd.de, debian-...@lists.debian.org
Control: affects -1 src:jack-audio-connection-kit

Hi,

please apply the attached patch for jackd2 and forward it upstream
that makes the implicit alignment assumptions (not supported by the
C and C++ standards) explicit, which allows building on m68k. The
diff won’t change a bit for other architectures.

Please also apply the patches for jackd2 and jack-audio-connection-kit
both to restrict B-D on libffado-dev to these architectures where the
firewire binary package is actually built. The reverse B-D chain of
ffado is… pure hell, and even more cyclic without this.

Thanks!
diff -Nru jack-audio-connection-kit-0.126.0/debian/changelog 
jack-audio-connection-kit-0.126.0/debian/changelog
--- jack-audio-connection-kit-0.126.0/debian/changelog  2023-01-06 
23:02:48.000000000 +0100
+++ jack-audio-connection-kit-0.126.0/debian/changelog  2024-03-21 
02:03:21.000000000 +0100
@@ -1,3 +1,9 @@
+jack-audio-connection-kit (1:0.126.0-2+m68k) unreleased; urgency=medium
+
+  * Only B-D: libffado-dev if jackd1-firewire is built
+
+ -- Thorsten Glaser <t...@mirbsd.de>  Thu, 21 Mar 2024 02:03:21 +0100
+
 jack-audio-connection-kit (1:0.126.0-2) unstable; urgency=medium
 
   * Team upload
diff -Nru jack-audio-connection-kit-0.126.0/debian/control 
jack-audio-connection-kit-0.126.0/debian/control
--- jack-audio-connection-kit-0.126.0/debian/control    2023-01-06 
23:02:48.000000000 +0100
+++ jack-audio-connection-kit-0.126.0/debian/control    2024-03-21 
01:50:44.000000000 +0100
@@ -15,7 +15,7 @@
  doxygen,
  libasound2-dev [linux-any],
  libdb-dev,
- libffado-dev [linux-any],
+ libffado-dev [amd64 i386 powerpc],
  libraw1394-dev [linux-any],
  libreadline-dev,
  libsamplerate-dev,
diff -Nru jackd2-1.9.21~dfsg/debian/changelog 
jackd2-1.9.21~dfsg/debian/changelog
--- jackd2-1.9.21~dfsg/debian/changelog 2023-05-04 21:29:39.000000000 +0200
+++ jackd2-1.9.21~dfsg/debian/changelog 2024-03-21 02:20:11.000000000 +0100
@@ -1,3 +1,10 @@
+jackd2 (1.9.21~dfsg-3+m68k) unreleased; urgency=medium
+
+  * Only B-D: libffado-dev if jackd2-firewire is built
+  * debian/patches/fix-implicit-alignment-assumptions.diff: add
+
+ -- Thorsten Glaser <t...@mirbsd.de>  Thu, 21 Mar 2024 02:20:11 +0100
+
 jackd2 (1.9.21~dfsg-3) unstable; urgency=medium
 
   * Team upload.
diff -Nru jackd2-1.9.21~dfsg/debian/control jackd2-1.9.21~dfsg/debian/control
--- jackd2-1.9.21~dfsg/debian/control   2023-05-04 21:29:39.000000000 +0200
+++ jackd2-1.9.21~dfsg/debian/control   2024-03-21 01:54:43.000000000 +0100
@@ -11,7 +11,7 @@
                libdb-dev,
                libdbus-1-dev,
                libexpat1-dev,
-               libffado-dev [linux-any],
+               libffado-dev [amd64 i386 powerpc],
                libncurses-dev,
                libopus-dev,
                libraw1394-dev [linux-any],
diff -Nru 
jackd2-1.9.21~dfsg/debian/patches/fix-implicit-alignment-assumptions.diff 
jackd2-1.9.21~dfsg/debian/patches/fix-implicit-alignment-assumptions.diff
--- jackd2-1.9.21~dfsg/debian/patches/fix-implicit-alignment-assumptions.diff   
1970-01-01 01:00:00.000000000 +0100
+++ jackd2-1.9.21~dfsg/debian/patches/fix-implicit-alignment-assumptions.diff   
2024-03-21 02:20:03.000000000 +0100
@@ -0,0 +1,93 @@
+Description: fix implicit alignment assumptions
+ The language standard does not guarantee “natural” alignment
+ (i.e. alignment to (at least) the size of the integer type),
+ and on some architectures, int normally is only 16-bit-aligned.
+ Make the assumption explicit to allow compilation on these.
+Author: Thorsten Glaser <t...@debian.org>
+
+--- a/common/JackActivationCount.h
++++ b/common/JackActivationCount.h
+@@ -39,7 +39,7 @@ class JackActivationCount
+ 
+     private:
+ 
+-        alignas(SInt32) SInt32 fValue;
++        alignas(SInt32) alignas(sizeof(SInt32)) SInt32 fValue;
+         SInt32 fCount;
+ 
+     public:
+--- a/common/JackAtomicArrayState.h
++++ b/common/JackAtomicArrayState.h
+@@ -122,7 +122,7 @@ class JackAtomicArrayState
+         // fState[2] ==> request
+ 
+         T fState[3];
+-        alignas(UInt32) alignas(AtomicArrayCounter) volatile 
AtomicArrayCounter fCounter;
++        alignas(UInt32) alignas(sizeof(UInt32)) alignas(AtomicArrayCounter) 
volatile AtomicArrayCounter fCounter;
+ 
+         UInt32 WriteNextStateStartAux(int state, bool* result)
+         {
+--- a/common/JackAtomicState.h
++++ b/common/JackAtomicState.h
+@@ -94,7 +94,7 @@ class JackAtomicState
+     protected:
+ 
+         T fState[2];
+-        alignas(UInt32) alignas(AtomicCounter) volatile AtomicCounter 
fCounter;
++        alignas(UInt32) alignas(sizeof(UInt32)) alignas(AtomicCounter) 
volatile AtomicCounter fCounter;
+         SInt32 fCallWriteCounter;
+ 
+         UInt32 WriteNextStateStartAux()
+--- a/common/JackConnectionManager.h
++++ b/common/JackConnectionManager.h
+@@ -417,7 +417,7 @@ class SERVER_EXPORT JackConnectionManage
+         JackFixedArray1<PORT_NUM_FOR_CLIENT> fInputPort[CLIENT_NUM];  /*! 
Table of input port per refnum : to find a refnum for a given port */
+         JackFixedArray<PORT_NUM_FOR_CLIENT> fOutputPort[CLIENT_NUM];  /*! 
Table of output port per refnum : to find a refnum for a given port */
+         JackFixedMatrix<CLIENT_NUM> fConnectionRef;                           
                /*! Table of port connections by (refnum , refnum) */
+-        alignas(UInt32) alignas(JackActivationCount) JackActivationCount 
fInputCounter[CLIENT_NUM];   /*! Activation counter per refnum */
++        alignas(UInt32) alignas(sizeof(UInt32)) alignas(JackActivationCount) 
JackActivationCount fInputCounter[CLIENT_NUM];   /*! Activation counter per 
refnum */
+         JackLoopFeedback<CONNECTION_NUM_FOR_PORT> fLoopFeedback;              
/*! Loop feedback connections */
+ 
+         bool IsLoopPathAux(int ref1, int ref2) const;
+--- a/common/JackEngineControl.h
++++ b/common/JackEngineControl.h
+@@ -64,7 +64,7 @@ struct SERVER_EXPORT JackEngineControl :
+     int fClientPriority;
+     int fMaxClientPriority;
+     char fServerName[JACK_SERVER_NAME_SIZE+1];
+-    alignas(UInt32) alignas(JackTransportEngine) JackTransportEngine 
fTransport;
++    alignas(UInt32) alignas(sizeof(UInt32)) alignas(JackTransportEngine) 
JackTransportEngine fTransport;
+     jack_timer_type_t fClockSource;
+     int fDriverNum;
+     bool fVerbose;
+@@ -86,7 +86,7 @@ struct SERVER_EXPORT JackEngineControl :
+     UInt64 fConstraint;
+ 
+     // Timer
+-    alignas(UInt32) alignas(JackFrameTimer) JackFrameTimer fFrameTimer;
++    alignas(UInt32) alignas(sizeof(UInt32)) alignas(JackFrameTimer) 
JackFrameTimer fFrameTimer;
+ 
+ #ifdef JACK_MONITOR
+     JackEngineProfiling fProfiler;
+--- a/common/JackMessageBuffer.h
++++ b/common/JackMessageBuffer.h
+@@ -64,7 +64,7 @@ class JackMessageBuffer : public JackRun
+         JackProcessSync fGuard;
+         volatile unsigned int fInBuffer;
+         volatile unsigned int fOutBuffer;
+-        alignas(SInt32) SInt32 fOverruns;
++        alignas(SInt32) alignas(sizeof(SInt32)) SInt32 fOverruns;
+         bool fRunning;
+ 
+         void Flush();
+--- a/common/JackTransportEngine.h
++++ b/common/JackTransportEngine.h
+@@ -104,7 +104,7 @@ class SERVER_EXPORT JackTransportEngine
+         bool fPendingPos;
+         bool fNetworkSync;
+         bool fConditionnal;
+-        alignas(SInt32) SInt32 fWriteCounter;
++        alignas(SInt32) alignas(sizeof(SInt32)) SInt32 fWriteCounter;
+ 
+         bool CheckAllRolling(JackClientInterface** table);
+         void MakeAllStartingLocating(JackClientInterface** table);
diff -Nru jackd2-1.9.21~dfsg/debian/patches/series 
jackd2-1.9.21~dfsg/debian/patches/series
--- jackd2-1.9.21~dfsg/debian/patches/series    2023-05-04 21:29:39.000000000 
+0200
+++ jackd2-1.9.21~dfsg/debian/patches/series    2024-03-21 02:06:03.000000000 
+0100
@@ -2,3 +2,4 @@
 0001-man-fill_template-Use-numeric-year-month-date-for-ma.patch
 0002-man-fill_template-Use-UTC-date-to-avoid-differences-.patch
 0003-man-fill_template-Use-POSIX-compatible-comparison.patch
+fix-implicit-alignment-assumptions.diff

Reply via email to