summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-accessibility/speech-dispatcher')
-rw-r--r--app-accessibility/speech-dispatcher/Manifest1
-rw-r--r--app-accessibility/speech-dispatcher/files/speech-dispatcher-0.9.1-fno-common.patch466
-rw-r--r--app-accessibility/speech-dispatcher/speech-dispatcher-0.9.1.ebuild116
3 files changed, 583 insertions, 0 deletions
diff --git a/app-accessibility/speech-dispatcher/Manifest b/app-accessibility/speech-dispatcher/Manifest
index ce5754d8785b..94ba6ca07649 100644
--- a/app-accessibility/speech-dispatcher/Manifest
+++ b/app-accessibility/speech-dispatcher/Manifest
@@ -1 +1,2 @@
DIST speech-dispatcher-0.8.7.tar.gz 1333677 BLAKE2B 0b08f1a1228fe1240e14b3d52913f8fa64a1f2ee9b563294b49ea8d3e5cfd3041aa5572ec72354b360dabd2d263deb79e418b95b6174a5b89ee541e9fd23c7e2 SHA512 0e7af02e8521aa8d397ea4d0329f9a8d56970beed645456dfedc738ececd2ccd8ecfdf66e92ae852878a473ba991175e1d4dc2b8b0148c958163682b49678375
+DIST speech-dispatcher-0.9.1.tar.gz 1662222 BLAKE2B 03c3d79a9cbbe7e549f638992fb276ab2270a45a057708721666257699479b3feb81daddf26d8032ba3f7b9ab6b836c7f582ee22a532ff018c99820af3864d87 SHA512 35adb353d22b8dff8884cb20f3836f96f4f74b272bbd442d522a10a3d3b91a0da6705e6c216764f295208b5446c2077da620de2a81cafe5a0c4dd826e33753c2
diff --git a/app-accessibility/speech-dispatcher/files/speech-dispatcher-0.9.1-fno-common.patch b/app-accessibility/speech-dispatcher/files/speech-dispatcher-0.9.1-fno-common.patch
new file mode 100644
index 000000000000..0914566a8a35
--- /dev/null
+++ b/app-accessibility/speech-dispatcher/files/speech-dispatcher-0.9.1-fno-common.patch
@@ -0,0 +1,466 @@
+From f1c01ccc0ca3f82313ebff3f336d808acee225c8 Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Fri, 6 Dec 2019 10:27:39 +0100
+Subject: [PATCH] Fix global varibles definitions
+
+---
+ src/clients/say/options.c | 24 +++++++++++++++++++
+ src/clients/say/options.h | 42 ++++++++++++++++-----------------
+ src/modules/festival_client.c | 2 ++
+ src/modules/festival_client.h | 2 +-
+ src/modules/module_utils.c | 20 ++++++++++++++++
+ src/modules/module_utils.h | 24 +++++++++----------
+ src/server/compare.c | 1 +
+ src/server/compare.h | 4 ++--
+ src/server/configuration.c | 3 +++
+ src/server/configuration.h | 4 ++--
+ src/server/speaking.c | 10 ++++++++
+ src/server/speaking.h | 14 +++++------
+ src/server/speechd.c | 33 ++++++++++++++++++++++++++
+ src/server/speechd.h | 44 +++++++++++++++++------------------
+ 14 files changed, 160 insertions(+), 67 deletions(-)
+
+diff --git a/src/clients/say/options.c b/src/clients/say/options.c
+index f75ec7de..cb937d37 100644
+--- a/src/clients/say/options.c
++++ b/src/clients/say/options.c
+@@ -33,6 +33,30 @@
+ #include "options.h"
+ #include <i18n.h>
+
++signed int rate;
++signed int pitch;
++signed int pitch_range;
++signed int volume;
++
++int list_output_modules;
++char *output_module;
++char *sound_icon;
++char *language;
++char *voice_type;
++char *punctuation_mode;
++char *priority;
++int pipe_mode;
++SPDDataMode ssml_mode;
++int spelling;
++int wait_till_end;
++int stop_previous;
++int cancel_previous;
++int list_synthesis_voices;
++char *synthesis_voice;
++
++char *application_name;
++char *connection_name;
++
+ void options_print_help(char *argv[])
+ {
+ assert(argv);
+diff --git a/src/clients/say/options.h b/src/clients/say/options.h
+index 2fdd3b96..dede6dcc 100644
+--- a/src/clients/say/options.h
++++ b/src/clients/say/options.h
+@@ -22,29 +22,29 @@
+ #include <getopt.h>
+ #include "speechd_types.h"
+
+-signed int rate;
+-signed int pitch;
+-signed int pitch_range;
+-signed int volume;
++extern signed int rate;
++extern signed int pitch;
++extern signed int pitch_range;
++extern signed int volume;
+
+-int list_output_modules;
+-char *output_module;
+-char *sound_icon;
+-char *language;
+-char *voice_type;
+-char *punctuation_mode;
+-char *priority;
+-int pipe_mode;
+-SPDDataMode ssml_mode;
+-int spelling;
+-int wait_till_end;
+-int stop_previous;
+-int cancel_previous;
+-int list_synthesis_voices;
+-char *synthesis_voice;
++extern int list_output_modules;
++extern char *output_module;
++extern char *sound_icon;
++extern char *language;
++extern char *voice_type;
++extern char *punctuation_mode;
++extern char *priority;
++extern int pipe_mode;
++extern SPDDataMode ssml_mode;
++extern int spelling;
++extern int wait_till_end;
++extern int stop_previous;
++extern int cancel_previous;
++extern int list_synthesis_voices;
++extern char *synthesis_voice;
+
+-char *application_name;
+-char *connection_name;
++extern char *application_name;
++extern char *connection_name;
+
+ static struct option long_options[] = {
+ {"rate", 1, 0, 'r'},
+diff --git a/src/modules/festival_client.c b/src/modules/festival_client.c
+index bb15cb86..f8327d46 100644
+--- a/src/modules/festival_client.c
++++ b/src/modules/festival_client.c
+@@ -75,6 +75,8 @@
+ /* For testing endianness */
+ int fapi_endian_loc = 1;
+
++int festival_connection_crashed;
++
+ static char *socket_receive_file_to_buff(int fd, int *size);
+
+ /* --- MANAGING FT STRUCTURES --- */
+diff --git a/src/modules/festival_client.h b/src/modules/festival_client.h
+index 21acdda2..dfbaac15 100644
+--- a/src/modules/festival_client.h
++++ b/src/modules/festival_client.h
+@@ -44,7 +44,7 @@
+ #define FESTIVAL_DEFAULT_SERVER_PORT 1314
+ #define FESTIVAL_DEFAULT_TEXT_MODE "fundamental"
+
+-int festival_connection_crashed;
++extern int festival_connection_crashed;
+
+ typedef struct FT_Info {
+ int encoding;
+diff --git a/src/modules/module_utils.c b/src/modules/module_utils.c
+index 0a3d3308..99e71fcb 100644
+--- a/src/modules/module_utils.c
++++ b/src/modules/module_utils.c
+@@ -35,6 +35,26 @@ extern char *module_index_mark;
+
+ pthread_mutex_t module_stdout_mutex = PTHREAD_MUTEX_INITIALIZER;
+
++int log_level;
++
++AudioID *module_audio_id;
++
++SPDMsgSettings msg_settings;
++SPDMsgSettings msg_settings_old;
++
++int current_index_mark;
++
++int Debug;
++FILE *CustomDebugFile;
++
++configfile_t *configfile;
++configoption_t *module_dc_options;
++int module_num_dc_options;
++
++const char *module_name;
++
++char *module_index_mark;
++
+ char *do_message(SPDMessageType msgtype)
+ {
+ int ret;
+diff --git a/src/modules/module_utils.h b/src/modules/module_utils.h
+index 12382d3b..87c5f813 100644
+--- a/src/modules/module_utils.h
++++ b/src/modules/module_utils.h
+@@ -49,23 +49,23 @@ typedef struct SPDMarks {
+ gboolean stop;
+ } SPDMarks;
+
+-int log_level;
++extern int log_level;
+
+-AudioID *module_audio_id;
++extern AudioID *module_audio_id;
+
+-SPDMsgSettings msg_settings;
+-SPDMsgSettings msg_settings_old;
++extern SPDMsgSettings msg_settings;
++extern SPDMsgSettings msg_settings_old;
+
+-int current_index_mark;
++extern int current_index_mark;
+
+-int Debug;
+-FILE *CustomDebugFile;
++extern int Debug;
++extern FILE *CustomDebugFile;
+
+-configfile_t *configfile;
+-configoption_t *module_dc_options;
+-int module_num_dc_options;
++extern configfile_t *configfile;
++extern configoption_t *module_dc_options;
++extern int module_num_dc_options;
+
+-const char *module_name;
++extern const char *module_name;
+
+ #define CLEAN_OLD_SETTINGS_TABLE() do { \
+ msg_settings_old.rate = -101;\
+@@ -395,7 +395,7 @@ configoption_t *add_config_option(configoption_t * options,
+ #define INDEX_MARK_BODY_LEN 6
+ #define INDEX_MARK_BODY "__spd_"
+
+-char *module_index_mark;
++extern char *module_index_mark;
+
+ /* This macro must be placed at the initialization of the module so that the
+ later functions are possible to use */
+diff --git a/src/server/compare.c b/src/server/compare.c
+index aa08ed79..8d36c39d 100644
+--- a/src/server/compare.c
++++ b/src/server/compare.c
+@@ -29,6 +29,7 @@
+ #include "compare.h"
+
+ /* Pointer to compare_message_uid */
++gint(*p_msg_lc) ();
+ gint(*p_msg_uid_lc) () = compare_message_uid;
+
+ gint compare_message_uid(gconstpointer element, gconstpointer value, gpointer x)
+diff --git a/src/server/compare.h b/src/server/compare.h
+index f0c730c5..380c9ed2 100644
+--- a/src/server/compare.h
++++ b/src/server/compare.h
+@@ -27,7 +27,7 @@ gint compare_message_uid(gconstpointer element, gconstpointer value,
+ gpointer x);
+
+ /* Pointer to function compare_message_uid */
+-gint(*p_msg_lc) ();
+-gint(*p_msg_uid_lc) ();
++extern gint(*p_msg_lc) ();
++extern gint(*p_msg_uid_lc) ();
+
+ #endif /* COMPARE_H */
+diff --git a/src/server/configuration.c b/src/server/configuration.c
+index a21b60c9..ba145995 100644
+--- a/src/server/configuration.c
++++ b/src/server/configuration.c
+@@ -33,6 +33,9 @@
+ #include "symbols.h"
+ #include <fdsetconv.h>
+
++configoption_t *spd_options;
++int spd_num_options;
++
+ static TFDSetClientSpecific *cl_spec_section;
+
+ /* So that gcc doesn't comply about casts to char* */
+diff --git a/src/server/configuration.h b/src/server/configuration.h
+index 5850c63b..bd87a0d5 100644
+--- a/src/server/configuration.h
++++ b/src/server/configuration.h
+@@ -29,8 +29,8 @@
+ #define SPEECHD_DEFAULT_PORT 6560
+
+ /* Loading options from DotConf */
+-configoption_t *spd_options;
+-int spd_num_options;
++extern configoption_t *spd_options;
++extern int spd_num_options;
+
+ configoption_t *load_config_options(int *num_options);
+ void free_config_options(configoption_t * opts, int *num);
+diff --git a/src/server/speaking.c b/src/server/speaking.c
+index 2160c250..61463f3f 100644
+--- a/src/server/speaking.c
++++ b/src/server/speaking.c
+@@ -46,6 +46,16 @@ static SPDPriority highest_priority = 0;
+ int SPEAKING = 0;
+ int poll_count;
+
++OutputModule *speaking_module;
++int speaking_uid;
++int speaking_gid;
++
++/* Pause and resume handling */
++int pause_requested;
++int pause_requested_fd;
++int pause_requested_uid;
++int resume_requested;
++
+ /*
+ Speak() is responsible for getting right text from right
+ queue in right time and saying it loud through the corresponding
+diff --git a/src/server/speaking.h b/src/server/speaking.h
+index 690db600..48752dfa 100644
+--- a/src/server/speaking.h
++++ b/src/server/speaking.h
+@@ -26,15 +26,15 @@
+
+ #include <speechd_types.h>
+
+-OutputModule *speaking_module;
+-int speaking_uid;
+-int speaking_gid;
++extern OutputModule *speaking_module;
++extern int speaking_uid;
++extern int speaking_gid;
+
+ /* Pause and resume handling */
+-int pause_requested;
+-int pause_requested_fd;
+-int pause_requested_uid;
+-int resume_requested;
++extern int pause_requested;
++extern int pause_requested_fd;
++extern int pause_requested_uid;
++extern int resume_requested;
+
+ /* Speak() is responsible for getting right text from right
+ * queue in right time and saying it loud through corresponding
+diff --git a/src/server/speechd.c b/src/server/speechd.c
+index 8d3c1de4..6f6e51a5 100644
+--- a/src/server/speechd.c
++++ b/src/server/speechd.c
+@@ -65,6 +65,39 @@ gint server_timeout_source = 0;
+
+ int client_count = 0;
+
++struct SpeechdOptions SpeechdOptions;
++struct SpeechdStatus SpeechdStatus;
++
++pthread_t speak_thread;
++pthread_mutex_t logging_mutex;
++pthread_mutex_t element_free_mutex;
++pthread_mutex_t output_layer_mutex;
++pthread_mutex_t socket_com_mutex;
++
++GHashTable *fd_settings;
++GHashTable *language_default_modules;
++GHashTable *fd_uid;
++
++TSpeechDQueue *MessageQueue;
++GList *MessagePausedList;
++
++GList *client_specific_settings;
++
++GList *last_p5_block;
++
++TFDSetElement GlobalFDSet;
++
++int speaking_pipe[2];
++
++GHashTable *speechd_sockets_status;
++
++FILE *logfile;
++FILE *custom_logfile;
++char *custom_log_kind;
++FILE *debug_logfile;
++
++TSpeechDMode spd_mode;
++
+ static gboolean speechd_client_terminate(gpointer key, gpointer value, gpointer user);
+ static gboolean speechd_reload_dead_modules(gpointer user_data);
+ static gboolean speechd_load_configuration(gpointer user_data);
+diff --git a/src/server/speechd.h b/src/server/speechd.h
+index c0730b76..b23bbb69 100644
+--- a/src/server/speechd.h
++++ b/src/server/speechd.h
+@@ -123,7 +123,7 @@ typedef enum {
+ SPD_MODE_SINGLE /* */
+ } TSpeechDMode;
+
+-TSpeechDMode spd_mode;
++extern TSpeechDMode spd_mode;
+
+ /* TSpeechDQueue is a queue for messages. */
+ typedef struct {
+@@ -148,7 +148,7 @@ typedef struct {
+ #include "alloc.h"
+ #include "speaking.h"
+
+-struct {
++extern struct SpeechdOptions {
+ char *communication_method;
+ int communication_method_set;
+ char *socket_path;
+@@ -172,48 +172,48 @@ struct {
+ int server_timeout_set;
+ } SpeechdOptions;
+
+-struct {
++extern struct SpeechdStatus {
+ int max_uid; /* The largest assigned uid + 1 */
+ int max_gid; /* The largest assigned gid + 1 */
+ int max_fd;
+ } SpeechdStatus;
+
+ /* speak() thread defined in speaking.c */
+-pthread_t speak_thread;
+-pthread_mutex_t logging_mutex;
+-pthread_mutex_t element_free_mutex;
+-pthread_mutex_t output_layer_mutex;
+-pthread_mutex_t socket_com_mutex;
++extern pthread_t speak_thread;
++extern pthread_mutex_t logging_mutex;
++extern pthread_mutex_t element_free_mutex;
++extern pthread_mutex_t output_layer_mutex;
++extern pthread_mutex_t socket_com_mutex;
+
+ /* Table of all configured (and succesfully loaded) output modules */
+ extern GList *output_modules;
+
+ /* Table of settings for each active client (=each active socket)*/
+-GHashTable *fd_settings;
++extern GHashTable *fd_settings;
+ /* Table of default output modules for different languages */
+-GHashTable *language_default_modules;
++extern GHashTable *language_default_modules;
+ /* Table of relations between client file descriptors and their uids */
+-GHashTable *fd_uid;
++extern GHashTable *fd_uid;
+
+ /* Speech Dispatcher main priority queue for messages */
+-TSpeechDQueue *MessageQueue;
++extern TSpeechDQueue *MessageQueue;
+ /* List of messages from paused clients waiting for resume */
+-GList *MessagePausedList;
++extern GList *MessagePausedList;
+
+ /* List of different entries of client-specific configuration */
+-GList *client_specific_settings;
++extern GList *client_specific_settings;
+
+ /* Saves the last received priority progress message */
+-GList *last_p5_block;
++extern GList *last_p5_block;
+
+ /* Global default settings */
+-TFDSetElement GlobalFDSet;
++extern TFDSetElement GlobalFDSet;
+
+ /* Inter thread comm pipe */
+-int speaking_pipe[2];
++extern int speaking_pipe[2];
+
+ /* Managing sockets communication */
+-GHashTable *speechd_sockets_status;
++extern GHashTable *speechd_sockets_status;
+ typedef struct {
+ int awaiting_data;
+ int inside_block;
+@@ -234,10 +234,10 @@ void MSG2(int level, char *kind, char *format, ...);
+ #define FATAL(msg) do { fatal_error(); MSG(-1,"Fatal error [%s:%d]:"msg, __FILE__, __LINE__); exit(EXIT_FAILURE); } while (0)
+ #define DIE(msg) do { MSG(0,"Error [%s:%d]:"msg, __FILE__, __LINE__); exit(EXIT_FAILURE); } while (0)
+
+-FILE *logfile;
+-FILE *custom_logfile;
+-char *custom_log_kind;
+-FILE *debug_logfile;
++extern FILE *logfile;
++extern FILE *custom_logfile;
++extern char *custom_log_kind;
++extern FILE *debug_logfile;
+
+ /* For debugging purposes, does nothing */
+ void fatal_error(void);
diff --git a/app-accessibility/speech-dispatcher/speech-dispatcher-0.9.1.ebuild b/app-accessibility/speech-dispatcher/speech-dispatcher-0.9.1.ebuild
new file mode 100644
index 000000000000..082ac0dcff85
--- /dev/null
+++ b/app-accessibility/speech-dispatcher/speech-dispatcher-0.9.1.ebuild
@@ -0,0 +1,116 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7,8} )
+inherit python-r1 systemd
+
+DESCRIPTION="Speech synthesis interface"
+HOMEPAGE="https://freebsoft.org/speechd"
+SRC_URI="https://github.com/brailcom/speechd/releases/download/${PV}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux"
+IUSE="alsa ao +espeak flite nas pulseaudio python"
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+DEPEND="python? ( ${PYTHON_DEPS} )
+ >=dev-libs/dotconf-1.3
+ >=dev-libs/glib-2.36:2
+ dev-libs/libltdl:0
+ >=media-libs/libsndfile-1.0.2
+ alsa? ( media-libs/alsa-lib )
+ ao? ( media-libs/libao )
+ espeak? ( app-accessibility/espeak )
+ flite? ( app-accessibility/flite )
+ nas? ( media-libs/nas )
+ pulseaudio? ( media-sound/pulseaudio )"
+RDEPEND="${DEPEND}
+ python? ( dev-python/pyxdg[${PYTHON_USEDEP}] )"
+BDEPEND="
+ >=sys-devel/gettext-0.19.8
+ virtual/pkgconfig"
+
+PATCHES=( "${FILESDIR}/${P}-fno-common.patch" )
+
+src_configure() {
+ # bug 573732
+ export GIT_CEILING_DIRECTORIES="${WORKDIR}"
+
+ local myeconfargs=(
+ --disable-python
+ --disable-static
+ --with-baratinoo=no
+ --with-ibmtts=no
+ --with-kali=no
+ $(use_with alsa)
+ $(use_with ao libao)
+ $(use_with espeak)
+ $(use_with flite)
+ $(use_with nas)
+ $(use_with pulseaudio pulse)
+ --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+ )
+ econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+ use python && python_copy_sources
+
+ emake
+
+ if use python; then
+ building() {
+ cd src/api/python || die
+ emake \
+ pyexecdir="$(python_get_sitedir)" \
+ pythondir="$(python_get_sitedir)"
+ }
+ python_foreach_impl run_in_build_dir building
+ fi
+}
+
+src_install() {
+ default
+
+ if use python; then
+ installation() {
+ cd src/api/python || die
+ emake \
+ DESTDIR="${D}" \
+ pyexecdir="$(python_get_sitedir)" \
+ pythondir="$(python_get_sitedir)" \
+ install
+ }
+ python_foreach_impl run_in_build_dir installation
+ python_replicate_script "${ED}"/usr/bin/spd-conf
+ fi
+
+ find "${D}" -name '*.la' -type f -delete || die
+}
+
+pkg_postinst() {
+ local editconfig="n"
+ if ! use espeak; then
+ ewarn "You have disabled espeak, which is speech-dispatcher's"
+ ewarn "default speech synthesizer."
+ ewarn
+ editconfig="y"
+ fi
+ if ! use pulseaudio; then
+ ewarn "You have disabled pulseaudio support."
+ ewarn "pulseaudio is speech-dispatcher's default audio subsystem."
+ ewarn
+ editconfig="y"
+ fi
+ if [[ "${editconfig}" == "y" ]]; then
+ ewarn "You must edit ${EROOT}/etc/speech-dispatcher/speechd.conf"
+ ewarn "and make sure the settings there match your system."
+ ewarn
+ fi
+ elog "For festival support, you need to"
+ elog "install app-accessibility/festival-freebsoft-utils."
+}