summaryrefslogtreecommitdiff
path: root/media-sound/timidity++
diff options
context:
space:
mode:
authorPalica <palica+gitlab@liguros.net>2020-06-23 22:35:08 +0200
committerPalica <palica+gitlab@liguros.net>2020-06-23 22:35:08 +0200
commitecdac123787b96ce6649f0f91da12ea6458cc2b1 (patch)
treeb89c74d9e6fe6e8aebc4c77bcbeb4ab73214127d /media-sound/timidity++
parent1be72aa41cf41dedadeecf59dca9f01de6381f5e (diff)
downloadbaldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.gz
baldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.xz
baldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.zip
Updating liguros repo
Diffstat (limited to 'media-sound/timidity++')
-rw-r--r--media-sound/timidity++/Manifest2
-rw-r--r--media-sound/timidity++/files/50timidity++-gentoo.el6
-rw-r--r--media-sound/timidity++/files/conf.d.timidity.227
-rw-r--r--media-sound/timidity++/files/init.d.timidity.420
-rw-r--r--media-sound/timidity++/files/timidity++-2.14.0-CVE-2017-11546.patch31
-rw-r--r--media-sound/timidity++/files/timidity++-2.14.0-CVE-2017-11547.patch67
-rw-r--r--media-sound/timidity++/files/timidity++-2.14.0-ar.patch23
-rw-r--r--media-sound/timidity++/files/timidity++-2.14.0-configure-flags.patch140
-rw-r--r--media-sound/timidity++/files/timidity++-2.14.0-gcc5.patch31
-rw-r--r--media-sound/timidity++/files/timidity++-2.14.0-params.patch22
-rw-r--r--media-sound/timidity++/files/timidity++-2.14.0-pkg-config.patch109
-rw-r--r--media-sound/timidity++/files/timidity++-2.14.0-revert-for-required-ctl_speana_data-function.patch28
-rw-r--r--media-sound/timidity++/files/timidity++-2.14.0-tcltk86.patch13
-rw-r--r--media-sound/timidity++/files/timidity++-2.15.0-pkg-config.patch118
-rw-r--r--media-sound/timidity++/files/timidity.cfg-r124
-rw-r--r--media-sound/timidity++/files/timidity.desktop.210
-rw-r--r--media-sound/timidity++/files/timidity.service10
-rw-r--r--media-sound/timidity++/files/timidity.xpm56
-rw-r--r--media-sound/timidity++/metadata.xml12
-rw-r--r--media-sound/timidity++/timidity++-2.14.0-r3.ebuild202
-rw-r--r--media-sound/timidity++/timidity++-2.15.0.ebuild214
21 files changed, 1165 insertions, 0 deletions
diff --git a/media-sound/timidity++/Manifest b/media-sound/timidity++/Manifest
new file mode 100644
index 000000000000..6417e3383c21
--- /dev/null
+++ b/media-sound/timidity++/Manifest
@@ -0,0 +1,2 @@
+DIST TiMidity++-2.14.0.tar.xz 1356476 BLAKE2B 8d4a360d1c16b250f3bef7c010e1e263fdda13446437ff2454dc2c2a717246c4d27836a3b40586b12b33e175bc54ee211a3a1798005733461cf5833eda11811a SHA512 d8fc06fa36e4dd42de80c61943da4cd9aec5f8aaf31057a9ededa633d2d48e64c4e53391378d82a7a46ffe4f96c756b010ea9727270f80b134ae1f8bad535bd3
+DIST TiMidity++-2.15.0.tar.xz 1363040 BLAKE2B 63612dc96ddef9b24ca35a8fa24c22fee8b0573efb09543e6017070b2d0a68494bc34afe8ffc50b5f7fe2d95397a971d5dc7afd4c9adbb524b119012e716b7f7 SHA512 36c3c79d941903109d5d6d529963d12e8192a857e80402ad5ab0d1e223451a7cf5dc8fdd046b22ae7da96f413d68db8587a8fce348635838eba2f30f7019192f
diff --git a/media-sound/timidity++/files/50timidity++-gentoo.el b/media-sound/timidity++/files/50timidity++-gentoo.el
new file mode 100644
index 000000000000..3f9e35ca106c
--- /dev/null
+++ b/media-sound/timidity++/files/50timidity++-gentoo.el
@@ -0,0 +1,6 @@
+
+;;; timidity++ site-lisp configuration
+
+(add-to-list 'load-path "@SITELISP@")
+(autoload 'timidity "timidity" "TiMidity Interface" t)
+(setq timidity-prog-path "/usr/bin/timidity")
diff --git a/media-sound/timidity++/files/conf.d.timidity.2 b/media-sound/timidity++/files/conf.d.timidity.2
new file mode 100644
index 000000000000..0a153cad6a9e
--- /dev/null
+++ b/media-sound/timidity++/files/conf.d.timidity.2
@@ -0,0 +1,27 @@
+# TIMIDITY_OPTS
+# Command line arguements to be passed to timidity. -iA is always used
+# Common options:
+# -Os : Output to ALSA pcm device
+# -Oe : Output to esd
+# -On : Output to NAS
+#
+# -B<n>,<m> : Set number of buffer fragments(n), and buffer size(2^m)
+#
+# -EFreverb=0 : Disable MIDI reverb effect control
+# -EFreverb=1[,level] : Enable MIDI reverb effect control
+# `level' is optional to specify reverb level [0..127]
+# This effect is only available in stereo
+# (default)
+# -EFreverb=2 : Global reverb effect
+
+TIMIDITY_OPTS="-B2,8 -Os -EFreverb=0"
+
+# TIMIDITY_PCM_NAME
+# This option can be used to choose an alternate ALSA pcm device. This will
+# be most useful for users of the dmix alsa plugin or those with multiple
+# cards. If you don't know what this is, chances are you want the default.
+
+#TIMIDITY_PCM_NAME="default"
+
+#LADSPA plugins library path
+LADSPA_PATH="/usr/lib/ladspa"
diff --git a/media-sound/timidity++/files/init.d.timidity.4 b/media-sound/timidity++/files/init.d.timidity.4
new file mode 100644
index 000000000000..1863a0197bf8
--- /dev/null
+++ b/media-sound/timidity++/files/init.d.timidity.4
@@ -0,0 +1,20 @@
+#!/sbin/openrc-run
+
+depend() {
+ after alsasound esound
+}
+
+start() {
+ ebegin "Starting TiMidity++ Virtual Midi Sequencer"
+ test -n "$TIMIDITY_PCM_NAME" && export TIMIDITY_PCM_NAME
+ start-stop-daemon --start --background --chdir /usr/share/timidity \
+ --user timidity --group audio --make-pidfile --pidfile /var/run/timidity.pid \
+ --exec /usr/bin/timidity -- -iA ${TIMIDITY_OPTS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping TiMidity++"
+ start-stop-daemon --stop --quiet --pidfile /var/run/timidity.pid
+ eend $?
+}
diff --git a/media-sound/timidity++/files/timidity++-2.14.0-CVE-2017-11546.patch b/media-sound/timidity++/files/timidity++-2.14.0-CVE-2017-11546.patch
new file mode 100644
index 000000000000..94135e98b96a
--- /dev/null
+++ b/media-sound/timidity++/files/timidity++-2.14.0-CVE-2017-11546.patch
@@ -0,0 +1,31 @@
+From 2386ec2c745f6c5075e53ea051da211336b44b84 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 26 Jun 2018 22:31:27 +0200
+Subject: readmidi: Fix division by zero
+
+References: CVE-2017-11546
+
+An adhoc fix for division by zero in insert_note_steps().
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+bug-debian: https://bugs.debian.org/870338
+bug-suse: https://bugzilla.suse.com/show_bug.cgi?id=1081694
+bug: https://bugzilla.suse.com/show_bug.cgi?id=1081694
+origin: https://bugzilla.suse.com/attachment.cgi?id=760825
+---
+ timidity/readmidi.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/timidity/readmidi.c b/timidity/readmidi.c
+index 158388a..341777e 100644
+--- a/timidity/readmidi.c
++++ b/timidity/readmidi.c
+@@ -4585,6 +4585,8 @@ static void insert_note_steps(void)
+ if (beat != 0)
+ meas++, beat = 0;
+ num = timesig[n].a, denom = timesig[n].b, n++;
++ if (!denom)
++ denom = 1;
+ }
+ a = (meas + 1) & 0xff;
+ b = (((meas + 1) >> 8) & 0x0f) + ((beat + 1) << 4);
diff --git a/media-sound/timidity++/files/timidity++-2.14.0-CVE-2017-11547.patch b/media-sound/timidity++/files/timidity++-2.14.0-CVE-2017-11547.patch
new file mode 100644
index 000000000000..12562a577e0e
--- /dev/null
+++ b/media-sound/timidity++/files/timidity++-2.14.0-CVE-2017-11547.patch
@@ -0,0 +1,67 @@
+From 34328d22cbb4ccf03f29223f54f1834c796d86a2 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 26 Jun 2018 22:31:28 +0200
+Subject: resample: Fix out-of-bound access in resamplers
+
+References: CVE-2017-11547
+
+An adhoc fix for out-of-bound accesses in resamples.
+The offset might overflow the given data range.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+bug-debian: https://bugs.debian.org/870338
+bug-suse: https://bugzilla.suse.com/show_bug.cgi?id=1081694
+origin: https://bugzilla.suse.com/attachment.cgi?id=760826
+---
+ timidity/resample.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/timidity/resample.c b/timidity/resample.c
+index cd6b8e6..4a3fadf 100644
+--- a/timidity/resample.c
++++ b/timidity/resample.c
+@@ -57,6 +57,8 @@ static resample_t resample_cspline(sample_t *src, splen_t ofs, resample_rec_t *r
+ {
+ int32 ofsi, ofsf, v0, v1, v2, v3, temp;
+
++ if (ofs + (1 << FRACTION_BITS) >= rec->data_length)
++ return src[ofs >> FRACTION_BITS];
+ ofsi = ofs >> FRACTION_BITS;
+ v1 = src[ofsi];
+ v2 = src[ofsi + 1];
+@@ -96,6 +98,8 @@ static resample_t resample_lagrange(sample_t *src, splen_t ofs, resample_rec_t *
+ {
+ int32 ofsi, ofsf, v0, v1, v2, v3;
+
++ if (ofs + (1 << FRACTION_BITS) >= rec->data_length)
++ return src[ofs >> FRACTION_BITS];
+ ofsi = ofs >> FRACTION_BITS;
+ v1 = (int32)src[ofsi];
+ v2 = (int32)src[ofsi + 1];
+@@ -154,6 +158,8 @@ static resample_t resample_gauss(sample_t *src, splen_t ofs, resample_rec_t *rec
+ sample_t *sptr;
+ int32 left, right, temp_n;
+
++ if (ofs + (1 << FRACTION_BITS) >= rec->data_length)
++ return src[ofs >> FRACTION_BITS];
+ left = (ofs>>FRACTION_BITS);
+ right = (rec->data_length>>FRACTION_BITS) - left - 1;
+ temp_n = (right<<1)-1;
+@@ -261,6 +267,8 @@ static resample_t resample_newton(sample_t *src, splen_t ofs, resample_rec_t *re
+ int32 left, right, temp_n;
+ int ii, jj;
+
++ if (ofs + (1 << FRACTION_BITS) >= rec->data_length)
++ return src[ofs >> FRACTION_BITS];
+ left = (ofs>>FRACTION_BITS);
+ right = (rec->data_length>>FRACTION_BITS)-(ofs>>FRACTION_BITS)-1;
+ temp_n = (right<<1)-1;
+@@ -330,6 +338,8 @@ static resample_t resample_linear(sample_t *src, splen_t ofs, resample_rec_t *re
+ {
+ int32 v1, v2, ofsi;
+
++ if (ofs + (1 << FRACTION_BITS) >= rec->data_length)
++ return src[ofs >> FRACTION_BITS];
+ ofsi = ofs >> FRACTION_BITS;
+ v1 = src[ofsi];
+ v2 = src[ofsi + 1];
diff --git a/media-sound/timidity++/files/timidity++-2.14.0-ar.patch b/media-sound/timidity++/files/timidity++-2.14.0-ar.patch
new file mode 100644
index 000000000000..5c58cfcb89f3
--- /dev/null
+++ b/media-sound/timidity++/files/timidity++-2.14.0-ar.patch
@@ -0,0 +1,23 @@
+https://bugs.gentoo.org/468176
+
+--- a/configure.in
++++ b/configure.in
+@@ -167,6 +167,7 @@ AC_PROG_CC
+ AC_PROG_GCC_TRADITIONAL
+ AC_PROG_INSTALL
+ AC_PROG_AWK
++AC_CHECK_TOOL([AR], [ar], :)
+ AC_PROG_RANLIB
+ AC_PROG_LN_S
+ CHECK_COMPILER_OPTION(rdynamic)
+--- a/timidity/Makefile.am
++++ b/timidity/Makefile.am
+@@ -417,7 +417,7 @@ calcnewt$(EXEEXT): $(calcnewt_OBJECTS) $(calcnewt_DEPENDENCIES)
+ $(LINK) $(calcnewt_LDFLAGS) $(calcnewt_OBJECTS) $(calcnewt_LDADD) $(LIBS)
+ timidity$(EXEEXT): $(timidity_OBJECTS) $(timidity_DEPENDENCIES)
+ @rm -f timidity$(EXEEXT)
+- ar -cru timidity.exe $(timidity_LDFLAGS) $(timidity_OBJECTS) $(timidity_LDADD)
++ $(AR) -cru timidity.exe $(timidity_LDFLAGS) $(timidity_OBJECTS) $(timidity_LDADD)
+ else
+ calcnewt$(EXEEXT): $(calcnewt_OBJECTS) $(calcnewt_DEPENDENCIES)
+ @rm -f calcnewt$(EXEEXT)
diff --git a/media-sound/timidity++/files/timidity++-2.14.0-configure-flags.patch b/media-sound/timidity++/files/timidity++-2.14.0-configure-flags.patch
new file mode 100644
index 000000000000..e2e77e44f2ae
--- /dev/null
+++ b/media-sound/timidity++/files/timidity++-2.14.0-configure-flags.patch
@@ -0,0 +1,140 @@
+do not add -L/-I flags pointing to the paths given by --prefix.
+there's no need and it breaks multilib and cross-compiling.
+
+patch by Mike Frysinger <vapier@gentoo.org>
+
+--- a/autoconf/libFLAC.m4
++++ b/autoconf/libFLAC.m4
+@@ -25,24 +25,8 @@ AC_ARG_ENABLE(libFLACtest,
+ [Do not try to compile and run a test libFLAC program]),,
+ [enable_libFLACtest=yes])
+
+- if test "x$libFLAC_libraries" != "x" ; then
+- LIBFLAC_LIBS="-L$libFLAC_libraries"
+- elif test "x$libFLAC_prefix" != "x" ; then
+- LIBFLAC_LIBS="-L$libFLAC_prefix/lib"
+- elif test "x$prefix" != "xNONE" ; then
+- LIBFLAC_LIBS="-L$prefix/lib"
+- fi
+-
+ LIBFLAC_LIBS="$LIBFLAC_LIBS -lFLAC -lm"
+
+- if test "x$libFLAC_includes" != "x" ; then
+- LIBFLAC_CFLAGS="-I$libFLAC_includes"
+- elif test "x$libFLAC_prefix" != "x" ; then
+- LIBFLAC_CFLAGS="-I$libFLAC_prefix/include"
+- elif test "$prefix" != "xNONE"; then
+- LIBFLAC_CFLAGS="-I$prefix/include"
+- fi
+-
+ AC_MSG_CHECKING(for libFLAC)
+ no_libFLAC=""
+
+--- a/autoconf/libOggFLAC.m4
++++ b/autoconf/libOggFLAC.m4
+@@ -25,24 +25,8 @@ AC_ARG_ENABLE(libOggFLACtest,
+ [Do not try to compile and run a test libOggFLAC program]),,
+ [enable_libOggFLACtest=yes])
+
+- if test "x$libOggFLAC_libraries" != "x" ; then
+- LIBOGGFLAC_LIBS="-L$libOggFLAC_libraries"
+- elif test "x$libOggFLAC_prefix" != "x" ; then
+- LIBOGGFLAC_LIBS="-L$libOggFLAC_prefix/lib"
+- elif test "x$prefix" != "xNONE" ; then
+- LIBOGGFLAC_LIBS="-L$prefix/lib"
+- fi
+-
+ LIBOGGFLAC_LIBS="$LIBOGGFLAC_LIBS -lOggFLAC -lFLAC -lm"
+
+- if test "x$libOggFLAC_includes" != "x" ; then
+- LIBOGGFLAC_CFLAGS="-I$libOggFLAC_includes"
+- elif test "x$libOggFLAC_prefix" != "x" ; then
+- LIBOGGFLAC_CFLAGS="-I$libOggFLAC_prefix/include"
+- elif test "$prefix" != "xNONE"; then
+- LIBOGGFLAC_CFLAGS="-I$prefix/include"
+- fi
+-
+ AC_MSG_CHECKING(for libOggFLAC)
+ no_libOggFLAC=""
+
+--- a/autoconf/ogg.m4
++++ b/autoconf/ogg.m4
+@@ -26,24 +26,8 @@ AC_ARG_ENABLE(oggtest,
+ [Do not try to compile and run a test Ogg program]),,
+ [enable_oggtest=yes])
+
+- if test "x$ogg_libraries" != "x" ; then
+- OGG_LIBS="-L$ogg_libraries"
+- elif test "x$ogg_prefix" != "x" ; then
+- OGG_LIBS="-L$ogg_prefix/lib"
+- elif test "x$prefix" != "xNONE" ; then
+- OGG_LIBS="-L$prefix/lib"
+- fi
+-
+ OGG_LIBS="$OGG_LIBS -logg"
+
+- if test "x$ogg_includes" != "x" ; then
+- OGG_CFLAGS="-I$ogg_includes"
+- elif test "x$ogg_prefix" != "x" ; then
+- OGG_CFLAGS="-I$ogg_prefix/include"
+- elif test "x$prefix" != "xNONE"; then
+- OGG_CFLAGS="-I$prefix/include"
+- fi
+-
+ AC_MSG_CHECKING(for Ogg)
+ no_ogg=""
+
+--- a/autoconf/vorbis.m4
++++ b/autoconf/vorbis.m4
+@@ -27,27 +27,10 @@ AC_ARG_ENABLE(vorbistest,
+ [Do not try to compile and run a test Vorbis program]),
+ , [enable_vorbistest=yes])
+
+- if test "x$vorbis_libraries" != "x" ; then
+- VORBIS_LIBS="-L$vorbis_libraries"
+- elif test "x$vorbis_prefix" != "x" ; then
+- VORBIS_LIBS="-L$vorbis_prefix/lib"
+- elif test "x$prefix" != "xNONE"; then
+- VORBIS_LIBS="-L$prefix/lib"
+- fi
+-
+ VORBIS_LIBS="$VORBIS_LIBS -lvorbis -lm"
+ VORBISFILE_LIBS="-lvorbisfile"
+ VORBISENC_LIBS="-lvorbisenc"
+
+- if test "x$vorbis_includes" != "x" ; then
+- VORBIS_CFLAGS="-I$vorbis_includes"
+- elif test "x$vorbis_prefix" != "x" ; then
+- VORBIS_CFLAGS="-I$vorbis_prefix/include"
+- elif test "x$prefix" != "xNONE"; then
+- VORBIS_CFLAGS="-I$prefix/include"
+- fi
+-
+-
+ AC_MSG_CHECKING(for Vorbis)
+ no_vorbis=""
+
+--- a/configure.in
++++ b/configure.in
+@@ -91,21 +91,6 @@ else
+ x_config_flag=yes
+ fi
+
+-# Checking gcc environment
+-for i in `echo $LIBRARY_PATH|sed -e 's,:, ,g'`; do
+- LDFLAGS="$LDFLAGS -L${i}"
+-done
+-for i in `echo $C_INCLUDE_PATH|sed -e 's,:, ,g'`; do
+- CPPFLAGS="$CPPFLAGS -I${i}"
+-done
+-
+-# add $prefix if specified.
+-if test "x$prefix" != xNONE -a "x$prefix" != "x$ac_default_prefix" -a "x$prefix" != "x/usr"; then
+- LDFLAGS="-L$prefix/lib $LDFLAGS"
+- SHLDFLAGS="-L$prefix/lib $SHLDFLAGS"
+- CPPFLAGS="-I$prefix/include $CPPFLAGS"
+-fi
+-
+ dnl add --with-includes, --with-libraries
+ AC_ARG_WITH(includes,
+ AS_HELP_STRING([--with-includes=DIR], [Specify include directories (colon separated)]),
diff --git a/media-sound/timidity++/files/timidity++-2.14.0-gcc5.patch b/media-sound/timidity++/files/timidity++-2.14.0-gcc5.patch
new file mode 100644
index 000000000000..50d64e3bcbb5
--- /dev/null
+++ b/media-sound/timidity++/files/timidity++-2.14.0-gcc5.patch
@@ -0,0 +1,31 @@
+Upstream commit 6e189f6073e979ceccaf05c3bb5f495a1b9ed87e
+
+inline, defaults to "extern inline" with newer gcc versions
+
+With newer versions of gcc, "inline" defaults to extern, and not static if
+not specified. This causes linking problems at the end of the compile. Most
+of this occurences are fixed (or #ifdef'ed away) except these two small
+ones in timidity/mfi.c
+
+Signed-off-by: Stian Skjelstad <stian.skjelstad@...>
+
+--- a/timidity/mfi.c 2004-02-17 17:02:18.000000000 +0100
++++ b/timidity/mfi.c 2017-02-14 04:41:24.000000000 +0100
+@@ -344,7 +344,7 @@
+ #define SEND_LASTNOTEINFO(lni, ch) if (LASTNOTEINFO_HAS_DATA((lni)[ch])) SendLastNoteInfo(lni, ch);
+ #define SEND_AND_CLEAR_LASTNOTEINFO(lni, ch) if (LASTNOTEINFO_HAS_DATA((lni)[ch])) { SendLastNoteInfo(lni, ch); (lni)[ch].on = NO_LAST_NOTE_INFO; }
+
+-inline void StoreLastNoteInfo(LastNoteInfo *info, int channel, int time, int duration, int note, int velocity)
++static inline void StoreLastNoteInfo(LastNoteInfo *info, int channel, int time, int duration, int note, int velocity)
+ {
+ info[channel].on = time;
+ info[channel].off = time + duration;
+@@ -352,7 +352,7 @@
+ info[channel].velocity = velocity;
+ }
+
+-inline void SendLastNoteInfo(const LastNoteInfo *info, int channel)
++static inline void SendLastNoteInfo(const LastNoteInfo *info, int channel)
+ {
+ NOTE_BUF_EV_DEBUGSTR(channel, info[channel].on, note_name[info[channel].note % 12], info[channel].note / 12, info[channel].velocity, info[channel].off);
+ MIDIEVENT(info[channel].on, ME_NOTEON, channel, info[channel].note, info[channel].velocity);
diff --git a/media-sound/timidity++/files/timidity++-2.14.0-params.patch b/media-sound/timidity++/files/timidity++-2.14.0-params.patch
new file mode 100644
index 000000000000..18790f8bffb4
--- /dev/null
+++ b/media-sound/timidity++/files/timidity++-2.14.0-params.patch
@@ -0,0 +1,22 @@
+--- a/configure.in
++++ b/configure.in
+@@ -2245,10 +2245,15 @@
+
+ AM_CONDITIONAL(W32READDIR, test "x$W32READDIR" = "xyes")
+
+-SET_UNIQ_WORDS(LDFLAGS,$LDFLAGS)
+-SET_UNIQ_WORDS(SHLDFLAGS,$SHLDFLAGS)
+-SET_UNIQ_WORDS(CFLAGS,$EXTRACFLAGS $CFLAGS)
+-SET_UNIQ_WORDS(CPPFLAGS,$CPPFLAGS $EXTRADEFS)
++# These break flags like --param wrt #276433
++# SET_UNIQ_WORDS(LDFLAGS,$LDFLAGS)
++# SET_UNIQ_WORDS(SHLDFLAGS,$SHLDFLAGS)
++# SET_UNIQ_WORDS(CFLAGS,$EXTRACFLAGS $CFLAGS)
++# SET_UNIQ_WORDS(CPPFLAGS,$CPPFLAGS $EXTRADEFS)
++LDFLAGS="$LDFLAGS"
++SHLDFLAGS="$SHLDFLAGS"
++CFLAGS="$EXTRACFLAGS $CFLAGS"
++CPPFLAGS="$CPPFLAGS $EXTRADEFS"
+
+ if test "x$oss_device" != x; then
+ AC_DEFINE_UNQUOTED(OSS_DEVICE,"$oss_device", oss device name)
diff --git a/media-sound/timidity++/files/timidity++-2.14.0-pkg-config.patch b/media-sound/timidity++/files/timidity++-2.14.0-pkg-config.patch
new file mode 100644
index 000000000000..15d6a4ec43f4
--- /dev/null
+++ b/media-sound/timidity++/files/timidity++-2.14.0-pkg-config.patch
@@ -0,0 +1,109 @@
+use $PKG_CONFIG rather than `pkg-config`
+
+https://bugs.gentoo.org/497362
+get ncurses info via pkg-config while we're at it
+
+patch by Mike Frysinger <vapier@gentoo.org>
+
+--- a/configure.in
++++ b/configure.in
+@@ -148,6 +148,7 @@ AC_SUBST(xawresdir)
+
+ # Checks for programs.
+ AM_PATH_LISPDIR
++PKG_PROG_PKG_CONFIG
+ AC_PROG_CC
+ AC_PROG_GCC_TRADITIONAL
+ AC_PROG_INSTALL
+@@ -1318,8 +1319,8 @@ AC_MSG_CHECKING(enable_audio=jack)
+ if test "x$au_enable_jack" = xyes; then
+ AC_MSG_RESULT(yes)
+ SYSEXTRAS="$SYSEXTRAS jack_a.c"
+- EXTRALIBS="$EXTRALIBS $(pkg-config --libs jack)"
+- EXTRADEFS="$EXTRADEFS -DAU_JACK $(pkg-config --cflags jack)"
++ EXTRALIBS="$EXTRALIBS $(${PKG_CONFIG} --libs jack)"
++ EXTRADEFS="$EXTRADEFS -DAU_JACK $(${PKG_CONFIG} --cflags jack)"
+ else
+ AC_MSG_RESULT(no)
+ fi
+@@ -1635,60 +1636,8 @@ dnl ncurses
+ AM_CONDITIONAL(ENABLE_NCURSES, false)
+ CONFIG_INTERFACE(ncurses,NCURSES,n,
+ AS_HELP_STRING([--enable-ncurses], [Enable ncurses interface (default is no)]),
+- [ AC_CHECK_HEADERS(ncurses.h ncurses/curses.h curses.h)
+-
+-dnl #include <ncurses/curses.h> is failure on Plamo Linux 1.3/ncurses 1.9.9e
+-dnl because <ncurses/curses.h> includes <unctrl.h>:
+-dnl /usr/include/ncurses/curses.h:34: unctrl.h: No such file or directory
+-dnl But surely there is unctl.h at /usr/include/ncurses/unctrl.h.
+-dnl configure must check ncurses header with -I/usr/include/ncurses option.
+-
+- case "$ac_cv_header_curses_h$ac_cv_header_ncurses_curses_h$ac_cv_header_ncurses_h" in
+- *yes*);;
+- *) for i in /usr/include /usr/local/include; do
+- if test -f "$i/ncurses/curses.h" -a -f "$i/ncurses/unctrl.h"; then
+- AC_MSG_WARN(ncurses test is failure. Please check config.h and common.makefile later)
+- CPPFLAGS="$CPPFLAGS -I$i/ncurses"
+- break
+- fi
+- done
+- ;;
+- esac
+-
+- AC_CHECK_LIB(ncurses,initscr,lib_curses_opt=-lncurses,
+- [ dnl checking pdcurses
+- AC_CHECK_LIB(curses,PDC_set_ctrl_break,
+- [ lib_curses_opt=-lcurses
+- AC_DEFINE(USE_PDCURSES,1,Define to 1 if you use PDcurses)
+- lib_user32_opt="$lib_user32_test"
+- ],
+- [ dnl checking libpdcurses
+- AC_CHECK_LIB(pdcurses,PDC_set_ctrl_break,
+- [ lib_curses_opt=-lpdcurses
+- AC_DEFINE(USE_PDCURSES,1,Define to 1 if you use PDcurses)
+- lib_user32_opt="$lib_user32_test"
+- ],
+- [ dnl OpenBSD use -lcurses instead of -lncurses.
+- case "$target" in
+- *openbsd*)
+- AC_CHECK_LIB(curses,initscr,lib_curses_opt=-lcurses,
+- [ AC_MSG_WARN(ncurses interface is not enabled)
+- enable_ncurses=no ])
+- ;;
+- *)
+- if test "x$VCPP" = xyes || test "x$BORLANDC" = xyes || test "x$WATCOM_C" = xyes || test "x$DMC" = xyes || test "x$POCC" = xyes; then
+- lib_curses_opt=libpdcurses.lib
+- AC_DEFINE(USE_PDCURSES,1,Define to 1 if you use PDcurses)
+- else
+- AC_MSG_WARN(ncurses interface is not enabled)
+- enable_ncurses=no
+- fi
+- ;;
+- esac
+- ])
+- ],
+- $lib_user32_test)
+- ])
++ [ CPPFLAGS="$CPPFLAGS $(${PKG_CONFIG} --cflags ncurses)"
++ lib_curses_opt=$(${PKG_CONFIG} --libs ncurses)
+ ],
+ [ LIBS="$LIBS $lib_curses_opt"
+ case "$target" in
+@@ -1855,7 +1804,7 @@ CONFIG_INTERFACE(xaw,XAW,a,
+ lib_xmu_opt=-lXmu
+ lib_xt_opt=-lXt
+ if test "x$enable_xft" = "xyes" && test "x$have_xaw" != "xno"; then
+- XFT_CFLAGS="$(pkg-config --cflags xft)";
++ XFT_CFLAGS="$(${PKG_CONFIG} --cflags xft)";
+ EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$XFT_CFLAGS)
+ lib_xft_opt="-lXft";
+ fi
+@@ -1909,7 +1858,7 @@ CONFIG_INTERFACE(xaw,XAW,a,
+ ;;
+ esac
+ if test "x$enable_xft" = "xyes" && test "x$have_xaw" != "xno"; then
+- XFT_CFLAGS="$(pkg-config --cflags xft)";
++ XFT_CFLAGS="$(${PKG_CONFIG} --cflags xft)";
+ EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$XFT_CFLAGS)
+ a_so_libs="$a_so_libs -lXft";
+ fi
diff --git a/media-sound/timidity++/files/timidity++-2.14.0-revert-for-required-ctl_speana_data-function.patch b/media-sound/timidity++/files/timidity++-2.14.0-revert-for-required-ctl_speana_data-function.patch
new file mode 100644
index 000000000000..6f901eab8bc0
--- /dev/null
+++ b/media-sound/timidity++/files/timidity++-2.14.0-revert-for-required-ctl_speana_data-function.patch
@@ -0,0 +1,28 @@
+This will revert part of the commit from:
+
+http://timidity.git.sourceforge.net/git/gitweb.cgi?p=timidity/timidity;a=commit;h=e73b53437dbc1e57e61dd4d0c1407784797b08d9
+
+Because otherwise TiMidity++ simply won't build as per:
+
+../interface/libinterface.a(xskin_c.o): In function `ctl_event':
+xskin_c.c:(.text+0x17c): undefined reference to `ctl_speana_data'
+collect2: error: ld returned 1 exit status
+
+--- a/interface/xskin_c.c
++++ b/interface/xskin_c.c
+@@ -228,7 +228,6 @@
+ }
+ }
+
+-#if 0
+ static void ctl_speana_data(double *val, int size) {
+
+ /* 0 <= val[n] <= (AMP*NCOLOR) */
+@@ -280,7 +279,6 @@
+
+ return;
+ }
+-#endif
+
+ /*ARGSUSED*/
+ static int ctl_open(int using_stdin, int using_stdout) {
diff --git a/media-sound/timidity++/files/timidity++-2.14.0-tcltk86.patch b/media-sound/timidity++/files/timidity++-2.14.0-tcltk86.patch
new file mode 100644
index 000000000000..23ef62aa03e5
--- /dev/null
+++ b/media-sound/timidity++/files/timidity++-2.14.0-tcltk86.patch
@@ -0,0 +1,13 @@
+http://bugs.gentoo.org/451296
+
+--- a/interface/tk_c.c
++++ b/interface/tk_c.c
+@@ -913,7 +913,7 @@
+ vsnprintf(buf, sizeof(buf), fmt, ap);
+ Tcl_Eval(my_interp, buf);
+ va_end(ap);
+- return my_interp->result;
++ return Tcl_GetStringResult(my_interp);
+ }
+
+ static const char *v_get2(const char *v1, const char *v2)
diff --git a/media-sound/timidity++/files/timidity++-2.15.0-pkg-config.patch b/media-sound/timidity++/files/timidity++-2.15.0-pkg-config.patch
new file mode 100644
index 000000000000..3c2e269be029
--- /dev/null
+++ b/media-sound/timidity++/files/timidity++-2.15.0-pkg-config.patch
@@ -0,0 +1,118 @@
+use $PKG_CONFIG rather than `pkg-config`
+
+https://bugs.gentoo.org/497362
+get ncurses info via pkg-config while we're at it
+
+patch by Mike Frysinger <vapier@gentoo.org>
+
+--- a/configure.in
++++ b/configure.in
+@@ -163,6 +163,7 @@ AC_SUBST(xawresdir)
+
+ # Checks for programs.
+ AM_PATH_LISPDIR
++PKG_PROG_PKG_CONFIG
+ AC_PROG_CC
+ AC_PROG_GCC_TRADITIONAL
+ AC_PROG_INSTALL
+@@ -1348,8 +1349,8 @@ AC_MSG_CHECKING(enable_audio=jack)
+ if test "x$au_enable_jack" = xyes; then
+ AC_MSG_RESULT(yes)
+ SYSEXTRAS="$SYSEXTRAS jack_a.c"
+- EXTRALIBS="$EXTRALIBS $(pkg-config --libs jack)"
+- EXTRADEFS="$EXTRADEFS -DAU_JACK $(pkg-config --cflags jack)"
++ EXTRALIBS="$EXTRALIBS $(${PKG_CONFIG} --libs jack)"
++ EXTRADEFS="$EXTRADEFS -DAU_JACK $(${PKG_CONFIG} --cflags jack)"
+ else
+ AC_MSG_RESULT(no)
+ fi
+@@ -1665,69 +1666,8 @@ dnl ncurses
+ AM_CONDITIONAL(ENABLE_NCURSES, false)
+ CONFIG_INTERFACE(ncurses,NCURSES,n,
+ AS_HELP_STRING([--enable-ncurses], [Enable ncurses interface (default is no)]),
+- [ AC_CHECK_HEADERS(ncurses.h ncurses/curses.h curses.h)
+-
+-dnl #include <ncurses/curses.h> is failure on Plamo Linux 1.3/ncurses 1.9.9e
+-dnl because <ncurses/curses.h> includes <unctrl.h>:
+-dnl /usr/include/ncurses/curses.h:34: unctrl.h: No such file or directory
+-dnl But surely there is unctl.h at /usr/include/ncurses/unctrl.h.
+-dnl configure must check ncurses header with -I/usr/include/ncurses option.
+-
+- case "$ac_cv_header_curses_h$ac_cv_header_ncurses_curses_h$ac_cv_header_ncurses_h" in
+- *yes*);;
+- *) for i in /usr/include /usr/local/include; do
+- if test -f "$i/ncurses/curses.h" -a -f "$i/ncurses/unctrl.h"; then
+- AC_MSG_WARN(ncurses test is failure. Please check config.h and common.makefile later)
+- CPPFLAGS="$CPPFLAGS -I$i/ncurses"
+- break
+- fi
+- done
+- ;;
+- esac
+-
+- AC_CHECK_LIB(ncurses,initscr,lib_curses_opt=-lncurses,
+- [ dnl checking pdcurses
+- AC_CHECK_LIB(curses,PDC_set_ctrl_break,
+- [ lib_curses_opt=-lcurses
+- AC_DEFINE(USE_PDCURSES,1,Define to 1 if you use PDcurses)
+- lib_user32_opt="$lib_user32_test"
+- AC_CHECK_LIB(curses, vwprintw,
+- AC_DEFINE(HAVE_VWPRINTW, 1,
+- [Define to 1 if you have the `vwprintw' function.]))
+- ],
+- [ dnl checking libpdcurses
+- AC_CHECK_LIB(pdcurses,PDC_set_ctrl_break,
+- [ lib_curses_opt=-lpdcurses
+- AC_DEFINE(USE_PDCURSES,1,Define to 1 if you use PDcurses)
+- lib_user32_opt="$lib_user32_test"
+- AC_CHECK_LIB(pdcurses, vwprintw,
+- AC_DEFINE(HAVE_VWPRINTW, 1,
+- [Define to 1 if you have the `vwprintw' function.]))
+- ],
+- [ dnl OpenBSD use -lcurses instead of -lncurses.
+- case "$target" in
+- *openbsd*)
+- AC_CHECK_LIB(curses,initscr,lib_curses_opt=-lcurses,
+- [ AC_MSG_WARN(ncurses interface is not enabled)
+- enable_ncurses=no ])
+- ;;
+- *)
+- if test "x$VCPP" = xyes || test "x$BORLANDC" = xyes || test "x$WATCOM_C" = xyes || test "x$DMC" = xyes || test "x$POCC" = xyes; then
+- lib_curses_opt=libpdcurses.lib
+- AC_DEFINE(USE_PDCURSES,1,Define to 1 if you use PDcurses)
+- AC_CHECK_LIB(pdcurses, vwprintw,
+- AC_DEFINE(HAVE_VWPRINTW, 1,
+- [Define to 1 if you have the `vwprintw' function.]))
+- else
+- AC_MSG_WARN(ncurses interface is not enabled)
+- enable_ncurses=no
+- fi
+- ;;
+- esac
+- ])
+- ],
+- $lib_user32_test)
+- ])
++ [ CPPFLAGS="$CPPFLAGS $(${PKG_CONFIG} --cflags ncurses)"
++ lib_curses_opt=$(${PKG_CONFIG} --libs ncurses)
+ ],
+ [ LIBS="$LIBS $lib_curses_opt"
+ case "$target" in
+@@ -1894,7 +1834,7 @@ CONFIG_INTERFACE(xaw,XAW,a,
+ lib_xmu_opt=-lXmu
+ lib_xt_opt=-lXt
+ if test "x$enable_xft" = "xyes" && test "x$have_xaw" != "xno"; then
+- XFT_CFLAGS="$(pkg-config --cflags xft)";
++ XFT_CFLAGS="$(${PKG_CONFIG} --cflags xft)";
+ EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$XFT_CFLAGS)
+ lib_xft_opt="-lXft";
+ fi
+@@ -1948,7 +1888,7 @@ CONFIG_INTERFACE(xaw,XAW,a,
+ ;;
+ esac
+ if test "x$enable_xft" = "xyes" && test "x$have_xaw" != "xno"; then
+- XFT_CFLAGS="$(pkg-config --cflags xft)";
++ XFT_CFLAGS="$(${PKG_CONFIG} --cflags xft)";
+ EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$XFT_CFLAGS)
+ a_so_libs="$a_so_libs -lXft";
+ fi
diff --git a/media-sound/timidity++/files/timidity.cfg-r1 b/media-sound/timidity++/files/timidity.cfg-r1
new file mode 100644
index 000000000000..3923fb206204
--- /dev/null
+++ b/media-sound/timidity++/files/timidity.cfg-r1
@@ -0,0 +1,24 @@
+##############################################################################
+#
+# timidity-update core configuration file
+#
+# Easy process:
+#
+# 1. Change directory to patch directory
+# 2. Source current/timidity.cfg
+#
+# Current patch set will always be symlinked to current, so make sure that the
+# proper timidity.cfg is in there
+#
+#
+# - source /usr/share/timidity
+# - source ~/.timidity/current
+# - Make ~/.timidity/current point to the current patch set, or to whatever
+# the individual user sets
+# - If ~/.timidity/current isn't found, it will try
+# /usr/share/timidity/current
+#
+
+dir /usr/share/timidity
+dir ~/.timidity
+source current/timidity.cfg
diff --git a/media-sound/timidity++/files/timidity.desktop.2 b/media-sound/timidity++/files/timidity.desktop.2
new file mode 100644
index 000000000000..00c7f1db2c2d
--- /dev/null
+++ b/media-sound/timidity++/files/timidity.desktop.2
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Comment=Software sound renderer (MIDI sequencer, MOD player)
+Name=TiMidity++ MIDI sequencer
+Terminal=true
+NoDisplay=true
+Type=Application
+Exec=timidity %F
+Categories=AudioVideo;Audio;Sequencer;
+Icon=timidity
+MimeType=audio/midi;audio/x-mod;
diff --git a/media-sound/timidity++/files/timidity.service b/media-sound/timidity++/files/timidity.service
new file mode 100644
index 000000000000..420d88813fd3
--- /dev/null
+++ b/media-sound/timidity++/files/timidity.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=TiMidity++ Daemon
+After=sound.target
+
+[Service]
+EnvironmentFile=-/etc/conf.d/timidity
+ExecStart=/usr/bin/timidity -iA $TIMIDITY_OPTS
+
+[Install]
+WantedBy=multi-user.target
diff --git a/media-sound/timidity++/files/timidity.xpm b/media-sound/timidity++/files/timidity.xpm
new file mode 100644
index 000000000000..dc56a6d1cf6a
--- /dev/null
+++ b/media-sound/timidity++/files/timidity.xpm
@@ -0,0 +1,56 @@
+/* XPM */
+static char * timidity_xpm[] = {
+"32 32 21 1",
+" c None",
+". c #333399",
+"+ c #000000",
+"@ c #666699",
+"# c #FFFFFF",
+"$ c #DDDDDD",
+"% c #888888",
+"& c #999999",
+"* c #7777A4",
+"= c #4949A4",
+"- c #BBBBBB",
+"; c #111111",
+"> c #444444",
+", c #2B2B2B",
+"' c #555555",
+") c #FF9999",
+"! c #FF9966",
+"~ c #666666",
+"{ c #333333",
+"] c #FF0000",
+"^ c #00FF00",
+" . .. ",
+" . ... + ",
+" . ..@ +#+ + ",
+" .@@.. +#$#+%#+ ",
+" ....@ +#$#$#+$#+ ",
+" .... +#$#$#$#+$#+ ",
+" @...@ +#$#$#$#$#+$#+ ",
+" @.... +#$#$#$#$#$#+$#+ ",
+" @...@. %#$#$#$#$#$#$#&$#& ",
+" @...@ +++++++$#++$+++++&$++ ",
+" ...@ ++$++#++$++#++$$++$++$ ",
+" @..@ %++#++$++#++$++$&++$++ ",
+" ... %#++$++#++$++#++&$++#++ ",
+"*..@ .&++#++$++#++$++++++&++ ",
+"=.. ...&#$#$#$#$#$#&-$#$& ",
+"=.. ...+++++$++#+$+++++++ ++ ",
+"=.. .. .&#$#$#$$&-$#&& ",
+"=.. .. . +&$#$&+-$#&+ ",
+" ;;;;;;;;;;;;;;;;;;;>;;;;;;; ",
+",#%%%%%%%%%%%%%%%%%';#%%%%%'+ ",
+",%+++++++++++++++''>;%'''''>+ ",
+",%+#)))))))))))!;''>;%'%~+'>+ ",
+",'+);;!;!!;!!!!!;>>>;'>+++>>+ ",
+",'+)>!!;!!;!;!;!;>>>;'>>>>>>+ ",
+",'+!!!!!!!!!!!!!;>>{;'>%~+>>+ ",
+",'+;;;;;;;;;;;;;'>>{;'>+++>>+ ",
+",'>>>>>>>>>>>>>>>>>{;'>>>>>>+> ",
+",'%~'>>%~'>>'>'>'>>{;'>%~+>{++> ",
+",']++>>^++>>+>+>+>>{;'>+++>{++>>",
+",'>>>>>>>>>>>>>>{{{';'>>{{{'+>>~",
+" +++++++++++++++++++>+++++++>>~ ",
+" "};
diff --git a/media-sound/timidity++/metadata.xml b/media-sound/timidity++/metadata.xml
new file mode 100644
index 000000000000..c82efbeba6b7
--- /dev/null
+++ b/media-sound/timidity++/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>sound@gentoo.org</email>
+ <name>Gentoo Sound project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">timidity</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/media-sound/timidity++/timidity++-2.14.0-r3.ebuild b/media-sound/timidity++/timidity++-2.14.0-r3.ebuild
new file mode 100644
index 000000000000..6f7038afbfca
--- /dev/null
+++ b/media-sound/timidity++/timidity++-2.14.0-r3.ebuild
@@ -0,0 +1,202 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit autotools desktop elisp-common systemd toolchain-funcs user xdg-utils
+
+MY_PV=${PV/_/-}
+MY_P=TiMidity++-${MY_PV}
+S=${WORKDIR}/${MY_P}
+
+DESCRIPTION="A handy MIDI to WAV converter with OSS and ALSA output support"
+HOMEPAGE="http://timidity.sourceforge.net/"
+SRC_URI="mirror://sourceforge/timidity/${MY_P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~arm64 ~hppa ppc ppc64 sparc x86"
+IUSE="alsa ao emacs flac gtk jack motif nas ncurses oss selinux slang speex tk vorbis X"
+
+REQUIRED_USE="tk? ( X )"
+
+DEPEND="
+ alsa? ( media-libs/alsa-lib )
+ ao? ( >=media-libs/libao-0.8.5 )
+ emacs? ( >=app-editors/emacs-23.1:* )
+ flac? ( media-libs/flac )
+ gtk? ( x11-libs/gtk+:2 )
+ jack? ( virtual/jack )
+ motif? ( >=x11-libs/motif-2.3:0 )
+ nas? ( >=media-libs/nas-1.4 )
+ ncurses? ( sys-libs/ncurses:0= )
+ slang? ( sys-libs/slang )
+ speex? ( media-libs/speex )
+ tk? ( dev-lang/tk:0= )
+ vorbis? ( media-libs/libvorbis )
+ X? (
+ media-libs/libpng:0=
+ x11-libs/libXaw
+ x11-libs/libXext
+ )
+"
+RDEPEND="${DEPEND}
+ app-eselect/eselect-timidity
+ alsa? ( media-sound/alsa-utils )
+ selinux? ( sec-policy/selinux-timidity )
+"
+
+PDEPEND="|| ( media-sound/timidity-eawpatches media-sound/timidity-freepats )"
+
+SITEFILE=50${PN}-gentoo.el
+
+pkg_setup() {
+ enewgroup audio 18 # Just make sure it exists
+ enewuser timidity -1 -1 /var/lib/timidity audio
+}
+
+DOCS=( AUTHORS ChangeLog NEWS README "${FILESDIR}"/timidity.cfg-r1 )
+
+PATCHES=(
+ "${FILESDIR}"/${P}-params.patch
+ "${FILESDIR}"/${P}-revert-for-required-ctl_speana_data-function.patch
+ "${FILESDIR}"/${P}-tcltk86.patch
+ "${FILESDIR}"/${P}-ar.patch
+ "${FILESDIR}"/${P}-configure-flags.patch
+ "${FILESDIR}"/${P}-pkg-config.patch
+ "${FILESDIR}"/${P}-CVE-2017-1154{6,7}.patch
+ "${FILESDIR}"/${P}-gcc5.patch # bug 606894
+)
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ export EXTRACFLAGS="${CFLAGS}" #385817
+
+ local myconf=()
+ local audios
+
+ use flac && audios+=",flac"
+ use speex && audios+=",speex"
+ use vorbis && audios+=",vorbis"
+ use oss && audios+=",oss"
+ use jack && audios+=",jack"
+ use ao && audios+=",ao"
+
+ if use nas; then
+ audios+=",nas"
+ myconf+=( --with-nas-library="/usr/$(get_libdir)/libaudio.so" --with-x )
+ use X || ewarn "Basic X11 support will be enabled because required by nas."
+ fi
+
+ if use alsa; then
+ audios+=",alsa"
+ myconf+=( --with-default-output=alsa --enable-alsaseq )
+ fi
+
+ # We disable motif by default and then only enable it if it's requested.
+ if use motif; then
+ myconf+=( --enable-motif --with-x )
+ use X || ewarn "Basic X11 support will be enabled because required by motif."
+ fi
+
+ econf \
+ --localstatedir=/var/state/timidity++ \
+ --with-module-dir="${EPREFIX}/usr/share/timidity" \
+ --with-lispdir="${SITELISP}/${PN}" \
+ --with-elf \
+ --enable-audio=${audios} \
+ --enable-server \
+ --enable-network \
+ --enable-dynamic \
+ --enable-vt100 \
+ --enable-spline=cubic \
+ $(use_enable emacs) \
+ $(use_enable slang) \
+ $(use_enable ncurses) \
+ $(use_with X x) \
+ $(use_enable X spectrogram) \
+ $(use_enable X wrd) \
+ $(use_enable X xskin) \
+ $(use_enable X xaw) \
+ $(use_enable gtk) \
+ $(use_enable tk tcltk) \
+ --disable-motif \
+ "${myconf[@]}"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+ einstalldocs
+
+ # these are only for the ALSA sequencer mode
+ if use alsa; then
+ newconfd "${FILESDIR}"/conf.d.timidity.2 timidity
+ newinitd "${FILESDIR}"/init.d.timidity.4 timidity
+
+ systemd_dounit "${FILESDIR}"/timidity.service
+ fi
+
+ insinto /etc
+ newins "${FILESDIR}"/timidity.cfg-r1 timidity.cfg
+
+ dodir /usr/share/timidity
+ dosym ../../../etc/timidity.cfg /usr/share/timidity/timidity.cfg
+
+ if use emacs; then
+ elisp-site-file-install "${FILESDIR}/${SITEFILE}"
+ fi
+
+ diropts -o timidity -g nobody -m 0700
+ keepdir /var/lib/timidity
+
+ doicon "${FILESDIR}"/timidity.xpm
+ newmenu "${FILESDIR}"/timidity.desktop.2 timidity.desktop
+
+ # Order of preference: gtk, X (Xaw), ncurses, slang
+ # Do not create menu item for terminal ones
+ local interface="-id"
+ local terminal="true"
+ local nodisplay="true"
+ if use gtk || use X; then
+ interface="-ia"
+ terminal="false"
+ nodisplay="false"
+ use gtk && interface="-ig"
+ elif use ncurses || use slang; then
+ local interface="-is"
+ use ncurses && interface="-in"
+ fi
+ sed -e "s/Exec=timidity/Exec=timidity ${interface}/" \
+ -e "s/Terminal=.*/Terminal=${terminal}/" \
+ -e "s/NoDisplay=.*/NoDisplay=${nodisplay}/" \
+ -i "${D}"/usr/share/applications/timidity.desktop || die
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+
+ elog "A timidity config file has been installed in /etc/timidity.cfg."
+ elog "Do not edit this file as it will interfere with the eselect timidity tool."
+ elog "The tool 'eselect timidity' can be used to switch between installed patchsets."
+
+ if use alsa; then
+ elog "An init script for the alsa timidity sequencer has been installed."
+ elog "If you wish to use the timidity virtual sequencer, edit /etc/conf.d/timidity"
+ elog "and run 'rc-update add timidity <runlevel> && /etc/init.d/timidity start'"
+ fi
+
+ if use sparc; then
+ elog "Only saving to wave file and ALSA soundback has been tested working."
+ fi
+
+ xdg_desktop_database_update
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+ xdg_desktop_database_update
+}
diff --git a/media-sound/timidity++/timidity++-2.15.0.ebuild b/media-sound/timidity++/timidity++-2.15.0.ebuild
new file mode 100644
index 000000000000..e0407f9c9533
--- /dev/null
+++ b/media-sound/timidity++/timidity++-2.15.0.ebuild
@@ -0,0 +1,214 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools desktop elisp-common systemd toolchain-funcs user xdg
+
+MY_PV=${PV/_/-}
+MY_P=TiMidity++-${MY_PV}
+S=${WORKDIR}/${MY_P}
+
+DESCRIPTION="A handy MIDI to WAV converter with OSS and ALSA output support"
+HOMEPAGE="http://timidity.sourceforge.net/"
+SRC_URI="mirror://sourceforge/timidity/${MY_P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+IUSE="alsa ao emacs flac gtk jack motif nas ncurses oss selinux slang speex tk vorbis X"
+
+REQUIRED_USE="tk? ( X )"
+
+DEPEND="
+ alsa? ( media-libs/alsa-lib )
+ ao? ( >=media-libs/libao-0.8.5 )
+ emacs? ( >=app-editors/emacs-23.1:* )
+ flac? ( media-libs/flac )
+ gtk? ( x11-libs/gtk+:2 )
+ jack? ( virtual/jack )
+ motif? ( >=x11-libs/motif-2.3:0 )
+ nas? ( >=media-libs/nas-1.4 )
+ ncurses? ( sys-libs/ncurses:0= )
+ slang? ( sys-libs/slang )
+ speex? ( media-libs/speex )
+ tk? ( dev-lang/tk:0= )
+ vorbis? ( media-libs/libvorbis )
+ X? (
+ media-libs/libpng:0=
+ x11-libs/libXaw
+ x11-libs/libXext
+ )
+"
+RDEPEND="${DEPEND}
+ app-eselect/eselect-timidity
+ alsa? ( media-sound/alsa-utils )
+ selinux? ( sec-policy/selinux-timidity )
+"
+
+PDEPEND="|| ( media-sound/timidity-eawpatches media-sound/timidity-freepats )"
+
+SITEFILE=50${PN}-gentoo.el
+
+pkg_setup() {
+ enewgroup audio 18 # Just make sure it exists
+ enewuser timidity -1 -1 /var/lib/timidity audio
+}
+
+DOCS=( AUTHORS ChangeLog NEWS README "${FILESDIR}"/timidity.cfg-r1 )
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.14.0-params.patch
+ "${FILESDIR}"/${PN}-2.14.0-ar.patch
+ "${FILESDIR}"/${PN}-2.14.0-configure-flags.patch
+ "${FILESDIR}"/${PN}-2.15.0-pkg-config.patch
+ "${FILESDIR}"/${PN}-2.14.0-CVE-2017-1154{6,7}.patch
+)
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ export EXTRACFLAGS="${CFLAGS}" #385817
+
+ local audios
+ local myeconfargs=(
+ --localstatedir=/var/state/${PN}
+ --with-module-dir="${EPREFIX}/usr/share/timidity"
+ --with-lispdir="${SITELISP}/${PN}"
+ --with-elf
+ --enable-server
+ --enable-network
+ --enable-dynamic
+ --enable-vt100
+ --enable-spline=cubic
+ $(use_enable emacs)
+ $(use_enable slang)
+ $(use_enable ncurses)
+ $(use_with X x)
+ $(use_enable X spectrogram)
+ $(use_enable X wrd)
+ $(use_enable X xskin)
+ $(use_enable X xaw)
+ $(use_enable gtk)
+ $(use_enable tk tcltk)
+ $(use_enable motif)
+ )
+
+ use flac && audios+=",flac"
+ use speex && audios+=",speex"
+ use vorbis && audios+=",vorbis"
+ use oss && audios+=",oss"
+ use jack && audios+=",jack"
+ use ao && audios+=",ao"
+
+ if use nas; then
+ audios+=",nas"
+ myeconfargs+=(
+ --with-nas-library="/usr/$(get_libdir)/libaudio.so"
+ --with-x
+ )
+ use X || ewarn "Basic X11 support will be enabled because required by nas."
+ fi
+
+ if use alsa; then
+ audios+=",alsa"
+ myeconfargs+=(
+ --with-default-output=alsa
+ --enable-alsaseq
+ )
+ fi
+
+ if use motif; then
+ myeconfargs+=(
+ --with-x
+ )
+ use X || ewarn "Basic X11 support will be enabled because required by motif."
+ fi
+
+ # needs to come after all audios have been collected
+ myeconfargs+=(
+ --enable-audio=${audios}
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+ einstalldocs
+
+ # these are only for the ALSA sequencer mode
+ if use alsa; then
+ newconfd "${FILESDIR}"/conf.d.timidity.2 timidity
+ newinitd "${FILESDIR}"/init.d.timidity.4 timidity
+
+ systemd_dounit "${FILESDIR}"/timidity.service
+ fi
+
+ insinto /etc
+ newins "${FILESDIR}"/timidity.cfg-r1 timidity.cfg
+
+ dodir /usr/share/timidity
+ dosym ../../../etc/timidity.cfg /usr/share/timidity/timidity.cfg
+
+ if use emacs; then
+ elisp-site-file-install "${FILESDIR}/${SITEFILE}"
+ fi
+
+ diropts -o timidity -g nobody -m 0700
+ keepdir /var/lib/timidity
+
+ doicon "${FILESDIR}"/timidity.xpm
+ newmenu "${FILESDIR}"/timidity.desktop.2 timidity.desktop
+
+ # Order of preference: gtk, X (Xaw), ncurses, slang
+ # Do not create menu item for terminal ones
+ local interface="-id"
+ local terminal="true"
+ local nodisplay="true"
+ if use gtk || use X; then
+ interface="-ia"
+ terminal="false"
+ nodisplay="false"
+ use gtk && interface="-ig"
+ elif use ncurses || use slang; then
+ local interface="-is"
+ use ncurses && interface="-in"
+ fi
+ sed -e "s/Exec=timidity/Exec=timidity ${interface}/" \
+ -e "s/Terminal=.*/Terminal=${terminal}/" \
+ -e "s/NoDisplay=.*/NoDisplay=${nodisplay}/" \
+ -i "${ED}"/usr/share/applications/timidity.desktop || die
+}
+
+pkg_preinst() {
+ xdg_pkg_preinst
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+
+ elog "A timidity config file has been installed in /etc/timidity.cfg."
+ elog "Do not edit this file as it will interfere with the eselect timidity tool."
+ elog "The tool 'eselect timidity' can be used to switch between installed patchsets."
+
+ if use alsa; then
+ elog "An init script for the alsa timidity sequencer has been installed."
+ elog "If you wish to use the timidity virtual sequencer, edit /etc/conf.d/timidity"
+ elog "and run 'rc-update add timidity <runlevel> && /etc/init.d/timidity start'"
+ fi
+
+ if use sparc; then
+ elog "Only saving to wave file and ALSA soundback has been tested working."
+ fi
+
+ xdg_pkg_postinst
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+ xdg_pkg_postrm
+}