commit: 683a12b88aafd0832e8ac60e7421e8a9c3e8b4bc Author: Nicolas PARLANT <nicolas.parlant <AT> parhuet <DOT> fr> AuthorDate: Mon Jan 12 13:22:28 2026 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Wed Jan 14 13:43:44 2026 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=683a12b8
app-accessibility/brltty: add 6.8 license is LGPL-2.1+ useflags/deps : add lua for lua bindings add emacs for emacs bindings add caps w/ libcap make pcre optional make hid optional (needs libudev and linux-headers) policykit requires api add xorg-proto for X (keysyms.h) make at-spi2-core optional with X requirement remove doc, always installed caps is not enabled by default: it requires many capabilities and the default behavior just works by dropping privileges after being launched as root. brltty checks the kernel modules pcspkr and uinput, so add CONFIG_CHECK export LD is no longer required define ldconfig instead of ldconfig -n to fix musl remove egg-info files patch the tmpfile if api is not enabled call udev_reload for rules provided new initd with the PIDFILE owned by root use install-extras to install locales, udev, polkit, systemd, metainfo files Closes: https://bugs.gentoo.org/732614 Closes: https://bugs.gentoo.org/805287 Closes: https://bugs.gentoo.org/830239 Closes: https://bugs.gentoo.org/845207 Closes: https://bugs.gentoo.org/878203 Closes: https://bugs.gentoo.org/923275 Signed-off-by: Nicolas PARLANT <nicolas.parlant <AT> parhuet.fr> Part-of: https://github.com/gentoo/gentoo/pull/45371 Closes: https://github.com/gentoo/gentoo/pull/45371 Signed-off-by: Sam James <sam <AT> gentoo.org> app-accessibility/brltty/Manifest | 1 + app-accessibility/brltty/brltty-6.8.ebuild | 284 +++++++++++++++++++++ .../brltty/files/brltty-6.8-atspi2_optional.patch | 46 ++++ app-accessibility/brltty/files/brltty.initd-r1 | 13 + app-accessibility/brltty/metadata.xml | 1 + 5 files changed, 345 insertions(+) diff --git a/app-accessibility/brltty/Manifest b/app-accessibility/brltty/Manifest index b129bc335344..df89fbc83513 100644 --- a/app-accessibility/brltty/Manifest +++ b/app-accessibility/brltty/Manifest @@ -1 +1,2 @@ DIST brltty-6.7.tar.xz 3727940 BLAKE2B 61ef2d5e54a53132fe9e864c6c7c8c5ee7af4974fb1a090d9366fbdf7fe0735ca0a4c462cef2fa820d07335f442471af148707a191bb1d631f203ddc5e8f5d2e SHA512 68ef75369ce2a23dff17b212aec0844b5e3e416cc730bdf872d68f32b0d8398f86d1e91f076dcb1730543c3d47266a40d7d61842524076d2fd4e82ef95bc34bb +DIST brltty-6.8.tar.xz 3901252 BLAKE2B ba37436d159ead52a4c78b078bc7291f618f864f87fe2368ef833134876a6bde36a36753c8cfd0c9ed36484f74cf69dd3d47876cbba08e29c2ec1258c1a6cc43 SHA512 08540cdf09eaa1caabd8400cb6e589f99f5f2b8aaaf8c031e5165e9b0605858e90dc9dd72f2095347f4860714214ecf184e3675422df880f1bf06bb4cc6f42ee diff --git a/app-accessibility/brltty/brltty-6.8.ebuild b/app-accessibility/brltty/brltty-6.8.ebuild new file mode 100644 index 000000000000..8f60c3f083eb --- /dev/null +++ b/app-accessibility/brltty/brltty-6.8.ebuild @@ -0,0 +1,284 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +FINDLIB_USE="ocaml" +JAVA_PKG_WANT_SOURCE="1.8" +JAVA_PKG_WANT_TARGET="1.8" +LUA_COMPAT=( lua5-4 ) +PYTHON_COMPAT=( python3_{11..14} ) + +inherit autotools elisp-common findlib java-pkg-opt-2 linux-info lua-single python-r1 tmpfiles toolchain-funcs udev + +DESCRIPTION="Daemon that provides access to the Linux/Unix console for a blind person" +HOMEPAGE="https://brltty.app/" +SRC_URI="https://brltty.app/archive/${P}.tar.xz" + +LICENSE="LGPL-2.1+" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +BINDINGS="emacs java lua ocaml python tcl" +IUSE="+api +beeper bluetooth caps +fm gpm +hid iconv icu louis +midi +ncurses nls +pcm policykit +pcre usb systemd +speech xml X ${BINDINGS}" +REQUIRED_USE=" + emacs? ( api ) + java? ( api ) + lua? ( api ${LUA_REQUIRED_USE} ) + ocaml? ( api ) + policykit? ( api ) + python? ( api ${PYTHON_REQUIRED_USE} ) + tcl? ( api ) +" + +COMMON_DEPEND=" + acct-group/brltty + acct-user/brltty + bluetooth? ( + net-wireless/bluez:= + sys-apps/dbus + ) + caps? ( sys-libs/libcap ) + emacs? ( app-editors/emacs:* ) + gpm? ( >=sys-libs/gpm-1.20 ) + hid? ( virtual/libudev:= ) + iconv? ( virtual/libiconv ) + icu? ( dev-libs/icu:= ) + louis? ( dev-libs/liblouis:= ) + midi? ( media-libs/alsa-lib ) + ncurses? ( sys-libs/ncurses:0= ) + lua? ( ${LUA_DEPS} ) + pcm? ( media-libs/alsa-lib ) + pcre? ( dev-libs/libpcre2:=[pcre32] ) + policykit? ( + dev-libs/glib:2 + sys-auth/polkit + ) + python? ( + ${PYTHON_DEPS} + dev-python/setuptools[${PYTHON_USEDEP}] + ) + speech? ( + app-accessibility/espeak-ng + app-accessibility/flite + app-accessibility/speech-dispatcher + ) + systemd? ( sys-apps/systemd ) + tcl? ( >=dev-lang/tcl-8.6.13-r1:= ) + usb? ( virtual/libusb:1 ) + xml? ( dev-libs/expat ) + X? ( + app-accessibility/at-spi2-core:2 + dev-libs/glib:2 + sys-apps/dbus + x11-libs/libX11 + x11-libs/libXaw + x11-libs/libXfixes + x11-libs/libXt + api? ( x11-libs/libXtst ) + ) +" +DEPEND=" + ${COMMON_DEPEND} + hid? ( sys-kernel/linux-headers ) + java? ( >=virtual/jdk-1.8:* ) + X? ( x11-base/xorg-proto ) +" +RDEPEND=" + ${COMMON_DEPEND} + java? ( >=virtual/jre-1.8:* ) +" +BDEPEND=" + >=dev-lang/tcl-8.6.13-r1 + virtual/pkgconfig + nls? ( virtual/libintl ) + python? ( dev-python/cython[${PYTHON_USEDEP}] ) +" + +CONFIG_CHECK=" + ~INPUT_UINPUT + ~INPUT_PCSPKR +" + +PATCHES=( + "${FILESDIR}"/${PN}-6.4-respect-AR.patch + "${FILESDIR}"/${PN}-6.8-atspi2_optional.patch +) + +pkg_setup() { + linux-info_pkg_setup + + # bindings + java-pkg-opt-2_pkg_setup + use lua && lua-single_pkg_setup + use python && python_setup +} + +src_prepare() { + default + + # api-socket-api is not defined/used if api is not enabled, see bug #878203 + if ! use api; then + sed -e '/^d @BRLAPI_SOCKETPATH@/s/^/#/' \ + -i Autostart/Systemd/tmpfiles.in || die + fi + + java-pkg-opt-2_src_prepare + + # We run eautoconf instead of using eautoreconf because brltty uses + # a custom build system that uses autoconf without the rest of the + # autotools. + eautoconf + use python && python_copy_sources +} + +src_configure() { + tc-export AR PKG_CONFIG + + export JAVAC= + export JAVA_JNI_FLAGS= + if use java; then + export JAVA_HOME="$(java-config -g JAVA_HOME)" + export JAVAC_HOME="${JAVA_HOME}/bin" + export JAVA_JNI_FLAGS="$(java-pkg_get-jni-cflags)" + export JAVAC="$(java-pkg_get-javac) -encoding UTF-8 $(java-pkg_javac-args)" + fi + + # see bug #830239, '-n' arg not handled by musl + export brltty_cv_prog_conflibdir="ldconfig" + + # Override bindir for backward compatibility. + # Also override localstatedir so that the lib/brltty directory is installed + # correctly. + # Disable stripping since we do that ourselves. + local myconf=( + --bindir="${EPREFIX}"/bin + --htmldir="${EPREFIX}"/usr/share/doc/"${PF}"/html + --localstatedir="${EPREFIX}"/var + --runstatedir="${EPREFIX}"/run + # Python bindings are built separately per-impl + --disable-python-bindings + --disable-stripping + --with-updatable-directory="${EPREFIX}"/var/lib/brltty + --with-writable-directory="${EPREFIX}"/run/brltty + --with-privilege-parameters=lx:user=brltty + $(use_enable api) + $(use_with beeper beep-package) + $(use_with caps pgmprivs-package) + $(use_enable emacs emacs-bindings) + $(use_with fm fm-package) + $(use_enable gpm) + $(use_with hid hid-package) + $(use_enable iconv) + $(use_enable icu) + $(use_enable java java-bindings) + $(use_enable louis liblouis) + $(use_enable lua lua-bindings) + $(use_with midi midi-package) + $(use_enable nls i18n) + $(use_enable ocaml ocaml-bindings) + $(use_with pcm pcm-package) + $(use_enable policykit polkit) + $(use_with pcre rgx-package) + $(use_enable speech speech-support) + $(use_with systemd service-package) + $(use_enable tcl tcl-bindings) + $(use_enable xml expat) + $(use_enable X x) + $(use_with bluetooth bluetooth-package) + $(use_with ncurses curses) + $(use_with usb usb-package) + ) + # disable espeak since we use espeak-ng + use speech && myconf+=( --with-speech-driver=-es ) + + econf "${myconf[@]}" + + if use python; then + python_configure() { + econf "${myconf[@]}" --enable-python-bindings PYTHON="${PYTHON}" + } + python_foreach_impl run_in_build_dir python_configure + fi +} + +src_compile() { + emake -j1 JAVA_JNI_FLAGS="${JAVA_JNI_FLAGS}" JAVAC="${JAVAC}" + + use emacs && elisp-compile Bindings/Emacs/add_directory.el + + if use python; then + python_build() { + emake -C "${BUILD_DIR}"/Bindings/Python -j1 + } + python_foreach_impl run_in_build_dir python_build + fi +} + +src_install() { + use ocaml && findlib_src_preinst + + # install-extras for locales, metainfo, polkit rules, systemd-files, udev rules + emake -j1 INSTALL_ROOT="${D}" OCAML_LDCONF= install install-extras + + use emacs && elisp-install ${PN} Bindings/Emacs/add_directory.el{,c} + + if use python; then + python_install() { + emake -C "${BUILD_DIR}"/Bindings/Python -j1 INSTALL_ROOT="${D}" install + rm -r "${D}/$(python_get_sitedir)"/*.egg-info || die + } + python_foreach_impl run_in_build_dir python_install + fi + + if use java; then + java-pkg_doso Bindings/Java/libbrlapi_java.so + java-pkg_dojar Bindings/Java/brlapi.jar + fi + + insinto /etc + doins Documents/brltty.conf + newinitd "${FILESDIR}"/brltty.initd-r1 brltty + + local DOCS=( Documents/{CONTRIBUTORS,ChangeLog,HISTORY,README*,TODO} doc/Manual-BRLTTY ) + local HTML_DOCS=( doc/*.html ) + use api && DOCS+=( Documents/Manual-BrlAPI/English/BrlAPI.sgml ) + einstalldocs + + keepdir /var/lib/BrlAPI + rm -fr "${ED}/run" || die + find "${ED}" -name '*.a' -delete || die +} + +pkg_postinst() { + use emacs && elisp-site-regen + + tmpfiles_process ${PN}.conf + + udev_reload + + elog "please be sure ${EROOT}/etc/brltty.conf is correct for your system." + elog + if use systemd; then + elog "To make brltty start on boot on systemd system, type these commands:" + elog "# systemctl daemon-reload" + elog "# systemctl enable brltty.path" + elog "To launch manually:" + elog "# systemctl start brltty.path" + elog "Don't try brltty.service" + else + elog "To make brltty start on boot on an OpenRC system, type this command:" + elog "# rc-update add brltty boot" + elog "To launch manually:" + elog "# rc-service brltty start" + fi + + if use caps; then + elog "To launch brltty as an unprivileged user, please refer to:" + elog "${EROOT}/usr/share/doc/${PF}/README.Linux#Assigning Capabilities to the Executable" + fi +} + +pkg_postrm() { + udev_reload +} diff --git a/app-accessibility/brltty/files/brltty-6.8-atspi2_optional.patch b/app-accessibility/brltty/files/brltty-6.8-atspi2_optional.patch new file mode 100644 index 000000000000..48520b7cf841 --- /dev/null +++ b/app-accessibility/brltty/files/brltty-6.8-atspi2_optional.patch @@ -0,0 +1,46 @@ +Avoid automagic for atspi-2 +PR pending https://github.com/brltty/brltty/pull/513 +--- a/configure.ac ++++ b/configure.ac +@@ -1921,27 +1921,27 @@ then + ]) + ]) + ], [:]) +-fi + +-BRLTTY_IF_DBUS([dnl +- AC_CHECK_HEADER([X11/keysym.h], [dnl +- BRLTTY_HAVE_PACKAGE([atspi2], [atspi-2], [dnl +- brltty_cppflags_save="${CPPFLAGS}" +- CPPFLAGS="${CPPFLAGS} ${atspi2_cflags}" +- BRLTTY_SCREEN_DRIVER([a2], [AtSpi2], [$(DBUS_LIBS) $(ATSPI2_LIBS) $(GLIB2_LIBS) $(X11_LIBS) $(XFIXES_LIBS)]) ++ BRLTTY_IF_DBUS([dnl ++ AC_CHECK_HEADER([X11/keysym.h], [dnl ++ BRLTTY_HAVE_PACKAGE([atspi2], [atspi-2], [dnl ++ brltty_cppflags_save="${CPPFLAGS}" ++ CPPFLAGS="${CPPFLAGS} ${atspi2_cflags}" ++ BRLTTY_SCREEN_DRIVER([a2], [AtSpi2], [$(DBUS_LIBS) $(ATSPI2_LIBS) $(GLIB2_LIBS) $(X11_LIBS) $(XFIXES_LIBS)]) + +- brltty_libs_save="${LIBS}" +- LIBS="${atspi2_libs} ${LIBS}" ++ brltty_libs_save="${LIBS}" ++ LIBS="${atspi2_libs} ${LIBS}" + +- AC_CHECK_FUNCS([atspi_get_a11y_bus]) ++ AC_CHECK_FUNCS([atspi_get_a11y_bus]) + +- CPPFLAGS="${brltty_cppflags_save}" +- LIBS="${brltty_libs_save}" ++ CPPFLAGS="${brltty_cppflags_save}" ++ LIBS="${brltty_libs_save}" + +- BRLTTY_HAVE_PACKAGE([glib2], [glib-2.0]) ++ BRLTTY_HAVE_PACKAGE([glib2], [glib-2.0]) ++ ]) + ]) + ]) +-]) ++fi + + BRLTTY_ARG_DRIVER([screen], [Screen]) + BRLTTY_SUMMARY_ITEM([screen-driver], [default_screen_driver]) diff --git a/app-accessibility/brltty/files/brltty.initd-r1 b/app-accessibility/brltty/files/brltty.initd-r1 new file mode 100644 index 000000000000..8b53a43f4a4b --- /dev/null +++ b/app-accessibility/brltty/files/brltty.initd-r1 @@ -0,0 +1,13 @@ +#!/sbin/openrc-run +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +command=/bin/brltty +command_args="--no-daemon --quiet ${EXTRA_OPTS}" +command_background=true +pidfile="/run/${RC_SVCNAME}.pid" +retry="TERM/60/KILL/5" + +depend() { + after dbus localmount udev +} diff --git a/app-accessibility/brltty/metadata.xml b/app-accessibility/brltty/metadata.xml index 7a6c5b4307bf..0f7c4cbd67aa 100644 --- a/app-accessibility/brltty/metadata.xml +++ b/app-accessibility/brltty/metadata.xml @@ -9,6 +9,7 @@ <flag name="api">build brltty's application program interface</flag> <flag name="beeper">support the console tone generator</flag> <flag name="fm">support for the sound card synthesizer</flag> + <flag name="hid">support for opening and closing a HID device</flag> <flag name="louis">Use braille translator <pkg>dev-libs/liblouis</pkg></flag> <flag name="midi">support the musical instrument digital interface</flag> <flag name="pcm">support for sound card digital audio</flag>
