Compare commits

..

No commits in common. "rawhide" and "f28" have entirely different histories.

23 changed files with 994 additions and 650 deletions

View file

@ -1 +0,0 @@
1

12
.gitignore vendored
View file

@ -1 +1,11 @@
/brltty-*.tar.xz
brltty-4.2.tar.gz
/brltty-4.3.tar.gz
/brltty-4.5.tar.gz
/brltty-5.0.tar.xz
/brltty-5.1.tar.xz
/brltty-5.2.tar.xz
/brltty-5.3.tar.xz
/brltty-5.3.1.tar.xz
/brltty-5.4.tar.xz
/brltty-5.5.tar.xz
/brltty-5.6.tar.xz

View file

@ -0,0 +1,549 @@
From 6df30ecf05440a1a0f197817d3e39c15d04f15c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= <olysonek@redhat.com>
Date: Wed, 28 Feb 2018 22:49:07 +0100
Subject: [PATCH] Add support for eSpeak-NG
It is mostly a copy of the eSpeak driver.
Squashed with Dave Mielke's commit:
Some modifications to the introduction of the eSpeak-NG speech driver: (dm)
Fix the order of lists that are alphabetically sorted by driver code.
Undo the changes to the derived Portuguese documents.
---
Documents/CONTRIBUTORS | 1 +
Documents/Manual-BRLTTY/English/driver-codes.sgml | 1 +
.../Manual-BRLTTY/English/speech-drivers.sgml | 2 +
Documents/Manual-BRLTTY/French/driver-codes.sgml | 1 +
Documents/Manual-BRLTTY/French/speech-drivers.sgml | 2 +
Documents/README.DOS | 5 +-
Documents/brltty.1.in | 3 +
Documents/brltty.conf.in | 7 +
Documents/speech-driver.csv | 1 +
Drivers/Speech/eSpeak-NG/Makefile.in | 29 ++++
Drivers/Speech/eSpeak-NG/README | 34 ++++
Drivers/Speech/eSpeak-NG/speech.c | 174 +++++++++++++++++++++
README | 1 +
brltty.spec.in | 25 +++
cfg-android | 1 +
cfg-darwin | 1 +
cfg-dos | 1 +
config.mk.in | 1 +
configure.ac | 4 +
19 files changed, 292 insertions(+), 2 deletions(-)
create mode 100644 Drivers/Speech/eSpeak-NG/Makefile.in
create mode 100644 Drivers/Speech/eSpeak-NG/README
create mode 100644 Drivers/Speech/eSpeak-NG/speech.c
diff --git a/Documents/CONTRIBUTORS b/Documents/CONTRIBUTORS
index 5a3af85b8..282ea193a 100644
--- a/Documents/CONTRIBUTORS
+++ b/Documents/CONTRIBUTORS
@@ -50,6 +50,7 @@ Nikita Tseykovets <tseikovets@rambler.ru>
Ole Guldberg <ole@omgwtf.dk>
Olivier Bert <obert01@mistigri.org>
Ollie Mallard <mallard@ilgerone.net>
+olysonek
Oscar Fernandez <ofa@once.es>
Pete De Vasto <pdevasto@incyte.com>
Peter Lundblad <plundblad@google.com>
diff --git a/Documents/Manual-BRLTTY/English/driver-codes.sgml b/Documents/Manual-BRLTTY/English/driver-codes.sgml
index 09eae4039..870cde7e3 100644
--- a/Documents/Manual-BRLTTY/English/driver-codes.sgml
+++ b/Documents/Manual-BRLTTY/English/driver-codes.sgml
@@ -10,6 +10,7 @@ bm|Baum (Native, HT, PB1, PB2)@
bn|BrailleNote@
cb|CombiBraille@
ec|EcoBraille@
+en|eSpeak-NG@
es|eSpeak@
eu|EuroBraille@
fl|FestivalLite@
diff --git a/Documents/Manual-BRLTTY/English/speech-drivers.sgml b/Documents/Manual-BRLTTY/English/speech-drivers.sgml
index 49caa060f..66c66e850 100644
--- a/Documents/Manual-BRLTTY/English/speech-drivers.sgml
+++ b/Documents/Manual-BRLTTY/English/speech-drivers.sgml
@@ -8,6 +8,8 @@ CombiBraille
|@
eSpeak
|text to speech engine@
+eSpeak-NG
+ |text to speech engine@
ExternalSpeech
|runs /usr/local/bin/externalspeech@
Festival
diff --git a/Documents/Manual-BRLTTY/French/driver-codes.sgml b/Documents/Manual-BRLTTY/French/driver-codes.sgml
index 09eae4039..870cde7e3 100644
--- a/Documents/Manual-BRLTTY/French/driver-codes.sgml
+++ b/Documents/Manual-BRLTTY/French/driver-codes.sgml
@@ -10,6 +10,7 @@ bm|Baum (Native, HT, PB1, PB2)@
bn|BrailleNote@
cb|CombiBraille@
ec|EcoBraille@
+en|eSpeak-NG@
es|eSpeak@
eu|EuroBraille@
fl|FestivalLite@
diff --git a/Documents/Manual-BRLTTY/French/speech-drivers.sgml b/Documents/Manual-BRLTTY/French/speech-drivers.sgml
index 9d079b6c6..ede82d398 100644
--- a/Documents/Manual-BRLTTY/French/speech-drivers.sgml
+++ b/Documents/Manual-BRLTTY/French/speech-drivers.sgml
@@ -6,6 +6,8 @@ CombiBraille
|@
eSpeak
|text to speech engine@
+eSpeak-NG
+ |text to speech engine@
ExternalSpeech
|runs /usr/local/bin/externalspeech@
Festival
diff --git a/Documents/README.DOS b/Documents/README.DOS
index eca9540ec..5b5de15c4 100644
--- a/Documents/README.DOS
+++ b/Documents/README.DOS
@@ -285,8 +285,9 @@ You should be able to use a configure command like this one::
--disable-api --disable-icu --disable-x \
--without-usb-package --without-bluetooth-package \
--without-libbraille --with-braille-driver=-vr,all \
- --without-espeak --without-flite \
- --without-speechd --with-speech-driver=all \
+ --without-espeak --without-espeak-ng \
+ --without-flite --without-speechd \
+ --with-speech-driver=all \
--with-screen-driver=pb,-all
The ``cfg-dos`` Script
diff --git a/Documents/brltty.1.in b/Documents/brltty.1.in
index ab7b3c1db..b95aaa964 100644
--- a/Documents/brltty.1.in
+++ b/Documents/brltty.1.in
@@ -714,6 +714,9 @@ CombiBraille
.B ec
EcoBraille
.TP 4
+.B en
+eSpeak-NG
+.TP 4
.B es
eSpeak
.TP 4
diff --git a/Documents/brltty.conf.in b/Documents/brltty.conf.in
index e11273674..80967177a 100644
--- a/Documents/brltty.conf.in
+++ b/Documents/brltty.conf.in
@@ -343,6 +343,7 @@
#speech-driver an # Android (text to speech engine)
#speech-driver bl # BrailleLite
#speech-driver cb # CombiBraille
+#speech-driver en # eSpeak-NG (text to speech engine)
#speech-driver es # eSpeak (text to speech engine)
#speech-driver fl # FestivalLite (text to speech engine)
#speech-driver fv # Festival (text to speech engine)
@@ -383,6 +384,12 @@
#speech-parameters es:PunctList=
#speech-parameters es:Voice=default
+# eSpeak-NG Speech Driver Parameters
+#speech-parameters en:MaxRate=450 # [80-]
+#speech-parameters en:Path=
+#speech-parameters en:PunctList=
+#speech-parameters en:Voice=en
+
# ExternalSpeech Speech Driver Parameters
#speech-parameters xs:Program=/usr/local/bin/externalspeech
#speech-parameters xs:Uid=65534
diff --git a/Documents/speech-driver.csv b/Documents/speech-driver.csv
index 2e339a6bf..b56e85cbf 100644
--- a/Documents/speech-driver.csv
+++ b/Documents/speech-driver.csv
@@ -4,6 +4,7 @@
"bl","BrailleLite"
"cb","CombiBraille"
"es","eSpeak (text to speech engine)"
+"en","eSpeak-NG (text to speech engine)"
"fl","FestivalLite (text to speech engine)"
"fv","Festival (text to speech engine)"
"gs","GenericSay (pipes to /usr/local/bin/say)"
diff --git a/Drivers/Speech/eSpeak-NG/Makefile.in b/Drivers/Speech/eSpeak-NG/Makefile.in
new file mode 100644
index 000000000..d91f9c59d
--- /dev/null
+++ b/Drivers/Speech/eSpeak-NG/Makefile.in
@@ -0,0 +1,29 @@
+###############################################################################
+# BRLTTY - A background process providing access to the console screen (when in
+# text mode) for a blind person using a refreshable braille display.
+#
+# Copyright (C) 1995-2018 by The BRLTTY Developers.
+#
+# BRLTTY comes with ABSOLUTELY NO WARRANTY.
+#
+# This is free software, placed under the terms of the
+# GNU Lesser General Public License, as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any
+# later version. Please see the file LICENSE-LGPL for details.
+#
+# Web Page: http://brltty.com/
+#
+# This software is maintained by Dave Mielke <dave@mielke.cc>.
+###############################################################################
+
+DRIVER_CODE = en
+DRIVER_NAME = eSpeak-NG
+DRIVER_COMMENT = text to speech engine
+DRIVER_VERSION = 0.1
+DRIVER_DEVELOPERS = Nicolas Pitre <nico@fluxnic.net>, Ondřej Lysoněk <olysonek@redhat.com>
+SPK_OBJS = @speech_libraries_en@
+include $(SRC_TOP)speech.mk
+
+speech.$O:
+ $(CC) $(SPK_CFLAGS) -I$(ESPEAK_NG_ROOT)/include -c $(SRC_DIR)/speech.c
+
diff --git a/Drivers/Speech/eSpeak-NG/README b/Drivers/Speech/eSpeak-NG/README
new file mode 100644
index 000000000..825848aa0
--- /dev/null
+++ b/Drivers/Speech/eSpeak-NG/README
@@ -0,0 +1,34 @@
+This directory contains the BRLTTY speech driver for the eSpeak-NG text to
+speech engine. The eSpeak-NG web site is
+https://github.com/espeak-ng/espeak-ng/.
+
+eSpeak-NG comes with a simple command-line tool called espeak-ng which can be
+used to test it, and to recompile modified dictionaries, etc. Please see
+the espeak-ng man page for more information.
+
+BRLTTY's configure script automatically includes this driver if the
+eSpeak-NG development library is installed.
+
+This driver recognizes the following parameters:
+
+path
+
+ Specifies the directory containing the espeak-ng-data directory.
+ If not specified, the default location is used.
+
+punctlist
+
+ Specified a list of punctuation characters whose names are to be
+ spoken when the speech punctuation parameter is set to "Some".
+ If not specified, a default list is used.
+
+voice
+
+ Specifies a voice/language to use. The complete list of available
+ voices may be obtained with the command 'espeak-ng --voices'.
+
+maxrate
+
+ Overrides the maximum speech rate value. The default is 450.
+ This cannot be lower than 80.
+
diff --git a/Drivers/Speech/eSpeak-NG/speech.c b/Drivers/Speech/eSpeak-NG/speech.c
new file mode 100644
index 000000000..af918c971
--- /dev/null
+++ b/Drivers/Speech/eSpeak-NG/speech.c
@@ -0,0 +1,174 @@
+/*
+ * BRLTTY - A background process providing access to the console screen (when in
+ * text mode) for a blind person using a refreshable braille display.
+ *
+ * Copyright (C) 1995-2018 by The BRLTTY Developers.
+ *
+ * BRLTTY comes with ABSOLUTELY NO WARRANTY.
+ *
+ * This is free software, placed under the terms of the
+ * GNU Lesser General Public License, as published by the Free Software
+ * Foundation; either version 2.1 of the License, or (at your option) any
+ * later version. Please see the file LICENSE-LGPL for details.
+ *
+ * Web Page: http://brltty.com/
+ *
+ * This software is maintained by Dave Mielke <dave@mielke.cc>.
+ */
+
+#include "prologue.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "log.h"
+#include "parse.h"
+
+typedef enum {
+ PARM_PATH,
+ PARM_PUNCTLIST,
+ PARM_VOICE,
+ PARM_MAXRATE
+} DriverParameter;
+#define SPKPARMS "path", "punctlist", "voice", "maxrate"
+
+#include "spk_driver.h"
+
+#include <espeak-ng/speak_lib.h>
+
+static int maxrate = espeakRATE_MAXIMUM;
+
+static void
+spk_say(volatile SpeechSynthesizer *spk, const unsigned char *buffer, size_t length, size_t count, const unsigned char *attributes)
+{
+ int result;
+
+ /* add 1 to the length in order to pass along the trailing zero */
+ result = espeak_Synth(buffer, length+1, 0, POS_CHARACTER, 0,
+ espeakCHARS_UTF8, NULL, (void *)spk);
+ if (result != EE_OK)
+ logMessage(LOG_ERR, "eSpeak-NG: Synth() returned error %d", result);
+}
+
+static void
+spk_mute(volatile SpeechSynthesizer *spk)
+{
+ espeak_Cancel();
+}
+
+static int SynthCallback(short *audio, int numsamples, espeak_EVENT *events)
+{
+ volatile SpeechSynthesizer *spk = events->user_data;
+
+ while (events->type != espeakEVENT_LIST_TERMINATED) {
+ if (events->type == espeakEVENT_WORD)
+ tellSpeechLocation(spk, events->text_position - 1);
+ if (events->type == espeakEVENT_MSG_TERMINATED)
+ tellSpeechFinished(spk);
+ events++;
+ }
+ return 0;
+}
+
+static void
+spk_drain(volatile SpeechSynthesizer *spk)
+{
+ espeak_Synchronize();
+}
+
+static void
+spk_setVolume(volatile SpeechSynthesizer *spk, unsigned char setting)
+{
+ int volume = getIntegerSpeechVolume(setting, 50);
+ espeak_SetParameter(espeakVOLUME, volume, 0);
+}
+
+static void
+spk_setRate(volatile SpeechSynthesizer *spk, unsigned char setting)
+{
+ int h_range = (maxrate - espeakRATE_MINIMUM)/2;
+ int rate = getIntegerSpeechRate(setting, h_range) + espeakRATE_MINIMUM;
+ espeak_SetParameter(espeakRATE, rate, 0);
+}
+
+static void
+spk_setPitch(volatile SpeechSynthesizer *spk, unsigned char setting)
+{
+ int pitch = getIntegerSpeechPitch(setting, 50);
+ espeak_SetParameter(espeakPITCH, pitch, 0);
+}
+
+static void
+spk_setPunctuation(volatile SpeechSynthesizer *spk, SpeechPunctuation setting)
+{
+ espeak_PUNCT_TYPE punct;
+ if (setting <= SPK_PUNCTUATION_NONE)
+ punct = espeakPUNCT_NONE;
+ else if (setting >= SPK_PUNCTUATION_ALL)
+ punct = espeakPUNCT_ALL;
+ else
+ punct = espeakPUNCT_SOME;
+ espeak_SetParameter(espeakPUNCTUATION, punct, 0);
+}
+
+static int spk_construct(volatile SpeechSynthesizer *spk, char **parameters)
+{
+ char *data_path, *voicename, *punctlist;
+ int result;
+
+ spk->setVolume = spk_setVolume;
+ spk->setRate = spk_setRate;
+ spk->setPitch = spk_setPitch;
+ spk->setPunctuation = spk_setPunctuation;
+ spk->drain = spk_drain;
+
+ logMessage(LOG_INFO, "eSpeak-NG version %s", espeak_Info(NULL));
+
+ data_path = parameters[PARM_PATH];
+ if (data_path && !*data_path)
+ data_path = NULL;
+ result = espeak_Initialize(AUDIO_OUTPUT_PLAYBACK, 0, data_path, 0);
+ if (result < 0) {
+ logMessage(LOG_ERR, "eSpeak-NG: initialization failed");
+ return 0;
+ }
+
+ voicename = parameters[PARM_VOICE];
+ if(!voicename || !*voicename)
+ voicename = "en";
+ result = espeak_SetVoiceByName(voicename);
+ if (result != EE_OK) {
+ espeak_VOICE voice_select;
+ memset(&voice_select, 0, sizeof(voice_select));
+ voice_select.languages = voicename;
+ result = espeak_SetVoiceByProperties(&voice_select);
+ }
+ if (result != EE_OK) {
+ logMessage(LOG_ERR, "eSpeak-NG: unable to load voice '%s'", voicename);
+ return 0;
+ }
+
+ punctlist = parameters[PARM_PUNCTLIST];
+ if (punctlist && *punctlist) {
+ wchar_t w_punctlist[strlen(punctlist) + 1];
+ int i = 0;
+ while ((w_punctlist[i] = punctlist[i]) != 0) i++;
+ espeak_SetPunctuationList(w_punctlist);
+ }
+
+ if (parameters[PARM_MAXRATE]) {
+ int val = atoi(parameters[PARM_MAXRATE]);
+ if (val > espeakRATE_MINIMUM) maxrate = val;
+ }
+
+ espeak_SetSynthCallback(SynthCallback);
+
+ return 1;
+}
+
+static void spk_destruct(volatile SpeechSynthesizer *spk)
+{
+ espeak_Cancel();
+ espeak_Terminate();
+}
diff --git a/README b/README
index 5fcd8c221..9fd946eb5 100644
--- a/README
+++ b/README
@@ -210,6 +210,7 @@ The following speech synthesizers are supported:
- BrailleLite
- CombiBraille
- eSpeak [text to speech engine]
+- eSpeak-NG [text to speech engine]
- ExternalSpeech [runs /usr/local/bin/externalspeech]
- Festival [text to speech engine]
- FestivalLite [text to speech engine]
diff --git a/brltty.spec.in b/brltty.spec.in
index 8a4986c5d..f5aa33dc2 100644
--- a/brltty.spec.in
+++ b/brltty.spec.in
@@ -144,6 +144,27 @@ Install this package if you would like to be able to use the
eSpeak text-to-speech engine.
+%package -n brltty-speech-espeak-ng
+Version: @PACKAGE_VERSION@
+Release: 1
+Group: System Environment/Daemons
+License: GPL
+
+Requires: espeak-ng
+
+BuildRequires: espeak-ng-devel
+
+AutoProv: no
+AutoReq: yes
+
+Summary: eSpeak-NG speech driver for BRLTTY.
+%description -n brltty-speech-espeak-ng
+This package provides the eSpeak-NG speech driver for BRLTTY.
+
+Install this package if you would like to be able to use the
+eSpeak-NG text-to-speech engine.
+
+
%package -n brltty-speech-festival
Version: @PACKAGE_VERSION@
Release: 1
@@ -512,6 +533,7 @@ rm -fr "${RPM_BUILD_ROOT}"
%{_libdir}/brltty
%exclude %{_libdir}/brltty/libbrlttybba.so
%exclude %{_libdir}/brltty/libbrlttybxw.so
+%exclude %{_libdir}/brltty/libbrlttysen.so
%exclude %{_libdir}/brltty/libbrlttyses.so
%exclude %{_libdir}/brltty/libbrlttysfl.so
%exclude %{_libdir}/brltty/libbrlttysfv.so
@@ -541,6 +563,9 @@ rm -fr "${RPM_BUILD_ROOT}"
%files -n brltty-speech-espeak
%{_libdir}/brltty/libbrlttyses.so
+%files -n brltty-speech-espeak-ng
+%{_libdir}/brltty/libbrlttysen.so
+
%files -n brltty-speech-festival
%{_libdir}/brltty/libbrlttysfv.so
diff --git a/cfg-android b/cfg-android
index 1c9ad3e14..db83a28a6 100755
--- a/cfg-android
+++ b/cfg-android
@@ -89,6 +89,7 @@ export LDFLAGS="-Wl,--fix-cortex-a8"
--with-braille-driver=-ba,-bg,-tt,-vr,al,at,bm,bn,ce,eu,fs,hm,ht,hw,ic,ir,md,mm,mt,np,pg,pm,sk,vo \
\
--without-espeak \
+ --without-espeak-ng \
--without-flite \
--without-mikropuhe \
--without-speechd \
diff --git a/cfg-darwin b/cfg-darwin
index 13741c371..992292717 100755
--- a/cfg-darwin
+++ b/cfg-darwin
@@ -25,6 +25,7 @@
--without-libbraille \
\
--without-espeak \
+ --without-espeak-ng \
--without-flite \
--without-mikropuhe \
--without-speechd \
diff --git a/cfg-dos b/cfg-dos
index 82277980b..55427b7b2 100755
--- a/cfg-dos
+++ b/cfg-dos
@@ -57,6 +57,7 @@ export LDFLAGS=""
--with-braille-driver=-vr,all \
\
--without-espeak \
+ --without-espeak-ng \
--without-flite \
--without-mikropuhe \
--without-speechd \
diff --git a/config.mk.in b/config.mk.in
index ead6ca348..89af949de 100644
--- a/config.mk.in
+++ b/config.mk.in
@@ -370,6 +370,7 @@ SCREEN_DRIVER_LIBRARIES = @screen_driver_libraries@
SCREEN_DRIVERS = @screen_drivers@
ESPEAK_ROOT = @espeak_root@
+ESPEAK_NG_ROOT = @espeak_ng_root@
FLITE_ROOT = @flite_root@
FLITE_LANGUAGE = @flite_language@
FLITE_LEXICON = @flite_lexicon@
diff --git a/configure.ac b/configure.ac
index 39eb98390..b86f85209 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1742,6 +1742,10 @@ BRLTTY_ARG_DISABLE(
BRLTTY_SPEECH_DRIVER([bl], [BrailleLite])
BRLTTY_SPEECH_DRIVER([cb], [CombiBraille])
+ BRLTTY_IF_PACKAGE([eSpeak-NG], [espeak_ng], [include/espeak-ng/speak_lib.h], [dnl
+ BRLTTY_SPEECH_DRIVER([en], [eSpeak-NG], [-L$(ESPEAK_NG_ROOT)/lib -lespeak-ng])
+ ])
+
BRLTTY_IF_PACKAGE([eSpeak], [espeak], [include/espeak/speak_lib.h], [dnl
BRLTTY_SPEECH_DRIVER([es], [eSpeak], [-L$(ESPEAK_ROOT)/lib -lespeak])
])
--
2.14.3

View file

@ -1,9 +0,0 @@
#include <bits/wordsize.h>
#if __WORDSIZE == 32
#include "config-32.h"
#elif __WORDSIZE == 64
#include "config-64.h"
#else
#error "Unknown word size"
#endif

View file

@ -1,9 +0,0 @@
#include <bits/wordsize.h>
#if __WORDSIZE == 32
#include "forbuild-32.h"
#elif __WORDSIZE == 64
#include "forbuild-64.h"
#else
#error "Unknown word size"
#endif

View file

@ -0,0 +1,13 @@
diff --git a/Drivers/Speech/SpeechDispatcher/speech.c b/Drivers/Speech/SpeechDispatcher/speech.c
index d73250a..df92708 100644
--- a/Drivers/Speech/SpeechDispatcher/speech.c
+++ b/Drivers/Speech/SpeechDispatcher/speech.c
@@ -34,7 +34,7 @@ typedef enum {
#include "spk_driver.h"
-#include <libspeechd.h>
+#include <speech-dispatcher/libspeechd.h>
static SPDConnection *connectionHandle = NULL;
static const char *moduleName;

View file

@ -0,0 +1,108 @@
From bc609b45ee5b44247d528e9462cb28792753a267 Mon Sep 17 00:00:00 2001
From: Dave Mielke <dave@mielke.cc>
Date: Tue, 24 Apr 2018 17:41:28 -0400
Subject: [PATCH] The distribution-supplied LDFLAGS should also be used when
making shared objects. (dm)
---
configure.ac | 73 +++++++++++++++++++++++++++++++-----------------------------
1 file changed, 38 insertions(+), 35 deletions(-)
diff --git a/configure.ac b/configure.ac
index 906a8f632..4e8b0ccb7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -377,7 +377,7 @@ in
solaris* ) LDFLAGS_DYNAMIC="";;
*) AC_MSG_ERROR([dynamic linkage not supported for ${host_os}]);;
esac
-LDFLAGS_DYNAMIC="${LDFLAGS} BRLTTY_OPTIONS_LD2CC([${LDFLAGS_DYNAMIC}])"
+LDFLAGS_DYNAMIC="BRLTTY_OPTIONS_LD2CC([${LDFLAGS_DYNAMIC}])"
if test "${GCC}" = "yes"
then
@@ -404,6 +404,7 @@ else
fi
pkgconfig_flags_libs="--libs"
+
BRLTTY_ARG_ENABLE(
[standalone-programs],
[statically linked executables],
@@ -429,40 +430,42 @@ test "${DOXYGEN}" = "false" && can_make_BrlAPIref=no || can_make_BrlAPIref=yes
AC_SUBST([can_make_BrlAPIref])
AC_CACHE_CHECK([for shared object creation command], [brltty_cv_prog_make_object_shared], [dnl
-case "${host_os}"
-in
- linux*|gnu*|openbsd*|freebsd*|kfreebsd*|netbsd*|*qnx*|cygwin*|mingw*|elf*)
- brltty_mkshr_ld_make="-shared"
- ;;
- solaris*)
- brltty_mkshr_ld_make="-G"
- ;;
- hpux*)
- brltty_mkshr_ld_make="-b"
- ;;
- osf*)
- brltty_mkshr_ld_make="-shared"
- ;;
- darwin*)
- brltty_mkshr_ld_make="-bundle"
- brltty_mkshr_ld_options="-flat_namespace -undefined suppress"
- brltty_mkshr_gcc_make="-bundle"
- ;;
- msdos*)
- brltty_mkshr_ld_make="not_supported_on_msdos"
- brltty_mkshr_ld_options="not_supported_on_msdos"
- brltty_mkshr_gcc_make="not_supported_on_msdos"
- ;;
- *)
- AC_MSG_ERROR([loadable module creation command not configured for ${host_os}])
- ;;
-esac
-if test "${GCC}" = "yes"
-then
- brltty_cv_prog_make_object_shared="\$(CC) ${brltty_mkshr_gcc_make=-shared} BRLTTY_OPTIONS_LD2CC([${brltty_mkshr_ld_options}]) -o"
-else
- brltty_cv_prog_make_object_shared="\$(LD) ${brltty_mkshr_ld_make} ${brltty_mkshr_ld_options} -o"
-fi])
+ case "${host_os}"
+ in
+ linux*|gnu*|openbsd*|freebsd*|kfreebsd*|netbsd*|*qnx*|cygwin*|mingw*|elf*)
+ brltty_mkshr_ld_make="-shared"
+ ;;
+ solaris*)
+ brltty_mkshr_ld_make="-G"
+ ;;
+ hpux*)
+ brltty_mkshr_ld_make="-b"
+ ;;
+ osf*)
+ brltty_mkshr_ld_make="-shared"
+ ;;
+ darwin*)
+ brltty_mkshr_ld_make="-bundle"
+ brltty_mkshr_ld_options="-flat_namespace -undefined suppress"
+ brltty_mkshr_gcc_make="-bundle"
+ ;;
+ *)
+ AC_MSG_ERROR([loadable module creation command not configured for ${host_os}])
+ brltty_mkshr_ld_make="NOT_SUPPORTED"
+ brltty_mkshr_ld_options="NOT_SUPPORTED"
+ brltty_mkshr_gcc_make="NOT_SUPPORTED"
+ ;;
+ esac
+
+ if test "${GCC}" = "yes"
+ then
+ brltty_cv_prog_make_object_shared="\$(CC) ${brltty_mkshr_gcc_make=-shared} BRLTTY_OPTIONS_LD2CC([${brltty_mkshr_ld_options}])"
+ else
+ brltty_cv_prog_make_object_shared="\$(LD) ${brltty_mkshr_ld_make} ${brltty_mkshr_ld_options}"
+ fi
+
+ brltty_cv_prog_make_object_shared="${brltty_cv_prog_make_object_shared} ${LDFLAGS} -o"
+])
AC_SUBST([MKSHR], ["${brltty_cv_prog_make_object_shared}"])
AC_CACHE_CHECK([for make relocatable object command], [brltty_cv_prog_make_object_relocatable], [dnl

View file

@ -0,0 +1,36 @@
diff --git a/Bindings/OCaml/Makefile.in b/Bindings/OCaml/Makefile.in
index 47f7201..469f41e 100644
--- a/Bindings/OCaml/Makefile.in
+++ b/Bindings/OCaml/Makefile.in
@@ -55,13 +55,13 @@ OCAML_FILES = $(OCAML_MISC) $(OCAML_CLIBS) $(OCAML_BCLIB) $(OCAML_NCLIB)
all : $(OCAML_FILES)
$(OCAML_CLIBS) : brlapi_stubs.$O brlapi
- $(OCAMLMKLIB) $(API_LDFLAGS) -oc $(OCAML_LIB)_stubs brlapi_stubs.$O
+ $(OCAMLMKLIB) -ldopt "$(LDFLAGS)" $(API_LDFLAGS) -oc $(OCAML_LIB)_stubs brlapi_stubs.$O
$(OCAML_BCLIB) : $(OCAML_CLIBS) brlapi.cmo
$(OCAMLC) -a $(OCAMLMKLIB_FLAGS) -o $(OCAML_LIB).cma brlapi.cmo
$(OCAML_NCLIB) : $(OCAML_CLIBS) brlapi.cmx
- $(OCAMLMKLIB) $(OCAMLMKLIBOPT_FLAGS) -o $(OCAML_LIB) brlapi.cmx
+ $(OCAMLMKLIB) -ldopt "$(LDFLAGS)" $(OCAMLMKLIBOPT_FLAGS) -o $(OCAML_LIB) brlapi.cmx
brlapi.cmi: brlapi.mli
$(OCAMLC) -o $@ -c brlapi.mli
diff --git a/configure.ac b/configure.ac
index daed454..8938c6b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -544,9 +544,9 @@ in
esac
if test "${GCC}" = "yes"
then
- brltty_cv_prog_mklib="\$(CC) ${brltty_mklib_gcc_make=-shared} BRLTTY_OPTIONS_LD2CC([${brltty_mklib_ld_options+${brltty_mklib_ld_options} <name>}]) -o"
+ brltty_cv_prog_mklib="\$(CC) \$(LDFLAGS) ${brltty_mklib_gcc_make=-shared} BRLTTY_OPTIONS_LD2CC([${brltty_mklib_ld_options+${brltty_mklib_ld_options} <name>}]) -o"
else
- brltty_cv_prog_mklib="\$(LD) ${brltty_mklib_ld_make} ${brltty_mklib_ld_options+${brltty_mklib_ld_options} <name>} -o"
+ brltty_cv_prog_mklib="\$(LD) \$(LDFLAGS) ${brltty_mklib_ld_make} ${brltty_mklib_ld_options+${brltty_mklib_ld_options} <name>} -o"
fi])
AC_SUBST([MKLIB], ["${brltty_cv_prog_mklib}"])

