# TODO:
-# - check BR
-# - more packages (bindings)
-# - ocaml bcond is useless now:
-# Cannot find ocamlfind.
-# BrlAPI Caml bindings will be compiled but not installed.
-# - check java stuff
+# - what is that huge %post script?
#
# Conditional build:
-%bcond_without apidocs # documentation generated with doxygen
-%bcond_with java # java bindings
-%bcond_with ocaml # ocaml bindings (NFY)
+%bcond_without apidocs # documentation generated with doxygen
+%bcond_without java # Java bindings
+%bcond_without ocaml # OCaml bindings
+%bcond_without python # Python bindings
+%bcond_without python3 # Python 3.x bindings
+%bcond_without tcl # Tcl bindings
+%bcond_without x # X11-based utilities
+%bcond_without gpm # mouse tracking via GPM
+%bcond_without libbraille # libbraille Braille driver
+%bcond_without espeak # eSpeak synthesizer driver
+%bcond_without flite # Flite synthesizer driver
+%bcond_with mikropuhe # Mikropuhe synthesizer driver [commercial, Finnish]
+%bcond_without speech_dispatcher # Speech Dispatcher synthesizer driver
+%bcond_with swift # Swift synthesizer driver [commercial, from Cepstral]
+%bcond_with theta # Theta synthesizer driver [commercial, from Cepstral]
+%bcond_with viavoice # IBM ViaVoice synthesizer driver [commercial]
+%bcond_with at_spi # AtSpi screen driver
+%bcond_without at_spi2 # AtSpi2 screen driver
#
+%define brlapi_ver 0.6.3
+#
+%include /usr/lib/rpm/macros.java
Summary: Braille display driver for Linux/Unix
Summary(pl.UTF-8): Sterownik do wyświetlaczy Braille'a
Name: brltty
-Version: 3.9
-Release: 1
+Version: 5.2
+Release: 8
Group: Daemons
-License: GPL
+License: GPL v2+ (brltty and drivers), LGPL v2.1+ (APIs)
+Source0: http://mielke.cc/brltty/archive/%{name}-%{version}.tar.xz
+# Source0-md5: b484343461b5a45f95fedfb21d1ceca3
+Patch0: %{name}-java.patch
+Patch1: %{name}-speech-dispatcher.patch
+Patch2: %{name}-python.patch
URL: http://mielke.cc/brltty/
-Source0: http://mielke.cc/brltty/releases/%{name}-%{version}.tar.gz
-# Source0-md5: 7ce54ba2d38b7c220870e8c781f36743
-BuildRequires: autoconf >= 2.53
+BuildRequires: rpmbuild(macros) >= 1.710
+BuildRequires: alsa-lib-devel
+%{?with_at_spi:BuildRequires: at-spi-devel}
+BuildRequires: autoconf >= 2.62
BuildRequires: automake
BuildRequires: bison
-#BuildRequires: bluez-devel
+# just headers
+BuildRequires: bluez-libs-devel
+%{?with_at_spi2:BuildRequires: dbus-devel >= 1.0}
%{?with_apidocs:BuildRequires: doxygen}
-#BuildRequires: gpm-devel
+%{?with_espeak:BuildRequires: espeak-devel}
+%{?with_flite:BuildRequires: flite-devel}
+%{?with_gpm:BuildRequires: gpm-devel}
%{?with_java:BuildRequires: jdk}
-#BuildRequires: libusb-devel
-#BuildRequires: ncurses-devel
+%{?with_java:BuildRequires: jpackage-utils}
+%{?with_libbraille:BuildRequires: libbraille-devel}
+BuildRequires: libicu-devel
+BuildRequires: ncurses-devel
%{?with_ocaml:BuildRequires: ocaml}
-#BuildRequires: pkgconfig
-#BuildRequires: python-devel
-#BuildRequires: tcl-devel
-#BuildRequires: xorg-lib-libX*
+BuildRequires: pkgconfig
+%{?with_python:BuildRequires: python-Cython}
+%{?with_python3:BuildRequires: python3-Cython}
+%{?with_java:BuildRequires: rpm-javaprov}
+%{?with_python:BuildRequires: rpm-pythonprov}
+%{?with_speech_dispatcher:BuildRequires: speech-dispatcher-devel >= 0.8}
+BuildRequires: tar >= 1:1.22
+%{?with_tcl:BuildRequires: tcl-devel >= 8.5}
+%if %{with x}
+BuildRequires: xorg-lib-libX11-devel
+BuildRequires: xorg-lib-libXaw-devel
+BuildRequires: xorg-lib-libXext-devel
+BuildRequires: xorg-lib-libXt-devel
+BuildRequires: xorg-lib-libXtst-devel
+%endif
+BuildRequires: xz
+#%{?with_mikropuhe:BuildRequires: Mikropuhe-devel (-lmikropuhe <mpwrfile.h>)}
+#%{?with_swift:BuildRequires: Swift-devel (-lswift <swift.h>)}
+#%{?with_theta:BuildRequires: Theta-devel (-ltheta <theta.h>)}
+#%{?with_viavoice:BuildRequires: ViaVoice-devel (-libmeci50 <eci.h>)}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
%package -n brlapi
Summary: Application Programming Interface for BRLTTY
Summary(pl.UTF-8): API do BRLTTY
-Group: Applications/System
+License: LGPL v2.1+
+Group: Libraries
%description -n brlapi
This package provides the run-time support for the Application
%package -n brlapi-devel
Summary: Headers and documentation for BrlAPI
Summary(pl.UTF-8): Pliki nagłówkowe i dokumentacja do BrlAPI
+License: LGPL v2.1+
Group: Development/Libraries
Requires: brlapi = %{version}-%{release}
%package -n brlapi-static
Summary: Static BrlAPI library
Summary(pl.UTF-8): Statyczna biblioteka BrlAPI
+License: LGPL v2.1+
Group: Development/Libraries
Requires: brlapi-devel = %{version}-%{release}
Dokumentacja BrlAPI w formacie HTML generowane ze
źrodeł brltty przez doxygen.
-%package -n brlapi-java
+%package -n java-brlapi
Summary: BrlAPI library for Java
Summary(pl.UTF-8): Biblioteka BrlAPI dla Javy
+License: LGPL v2.1+
Group: Libraries
Requires: brlapi = %{version}-%{release}
-%description -n brlapi-java
+%description -n java-brlapi
BrlAPI library for Java.
-%description -n brlapi-java -l pl.UTF-8
+%description -n java-brlapi -l pl.UTF-8
Biblioteka BrlAPI dla Javy.
+%package -n ocaml-brlapi
+Summary: OCaml binding for BrlAPI
+Summary(pl.UTF-8): Wiązania OCamla do BrlAPI
+License: LGPL v2.1+
+Group: Libraries
+Requires: brlapi = %{version}-%{release}
+%requires_eq ocaml-runtime
+
+%description -n ocaml-brlapi
+OCaml binding for BrlAPI.
+
+%description -n ocaml-brlapi -l pl.UTF-8
+Wiązania OCamla do BrlAPI.
+
+%package -n ocaml-brlapi-devel
+Summary: OCaml binding for BrlAPI - development files
+Summary(pl.UTF-8): Wiązania OCamla do BrlAPI - pliki programistyczne
+License: LGPL v2.1+
+Group: Libraries
+Requires: ocaml-brlapi = %{version}-%{release}
+%requires_eq ocaml
+
+%description -n ocaml-brlapi-devel
+OCaml binding for BrlAPI - development files.
+
+%description -n ocaml-brlapi-devel -l pl.UTF-8
+Wiązania OCamla do BrlAPI - pliki programistyczne.
+
+%package -n python-brlapi
+Summary: Python 2.x interface to BrlAPI
+Summary(pl.UTF-8): Interfejs Pythona 2.x do BrlAPI
+License: LGPL v2.1+
+Group: Libraries
+Requires: brlapi = %{version}-%{release}
+
+%description -n python-brlapi
+Python 2.x interface to BrlAPI.
+
+%description -n python-brlapi -l pl.UTF-8
+Interfejs Pythona 2.x do BrlAPI.
+
+%package -n python3-brlapi
+Summary: Python 3.x interface to BrlAPI
+Summary(pl.UTF-8): Interfejs Pythona 3.x do BrlAPI
+License: LGPL v2.1+
+Group: Libraries
+Requires: brlapi = %{version}-%{release}
+
+%description -n python3-brlapi
+Python 3.x interface to BrlAPI.
+
+%description -n python3-brlapi -l pl.UTF-8
+Interfejs Pythona 3.x do BrlAPI.
+
+%package -n brlapi-tcl
+Summary: BrlAPI library for Tcl
+Summary(pl.UTF-8): Biblioteka BrlAPI dla Tcl
+License: LGPL v2.1+
+Group: Libraries
+Requires: brlapi = %{version}-%{release}
+
+%description -n brlapi-tcl
+BrlAPI library for Tcl.
+
+%description -n brlapi-tcl -l pl.UTF-8
+Biblioteka BrlAPI dla Tcl.
+
%prep
%setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
%build
-%{__aclocal}
%{__autoconf}
-cp -f /usr/share/automake/config.sub acdir
+CFLAGS="%{rpmcflags} -I/usr/include/ncurses"
%configure \
+ %{?with_java:JAVA_HOME=%{java_home}} \
--with-install-root="$RPM_BUILD_ROOT" \
- --disable-tainted-components \
+ %{!?with_libbraille:--without-libbraille} \
+ %{!?with_espeak:--without-espeak} \
+ %{!?with_flite:--without-flite} \
+ %{!?with_speech_dispatcher:--without-speechd} \
+ %{!?with_ocaml:--disable-caml-bindings} \
+ %{!?with_gpm:--disable-gpm} \
+ %{!?with_java:--disable-java-bindings} \
+ %{!?with_python:--disable-python-bindings} \
+ %{!?with_tcl:--disable-tcl-bindings} \
+ %{!?with_x:--disable-x} \
--enable-api
-%{__make}
+
+%{__make} -j1
+
+%if %{with python3}
+cd Bindings/Python
+%py3_build \
+ -b build-3
+cd ../..
+%endif
directory="doc"
mkdir -p "$directory"
%install
rm -rf $RPM_BUILD_ROOT
-%{__make} install
+
+%{__make} -j1 install \
+ OCAML_INSTALL_TARGET=install-without-findlib
+
+# findlib-specific, useless in rpm
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/ocaml/stublibs/dllbrlapi_stubs.so.owner
+
+%if %{with python3}
+cd Bindings/Python
+%{__python3} setup.py \
+ build \
+ -b build-3 \
+ install \
+ --optimize=2 \
+ --skip-build \
+ --root=$RPM_BUILD_ROOT
+cd ../..
+%endif
+
+%if %{_lib} != "lib"
+ # Fix java plugin install path on 64-bit archs
+ install -d $RPM_BUILD_ROOT%{_libdir}/java
+ %{__mv} $RPM_BUILD_ROOT%{_prefix}/{lib,%{_lib}}/java/libbrlapi_java.so
+%endif
+
install Documents/brltty.conf $RPM_BUILD_ROOT%{_sysconfdir}
+install -d $RPM_BUILD_ROOT/usr/lib/tmpfiles.d
+cat >$RPM_BUILD_ROOT/usr/lib/tmpfiles.d/brltty.conf <<EOF
+d /var/run/brltty 0755 root root -
+EOF
+
+# no sign in source wheter it is zh_CN or zh_TW so just remove it
+%{__rm} -r $RPM_BUILD_ROOT%{_localedir}/zh
+
+%find_lang %{name}
+
%clean
rm -rf $RPM_BUILD_ROOT
%post -n brlapi -p /sbin/ldconfig
%postun -n brlapi -p /sbin/ldconfig
-%files
+%files -f %{name}.lang
%defattr(644,root,root,755)
%doc Documents/{Manual-BRLTTY/English/BRLTTY*,ChangeLog,HISTORY,TODO}
-%doc doc/{Bindings,Bootdisks,BrailleDrivers,BrailleTables,ContractionTables,Patches,README,SpeechDrivers}
+%doc doc/{Bindings,Bootdisks,Drivers,Patches,Tables,README}
%attr(755,root,root) %{_bindir}/brltty
-%attr(755,root,root) %{_bindir}/brltty-install
%attr(755,root,root) %{_bindir}/brltty-config
+%attr(755,root,root) %{_bindir}/brltty-ctb
+%attr(755,root,root) %{_bindir}/brltty-trtxt
+%attr(755,root,root) %{_bindir}/brltty-ttb
+%attr(755,root,root) %{_bindir}/eutp
%attr(755,root,root) %{_bindir}/vstp
-#attr(755,root,root) %{_bindir}/xbrlapi
+%{?with_x:%attr(755,root,root) %{_bindir}/xbrlapi}
%dir %{_libdir}/brltty
+# Braille drivers
%attr(755,root,root) %{_libdir}/brltty/libbrlttybal.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybat.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybba.so
+%attr(755,root,root) %{_libdir}/brltty/libbrlttybbc.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybbd.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybbl.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybbm.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybbn.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybcb.so
+%attr(755,root,root) %{_libdir}/brltty/libbrlttybce.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybec.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybeu.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybfs.so
+%attr(755,root,root) %{_libdir}/brltty/libbrlttybhd.so
+%attr(755,root,root) %{_libdir}/brltty/libbrlttybhm.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybht.so
-%attr(755,root,root) %{_libdir}/brltty/libbrlttybil.so
+%attr(755,root,root) %{_libdir}/brltty/libbrlttybhw.so
+%attr(755,root,root) %{_libdir}/brltty/libbrlttybir.so
+%{?with_libbraille:%attr(755,root,root) %{_libdir}/brltty/libbrlttyblb.so}
%attr(755,root,root) %{_libdir}/brltty/libbrlttyblt.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybmb.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybmd.so
+%attr(755,root,root) %{_libdir}/brltty/libbrlttybmm.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybmn.so
+%attr(755,root,root) %{_libdir}/brltty/libbrlttybmt.so
+%attr(755,root,root) %{_libdir}/brltty/libbrlttybnp.so
+%attr(755,root,root) %{_libdir}/brltty/libbrlttybpg.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybpm.so
+%attr(755,root,root) %{_libdir}/brltty/libbrlttybsk.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybtn.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybts.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybtt.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybvo.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybvr.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttybvs.so
+%{?with_x:%attr(755,root,root) %{_libdir}/brltty/libbrlttybxw.so}
+# speech synthesizer drivers
%attr(755,root,root) %{_libdir}/brltty/libbrlttysal.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttysbl.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttyscb.so
-%attr(755,root,root) %{_libdir}/brltty/libbrlttyses.so
+%{?with_espeak:%attr(755,root,root) %{_libdir}/brltty/libbrlttyses.so}
+%{?with_flite:%attr(755,root,root) %{_libdir}/brltty/libbrlttysfl.so}
%attr(755,root,root) %{_libdir}/brltty/libbrlttysfv.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttysgs.so
+%{?with_mikropuhe:%attr(755,root,root) %{_libdir}/brltty/libbrlttysmp.so}
+%{?with_speech_dispatcher:%attr(755,root,root) %{_libdir}/brltty/libbrlttyssd.so}
+%{?with_swift:%attr(755,root,root) %{_libdir}/brltty/libbrlttyssw.so}
+%{?with_theta:%attr(755,root,root) %{_libdir}/brltty/libbrlttysth.so}
+%{?with_viavoice:%attr(755,root,root) %{_libdir}/brltty/libbrlttysvv.so}
+%attr(755,root,root) %{_libdir}/brltty/libbrlttysxs.so
+# screen drivers
+%{?with_at_spi2:%attr(755,root,root) %{_libdir}/brltty/libbrlttyxa2.so}
+%{?with_at_spi:%attr(755,root,root) %{_libdir}/brltty/libbrlttyxas.so}
%attr(755,root,root) %{_libdir}/brltty/libbrlttyxlx.so
%attr(755,root,root) %{_libdir}/brltty/libbrlttyxsc.so
%{_sysconfdir}/brltty
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/brltty.conf
+/usr/lib/tmpfiles.d/brltty.conf
+%dir /var/lib/BrlAPI
+%dir /var/run/brltty
%{_mandir}/man1/brltty.1*
+%{_mandir}/man1/eutp.1*
%{_mandir}/man1/vstp.1*
+%{?with_x:%{_mandir}/man1/xbrlapi.1*}
+
+%if %{with x}
+# gdm autostart - subpackage?
+#%{_datadir}/gdm/greeter/autostart/xbrlapi.desktop
+%endif
%files -n brlapi
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libbrlapi.so.0.5
-%attr(755,root,root) %{_libdir}/libbrlapi.so.0.5.1
+%attr(755,root,root) %{_libdir}/libbrlapi.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libbrlapi.so.0.6
%files -n brlapi-devel
%defattr(644,root,root,755)
-%doc Documents/README.Gnopernicus
%doc Documents/Manual-BrlAPI/English/BrlAPI*
%attr(755,root,root) %{_libdir}/libbrlapi.so
%{_includedir}/brltty
%{_includedir}/brlapi*.h
-%{_mandir}/man3/*
+%{_mandir}/man3/brlapi_*.3*
%files -n brlapi-static
%defattr(644,root,root,755)
%endif
%if %{with java}
-%files -n brlapi-java
+%files -n java-brlapi
%defattr(644,root,root,755)
-%{_libdir}/java/libbrlapi_java.so
+%attr(755,root,root) %{_libdir}/java/libbrlapi_java.so
%{_javadir}/brlapi.jar
%endif
+
+%if %{with ocaml}
+%files -n ocaml-brlapi
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/ocaml/stublibs/dllbrlapi_stubs.so
+
+%files -n ocaml-brlapi-devel
+%defattr(644,root,root,755)
+%dir %{_libdir}/ocaml/brlapi
+%{_libdir}/ocaml/brlapi/META
+%{_libdir}/ocaml/brlapi/brlapi.cm[aix]*
+%{_libdir}/ocaml/brlapi/brlapi.mli
+%{_libdir}/ocaml/brlapi/libbrlapi_stubs.a
+%endif
+
+%if %{with python}
+%files -n python-brlapi
+%defattr(644,root,root,755)
+%attr(755,root,root) %{py_sitedir}/brlapi.so
+%{py_sitedir}/Brlapi-%{brlapi_ver}-py*.egg-info
+
+%if %{with python3}
+%files -n python3-brlapi
+%defattr(644,root,root,755)
+%attr(755,root,root) %{py3_sitedir}/brlapi.cpython-*.so
+%{py3_sitedir}/Brlapi-%{brlapi_ver}-py*.egg-info
+%endif
+%endif
+
+%if %{with tcl}
+%files -n brlapi-tcl
+%defattr(644,root,root,755)
+%dir %{_libdir}/brlapi-%{brlapi_ver}
+%attr(755,root,root) %{_libdir}/brlapi-%{brlapi_ver}/libbrlapi_tcl.so
+%{_libdir}/brlapi-%{brlapi_ver}/pkgIndex.tcl
+%endif