commit 35eb3a1c521d6baa9267779620f500b0e52d92f8 Author: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon Sep 30 10:33:11 2019 -0400 Package init diff --git a/0001-Add-support-for-eSpeak-NG.patch b/0001-Add-support-for-eSpeak-NG.patch new file mode 100644 index 0000000..9fcb4de --- /dev/null +++ b/0001-Add-support-for-eSpeak-NG.patch @@ -0,0 +1,549 @@ +From 6df30ecf05440a1a0f197817d3e39c15d04f15c0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= +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 + Ole Guldberg + Olivier Bert + Ollie Mallard ++olysonek + Oscar Fernandez + Pete De Vasto + Peter Lundblad +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 . ++############################################################################### ++ ++DRIVER_CODE = en ++DRIVER_NAME = eSpeak-NG ++DRIVER_COMMENT = text to speech engine ++DRIVER_VERSION = 0.1 ++DRIVER_DEVELOPERS = Nicolas Pitre , Ondřej Lysoněk ++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 . ++ */ ++ ++#include "prologue.h" ++ ++#include ++#include ++#include ++ ++#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 ++ ++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 + diff --git a/brltty-5.0-libspeechd.patch b/brltty-5.0-libspeechd.patch new file mode 100644 index 0000000..06909e0 --- /dev/null +++ b/brltty-5.0-libspeechd.patch @@ -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 ++#include + + static SPDConnection *connectionHandle = NULL; + static const char *moduleName; diff --git a/brltty-5.6-libs-add-ldflags.patch b/brltty-5.6-libs-add-ldflags.patch new file mode 100644 index 0000000..d7545ce --- /dev/null +++ b/brltty-5.6-libs-add-ldflags.patch @@ -0,0 +1,108 @@ +From bc609b45ee5b44247d528e9462cb28792753a267 Mon Sep 17 00:00:00 2001 +From: Dave Mielke +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 diff --git a/brltty-5.6-libs-add-ldflags2.patch b/brltty-5.6-libs-add-ldflags2.patch new file mode 100644 index 0000000..a51d645 --- /dev/null +++ b/brltty-5.6-libs-add-ldflags2.patch @@ -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} }]) -o" ++ brltty_cv_prog_mklib="\$(CC) \$(LDFLAGS) ${brltty_mklib_gcc_make=-shared} BRLTTY_OPTIONS_LD2CC([${brltty_mklib_ld_options+${brltty_mklib_ld_options} }]) -o" + else +- brltty_cv_prog_mklib="\$(LD) ${brltty_mklib_ld_make} ${brltty_mklib_ld_options+${brltty_mklib_ld_options} } -o" ++ brltty_cv_prog_mklib="\$(LD) \$(LDFLAGS) ${brltty_mklib_ld_make} ${brltty_mklib_ld_options+${brltty_mklib_ld_options} } -o" + fi]) + AC_SUBST([MKLIB], ["${brltty_cv_prog_mklib}"]) + diff --git a/brltty-5.6.tar.xz b/brltty-5.6.tar.xz new file mode 100644 index 0000000..0a3d481 Binary files /dev/null and b/brltty-5.6.tar.xz differ diff --git a/brltty-loadLibrary.patch b/brltty-loadLibrary.patch new file mode 100644 index 0000000..11ac936 --- /dev/null +++ b/brltty-loadLibrary.patch @@ -0,0 +1,21 @@ +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 { ++ System.load( "/usr/lib64/brltty/libbrlapi_java.so" ); ++ } catch( UnsatisfiedLinkError e ) { ++ try { ++ System.load( "/usr/lib/brltty/libbrlapi_java.so" ); ++ } catch( UnsatisfiedLinkError f ) { ++ throw new UnsatisfiedLinkError("brlapi_java library load failed"); ++ } ++ } + } + + protected long handle; diff --git a/brltty.service b/brltty.service new file mode 100644 index 0000000..259b9ca --- /dev/null +++ b/brltty.service @@ -0,0 +1,10 @@ +[Unit] +Description=Braille display driver for Linux/Unix +Before=getty.target display-manager.service + +[Service] +Type=forking +ExecStart=/usr/bin/brltty + +[Install] +WantedBy=default.target emergency.target rescue.target diff --git a/brltty.spec b/brltty.spec new file mode 100644 index 0000000..4fb68b4 --- /dev/null +++ b/brltty.spec @@ -0,0 +1,264 @@ +%define api_ver 0.6.7 + +%{!?tcl_version: %global tcl_version %(echo 'puts $tcl_version' | tclsh)} +%{!?tcl_sitearch: %global tcl_sitearch %{_prefix}/%{_lib}/tcl%{tcl_version}} + + +Name: brltty +Version: 5.6 +Release: 29 +Summary: Braille display driver for Linux/Unix +License: LGPLv2+ +URL: http://brltty.app/ +Source0: http://brltty.app/archive/%{name}-%{version}.tar.xz + +Source1: brltty.service + +#patch0~2 from fedora +Patch0: brltty-loadLibrary.patch +Patch1: brltty-5.0-libspeechd.patch +Patch2: 0001-Add-support-for-eSpeak-NG.patch +#patch3~4 from upstream +Patch3: brltty-5.6-libs-add-ldflags.patch +Patch4: brltty-5.6-libs-add-ldflags2.patch + + +BuildRequires: byacc glibc-kernheaders bluez-libs-devel systemd gettext at-spi2-core-devel alsa-lib-devel +BuildRequires: python3-devel autoconf espeak-ng-devel speech-dispatcher-devel + + +Requires(pre): glibc-common, shadow-utils +Requires(post): coreutils systemd coreutils, util-linux +Requires(preun): systemd +Requires(postun): systemd + + +Provides: brlapi +Obsoletes: brlapi + +Obsoletes: brltty-espeak <= 5.6-5 + + +%description +BRLTTY is a background process (daemon) which provides +access to the Linux/Unix console (when in text mode) +for a blind person using a refreshable braille display. +It drives the braille display and provides complete +screen review functionality. + +%package devel +Summary: Headers, static archive, and documentation for Brltty +Requires: %{name} = %{version}-%{release} + +Provides: brlapi-devel = %{api_ver}-%{release} +Obsoletes: brlapi-devel = %{api_ver}-%{release} + +%description devel +This package provides the header files, static archive, shared object +linker reference, and reference documentation for Brltty (the +Application Programming Interface to BRLTTY). + +%package docs +Summary: Documentation for BRLTTY + +%description docs +This package provides the documentation for BRLTTY. + + +%package -n tcl-%{name} +Requires: %{name} = %{version}-%{release} +BuildRequires: tcl-devel +Summary: Tcl bpi for brltty +%description -n tcl-brltty +This package provides the Tcl api for Brltty. + + +%package -n python3-%{name} +%{?python_provide:%python_provide python3-%{name}} +Requires: %{name} = %{version}-%{release} +BuildRequires: python3-Cython python3-devel +Obsoletes: python2-%{name} python-%{name} +Summary: Python 3 api for Brltty +%description -n python3-%{name} +This package provides the Python 3 api for Brltty. + +%package -n brltty-java +Requires: %{name} = %{version}-%{release} +BuildRequires: jpackage-utils java-devel +Summary: Java api for Brltty +%description -n brltty-java +This package provides the Java api for Brltty. + + +%package -n ocaml-brlapi +Requires: %{name} = %{version}-%{release} +BuildRequires: ocaml +Summary: OCaml api for Brltty +%description -n ocaml-brlapi +This package provides the OCaml api for Brltty. + +%package xw +Summary: XWindow driver for BRLTTY +License: LGPLv2+ +BuildRequires: libSM-devel libICE-devel libX11-devel libXaw-devel libXext-devel libXt-devel libXtst-devel +Requires: %{name} = %{version}-%{release} +Requires: xorg-x11-fonts-misc, ucs-miscfixed-fonts +%description xw +The XWindow driver for BRLTTY. + +%package at-spi2 +Summary: AtSpi2 driver for BRLTTY +License: LGPLv2+ +Requires: %{name} = %{version}-%{release} +%description at-spi2 +The AtSpi2 driver for BRLTTY. + + + +%prep +%autosetup -n %{name}-%{version} -p1 + + +%build +export PYTHONCOERCECLOCALE=0 +PYTHONS= +./autogen + +%configure --disable-relocatable-install --with-install-root="${RPM_BUILD_ROOT}" --disable-stripping --without-curses \ + --without-espeak JAVA_JAR_DIR=%{_jnidir} JAVA_JNI_DIR=%{_libdir}/brltty JAVA_JNI=yes \ + CYTHON=%{_bindir}/cython PYTHON=%{__python3} +%make_build + + +find . \( -path ./doc -o -path ./Documents \) -prune -o \ + \( -name 'README*' -o -name '*.txt' -o -name '*.html' -o \ + -name '*.sgml' -o -name '*.patch' -o \ + \( -path './Bootdisks/*' -type f -perm /ugo=x \) \) -print | +while read file; do + mkdir -p ./doc/${file%/*} && cp -rp $file ./doc/$file || exit 1 +done + +%install +mkdir -p $RPM_BUILD_ROOT%{_libdir}/ocaml/stublibs +%make_install JAVA_JAR_DIR=%{_jnidir} JAVA_JNI_DIR=%{_libdir}/brltty JAVA_JNI=yes +install -m 0644 Documents/brltty.conf ${RPM_BUILD_ROOT}%{_sysconfdir} +install -D -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}/brltty.service +chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/brltty-config + +rm -rf $RPM_BUILD_ROOT/%{_libdir}/libbrlapi.a + +%find_lang %{name} +cp -p %{name}.lang ../ + +/usr/bin/2to3 -wn ${RPM_BUILD_ROOT}/etc/brltty/Contraction/latex-access.ctb +sed -i 's|/usr/bin/python|/usr/bin/python3|g' ${RPM_BUILD_ROOT}/etc/brltty/Contraction/latex-access.ctb + +%check + +%pre +if ! getent group brlapi > /dev/null ; then + groupadd -r brlapi > /dev/null +fi + + +%preun +%systemd_preun brltty.service + +%post +if [ ! -e %{_sysconfdir}/brlapi.key ]; then + mcookie > %{_sysconfdir}/brlapi.key + chgrp brlapi %{_sysconfdir}/brlapi.key + chmod 0640 %{_sysconfdir}/brlapi.key +fi +/sbin/ldconfig +%systemd_post brltty.service + + +%postun +/sbin/ldconfig +%systemd_postun_with_restart brltty.service + + +%files -f %{name}.lang +%defattr(-,root,root) +%license LICENSE-* + +%config(noreplace) %{_sysconfdir}/brltty.conf + + +%{_bindir}/brltty +%{_bindir}/brltty-* +%{_bindir}/vstp +%{_bindir}/eutp +%{_bindir}/xbrlapi + +%{_libdir}/brltty/ +%{_libdir}/libbrlapi.so.* +%exclude %{_libdir}/brltty/libbrlttyssd.so +%exclude %{_libdir}/brltty/libbrlttybxw.so +%exclude %{_libdir}/brltty/libbrlttyxa2.so +%exclude %{_libdir}/brltty/libbrlttysen.so +%exclude %{_libdir}/brltty/libbrlapi_java.so + +%{_sysconfdir}/brltty/ +%{_sysconfdir}/X11/Xsession.d/60xbrlapi + +%{_datadir}/polkit-1/actions/org.a11y.brlapi.policy +%exclude %{_datadir}/gdm/greeter/autostart/xbrlapi.desktop + +%{_unitdir}/brltty.service + + +%files devel +%{_libdir}/libbrlapi.so +%{_includedir}/brltty +%{_includedir}/brlapi*.h + + +%files docs +%defattr(644,root,root) +%doc doc/* +#%doc Drivers/Speech/SpeechDispatcher/README +#%doc Drivers/Braille/XWindow/README +%doc Documents/* +%doc %{_mandir}/man[15]/brltty.* +%doc %{_mandir}/man1/xbrlapi.* +%doc %{_mandir}/man1/vstp.* +%doc %{_mandir}/man1/eutp.* +%doc %{_mandir}/man3/brlapi_*.3* + + +%files -n tcl-%{name} +%{tcl_sitearch}/brlapi-%{api_ver} + +%files -n python3-%{name} +%{python3_sitearch}/brlapi.cpython-*.so +%{python3_sitearch}/Brlapi-%{api_ver}-*.egg-info + + +%files -n brltty-java +%{_libdir}/brltty/libbrlapi_java.so +%{_jnidir}/brlapi.jar + + +%files -n ocaml-brlapi +%{_libdir}/ocaml/brlapi/ +%{_libdir}/ocaml/stublibs + +%files xw +%doc Drivers/Braille/XWindow/README +%{_libdir}/brltty/libbrlttybxw.so + +%files at-spi2 +%{_libdir}/brltty/libbrlttyxa2.so + + +%changelog +* Wed Sep 18 2019 openEuler Buildteam - 5.6-29 +- Type:bugfix +- Id:NA +- SUG:NA +- DESC: Adjust the position of ldconfig in the post stage + +* Thu Sep 12 2019 hufeng - 5.6-28 +- Init spec