View file

@ -1,11 +0,0 @@
--- a/Drivers/Speech/SpeechDispatcher/speech.c~ 2025-05-25 03:58:25.000000000 -0500
+++ b/Drivers/Speech/SpeechDispatcher/speech.c 2025-07-07 08:58:19.519919859 -0500
@@ -36,7 +36,7 @@
#include "spk_driver.h"
-#include <libspeechd.h>
+#include <speech-dispatcher/libspeechd.h>
static SPDConnection *connectionHandle = NULL;
static unsigned int autospawn;

View file

@ -1,10 +1,10 @@
diff --git a/Bindings/Java/NativeComponent.java b/Bindings/Java/NativeComponent.java
index 2e6304a..cf6c9b0 100644
--- a/Bindings/Java/NativeComponent.java
+++ b/Bindings/Java/NativeComponent.java
@@ -23,7 +23,15 @@ public class NativeComponent extends Component {
private native static void initializeNativeData ();
diff --git a/Bindings/Java/Native.java b/Bindings/Java/Native.java
index 8a3b003..c404bf2 100644
--- a/Bindings/Java/Native.java
+++ b/Bindings/Java/Native.java
@@ -21,7 +21,15 @@ package org.a11y.BrlAPI;
public class Native {
static {
- System.loadLibrary("brlapi_java");
+ try {
@ -15,7 +15,7 @@ index 2e6304a..cf6c9b0 100644
+ } catch( UnsatisfiedLinkError f ) {
+ throw new UnsatisfiedLinkError("brlapi_java library load failed");
+ }
+ }
initializeNativeData();
+ }
}
protected long handle;

