~ruther/guix-local

5a66e25ce631802b4a3fcc16fca20ae67e77c34e — Ricardo Wurmus 9 years ago 2442000
gnu: Add seq24.

* gnu/packages/music.scm (seq24): New variable.
* gnu/packages/patches/seq24-rename-mutex.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register patch.
3 files changed, 155 insertions(+), 0 deletions(-)

M gnu/local.mk
M gnu/packages/music.scm
A gnu/packages/patches/seq24-rename-mutex.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 854,6 854,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/scheme48-tests.patch			\
  %D%/packages/patches/scotch-test-threading.patch		\
  %D%/packages/patches/sdl-libx11-1.6.patch			\
  %D%/packages/patches/seq24-rename-mutex.patch			\
  %D%/packages/patches/serf-comment-style-fix.patch		\
  %D%/packages/patches/serf-deflate-buckets-test-fix.patch	\
  %D%/packages/patches/slim-session.patch			\

M gnu/packages/music.scm => gnu/packages/music.scm +30 -0
@@ 2598,6 2598,36 @@ sequencer and LFO.  It can hold any number of arpeggiator, sequencer, or LFO
modules running in parallel.")
    (license license:gpl2+)))

(define-public seq24
  (package
    (name "seq24")
    (version "0.9.3")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://launchpad.net/seq24/trunk/"
                                  version "/+download/seq24-"
                                  version ".tar.bz2"))
              (sha256
               (base32
                "12dphdhnvfk1k0vmagi1v2lhyxjyj1j3cz6ksjw0ydcvid1x8ap2"))
              (patches (search-patches "seq24-rename-mutex.patch"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
       (list "CXXFLAGS=-std=gnu++11")))
    (inputs
     `(("gtkmm" ,gtkmm-2)
       ("alsa-lib" ,alsa-lib)
       ("jack" ,jack-1)
       ("lash" ,lash)))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (home-page "https://edge.launchpad.net/seq24/")
    (synopsis "Real-time MIDI sequencer")
    (description "Seq24 is a real-time MIDI sequencer.  It was created to
provide a very simple interface for editing and playing MIDI loops.")
    (license license:gpl2+)))

(define-public python-discogs-client
  (package
    (name "python-discogs-client")

A gnu/packages/patches/seq24-rename-mutex.patch => gnu/packages/patches/seq24-rename-mutex.patch +124 -0
@@ 0,0 1,124 @@
The custom mutex definition in Seq24 clashes with the mutex defined in gtkmm.
This patch renames the custom definition.

See https://bugs.launchpad.net/seq24/+bug/1647614 for upstream bug report.

diff --git a/src/midibus.h b/src/midibus.h
index 2cdf8e8..1bb02bd 100644
--- a/src/midibus.h
+++ b/src/midibus.h
@@ -90,7 +90,7 @@ class midibus
 
 
     /* locking */
-    mutex m_mutex;
+    seq24mutex m_mutex;
 
     /* mutex */
     void lock();
@@ -208,7 +208,7 @@ class mastermidibus
     sequence *m_seq;
 
     /* locking */
-    mutex m_mutex;
+    seq24mutex m_mutex;
 
     /* mutex */
     void lock();
diff --git a/src/midibus_portmidi.h b/src/midibus_portmidi.h
index 0119e9c..8c6a27a 100644
--- a/src/midibus_portmidi.h
+++ b/src/midibus_portmidi.h
@@ -65,7 +65,7 @@ class midibus
     long m_lasttick;
 
     /* locking */
-    mutex m_mutex;
+    seq24mutex m_mutex;
 
     /* mutex */
     void lock();
@@ -164,7 +164,7 @@ class mastermidibus
     sequence *m_seq;
 
     /* locking */
-    mutex m_mutex;
+    seq24mutex m_mutex;
 
     /* mutex */
     void lock();
diff --git a/src/mutex.cpp b/src/mutex.cpp
index b3f23fd..914114f 100644
--- a/src/mutex.cpp
+++ b/src/mutex.cpp
@@ -20,23 +20,23 @@
 
 #include "mutex.h"
 
-const pthread_mutex_t mutex::recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+const pthread_mutex_t seq24mutex::recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
 const pthread_cond_t condition_var::cond  = PTHREAD_COND_INITIALIZER;
 
-mutex::mutex( )
+seq24mutex::seq24mutex( )
 {
     m_mutex_lock = recmutex;
 }
 
 void
-mutex::lock( )
+seq24mutex::lock( )
 {
     pthread_mutex_lock( &m_mutex_lock );
 }
 
 
 void
-mutex::unlock( )
+seq24mutex::unlock( )
 {
     pthread_mutex_unlock( &m_mutex_lock );
 }
diff --git a/src/mutex.h b/src/mutex.h
index 399f8a3..4f1b867 100644
--- a/src/mutex.h
+++ b/src/mutex.h
@@ -24,7 +24,7 @@
 
 #include <pthread.h>
 
-class mutex {
+class seq24mutex {
 
 private:
 
@@ -37,14 +37,14 @@ protected:
 
 public:
 
-    mutex();
+    seq24mutex();
 
     void lock();
     void unlock();
 
 };
 
-class condition_var : public mutex {
+class condition_var : public seq24mutex {
 
 private:
 
diff --git a/src/sequence.h b/src/sequence.h
index 2943946..9da8700 100644
--- a/src/sequence.h
+++ b/src/sequence.h
@@ -153,7 +153,7 @@ class sequence
     long m_rec_vol;
 
     /* locking */
-    mutex m_mutex;
+    seq24mutex m_mutex;
 
     /* used to idenfity which events are ours in the out queue */
     //unsigned char m_tag;