From a9ca3736dc898ccf8a192001106e6d072c5df21e Mon Sep 17 00:00:00 2001 From: Jaroslav Škarvada Date: Dec 11 2018 22:24:22 +0000 Subject: Rebased dracut support to upstream version Added requires to subpackages --- diff --git a/brltty-5.6-add-dracut-support.patch b/brltty-5.6-add-dracut-support.patch new file mode 100644 index 0000000..2d2e239 --- /dev/null +++ b/brltty-5.6-add-dracut-support.patch @@ -0,0 +1,1279 @@ +diff --git a/Headers/datafile.h b/Headers/datafile.h +index f22457e..eec692c 100644 +--- a/Headers/datafile.h ++++ b/Headers/datafile.h +@@ -43,6 +43,7 @@ typedef enum { + + typedef struct { + DataOperandsProcessor *processOperands; ++ void (*logFileName) (const char *name, void *data); + void *data; + unsigned char options; + } DataFileParameters; +diff --git a/Initramfs/Dracut/Makefile.in b/Initramfs/Dracut/Makefile.in +new file mode 100644 +index 0000000..8a7f6de +--- /dev/null ++++ b/Initramfs/Dracut/Makefile.in +@@ -0,0 +1,34 @@ ++MODULE_NAME = 99brltty ++MODULES_DIRECTORY = /usr/lib/dracut/modules.d ++MODULE_DIRECTORY = $(INSTALL_ROOT)$(MODULES_DIRECTORY)/$(MODULE_NAME) ++ ++install: install-module install-documentation install-configuration-files ++ ++install-module: install-module-directory ++ for file in *.sh; \ ++ do $(INSTALL_SCRIPT) $$file $(MODULE_DIRECTORY); \ ++ done ++ ++install-documentation: install-module-directory ++ $(INSTALL_DATA) README $(MODULE_DIRECTORY) ++ ++install-module-directory: ++ $(INSTALL_DIRECTORY) $(MODULE_DIRECTORY) ++ ++OPTIONS_FILE = cmdline ++CONFIGURATION_FILE = dracut.conf ++INITRAMFS_SUBDIRECTORY = Initramfs ++INITRAMFS_DIRECTORY = $(TABLES_DIRECTORY)/$(INITRAMFS_SUBDIRECTORY) ++INSTALL_INITRAMFS_DIRECTORY = $(INSTALL_ROOT)$(INITRAMFS_DIRECTORY) ++ ++install-initramfs-directory: ++ $(INSTALL_DIRECTORY) $(INSTALL_INITRAMFS_DIRECTORY) ++ ++install-configuration-files: install-initramfs-directory ++ $(INSTALL_DATA) $(OPTIONS_FILE) $(INSTALL_INITRAMFS_DIRECTORY) ++ $(INSTALL_DATA) $(CONFIGURATION_FILE) $(INSTALL_INITRAMFS_DIRECTORY) ++ sed -e '/^ *BRLTTY_DRACUT_LOCALE *= *"/s/".*"/"${LANG}"/' -i $(INSTALL_INITRAMFS_DIRECTORY)/$(CONFIGURATION_FILE) ++ ++uninstall: ++ -rm -f -r $(MODULE_DIRECTORY) ++ +diff --git a/Initramfs/Dracut/README b/Initramfs/Dracut/README +new file mode 100644 +index 0000000..ccf6baa +--- /dev/null ++++ b/Initramfs/Dracut/README +@@ -0,0 +1,215 @@ ++Braille Support for Dracut ++========================== ++ ++This module implements braille accessibility within the initramfs (initial ++ramdisk file system). If BRLTTY is installed (``/usr/bin/brltty`` exists) then ++it is added to the image. The braille drivers, text tables, attributes tables, ++contraction tables, keyboard tables, speech drivers, and preferences file ++configured via ``/etc/brltty.conf`` are included. Local customizations within ++``/etc/xdg/brltty/`` are also included. ++ ++BRLTTY is started as early as possible by the initramfs so that braille ++accessibility will be active when (should the need arise) control is ++transferred to the emergency shell due to a problem preparing the root file ++system. Additionally, braille accessibility is active at any of the specifiable ++initramfs breakpoints (see the ``rd.break`` kernel parameter) except for the ++one named ``cmdline`` because it occurs earlier than the point at which BRLTTY ++is started. ++ ++The braille driver can start immediately if either serial or USB communication ++is being used. If Bluetooth communication is being used then the braille driver ++won't start until the ``initqueue`` phase because the Systemd service manager ++isn't available until then. ++ ++Bluetooth support within the initramfs is disabled by default because it's ++insecure. The reason for this is that the link keys for those devices that have ++already been paired on the full system are copied into the initramfs image so ++that repairing won't be necessary. If you absolutely must use Bluetooth ++communication, or if you just want to and this issue is of no concern to you, ++then enable the ``BRLTTY_DRACUT_BLUETOOTH_SUPPORT`` option within the file ++``dracut.conf`` (which is in ``/etc/brltty/Initramfs/``). ++ ++Environment Variables ++--------------------- ++ ++A number of environment variables may be used to influence how BRLTTY is ++installed into the initramfs image. Their names all begin with the ++``BRLTTY_DRACUT_`` prefix. In addition to exporting them from the current ++environment, they may be defined within the optional file ``dracut.conf`` ++(which is in ``/etc/brltty/Initramfs/``). Within this file: ++ ++* Blank lines are ignored. ++* Lines that start with a hash [``#``] are comments. ++* All other lines should be simple shell-style assignments. For example:: ++ ++ NAME="string" ++ ++The following environment variables are supported: ++ ++BRLTTY_DRACUT_LOCALE ++ The preferred locale (used to determine the default text and contraction ++ tables). For example:: ++ ++ BRLTTY_DRACUT_LOCALE=cs_CZ.UTF-8 ++ ++ If needed, i.e. if the text and contraction tables haven't both been ++ configured via ``/etc/brltty.conf``, this information must be explicitly set ++ because it can't be determined from the system configuration when building ++ the image (see ``_). ++ ++BRLTTY_DRACUT_BRAILLE_DRIVERS ++ A space-separated list of additional braille drivers to include. For ++ example:: ++ ++ BRLTTY_DRACUT_BRAILLE_DRIVERS="pm eu" ++ ++BRLTTY_DRACUT_BLUETOOTH_SUPPORT ++ Whether or not Bluetooth support should be included within the initramfs. For ++ example:: ++ ++ BRLTTY_DRACUT_BLUETOOTH_SUPPORT=no ++ ++ Set this variable to ``yes`` if communication with your braille device is via ++ Bluetooth. Note that this option is insecure because the link keys for all of ++ your paired Bluetooth devices will be stored within the initramfs image. ++ ++BRLTTY_DRACUT_TEXT_TABLES ++ A space-separated list of additional text tables to include. For example:: ++ ++ BRLTTY_DRACUT_TEXT_TABLES="de fr" ++ ++BRLTTY_DRACUT_ATTRIBUTES_TABLES ++ A space-separated list of additional attributes tables to include. For ++ example:: ++ ++ BRLTTY_DRACUT_ATTRIBUTES_TABLES="upper_lower left_right" ++ ++BRLTTY_DRACUT_CONTRACTION_TABLES ++ A space-separated list of additional contraction tables to include. For ++ example:: ++ ++ BRLTTY_DRACUT_CONTRACTION_TABLES="de-kurzschrift fr-abrege" ++ ++BRLTTY_DRACUT_KEYBOARD_TABLES ++ A space-separated list of additional keyboard tables to include. For ++ example:: ++ ++ BRLTTY_DRACUT_KEYBOARD_TABLES="keypad desktop" ++ ++BRLTTY_DRACUT_SPEECH_DRIVERS ++ A space-separated list of additional speech drivers to include. For example:: ++ ++ BRLTTY_DRACUT_SPEECH_DRIVERS="es fl" ++ ++Kernel Command Line Parameters ++------------------------------ ++ ++This module interprets kernel command line parameters that begin with the ++``rd.brltty.`` prefix. Explicit values for these parameters can, of course, be ++specified on the kernel command line (e.g. within ``grub.cfg`` or within ++``/etc/default/grub``). In addition, default values for them can be defined ++within the optional file ``cmdline`` (which is in ``/etc/brltty/Initramfs/``). ++ ++The order of precedence, from lowest to highest, for a value is: ++ ++* BRLTTY built-in default ++* ``/etc/brltty.conf`` ++* initramfs override ++* ``/etc/brltty/Initramfs/cmdline`` ++* kernel command line ++ ++Blank lines are ignored. A hash [``#``] anywhere on a line begins a comment ++which continues till the end of that line - only those characters before it are ++significant. Any number of space-separated options may be specified on a line. ++The syntax for an option is ``name=value`` (without the ``rd.brltty.`` prefix). ++The ``=value`` part is optional - if there's no ``=`` then the value is ++``yes``. ++ ++Disabling BRLTTY ++```````````````` ++ ++Given that BRLTTY is a rather complex application, there are a number of kernel ++parameters that can be used to selectively disable a number of its components. ++In all cases, if any of these parameters isn't specified then it defaults to ++``1`` (enabled). They are: ++ ++ ========================= ========================================= ++ Kernel Parameter Effect ++ ------------------------- ----------------------------------------- ++ ``rd.brltty=0`` Completely disable BRLTTY. ++ ``rd.brltty.bluetooth=0`` Disable Bluetooth support. ++ ``rd.brltty.sound=0`` Disable speech drivers and sound support. ++ ``rd.brltty.pulse=0`` Disable the Pulse Audio server. ++ ``rd.brltty.speechd=0`` Disable the Speech Dispatcher server. ++ ========================= ========================================= ++ ++Specifying BRLTTY options ++````````````````````````` ++ ++All of BRLTTY's options that can be specified via environment variables (see ++``man brltty`` for the full list) can be specified via kernel parameters. For ++example, the kernel parameter ``rd.brltty.braille_driver=vo`` is mapped to the ++environment variable assignment ``BRLTTY_BRAILLE_DRIVER=vo``. Some of the more ++interesting ones are: ++ ++ ================================ =============================== ++ Kernel Parameter Default Value ++ -------------------------------- ------------------------------- ++ ``rd.brltty.braille_driver`` setting in ``/etc/brltty.conf`` ++ ``rd.brltty.braille_parameters`` setting in ``/etc/brltty.conf`` ++ ``rd.brltty.braille_device`` setting in ``/etc/brltty.conf`` ++ ``rd.brltty.text_table`` setting in ``/etc/brltty.conf`` ++ ``rd.brltty.attributes_table`` setting in ``/etc/brltty.conf`` ++ ``rd.brltty.contraction_table`` setting in ``/etc/brltty.conf`` ++ ``rd.brltty.keyboard_table`` setting in ``/etc/brltty.conf`` ++ ``rd.brltty.speech_driver`` setting in ``/etc/brltty.conf`` ++ ``rd.brltty.speech_parameters`` setting in ``/etc/brltty.conf`` ++ ``rd.brltty.log_file`` ``/run/initramfs/brltty.log`` ++ ``rd.brltty.log_level`` setting in ``/etc/brltty.conf`` ++ ================================ =============================== ++ ++Speech Drivers ++-------------- ++ ++Since speech drivers, by their very nature, require sound: ++ ++* None of them can start until the ``initqueue`` hook has been executed. ++ ++* None of them can start if sound has been disabled (via the rd.brltty.sound=0 ++ kernel parameter). ++ ++Speech defaults to being off even if a speech driver has been configured via ++``/etc/brltty.conf``. This is because your preferred speech driver may not work ++all that well, or may even cause problems, when used within the more primitive ++initramfs environment. If you'd like to use speech then you need to explicitly ++set the driver. While you can do so via the ``rd.brltty.speech_driver`` kernel ++command line parameter, the easiest way to configure a persistent setting is ++via the ``speech_driver`` option in ``/etc/brltty/Initramfs/cmdline``. ++ ++Here's how well each of the speech drivers works: ++ ++en ++ The ``en`` [eSpeak-NG] speech driver works. ++ ++es ++ The ``es`` [eSpeak] speech driver works. It requires Pulse Audio, so: ++ ++ * It doesn't start until the ``initqueue`` hook has been executed. ++ ++ * It can't start if Pulse Audio fails to start or has been disabled (via ++ the rd.brltty.pulse=0 kernel parameter). ++ ++fl ++ The ``fl`` [Festival Lite] speech driver doesn't work - it runs but doesn't ++ speak. This appears to be due to a bug within Festival Lite itself because ++ it also remains silent when tested on the full system. ++ ++fv ++ The ``fv`` [Festival] speech driver doesn't work - it crashes. This appears ++ to be due to a bug within Festival itself because it also crashes when tested ++ on the full system. ++ ++sd ++ The ``sd`` [Speech Dispatcher] speech driver hasn't been tested and probably ++ won't work. ++ +diff --git a/Initramfs/Dracut/alsa-start.sh b/Initramfs/Dracut/alsa-start.sh +new file mode 100755 +index 0000000..26ab4a1 +--- /dev/null ++++ b/Initramfs/Dracut/alsa-start.sh +@@ -0,0 +1,5 @@ ++#!/bin/bash ++ ++getargbool 1 rd.brltty && getargbool 1 rd.brltty.sound && { ++ alsaunmute ++} +diff --git a/Initramfs/Dracut/bluetooth-start.sh b/Initramfs/Dracut/bluetooth-start.sh +new file mode 100755 +index 0000000..0d574d1 +--- /dev/null ++++ b/Initramfs/Dracut/bluetooth-start.sh +@@ -0,0 +1,7 @@ ++#!/bin/bash ++ ++getargbool 1 rd.brltty && getargbool 1 rd.brltty.bluetooth && { ++ systemctl -q is-active bluetooth || { ++ systemctl --no-block start bluetooth ++ } ++} +diff --git a/Initramfs/Dracut/brltty-start.sh b/Initramfs/Dracut/brltty-start.sh +new file mode 100755 +index 0000000..ea51437 +--- /dev/null ++++ b/Initramfs/Dracut/brltty-start.sh +@@ -0,0 +1,78 @@ ++#!/bin/bash ++ ++export BRLTTY_START_MESSAGE="initramfs starting" ++export BRLTTY_STOP_MESSAGE="initramfs finished" ++ ++BRLTTY_OVERRIDE_PREFERENCE="braille-keyboard-enabled=yes" ++BRLTTY_OVERRIDE_PREFERENCE+=",braille-input-mode=text" ++export BRLTTY_OVERRIDE_PREFERENCE ++ ++export BRLTTY_SCREEN_DRIVER="lx" ++export BRLTTY_SPEECH_DRIVER="no" ++ ++export BRLTTY_WRITABLE_DIRECTORY="/run" ++export BRLTTY_PID_FILE="${BRLTTY_WRITABLE_DIRECTORY}/brltty.pid" ++export BRLTTY_LOG_FILE="${BRLTTY_WRITABLE_DIRECTORY}/initramfs/brltty.log" ++ ++export BRLTTY_UPDATABLE_DIRECTORY="/etc" ++export BRLTTY_PREFERENCES_FILE="${BRLTTY_UPDATABLE_DIRECTORY}/brltty.prefs" ++ ++brlttySetOption() { ++ local option="${1}" ++ local name="${option%%=*}" ++ ++ if [ "${name}" = "${option}" ] ++ then ++ local value="yes" ++ else ++ local value="${option#*=}" ++ fi ++ ++ [ -z "${name}" ] || { ++ name="${name^^?}" ++ export "BRLTTY_${name}=${value}" ++ } ++} ++ ++brlttySetConfiguredOptions() { ++ local file="/etc/brltty/Initramfs/cmdline" ++ ++ [ -f "${file}" ] && [ -r "${file}" ] && { ++ local line ++ ++ while read line ++ do ++ set -- ${line%%#*} ++ local option ++ ++ for option ++ do ++ brlttySetOption "${option}" ++ done ++ done <"${file}" ++ } ++} ++ ++brlttySetExplicitOptions() { ++ local option ++ ++ for option ++ do ++ [[ "${option}" =~ ^"rd.brltty."(.*) ]] && { ++ brlttySetOption "${BASH_REMATCH[1]}" ++ } ++ done ++} ++ ++brlttySetConfiguredOptions ++brlttySetExplicitOptions $(getcmdline) ++getargbool 1 rd.brltty.sound || export BRLTTY_SPEECH_DRIVER="no" ++ ++getargbool 1 rd.brltty && ( ++ # Give the kernel a bit of time to finish creating the /dev/input/ devices ++ # (e.g. so that brltty can perform keyboard discovery for keyboard tables) ++ # without delaying the boot. ++ ++ sleep 1 ++ brltty -E +n ++) & +diff --git a/Initramfs/Dracut/brltty-stop.sh b/Initramfs/Dracut/brltty-stop.sh +new file mode 100755 +index 0000000..27611ab +--- /dev/null ++++ b/Initramfs/Dracut/brltty-stop.sh +@@ -0,0 +1,3 @@ ++#!/bin/bash ++ ++brltty -E -C +diff --git a/Initramfs/Dracut/cmdline b/Initramfs/Dracut/cmdline +new file mode 100644 +index 0000000..39aefd3 +--- /dev/null ++++ b/Initramfs/Dracut/cmdline +@@ -0,0 +1,16 @@ ++# This file is where you can specify any rd.brltty. kernel parameters that are ++# to be included within the initramfs image and applied as default values. ++ ++# The order of precedence, from lowest to highest, for an option's value is: ++# * BRLTTY built-in default ++# * /etc/brltty.conf ++# * initramfs override ++# * this file ++# * kernel command line ++ ++# Blank lines are ignored. A hash [#] anywhere on a line begins a comment which ++# continues till the end of that line - only those characters before it are ++# significant. Any number of space-separated options may be specified on a ++# line. The syntax for an option is name=value (without the rd.brltty. prefix). ++# The =value part is optional - if there's no = then the value is yes. ++ +diff --git a/Initramfs/Dracut/dbus-start.sh b/Initramfs/Dracut/dbus-start.sh +new file mode 100755 +index 0000000..fd9e210 +--- /dev/null ++++ b/Initramfs/Dracut/dbus-start.sh +@@ -0,0 +1,7 @@ ++#!/bin/bash ++ ++getargbool 1 rd.brltty && getargbool 1 rd.brltty.bluetooth && { ++ systemctl -q is-active dbus || { ++ systemctl --no-block start dbus ++ } ++} +diff --git a/Initramfs/Dracut/dracut.conf b/Initramfs/Dracut/dracut.conf +new file mode 100644 +index 0000000..2d03996 +--- /dev/null ++++ b/Initramfs/Dracut/dracut.conf +@@ -0,0 +1,27 @@ ++# The preferred locale (used to determine the default text and contraction tables). ++BRLTTY_DRACUT_LOCALE="" ++ ++# A space-separated list of additional braille drivers to include. ++BRLTTY_DRACUT_BRAILLE_DRIVERS="" ++ ++# Whether or not Bluetooth support should be included within the initramfs. ++# Set this variable to yes if communication with your braille device is via ++# Bluetooth. Note that this option is insecure because the link keys for all of ++# your paired Bluetooth devices will be stored within the initramfs image. ++BRLTTY_DRACUT_BLUETOOTH_SUPPORT=no ++ ++# A space-separated list of additional text tables to include. ++BRLTTY_DRACUT_TEXT_TABLES="" ++ ++# A space-separated list of additional attributes tables to include. ++BRLTTY_DRACUT_ATTRIBUTES_TABLES="" ++ ++# A space-separated list of additional contraction tables to include. ++BRLTTY_DRACUT_CONTRACTION_TABLES="" ++ ++# A space-separated list of additional keyboard tables to include. ++BRLTTY_DRACUT_KEYBOARD_TABLES="" ++ ++# A space-separated list of additional speech drivers to include. ++BRLTTY_DRACUT_SPEECH_DRIVERS="" ++ +diff --git a/Initramfs/Dracut/module-setup.sh b/Initramfs/Dracut/module-setup.sh +new file mode 100755 +index 0000000..8f6e5ca +--- /dev/null ++++ b/Initramfs/Dracut/module-setup.sh +@@ -0,0 +1,326 @@ ++#!/bin/bash ++ ++# called by dracut ++check() { ++ require_binaries brltty brltty-lsinc || return 1 ++ return 0 ++} ++ ++# called by dracut ++depends() { ++ return 0 ++} ++ ++# called by dracut ++installkernel() { ++ instmods pcspkr uinput ++ [ -d "${initdir}/etc/bluetooth" ] && instmods =drivers/bluetooth =net/bluetooth ++ [ -d "${initdir}/etc/alsa" ] && instmods =sound ++ return 0 ++} ++ ++# called by dracut ++install() { ++ brlttyImportInstallOptions ++ local -A includedDrivers ++ ++ local BRLTTY_EXECUTABLE_PATH="/usr/bin/brltty" ++ inst_binary "${BRLTTY_EXECUTABLE_PATH}" ++ local brlttyLog="$(LC_ALL="${BRLTTY_DRACUT_LOCALE:-${LANG}}" "${BRLTTY_EXECUTABLE_PATH}" -E -v -e -ldebug 2>&1)" ++ ++ export BRLTTY_CONFIGURATION_FILE="/etc/brltty.conf" ++ brlttyIncludeDataFiles "${BRLTTY_CONFIGURATION_FILE}" ++ ++ brlttyIncludeDataFiles $(brlttyGetProperty "including data file") ++ brlttyIncludeScreenDrivers lx ++ ++ brlttyIncludeBrailleDrivers $(brlttyGetConfiguredDrivers braille) ++ brlttyIncludeBrailleDrivers ${BRLTTY_DRACUT_BRAILLE_DRIVERS} ++ ++ brlttyIncludeSpeechDrivers $(brlttyGetConfiguredDrivers speech) ++ brlttyIncludeSpeechDrivers ${BRLTTY_DRACUT_SPEECH_DRIVERS} ++ ++ brlttyIncludeTables Text ttb ${BRLTTY_DRACUT_TEXT_TABLES} ++ brlttyIncludeTables Attributes atb ${BRLTTY_DRACUT_ATTRIBUTES_TABLES} ++ brlttyIncludeTables Contraction ctb ${BRLTTY_DRACUT_CONTRACTION_TABLES} ++ brlttyIncludeTables Keyboard ktb ${BRLTTY_DRACUT_KEYBOARD_TABLES} ++ ++ brlttyInstallPreferencesFile "/etc/brltty.prefs" ++ brlttyInstallDirectories "/etc/xdg/brltty" ++ inst_simple "/etc/brltty/Initramfs/cmdline" ++ ++ if [ "${BRLTTY_DRACUT_BLUETOOTH_SUPPORT}" = "yes" ] ++ then ++ brlttyIncludeBluetoothSupport ++ fi ++ ++ inst_hook cmdline 05 "${moddir}/brltty-start.sh" ++ inst_hook cleanup 95 "${moddir}/brltty-stop.sh" ++ ++ dracut_need_initqueue ++} ++ ++brlttyInstallPreferencesFile() { ++ local path="${1}" ++ local file=$(brlttyGetProperty "Preferences File") ++ ++ if [ -n "${file}" ] ++ then ++ if [ "${file}" = "${file#/}" ] ++ then ++ local directory=$(brlttyGetProperty "Updatable Directory") ++ ++ if [ -n "${directory}" ] ++ then ++ file="${directory}/${file}" ++ fi ++ fi ++ ++ if [ -f "${file}" ] ++ then ++ inst_simple "${file}" "${path}" ++ fi ++ fi ++} ++ ++brlttyIncludeBrailleDrivers() { ++ local code ++ ++ for code ++ do ++ brlttyIncludeDriver b "${code}" || continue ++ ++ local directory="/etc/brltty/Input/${code}" ++ brlttyIncludeDataFiles "${directory}/"*.ktb ++ inst_multiple -o "${directory}/"*.txt ++ done ++} ++ ++brlttyIncludeSpeechDrivers() { ++ local code ++ ++ for code ++ do ++ brlttyIncludeDriver s "${code}" || continue ++ ++ case "${code}" ++ in ++ en) ++ inst_binary espeak-ng ++ brlttyInstallDirectories "/usr/share/espeak-ng-data" ++ ;; ++ ++ es) ++ inst_binary espeak ++ brlttyInstallDirectories "/usr/share/espeak-data" ++ brlttyIncludePulseAudioSupport ++ ;; ++ ++ fl) ++ inst_binary flite ++ ;; ++ ++ fv) ++ inst_binary festival ++ brlttyInstallDirectories /etc/festival ++ brlttyInstallDirectories /usr/lib*/festival ++ brlttyInstallDirectories /usr/share/festival/lib ++ ;; ++ ++ sd) ++ inst_binary speech-dispatcher ++ brlttyInstallDirectories /etc/speech-dispatcher ++ brlttyInstallDirectories /usr/lib*/speech-dispatcher ++ brlttyInstallDirectories /usr/lib*/speech-dispatcher-modules ++ brlttyInstallDirectories /usr/share/speech-dispatcher ++ brlttyInstallDirectories /usr/share/sounds/speech-dispatcher ++ brlttyInstallSystemdUnits speech-dispatcherd.service ++ inst_hook initqueue 98 "${moddir}/speechd-start.sh" ++ ;; ++ esac ++ ++ brlttyIncludeAlsaSupport ++ done ++} ++ ++brlttyIncludeScreenDrivers() { ++ local code ++ ++ for code ++ do ++ brlttyIncludeDriver x "${code}" || continue ++ done ++} ++ ++brlttyIncludeDriver() { ++ local type="${1}" ++ local code="${2}" ++ ++ [ "${code}" = "no" ] && return 1 ++ local driver="${type}${code}" ++ ++ [ -n "${includedDrivers[${driver}]}" ] && return 2 ++ includedDrivers[${driver}]=1 ++ ++ inst_libdir_file "brltty/libbrltty${driver}.so*" ++ return 0 ++} ++ ++brlttyIncludeTables() { ++ local subdirectory="${1}" ++ local extension="${2}" ++ shift 2 ++ local name ++ ++ for name ++ do ++ brlttyIncludeDataFiles "/etc/brltty/${subdirectory}/${name}.${extension}" ++ done ++} ++ ++brlttyIncludeDataFiles() { ++ local file ++ ++ while read -r file ++ do ++ inst_simple "${file}" ++ done < <(brltty-lsinc "${@}") ++} ++ ++brlttyGetConfiguredDrivers() { ++ local category="${1}" ++ brlttyGetProperty "checking for ${category} driver" ++} ++ ++brlttyGetProperty() { ++ local name="${1}" ++ echo "${brlttyLog}" | awk "/: *${name} *:/ {print \$NF}" ++} ++ ++brlttyImportInstallOptions() { ++ local file="/etc/brltty/Initramfs/dracut.conf" ++ [ -f "${file}" ] && [ -r "${file}" ] && . "${file}" ++} ++ ++brlttyIncludePulseAudioSupport() { ++ [ -d "${initdir}/etc/pulse" ] && return 0 ++ ++ brlttyInstallDirectories /etc/pulse ++ brlttyInstallDirectories /usr/share/pulseaudio ++ brlttyInstallDirectories /usr/lib*/pulseaudio ++ brlttyInstallDirectories /usr/lib*/pulse-* ++ brlttyInstallDirectories /usr/libexec/pulse ++ ++ inst_multiple -o pulseaudio pactl pacmd ++ inst_multiple -o pamon paplay parec parecord ++ ++ brlttyAddUserEntries pulse ++ brlttyAddGroupEntries pulse pulse-access pulse-rt ++ ++ brlttyIncludeAlsaSupport ++ brlttyIncludeMessageBusSupport ++ inst_simple /etc/dbus-1/system.d/pulseaudio-system.conf ++ ++ inst_binary chmod ++ inst_hook initqueue 97 "${moddir}/pulse-start.sh" ++ inst_hook cleanup 98 "${moddir}/pulse-stop.sh" ++} ++ ++brlttyIncludeAlsaSupport() { ++ [ -d "${initdir}/etc/alsa" ] && return 0; ++ ++ brlttyInstallDirectories /etc/alsa ++ rm -f "${initdir}/etc/alsa/conf.d/"* ++ ++ brlttyInstallDirectories /usr/share/alsa ++ brlttyInstallDirectories /usr/lib/alsa ++ brlttyInstallDirectories /usr/lib*/alsa-lib ++ ++ inst_multiple -o alsactl alsaucm alsamixer amixer aplay ++ inst_script alsaunmute ++ ++ inst_hook initqueue 96 "${moddir}/alsa-start.sh" ++} ++ ++brlttyIncludeBluetoothSupport() { ++ [ -d "${initdir}/etc/bluetooth" ] && return 0 ++ ++ brlttyInstallDirectories /etc/bluetooth ++ brlttyInstallDirectories /var/lib/bluetooth ++ ++ inst_multiple -o bluetoothctl hciconfig hcitool sdptool ++ inst_binary /usr/libexec/bluetooth/bluetoothd ++ brlttyInstallSystemdUnits bluetooth.service bluetooth.target ++ ++ inst_hook initqueue 97 "${moddir}/bluetooth-start.sh" ++ brlttyIncludeMessageBusSupport ++} ++ ++brlttyIncludeMessageBusSupport() { ++ [ -d "${initdir}/etc/dbus-1" ] && return 0 ++ ++ brlttyAddMessageBusUsers /usr/share/dbus-1/system.d/* ++ brlttyAddMessageBusUsers /etc/dbus-1/system.d/* ++ ++ brlttyInstallDirectories /etc/dbus-1 ++ brlttyInstallDirectories /usr/share/dbus-1 ++ brlttyInstallDirectories /usr/libexec/dbus-1 ++ ++ inst_multiple dbus-daemon dbus-send dbus-cleanup-sockets dbus-monitor ++ brlttyInstallSystemdUnits dbus.service dbus.socket ++ ++ inst_hook initqueue 96 "${moddir}/dbus-start.sh" ++} ++ ++brlttyAddMessageBusUsers() { ++ set -- dbus $(sed -n -r -e 's/^.* user="([^"]*)".*$/\1/p' "${@}" | sort -u) ++ brlttyAddUserEntries "${@}" ++ brlttyAddGroupEntries "${@}" ++} ++ ++brlttyAddUserEntries() { ++ brlttyAddEntries passwd "${@}" ++} ++ ++brlttyAddGroupEntries() { ++ brlttyAddEntries group "${@}" ++} ++ ++brlttyAddEntries() { ++ local file="${1}" ++ shift 1 ++ ++ local source="/etc/${file}" ++ local target="${initdir}${source}" ++ local name ++ ++ for name ++ do ++ grep -q -e "^${name}:" "${target}" || { ++ local line="$(grep "^${name}:" "${source}")" ++ [ -n "${line}" ] && echo >>"${target}" "${line}" ++ } ++ done ++} ++ ++brlttyInstallSystemdUnits() { ++ local unit ++ ++ for unit ++ do ++ inst_simple "/usr/lib/systemd/system/${unit}" ++ done ++} ++ ++brlttyInstallDirectories() { ++ local directory ++ ++ for directory ++ do ++ [ -d "${directory}" ] && { ++ eval set -- $(find "${directory}" -printf "'%p'\n") ++ inst_multiple "${@}" ++ } ++ done ++} ++ +diff --git a/Initramfs/Dracut/pulse-start.sh b/Initramfs/Dracut/pulse-start.sh +new file mode 100755 +index 0000000..ed9af36 +--- /dev/null ++++ b/Initramfs/Dracut/pulse-start.sh +@@ -0,0 +1,5 @@ ++#!/bin/bash ++ ++getargbool 1 rd.brltty && getargbool 1 rd.brltty.sound && getargbool 1 rd.brltty.pulse && { ++ chmod a+w /tmp && pulseaudio --daemonize=yes --system --disallow-exit --disallow-module-loading --disable-shm ++} +diff --git a/Initramfs/Dracut/pulse-stop.sh b/Initramfs/Dracut/pulse-stop.sh +new file mode 100755 +index 0000000..5f2b033 +--- /dev/null ++++ b/Initramfs/Dracut/pulse-stop.sh +@@ -0,0 +1,3 @@ ++#!/bin/bash ++ ++read . + ############################################################################### + +-all: all-brltty all-brltty-trtxt all-brltty-ttb all-brltty-atb $(ALL_BRLTTY_CTB) all-brltty-ktb all-brltty-tune $(ALL_XBRLAPI) $(ALL_API_BINDINGS) ++all: all-brltty all-brltty-lsinc all-brltty-trtxt all-brltty-ttb all-brltty-atb $(ALL_BRLTTY_CTB) all-brltty-ktb all-brltty-tune $(ALL_XBRLAPI) $(ALL_API_BINDINGS) + all-brltty: brltty$X $(BRAILLE_DRIVERS) $(SPEECH_DRIVERS) $(SCREEN_DRIVERS) ++all-brltty-lsinc: brltty-lsinc$X + all-brltty-trtxt: brltty-trtxt$X + all-brltty-ttb: brltty-ttb$X + all-brltty-atb: brltty-atb$X +@@ -805,6 +806,16 @@ brltty-trtxt.$O: + + ############################################################################### + ++BRLTTY_LSINC_OBJECTS = brltty-lsinc.$O $(PROGRAM_OBJECTS) ++ ++brltty-lsinc$X: $(BRLTTY_LSINC_OBJECTS) ++ $(CC) $(LDFLAGS) -o $@ $(BRLTTY_LSINC_OBJECTS) $(LDLIBS) ++ ++brltty-lsinc.$O: ++ $(CC) $(CFLAGS) -c $(SRC_DIR)/brltty-lsinc.c ++ ++############################################################################### ++ + BRLTEST_OBJECTS = brltest.$O $(PROGRAM_OBJECTS) report.$O $(TTB_OBJECTS) $(KTB_OBJECTS) dataarea.$O cmd.$O cmd_queue.$O drivers.$O driver.$O $(BRAILLE_OBJECTS) $(PREFS_OBJECTS) hidkeys.$O learn.$O + + brltest$X: $(BRLTEST_OBJECTS) +@@ -949,8 +960,9 @@ check-all: check-text-tables check-attributes-tables check-contraction-tables ch + + install:: install-programs install-tables $(INSTALL_DRIVERS) install-core-headers $(INSTALL_MESSAGES) install-manpages $(INSTALL_API) + +-install-programs: brltty$X brltty-trtxt$X brltty-ttb$X brltty-atb$X $(INSTALL_BRLTTY_CTB) brltty-ktb$X brltty-tune$X install-program-directory install-writable-directory ++install-programs: brltty$X brltty-lsinc$X brltty-trtxt$X brltty-ttb$X brltty-atb$X $(INSTALL_BRLTTY_CTB) brltty-ktb$X brltty-tune$X install-program-directory install-writable-directory + $(INSTALL_PROGRAM) brltty$X $(INSTALL_PROGRAM_DIRECTORY) ++ $(INSTALL_PROGRAM) brltty-lsinc$X $(INSTALL_PROGRAM_DIRECTORY) + $(INSTALL_PROGRAM) brltty-trtxt$X $(INSTALL_PROGRAM_DIRECTORY) + $(INSTALL_PROGRAM) brltty-ttb$X $(INSTALL_PROGRAM_DIRECTORY) + $(INSTALL_PROGRAM) brltty-atb$X $(INSTALL_PROGRAM_DIRECTORY) +@@ -1136,6 +1148,7 @@ distclean clean:: + + clean:: + -rm -f brltty$X brltty-trtxt$X brltty-ttb$X brltty-atb$X brltty-ctb$X brltty-tune$X xbrlapi$X ++ -rm -f brltty$X brltty-lsinc$X brltty-trtxt$X brltty-ttb$X brltty-atb$X brltty-ctb$X brltty-tune$X xbrlapi$X + -rm -f tbl2hex$(X_FOR_BUILD) *test$X *-static$X + -rm -f brlapi_constants.h *.$(LIB_EXT) *.$(LIB_EXT).* *.$(ARC_EXT) *.def *.class *.jar + -rm -f $(BLD_TOP)$(DRV_DIR)/* +diff --git a/Programs/brltty-lsinc.c b/Programs/brltty-lsinc.c +new file mode 100644 +index 0000000..9d2b026 +--- /dev/null ++++ b/Programs/brltty-lsinc.c +@@ -0,0 +1,119 @@ ++/* ++ * 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.app/ ++ * ++ * This software is maintained by Dave Mielke . ++ */ ++ ++#include "prologue.h" ++ ++#include ++#include ++#include ++ ++#include "log.h" ++#include "program.h" ++#include "options.h" ++#include "file.h" ++ ++BEGIN_OPTION_TABLE(programOptions) ++END_OPTION_TABLE ++ ++static void ++noMemory (void) { ++ fprintf(stderr, "%s: insufficient memory\n", programName); ++ exit(PROG_EXIT_FATAL); ++} ++ ++static int ++compareStrings (const void *string1, const void *string2) { ++ return strcmp(string1, string2); ++} ++ ++static void ++logFileName (const char *name, void *data) { ++ static void *namesTree = NULL; ++ ++ if (!tfind(name, &namesTree, compareStrings)) { ++ name = strdup(name); ++ if (!name) noMemory(); ++ if (!tsearch(name, &namesTree, compareStrings)) noMemory(); ++ printf("%s\n", name); ++ } ++} ++ ++static DATA_CONDITION_TESTER(testConditionOperand) { ++ return 1; ++} ++ ++static DATA_OPERANDS_PROCESSOR(processUnknownDirective) { ++ DataOperand directive; ++ ++ if (getDataOperand(file, &directive, NULL)) { ++ if (directive.length >= 2) { ++ if (isKeyword(WS_C("if"), directive.characters, 2)) { ++ return processConditionOperands(file, testConditionOperand, 0, NULL, data); ++ } ++ } ++ } ++ ++ return 1; ++} ++ ++static DATA_OPERANDS_PROCESSOR(processOperands) { ++ BEGIN_DATA_DIRECTIVE_TABLE ++ DATA_NESTING_DIRECTIVES, ++ DATA_CONDITION_DIRECTIVES, ++ DATA_VARIABLE_DIRECTIVES, ++ {NULL, processUnknownDirective}, ++ END_DATA_DIRECTIVE_TABLE ++ ++ return processDirectiveOperand(file, &directives, "attributes table directive", data); ++} ++ ++int ++main (int argc, char *argv[]) { ++ { ++ static const OptionsDescriptor descriptor = { ++ OPTION_TABLE(programOptions), ++ .applicationName = "brltty-lsinc", ++ .argumentsSummary = "[file ...]" ++ }; ++ ++ PROCESS_OPTIONS(descriptor, argc, argv); ++ } ++ ++ if (argc == 0) { ++ logMessage(LOG_ERR, "missing table file."); ++ return PROG_EXIT_SYNTAX; ++ } ++ ++ do { ++ const char *path = *argv++; ++ argc -= 1; ++ ++ const DataFileParameters parameters = { ++ .processOperands = processOperands, ++ .logFileName = logFileName ++ }; ++ ++ if (testProgramPath(path)) { ++ logFileName(path, parameters.data); ++ } else { ++ processDataFile(path, ¶meters); ++ } ++ } while (argc); ++ ++ return PROG_EXIT_SUCCESS; ++} +diff --git a/Programs/datafile.c b/Programs/datafile.c +index e70deb5..48235e6 100644 +--- a/Programs/datafile.c ++++ b/Programs/datafile.c +@@ -1262,9 +1262,14 @@ processDataStream ( + FILE *stream, const char *name, + const DataFileParameters *parameters + ) { +- logMessage(LOG_DEBUG, "including data file: %s", name); + int ok = 0; + ++ if (parameters->logFileName) { ++ parameters->logFileName(name, parameters->data); ++ } else { ++ logMessage(LOG_DEBUG, "including data file: %s", name); ++ } ++ + DataFile file = { + .name = name, + .parameters = parameters, +diff --git a/brltty.spec.in b/brltty.spec.in +index f5aa33d..1ac2ebf 100644 +--- a/brltty.spec.in ++++ b/brltty.spec.in +@@ -339,6 +339,7 @@ BuildArch: noarch + + AutoProv: no + AutoReq: yes ++Requires: systemd + + Summary: Systemd units and wrappers for BRLTTY. + %description -n brltty-systemd +@@ -356,6 +357,7 @@ BuildArch: noarch + + AutoProv: no + AutoReq: yes ++Requires: systemd-udev + + Summary: Udev rules for BRLTTY. + %description -n brltty-udev +@@ -364,6 +366,25 @@ This package provides the rules and wrapper for managing BRLTTY via Udev. + Install this package if you'd like to manage BRLTTY processes via Udev. + + ++%package -n brltty-dracut ++Version: @PACKAGE_VERSION@ ++Release: 1 ++Group: System Environment/Daemons ++License: LGPL ++BuildArch: noarch ++ ++AutoProv: no ++AutoReq: yes ++Requires: dracut ++Requires: brltty-utils ++ ++Summary: Dracut module for BRLTTY. ++%description -n brltty-dracut ++This package provides the module for adding BRLTTY to an initial ramdisk image. ++ ++Install this package if you'd like to have braille accessibility BRLTTY processes via Udev. ++ ++ + %package -n brlapi + Version: @api_release@ + Release: 1 +@@ -382,6 +403,26 @@ Install this package if you have an application + which directly accesses a refreshable braille display. + + ++%package -n brlapi-utils ++Version: @api_release@ ++Release: 1 ++Group: Applications/System ++License: LGPL ++ ++Requires: libX11 ++ ++BuildRequires: xorg-x11-proto-devel ++BuildRequires: libX11-devel ++BuildRequires: libXtst-devel ++ ++AutoProv: no ++AutoReq: yes ++ ++Summary: Appliation Programming Interface for BRLTTY. ++%description -n brlapi-utils ++This package provides a set of commands that use the BrlAPI interface. ++ ++ + %package -n brlapi-devel + Version: @api_release@ + Release: 1 +@@ -489,26 +530,6 @@ Install this package if you have a Tcl application + which directly accesses a refreshable braille display. + + +-%package -n brlapi-utils +-Version: @api_release@ +-Release: 1 +-Group: Applications/System +-License: LGPL +- +-Requires: libX11 +- +-BuildRequires: xorg-x11-proto-devel +-BuildRequires: libX11-devel +-BuildRequires: libXtst-devel +- +-AutoProv: no +-AutoReq: yes +- +-Summary: Appliation Programming Interface for BRLTTY. +-%description -n brlapi-utils +-This package provides a set of commands for maintaining BRLTTY's datafiles. +- +- + %prep + # %setup -n %{name}-%{version} + %setup -n @PACKAGE_TARNAME@-@PACKAGE_VERSION@ +@@ -518,8 +539,13 @@ This package provides a set of commands for maintaining BRLTTY's datafiles. + make + + %install +-make install install-documents install-messages +-make install-systemd install-udev install-appstream ++make install ++make install-documents ++make install-messages ++make install-appstream ++make install-systemd ++make install-udev ++make install-dracut + install -m 644 Documents/brltty.conf "${RPM_BUILD_ROOT}%{_sysconfdir}" + %find_lang %{name} + +@@ -542,6 +568,7 @@ rm -fr "${RPM_BUILD_ROOT}" + %exclude %{_libdir}/brltty/libbrlttyxa2.so + %exclude %{_libdir}/brltty/libbrlttyxsc.so + %{_sysconfdir}/brltty ++%exclude %{_sysconfdir}/brltty/dracut.conf + %{_datadir}/metainfo/org.a11y.brltty.metainfo.xml + %doc %{_mandir}/man1/brltty.1.gz + %doc %{_docdir}/*/LICENSE* +@@ -598,12 +625,36 @@ rm -fr "${RPM_BUILD_ROOT}" + %{_udevlibdir}/* + %{_udevrulesdir}/* + ++%files -n brltty-dracut ++/usr/lib/dracut/modules.d/99brltty ++%config(noreplace) %verify(not size md5 mtime) %{_sysconfdir}/brltty/Initramfs/dracut.conf ++%config(noreplace) %verify(not size md5 mtime) %{_sysconfdir}/brltty/Initramfs/cmdline ++ + %files -n brlapi + %defattr(-,root,root) + %{_libdir}/libbrlapi.so.* + %{_datadir}/polkit-1/actions/org.a11y.brlapi.policy + %doc %{_docdir}/*/Manual-BrlAPI + ++%files -n brlapi-utils ++%{_bindir}/xbrlapi ++%doc %{_mandir}/man1/xbrlapi.1.gz ++%{_datadir}/gdm/greeter/autostart/xbrlapi.desktop ++%{_sysconfdir}/X11/Xsession.d/60xbrlapi ++%{_bindir}/eutp ++%doc %{_mandir}/man1/eutp.1.gz ++%{_bindir}/vstp ++%doc %{_mandir}/man1/vstp.1.gz ++ ++%files -n brlapi-devel ++%defattr(-,root,root) ++%{_libdir}/libbrlapi.a ++%{_libdir}/libbrlapi.so ++%{_includedir}/brlapi.h ++%{_includedir}/brlapi_*.h ++%doc %{_mandir}/man3/* ++%doc %{_docdir}/*/BrlAPIref ++ + %files -n java-brlapi + @JAVA_JAR_DIR@/* + @JAVA_JNI_DIR@/* +@@ -618,25 +669,6 @@ rm -fr "${RPM_BUILD_ROOT}" + @TCL_DIR@/brlapi-@api_release@/libbrlapi_tcl.so + @TCL_DIR@/brlapi-@api_release@/pkgIndex.tcl + +-%files -n brlapi-devel +-%defattr(-,root,root) +-%{_libdir}/libbrlapi.a +-%{_libdir}/libbrlapi.so +-%{_includedir}/brlapi.h +-%{_includedir}/brlapi_*.h +-%doc %{_mandir}/man3/* +-%doc %{_docdir}/*/BrlAPIref +- +-%files -n brlapi-utils +-%{_bindir}/xbrlapi +-%{_bindir}/eutp +-%{_bindir}/vstp +-%doc %{_mandir}/man1/xbrlapi.1.gz +-%doc %{_mandir}/man1/eutp.1.gz +-%doc %{_mandir}/man1/vstp.1.gz +-%{_sysconfdir}/X11/Xsession.d/60xbrlapi +-%{_datadir}/gdm/greeter/autostart/xbrlapi.desktop +- + + %changelog + * Mon Feb 5 2018 Dave Mielke 5.6 +diff --git a/configure.ac b/configure.ac +index 8938c6b..b09fda8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -38,15 +38,18 @@ AC_DEFINE_UNQUOTED([BRLAPI_REVISION], [${api_revision}], + [Define this to be the API library revision number.]) + + BRLTTY_SUMMARY_BEGIN +-brltty_build_directories=". Programs Documents Messages Android/Core Android/Application" ++brltty_build_directories=". Programs Documents Messages" + brltty_source_directory="`dirname "${0}"`" + brltty_manual_directories="" + +-for brltty_autostart_directory in `(cd "${brltty_source_directory}" && echo Autostart/*)` ++for brltty_directory in Autostart Initramfs Android + do +- test -f "${brltty_source_directory}/${brltty_autostart_directory}/Makefile.in" && { +- brltty_build_directories="${brltty_build_directories} ${brltty_autostart_directory}" +- } ++ for brltty_subdirectory in `echo "${brltty_source_directory}/${brltty_directory}/"*` ++ do ++ test -f "${brltty_subdirectory}/Makefile.in" && { ++ brltty_build_directories="${brltty_build_directories} ${brltty_subdirectory}" ++ } ++ done + done + + for brltty_manual_directory in `(cd "${brltty_source_directory}" && echo Documents/Manual-*/*)` +@@ -1957,7 +1960,7 @@ AC_OUTPUT([ + Documents/BrlAPIref.doxy + Bindings/Lisp/brlapi.lisp + Bindings/Python/setup.py +- Android/Application/res/values/configured.xml:Android/Application/res.strings.in + Autostart/Systemd/brltty@.service ++ Android/Application/res/values/configured.xml:Android/Application/res.strings.in + ${brltty_make_files} + ]) diff --git a/brltty.spec b/brltty.spec index cf3497e..356773e 100644 --- a/brltty.spec +++ b/brltty.spec @@ -33,16 +33,11 @@ Name: brltty Version: %{pkg_version} -Release: 29%{?dist} +Release: 30%{?dist} License: LGPLv2+ URL: http://brltty.app/ Source0: http://brltty.app/archive/%{name}-%{version}.tar.xz Source1: brltty.service -Source2: dracut-module-setup.sh -Source3: dracut-brltty-start.sh -Source4: dracut-brltty-cleanup.sh -Source5: dracut-parse-brltty-opts.sh -Source6: dracut-README Patch1: brltty-loadLibrary.patch # libspeechd.h moved in latest speech-dispatch (NOT sent upstream) Patch2: brltty-5.0-libspeechd.patch @@ -51,6 +46,7 @@ Patch3: 0001-Add-support-for-eSpeak-NG.patch # Upstreamed Patch4: brltty-5.6-libs-add-ldflags.patch Patch5: brltty-5.6-ocaml-add-flags.patch +Patch6: brltty-5.6-add-dracut-support.patch Summary: Braille display driver for Linux/Unix BuildRequires: byacc, glibc-kernheaders, bluez-libs-devel, systemd BuildRequires: gettext, at-spi2-core-devel, alsa-lib-devel @@ -90,6 +86,7 @@ This package provides the Speech Dispatcher driver for BRLTTY. %package docs Summary: Documentation for BRLTTY License: LGPLv2+ +Requires: %{name} = %{pkg_version}-%{release} BuildArch: noarch %description docs This package provides the documentation for BRLTTY. @@ -133,6 +130,7 @@ This package provides the eSpeak-NG driver for BRLTTY. Version: %{api_version} License: LGPLv2+ Summary: Application Programming Interface for BRLTTY +Requires: %{name}%{?_isa} = %{pkg_version}-%{release} Requires(pre): glibc-common, shadow-utils Requires(post): coreutils, util-linux %description -n brlapi @@ -240,6 +238,7 @@ pushd python2 %patch3 -p1 -b .espeak-ng %patch4 -p1 -b .libs-add-ldflags %patch5 -p1 -b .ocaml-add-flags +%patch6 -p1 -b .add-dracut-support # remove packaged binary file rm -f Programs/brltty-ktb @@ -403,16 +402,11 @@ cp -p %{name}.lang ../ #Use python 3 for latex-access, BZ 1465657. /usr/bin/2to3 -wn ${RPM_BUILD_ROOT}/etc/brltty/Contraction/latex-access.ctb sed -i 's|/usr/bin/python|%{__python3}|g' ${RPM_BUILD_ROOT}/etc/brltty/Contraction/latex-access.ctb -popd #install dracut module +make install-dracut -mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/lib/dracut/modules.d/99brltty -install -p -m 755 %{SOURCE2} ${RPM_BUILD_ROOT}%{_prefix}/lib/dracut/modules.d/99brltty/module-setup.sh -install -p -m 755 %{SOURCE3} ${RPM_BUILD_ROOT}%{_prefix}/lib/dracut/modules.d/99brltty/brltty-start.sh -install -p -m 755 %{SOURCE4} ${RPM_BUILD_ROOT}%{_prefix}/lib/dracut/modules.d/99brltty/brltty-cleanup.sh -install -p -m 755 %{SOURCE5} ${RPM_BUILD_ROOT}%{_prefix}/lib/dracut/modules.d/99brltty/parse-brltty-opts.sh -install -p -m 644 %{SOURCE6} ${RPM_BUILD_ROOT}%{_prefix}/lib/dracut/modules.d/99brltty/README.sh +popd %post %systemd_post brltty.service @@ -439,6 +433,7 @@ fi %files -f %{name}.lang %config(noreplace) %{_sysconfdir}/brltty.conf %{_sysconfdir}/brltty/ +%exclude %{_sysconfdir}/brltty/Initramfs %{_unitdir}/brltty.service %{_bindir}/brltty %{_bindir}/brltty-* @@ -532,8 +527,15 @@ fi %files dracut %{_prefix}/lib/dracut/modules.d/99brltty/ +%dir %{_sysconfdir}/brltty/Initramfs +%config(noreplace) %verify(not size md5 mtime) %{_sysconfdir}/brltty/Initramfs/dracut.conf +%config(noreplace) %verify(not size md5 mtime) %{_sysconfdir}/brltty/Initramfs/cmdline %changelog +* Tue Dec 11 2018 Jaroslav Škarvada - 5.6-30 +- Rebased dracut support to upstream version +- Added requires to subpackages + * Wed Dec 5 2018 Jaroslav Škarvada - 5.6-29 - Improved CFLAGS handling when building Ocaml bindings diff --git a/dracut-README b/dracut-README deleted file mode 100644 index f8fa33b..0000000 --- a/dracut-README +++ /dev/null @@ -1,56 +0,0 @@ -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" diff --git a/dracut-brltty-cleanup.sh b/dracut-brltty-cleanup.sh deleted file mode 100755 index 02ca393..0000000 --- a/dracut-brltty-cleanup.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -read pid&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$word.so*" - done - fi - - if [ "$BRLTTY_DRACUT_INCLUDE_TEXT_FILES" ]; then - for word in $BRLTTY_DRACUT_INCLUDE_TEXT_FILES; do - inst "/etc/brltty/Text/$word" - 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 -} diff --git a/dracut-parse-brltty-opts.sh b/dracut-parse-brltty-opts.sh deleted file mode 100755 index a661de8..0000000 --- a/dracut-parse-brltty-opts.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/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=)