View file

@ -1,6 +1,5 @@
[Unit]
Description=Braille display driver for Linux/Unix
Before=getty.target display-manager.service
[Service]
Type=forking

File diff suppressed because it is too large Load diff

View file

@ -1,2 +0,0 @@
#Type Name ID GECOS Home directory Shell
g brlapi -

56
dracut-README Normal file
View file

@ -0,0 +1,56 @@
Brltty support for dracut
This module provides brltty functionality in the initrd.
Module pickups user settings from system and install
necessary files like drivers and used text tables to initramfs.
For now the module is reliably functional from phase pre-mount
in earlier phases the module is not functional
TBD fix functionality from earlier phases than pre-mount
Module in instalation takes some options from environment variables.
BRLTTY_DRACUT_INCLUDE_DRIVERS forces include of screen or braille
driver
example:
BRLTTY_DRACUT_INCLUDE_DRIVERS=bpm beu
BRLTTY_DRACUT_INCLUDE_TEXT_FILES forces include of text tables
example:
BRLTTY_DRACUT_INCLUDE_TEXT_FILES=kok.ttb lv.tti
BRLTTY_LOCALE needs to be used when building initram image
to install used text table
see https://bugzilla.redhat.com/show_bug.cgi?id=1584036
example
BRLTTY_LOCALE=cs_CZ.UTF-8
Module adds boot command line parameters which are parsed
and exported as a coresponding environment variables. The following
is a list of supported boot command line parameters and their mapping
to the environment variables recognized by brltty (for details about
the variables see man brltty):
Boot command line parameter Environment variable
brltty.api_parameters BRLTTY_API_PARAMETERS
brltty.attributes_table BRLTTY_ATTRIBUTES_TABLE
brltty.braille_device BRLTTY_BRAILLE_DEVICE
brltty.braille_driver BRLTTY_BRAILLE_DRIVER
brltty.braille_parameters BRLTTY_BRAILLE_PARAMETERS
brltty.configuration_file BRLTTY_CONFIGURATION_FILE
brltty.contraction_table BRLTTY_CONTRACTION_TABLE
brltty.midi_device BRLTTY_MIDI_DEVICE
brltty.pcm_device BRLTTY_PCM_DEVICE
brltty.preferences_file BRLTTY_PREFERENCES_FILE
brltty.release_device BRLTTY_RELEASE_DEVICE
brltty.screen_driver BRLTTY_SCREEN_DRIVER
brltty.screen_parameters BRLTTY_SCREEN_PARAMETERS
brltty.speech_driver BRLTTY_SPEECH_DRIVER
brltty.speech_input BRLTTY_SPEECH_INPUT
brltty.speech_parameters BRLTTY_SPEECH_PARAMETERS
brltty.text_table BRLTTY_TEXT_TABLE
Example:
brltty.braile_driver="ba" brltty.braille_parameters="auth=none,host=IP:0"

