summaryrefslogtreecommitdiff
path: root/media-sound/seq24
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2019-03-19 11:37:34 +0000
committerV3n3RiX <venerix@redcorelinux.org>2019-03-19 11:37:34 +0000
commitb7b97785ebbb2f11d24d14dab8b81ed274f4ce6a (patch)
tree9fd110f9fc996e8a4213eeda994a8c112491b86d /media-sound/seq24
parent066d27181e9a797ad9f8fc43b49fc9a10ff2f707 (diff)
gentoo resync : 19.03.2019
Diffstat (limited to 'media-sound/seq24')
-rw-r--r--media-sound/seq24/Manifest5
-rw-r--r--media-sound/seq24/files/seq24-0.9.2-lash-fix.patch248
-rw-r--r--media-sound/seq24/files/seq24-0.9.3-std-mutex.patch331
-rw-r--r--media-sound/seq24/seq24-0.9.3-r1.ebuild (renamed from media-sound/seq24/seq24-0.9.2-r1.ebuild)32
4 files changed, 353 insertions, 263 deletions
diff --git a/media-sound/seq24/Manifest b/media-sound/seq24/Manifest
index 45105c7c8e96..e7db7f26202e 100644
--- a/media-sound/seq24/Manifest
+++ b/media-sound/seq24/Manifest
@@ -1,6 +1,5 @@
-AUX seq24-0.9.2-lash-fix.patch 6333 BLAKE2B 2b3f788c97032f7a144a54dc7fa92c19469028eafe53851052aa12ad42b91c6a2f65309aa54e8928d0104b6b4b751d233a3409bbb83cece0f47ff4f58e238627 SHA512 762d1bc75e736947f62316465c4ccd24f0c2ccc610803f04e41c28e1e4dd73e59d12eeacea73383c4d26735bef5c8d9a2300424ea2a3c0fcf0d80465d3431184
-DIST seq24-0.9.2.tar.bz2 213059 BLAKE2B e67a63182f34f7452a8f0550591b5a3d13409782eb42064cff347b333f40ca656477ed601f8b7178f01f35873c992ea8a3d574b43f186b3979f8e09030b8b64c SHA512 31e57c7fafbccf85a69229674d3bcfb86e2fa9b2f095b50fd59a44673896edc5c4f9dd97585923cee9129bc8619ac6eb33274241271cdcc56732c920d4106ec8
+AUX seq24-0.9.3-std-mutex.patch 7495 BLAKE2B 32480d074e8b1f8e32aa983342979709392ee454374bb943c7acd80367d372722417cf192c922572c83219597328c60f34c49d4187eb3d7d311d02ecd80ad3dd SHA512 f5a1cc2d658b9aaeebecf61f102fa34c1613abd82ac94e8febb8bc72b20478813fb0772da7a437dd46dd5f5052dbd428cab54d8f456701f95fd2be06767182d6
DIST seq24-0.9.3.tar.bz2 221014 BLAKE2B 94b771712d53b3a74d9fed249822ce890959b9159ed8ca0d4f30909f186f1c63a4c93b7e11adcbe51219fd4894469af8cb147da1ee8f82dcc1b42e9d16150d96 SHA512 f0fe13ceedbc87899df058918f3bdd57dbb9f1a3491d23503ae48367ba9eebdd2c8b5706b7b041db0959703a941d52d67f57823937ffdc574b01323eda32e3ad
-EBUILD seq24-0.9.2-r1.ebuild 897 BLAKE2B 89a5ab2342d43d31edda60153a2c47fded368d98a892895b1aaae4dd441c2774d09dc79c0d7efa01aa1074972c1809ce0325a097853ea3d0addac8ac8561a501 SHA512 50136ff4cae38c053ee8b209a6969b7023cb03ea26e3b31ea035dcbe6858432d66a16bcf737452e027230cecc451d1542c4859f00c6adc2f85d43a04100163dd
+EBUILD seq24-0.9.3-r1.ebuild 887 BLAKE2B 1598d557db395dbcea09864c030955ab1ad529f9d4c43105082b5bacb80f980eec50a8e4f98004f2f898063d7baae4e946ec750de28e2230a10da6e673f8efb7 SHA512 171bf85f78bf0556d77caccca4c1286eae5f1405f5d10bbb486b2ffb0edfa2ab3e0cf0eeec28aa3720d8efe74128e2c9c746acf8c8cefa454e3aec36e2aca096
EBUILD seq24-0.9.3.ebuild 837 BLAKE2B b776d790cc008a07f6611effa13697ab00aa6fbcc2d4fc2710c70f7bb46e1ed07e2224b2f38198caa8d278a44e87a59dcac5e921e29608876b0f87587a65f680 SHA512 6c150a31c96c8b41d7b033ea300b2487d2780d7bc7c29712a2d1fab656ec0e2a19e1265bf49f8f8dd9a5bc2bdb8570855ebbcf2a17b64f311834994dcde48da6
MISC metadata.xml 255 BLAKE2B 7a492321189530430d5c71d5598f8a99b548e020d8ace46bb200f1f18abb3a59c4d0dff84c8dc1f78297137c25684d42386d793b84a02e2363fab4d6dcedd4fa SHA512 9e74b875aa129f5b8108121402291772fde4ac18a157dc60f7b3e19c318ee54cd1be54e283a68bc61562f2dc3f5b338b161028d673ff7baa267192ff3b7e8dc8
diff --git a/media-sound/seq24/files/seq24-0.9.2-lash-fix.patch b/media-sound/seq24/files/seq24-0.9.2-lash-fix.patch
deleted file mode 100644
index 8b0efadb7b55..000000000000
--- a/media-sound/seq24/files/seq24-0.9.2-lash-fix.patch
+++ /dev/null
@@ -1,248 +0,0 @@
-Upstream fix for segfault when built with lash support.
-https://bugs.launchpad.net/seq24/+bug/696371
-
-=== modified file 'src/lash.cpp'
---- old/src/lash.cpp
-+++ new/src/lash.cpp
-@@ -29,17 +29,9 @@
- lash::lash(int *argc, char ***argv)
- {
- #ifdef LASH_SUPPORT
-- m_lash_args = lash_extract_args(argc, argv);
--#endif // LASH_SUPPORT
--}
--
--
--void lash::init(perform* perform)
--{
--#ifdef LASH_SUPPORT
-- m_perform = perform;
--
-- m_client = lash_init(m_lash_args, PACKAGE_NAME,
-+ m_perform = NULL;
-+
-+ m_client = lash_init(lash_extract_args(argc, argv), PACKAGE_NAME,
- LASH_Config_File, LASH_PROTOCOL(2, 0));
-
- if (m_client == NULL) {
-@@ -65,9 +57,10 @@
-
-
- void
--lash::start()
-+lash::start(perform* perform)
- {
- #ifdef LASH_SUPPORT
-+ m_perform = perform;
- /* Process any LASH events every 250 msec (arbitrarily chosen interval) */
- Glib::signal_timeout().connect(sigc::mem_fun(*this, &lash::process_events), 250);
- #endif // LASH_SUPPORT
-
-=== modified file 'src/lash.h'
---- old/src/lash.h
-+++ new/src/lash.h
-@@ -43,7 +43,6 @@
- #ifdef LASH_SUPPORT
- perform *m_perform;
- lash_client_t *m_client;
-- lash_args_t *m_lash_args;
-
- bool process_events();
- void handle_event(lash_event_t* conf);
-@@ -54,13 +53,12 @@
- public:
- lash(int *argc, char ***argv);
-
-- void init(perform* perform);
- void set_alsa_client_id(int id);
-- void start();
-+ void start(perform* perform);
- };
-
-
--/* global lash driver, defined in seq24.cpp */
-+/* global lash driver, defined in seq24.cpp and used in midibus.cpp*/
- extern lash *lash_driver;
-
-
-
-=== modified file 'src/midibus.cpp'
---- old/src/midibus.cpp
-+++ new/src/midibus.cpp
-@@ -877,11 +877,11 @@
-
- /* set up our clients queue */
- m_queue = snd_seq_alloc_queue( m_alsa_seq );
--#endif
- #ifdef LASH_SUPPORT
- /* notify lash of our client ID so it can restore connections */
- lash_driver->set_alsa_client_id(snd_seq_client_id(m_alsa_seq));
- #endif
-+#endif
- }
-
-
-
-=== modified file 'src/perform.cpp'
---- old/src/perform.cpp
-+++ new/src/perform.cpp
-@@ -1342,6 +1342,7 @@
- stats_last_clock_us= (last.tv_sec * 1000000) + (last.tv_nsec / 1000);
- #else
- /* get start time position */
-+ /* timeGetTime() returns a "DWORD" type (= unsigned long)*/
- last = timeGetTime();
-
- if ( global_stats )
-
-=== modified file 'src/seq24.cpp'
---- old/src/seq24.cpp
-+++ new/src/seq24.cpp
-@@ -108,12 +108,66 @@
- * GTK+. */
- Gtk::Main kit(argc, argv);
-
-- /* Init the lash driver (strips lash specific command line
-- * arguments, but does not connect to daemon) */
-+ /*prepare global MIDI definitions*/
-+ for ( int i=0; i<c_maxBuses; i++ )
-+ {
-+ for ( int j=0; j<16; j++ )
-+ global_user_midi_bus_definitions[i].instrument[j] = -1;
-+ }
-+
-+ for ( int i=0; i<c_max_instruments; i++ )
-+ {
-+ for ( int j=0; j<128; j++ )
-+ global_user_instrument_definitions[i].controllers_active[j] = false;
-+ }
-+
-+
-+ /* Init the lash driver (strip lash specific command line
-+ * arguments and connect to daemon) */
- #ifdef LASH_SUPPORT
- lash_driver = new lash(&argc, &argv);
- #endif
-
-+ /* the main performance object */
-+ /* lash must be initialized here because mastermidibus uses the global
-+ * lash_driver variable*/
-+ perform p;
-+
-+ /* read user preferences files */
-+ if ( getenv( HOME ) != NULL )
-+ {
-+ Glib::ustring home( getenv( HOME ));
-+ last_used_dir = home;
-+ Glib::ustring total_file = home + SLASH + config_filename;
-+
-+ if (Glib::file_test(total_file, Glib::FILE_TEST_EXISTS))
-+ {
-+ printf( "Reading [%s]\n", total_file.c_str());
-+
-+ optionsfile options( total_file );
-+
-+ if ( !options.parse( &p ) ){
-+ printf( "Error Reading [%s]\n", total_file.c_str());
-+ }
-+ }
-+
-+ total_file = home + SLASH + user_filename;
-+ if (Glib::file_test(total_file, Glib::FILE_TEST_EXISTS))
-+ {
-+ printf( "Reading [%s]\n", total_file.c_str());
-+
-+ userfile user( total_file );
-+
-+ if ( !user.parse( &p ) ){
-+ printf( "Error Reading [%s]\n", total_file.c_str());
-+ }
-+ }
-+
-+ }
-+ else
-+ printf( "Error calling getenv( \"%s\" )\n", HOME );
-+
-+
- /* parse parameters */
- int c;
-
-@@ -229,65 +283,14 @@
- } /* end while */
-
-
-- /*prepare global MIDI definitions*/
-- for ( int i=0; i<c_maxBuses; i++ )
-- {
-- for ( int j=0; j<16; j++ )
-- global_user_midi_bus_definitions[i].instrument[j] = -1;
-- }
--
-- for ( int i=0; i<c_max_instruments; i++ )
-- {
-- for ( int j=0; j<128; j++ )
-- global_user_instrument_definitions[i].controllers_active[j] = false;
-- }
--
--
-- /* the main performance object */
-- perform p;
--
-- p_font_renderer = new font();
--
--
-- if ( getenv( HOME ) != NULL )
-- {
-- Glib::ustring home( getenv( HOME ));
-- last_used_dir = home;
-- Glib::ustring total_file = home + SLASH + config_filename;
--
-- if (Glib::file_test(total_file, Glib::FILE_TEST_EXISTS))
-- {
-- printf( "Reading [%s]\n", total_file.c_str());
--
-- optionsfile options( total_file );
--
-- if ( !options.parse( &p ) ){
-- printf( "Error Reading [%s]\n", total_file.c_str());
-- }
-- }
--
-- total_file = home + SLASH + user_filename;
-- if (Glib::file_test(total_file, Glib::FILE_TEST_EXISTS))
-- {
-- printf( "Reading [%s]\n", total_file.c_str());
--
-- userfile user( total_file );
--
-- if ( !user.parse( &p ) ){
-- printf( "Error Reading [%s]\n", total_file.c_str());
-- }
-- }
--
-- }
-- else
-- printf( "Error calling getenv( \"%s\" )\n", HOME );
--
- p.init();
- p.launch_input_thread();
- p.launch_output_thread();
- p.init_jack();
-
-
-+ p_font_renderer = new font();
-+
- mainwnd seq24_window( &p );
- if (optind < argc)
- {
-@@ -299,8 +302,7 @@
-
- /* connect to lash daemon and poll events*/
- #ifdef LASH_SUPPORT
-- lash_driver->init(&p);
-- lash_driver->start();
-+ lash_driver->start(&p);
- #endif
- kit.run(seq24_window);
-
-
diff --git a/media-sound/seq24/files/seq24-0.9.3-std-mutex.patch b/media-sound/seq24/files/seq24-0.9.3-std-mutex.patch
new file mode 100644
index 000000000000..4e8585a94491
--- /dev/null
+++ b/media-sound/seq24/files/seq24-0.9.3-std-mutex.patch
@@ -0,0 +1,331 @@
+Description: Use standard mutex and condition variable classes
+ Use std::recursive_mutex and std::condition_variable instead of custom classes
+ based on pthread.
+ .
+ Fixes FTBFS with recent GCC versions which defines the "mutex" class which
+ conflicts with seq24's version of "mutex".
+Author: James Cowgill <jcowgill@debian.org>
+Bug: https://bugs.launchpad.net/seq24/+bug/1647614
+Bug-Debian: https://bugs.debian.org/822394
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/src/Module.am
++++ b/src/Module.am
+@@ -31,8 +31,6 @@ bin_PROGRAMS = %D%/seq24
+ %D%/midibus_portmidi.h \
+ %D%/midifile.cpp \
+ %D%/midifile.h \
+- %D%/mutex.cpp \
+- %D%/mutex.h \
+ %D%/options.cpp \
+ %D%/options.h \
+ %D%/optionsfile.cpp \
+--- a/src/midibus.h
++++ b/src/midibus.h
+@@ -35,11 +35,11 @@ class midibus;
+ # include <alsa/seq_midi_event.h>
+ #endif
+
++#include <mutex>
+ #include <string>
+
+ #include "event.h"
+ #include "sequence.h"
+-#include "mutex.h"
+ #include "globals.h"
+
+ const int c_midibus_output_size = 0x100000;
+@@ -90,7 +90,7 @@ class midibus
+
+
+ /* locking */
+- mutex m_mutex;
++ std::recursive_mutex m_mutex;
+
+ /* mutex */
+ void lock();
+@@ -208,7 +208,7 @@ class mastermidibus
+ sequence *m_seq;
+
+ /* locking */
+- mutex m_mutex;
++ std::recursive_mutex m_mutex;
+
+ /* mutex */
+ void lock();
+--- a/src/midibus_portmidi.h
++++ b/src/midibus_portmidi.h
+@@ -25,12 +25,12 @@ class mastermidibus;
+
+ #ifdef __WIN32__
+
++#include <mutex>
+ #include <string>
+
+ #include "portmidi.h"
+ #include "event.h"
+ #include "sequence.h"
+-#include "mutex.h"
+ #include "globals.h"
+
+ const int c_midibus_output_size = 0x100000;
+@@ -65,7 +65,7 @@ class midibus
+ long m_lasttick;
+
+ /* locking */
+- mutex m_mutex;
++ std::recursive_mutex m_mutex;
+
+ /* mutex */
+ void lock();
+@@ -164,7 +164,7 @@ class mastermidibus
+ sequence *m_seq;
+
+ /* locking */
+- mutex m_mutex;
++ std::recursive_mutex m_mutex;
+
+ /* mutex */
+ void lock();
+--- a/src/mutex.cpp
++++ /dev/null
+@@ -1,62 +0,0 @@
+-//----------------------------------------------------------------------------
+-//
+-// This file is part of seq24.
+-//
+-// seq24 is free software; you can redistribute it and/or modify
+-// it under the terms of the GNU General Public License as published by
+-// the Free Software Foundation; either version 2 of the License, or
+-// (at your option) any later version.
+-//
+-// seq24 is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without even the implied warranty of
+-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-// GNU General Public License for more details.
+-//
+-// You should have received a copy of the GNU General Public License
+-// along with seq24; if not, write to the Free Software
+-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-//
+-//-----------------------------------------------------------------------------
+-
+-#include "mutex.h"
+-
+-const pthread_mutex_t mutex::recmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+-const pthread_cond_t condition_var::cond = PTHREAD_COND_INITIALIZER;
+-
+-mutex::mutex( )
+-{
+- m_mutex_lock = recmutex;
+-}
+-
+-void
+-mutex::lock( )
+-{
+- pthread_mutex_lock( &m_mutex_lock );
+-}
+-
+-
+-void
+-mutex::unlock( )
+-{
+- pthread_mutex_unlock( &m_mutex_lock );
+-}
+-
+-condition_var::condition_var( )
+-{
+- m_cond = cond;
+-}
+-
+-
+-void
+-condition_var::signal( )
+-{
+- pthread_cond_signal( &m_cond );
+-}
+-
+-void
+-condition_var::wait( )
+-{
+- pthread_cond_wait( &m_cond, &m_mutex_lock );
+-}
+-
+-
+--- a/src/mutex.h
++++ /dev/null
+@@ -1,63 +0,0 @@
+-//----------------------------------------------------------------------------
+-//
+-// This file is part of seq24.
+-//
+-// seq24 is free software; you can redistribute it and/or modify
+-// it under the terms of the GNU General Public License as published by
+-// the Free Software Foundation; either version 2 of the License, or
+-// (at your option) any later version.
+-//
+-// seq24 is distributed in the hope that it will be useful,
+-// but WITHOUT ANY WARRANTY; without even the implied warranty of
+-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-// GNU General Public License for more details.
+-//
+-// You should have received a copy of the GNU General Public License
+-// along with seq24; if not, write to the Free Software
+-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+-//
+-//-----------------------------------------------------------------------------
+-
+-#pragma once
+-
+-#include "globals.h"
+-
+-#include <pthread.h>
+-
+-class mutex {
+-
+-private:
+-
+- static const pthread_mutex_t recmutex;
+-
+-protected:
+-
+- /* mutex lock */
+- pthread_mutex_t m_mutex_lock;
+-
+-public:
+-
+- mutex();
+-
+- void lock();
+- void unlock();
+-
+-};
+-
+-class condition_var : public mutex {
+-
+-private:
+-
+- static const pthread_cond_t cond;
+-
+- pthread_cond_t m_cond;
+-
+-public:
+-
+- condition_var();
+-
+- void wait();
+- void signal();
+-
+-};
+-
+--- a/src/perform.cpp
++++ b/src/perform.cpp
+@@ -426,7 +426,7 @@ perform::~perform()
+ m_outputing = false;
+ m_running = false;
+
+- m_condition_var.signal();
++ m_condition_var.notify_one();
+
+ if (m_out_thread_launched )
+ pthread_join( m_out_thread, NULL );
+@@ -1005,7 +1005,7 @@ void perform::stop()
+
+ void perform::inner_start(bool a_state)
+ {
+- m_condition_var.lock();
++ std::lock_guard<std::mutex> lock(m_mutex);
+
+ if (!is_running()) {
+
+@@ -1015,10 +1015,8 @@ void perform::inner_start(bool a_state)
+ off_sequences();
+
+ set_running(true);
+- m_condition_var.signal();
++ m_condition_var.notify_one();
+ }
+-
+- m_condition_var.unlock();
+ }
+
+
+@@ -1262,18 +1260,18 @@ void perform::output_func()
+
+ //printf ("waiting for signal\n");
+
+- m_condition_var.lock();
++ std::unique_lock<std::mutex> lock(m_mutex);
+
+ while (!m_running) {
+
+- m_condition_var.wait();
++ m_condition_var.wait(lock);
+
+ /* if stopping, then kill thread */
+ if (!m_outputing)
+ break;
+ }
+
+- m_condition_var.unlock();
++ lock.unlock();
+
+ //printf( "signaled [%d]\n", m_playback_mode );
+
+--- a/src/perform.h
++++ b/src/perform.h
+@@ -32,6 +32,9 @@ class perform;
+ #endif
+ #include <pthread.h>
+
++#include <condition_variable>
++#include <mutex>
++
+
+ /* if we have jack, include the jack headers */
+ #ifdef JACK_SUPPORT
+@@ -152,7 +155,8 @@ class perform
+ int m_control_status;
+ int m_screen_set;
+
+- condition_var m_condition_var;
++ std::condition_variable m_condition_var;
++ std::mutex m_mutex;
+
+ // do not access these directly, use set/lookup below
+ std::map<unsigned int,long> key_events;
+--- a/src/perfroll.h
++++ b/src/perfroll.h
+@@ -39,8 +39,6 @@
+
+ #include "globals.h"
+ #include "perform.h"
+-#include "mutex.h"
+-
+
+ using namespace Gtk;
+
+--- a/src/sequence.h
++++ b/src/sequence.h
+@@ -26,11 +26,11 @@ class sequence;
+ #include <string>
+ #include <list>
+ #include <stack>
++#include <mutex>
+
+ #include "event.h"
+ #include "midibus.h"
+ #include "globals.h"
+-#include "mutex.h"
+
+ enum draw_type
+ {
+@@ -153,7 +153,7 @@ class sequence
+ long m_rec_vol;
+
+ /* locking */
+- mutex m_mutex;
++ std::recursive_mutex m_mutex;
+
+ /* used to idenfity which events are ours in the out queue */
+ //unsigned char m_tag;
diff --git a/media-sound/seq24/seq24-0.9.2-r1.ebuild b/media-sound/seq24/seq24-0.9.3-r1.ebuild
index a63621d8a8cb..1917270dffd8 100644
--- a/media-sound/seq24/seq24-0.9.2-r1.ebuild
+++ b/media-sound/seq24/seq24-0.9.3-r1.ebuild
@@ -1,10 +1,11 @@
-# Copyright 1999-2014 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=4
-inherit eutils
+EAPI=7
-DESCRIPTION="Seq24 is a loop based MIDI sequencer with focus on live performances"
+inherit autotools desktop
+
+DESCRIPTION="Loop based MIDI sequencer with focus on live performances"
HOMEPAGE="https://edge.launchpad.net/seq24/"
SRC_URI="https://edge.launchpad.net/seq24/trunk/${PV}/+download/${P}.tar.bz2"
@@ -13,18 +14,25 @@ SLOT="0"
KEYWORDS="amd64 ~ppc x86"
IUSE="jack lash"
-RDEPEND="media-libs/alsa-lib
- >=dev-cpp/gtkmm-2.4:2.4
- >=dev-libs/libsigc++-2.2:2
- jack? ( >=media-sound/jack-audio-connection-kit-0.90 )
- lash? ( >=media-sound/lash-0.5 )"
-DEPEND="${RDEPEND}
- virtual/pkgconfig"
+BDEPEND="
+ virtual/pkgconfig
+"
+DEPEND="
+ dev-cpp/gtkmm:2.4
+ dev-libs/libsigc++:2
+ media-libs/alsa-lib
+ jack? ( virtual/jack )
+ lash? ( media-sound/lash )
+"
+RDEPEND="${DEPEND}"
DOCS=( AUTHORS ChangeLog README RTC SEQ24 )
+PATCHES=( "${FILESDIR}/${P}-std-mutex.patch" )
+
src_prepare() {
- epatch "${FILESDIR}"/${P}-lash-fix.patch
+ default
+ eautoreconf
}
src_configure() {