4
dracut-brltty-cleanup.sh Executable file
View file

@ -0,0 +1,4 @@
#!/bin/bash
read pid</var/run/brltty.pid
kill -0 $pid && kill -9 $pid

3
dracut-brltty-start.sh Executable file
View file

@ -0,0 +1,3 @@
#!/bin/bash
brltty -E -x lx -P /var/run/brltty.pid

66
dracut-module-setup.sh Executable file
View file

@ -0,0 +1,66 @@
#!/bin/bash
# called by dracut
check() {
require_binaries brltty || return 1
return 0
}
# called by dracut
depends() {
return 0
}
#called by dracut
install() {
local required_libs="$(ldd /usr/bin/brltty | awk '{print $1}' | sed 's/\..*/.so\*/g')"
for word in $required_libs; do
if [ -e $word ]; then
inst_libdir_file "$word"
fi
done
inst_libdir_file "brltty/libbrlttyxlx.so*"
local brltty_report="$(LC_ALL="$BRLTTY_LOCALE" brltty -Evel7 2>&1)"
local checked_braille_drivers=$(echo "$brltty_report" | grep "checking for braille driver:" | awk '{print $NF}')
for word in $checked_braille_drivers; do
inst_libdir_file "brltty/libbrlttyb$word.so*"
done
local text_tables=$(echo "$brltty_report" | grep -E "compiling text table|including data file"| awk '{print $NF}')
for word in $text_tables; do
inst "$word"
done
local attributes=$(echo "$brltty_report" | grep "Attributes Table" | awk '{print $NF}')
for word in $attributes; do
inst "/etc/brltty/Attributes/$word.atb"
done
if [ "$BRLTTY_DRACUT_INCLUDE_DRIVERS" ]; then
for word in $BRLTTY_DRACUT_INCLUDE_DRIVERS; do
inst_libdir_file "brltty/libbrltty$BRLTTY_DRACUT_INCLUDE_DRIVERS.so*"
done
fi
if [ "$BRLTTY_DRACUT_INCLUDE_TEXT_FILES" ]; then
for word in $BRLTTY_DRACUT_INCLUDE_TEXT_FILES; do
inst "/etc/brltty/Text/$BRLTTY_DRACUT_INCLUDE_DATA_FILES"
done
fi
inst_hook cmdline 99 "$moddir/parse-brltty-opts.sh"
inst_hook initqueue 99 "$moddir/brltty-start.sh"
inst_hook cleanup 99 "$moddir/brltty-cleanup.sh"
inst_simple "/etc/brltty.conf"
inst_simple "/usr/bin/brltty"
dracut_need_initqueue
}

19
dracut-parse-brltty-opts.sh Executable file
View file

@ -0,0 +1,19 @@
#!/bin/bash
export BRLTTY_API_PARAMETERS=$(getarg brltty.api_parameters=)
export BRLTTY_ATTRIBUTES_TABLE=$(getarg brltty.attributes_table=)
export BRLTTY_BRAILLE_DEVICE=$(getarg brltty.braille_device=)
export BRLTTY_BRAILLE_DRIVER=$(getarg brltty.braille_driver=)
export BRLTTY_BRAILLE_PARAMETERS=$(getarg brltty.braille_parameters=)
export BRLTTY_CONFIGURATION_FILE=$(getarg brltty.configuration_file=)
export BRLTTY_CONTRACTION_TABLE=$(getarg brltty.contraction_table=)
export BRLTTY_MIDI_DEVICE=$(getarg brltty.midi_device=)
export BRLTTY_PCM_DEVICE=$(getarg brltty.pcm_device=)
export BRLTTY_PREFERENCES_FILE=$(getarg brltty.preferences_file=)
export BRLTTY_RELEASE_DEVICE=$(getarg brltty.release_device=)
export BRLTTY_SCREEN_DRIVER=$(getarg brltty.screen_driver=)
export BRLTTY_SCREEN_PARAMETERS=$(getarg brltty.screen_parameters=)
export BRLTTY_SPEECH_DRIVER=$(getarg brltty.speech_driver=)
export BRLTTY_SPEECH_INPUT=$(getarg brltty.speech_input=)
export BRLTTY_SPEECH_PARAMETERS=$(getarg brltty.speech_parameters=)
export BRLTTY_TEXT_TABLE=$(getarg brltty.text_table=)

View file

@ -1,5 +0,0 @@
summary: Run all smoke tests
discover:
how: fmf
execute:
how: tmt

View file

@ -1 +1 @@
SHA512 (brltty-6.8.tar.xz) = 08540cdf09eaa1caabd8400cb6e589f99f5f2b8aaaf8c031e5165e9b0605858e90dc9dd72f2095347f4860714214ecf184e3675422df880f1bf06bb4cc6f42ee
SHA512 (brltty-5.6.tar.xz) = c5df33bc51f3bafb56e4627290a801937bc57b6e2de5765c04e45c4ef1229ab864f2756916500ca4ca43b79354d7a9d3d4bfb588aa9fc494ea570eab25a389c0

View file

@ -1,2 +0,0 @@
summary: Smoke test
test: ./run_tests.sh

View file

@ -1,4 +0,0 @@
#!/bin/bash
pushd sanity-test || exit
./runtest.sh
popd || exit

17
tests/tests.yml Normal file
View file

@ -0,0 +1,17 @@
- hosts: localhost
tags:
- classic
- container
roles:
- role: standard-test-beakerlib
tests:
- sanity-test
required_packages:
- ImageMagick
- Xvfb
- brltty
- nc
- orca
- psmisc
- xorg-x11-utils