]> git.pld-linux.org Git - packages/brltty.git/blob - brltty.spec
- BR: at-spi-devel, pkgconfig
[packages/brltty.git] / brltty.spec
1 # TODO:
2 #       - ocaml bcond is useless now:
3 #               Cannot find ocamlfind.
4 #               BrlAPI Caml bindings will be compiled but not installed.
5 #       - check java stuff
6 #       - create bcond to build with minimal deps (wo ncurses,gpm,at-spi*)
7 #
8 # Conditional build:
9 %bcond_without  apidocs         # documentation generated with doxygen
10 %bcond_with     java            # java bindings
11 %bcond_with     ocaml           # ocaml bindings (NFY)
12 %bcond_without  python          # python bindings
13 %bcond_without  tcl             # tcl bindings
14 %bcond_without  x               # build X11-based utilities
15 #
16 Summary:        Braille display driver for Linux/Unix
17 Summary(pl.UTF-8):      Sterownik do wyświetlaczy Braille'a
18 Name:           brltty
19 Version:        3.9
20 Release:        1
21 Group:          Daemons
22 License:        GPL
23 URL:            http://mielke.cc/brltty/
24 Source0:        http://mielke.cc/brltty/releases/%{name}-%{version}.tar.gz
25 # Source0-md5:  7ce54ba2d38b7c220870e8c781f36743
26 BuildRequires:  at-spi-devel
27 BuildRequires:  autoconf >= 2.53
28 BuildRequires:  automake
29 BuildRequires:  bison
30 #BuildRequires: bluez-devel
31 %{?with_apidocs:BuildRequires:  doxygen}
32 BuildRequires:  gpm-devel
33 %{?with_java:BuildRequires:     jdk}
34 BuildRequires:  ncurses-devel
35 %{?with_ocaml:BuildRequires:    ocaml}
36 BuildRequires:  pkgconfig
37 %{?with_python:BuildRequires:   python-Pyrex}
38 %{?with_python:BuildRequires:   rpm-pythonprov}
39 %{?with_tcl:BuildRequires:      tcl}
40 %{?with_x:BuildRequires:        xorg-lib-libXaw-devel}
41 %{?with_x:BuildRequires:        xorg-lib-libXtst-devel}
42 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
43
44 %description
45 BRLTTY is a background process (daemon) which provides access to the
46 Linux/Unix console (when in text mode) for a blind person using a
47 refreshable Braille display. It drives the Braille display, and
48 provides complete screen review functionality. Some speech capability
49 has also been incorporated.
50
51 %description -l pl.UTF-8
52 BRLTTY jest demonem, który udostępnia dostęp do linuksowej konsoli (w
53 trybie tekstowym) dla niewidomych używających wyświetlaczy Braille'a z
54 odświeżaniem (refreshable Braille display). BRLTTY steruje
55 wyświetlaczem Braille'a i dostarcza funkcjonalność całkowitego
56 przeglądu ekranu. Do tego pakietu została włączona możliwość syntezy
57 mowy.
58
59 %package -n brlapi
60 Summary:        Application Programming Interface for BRLTTY
61 Summary(pl.UTF-8):      API do BRLTTY
62 Group:          Applications/System
63
64 %description -n brlapi
65 This package provides the run-time support for the Application
66 Programming Interface to BRLTTY.
67
68 Install this package if you have an application which directly
69 accesses a refreshable Braille display.
70
71 %description -n brlapi -l pl.UTF-8
72 Ten pakiet zawiera środowisko uruchomieniowe dla programów
73 korzystających z API BRLTTY.
74
75 Zainstaluj ten pakiet jeśli masz aplikację, która bezpośrednio używa
76 wyświetlacza Braille'a z odświeżaniem.
77
78 %package -n brlapi-devel
79 Summary:        Headers and documentation for BrlAPI
80 Summary(pl.UTF-8):      Pliki nagłówkowe i dokumentacja do BrlAPI
81 Group:          Development/Libraries
82 Requires:       brlapi = %{version}-%{release}
83
84 %description -n brlapi-devel
85 This package provides the header files, shared object linker
86 reference, and reference documentation for BrlAPI (the Application
87 Programming Interface to BRLTTY). It enables the implementation of
88 applications which take direct advantage of a refreshable Braille
89 display in order to present information in ways which are more
90 appropriate for blind users and/or to provide user interfaces which
91 are more specifically atuned to their needs.
92
93 Install this package if you're developing or maintaining an
94 application which directly accesses a refreshable Braille display.
95
96 %description -n brlapi-devel -l pl.UTF-8
97 Ten pakiet zawiera pliki nagłówkowe oraz dokumentację do BrlAPI (API
98 do BRLTTY). BrlAPI pozwala implementować aplikacje, które bezpośrednio
99 korzystają z wyświetlaczy Braille'a dostarczając interfejs użytkownika
100 bardziej przystosowany dla osób niewidomych.
101
102 Zainstaluj ten pakiet, jeśli tworzysz lub nadzorujesz aplikację
103 korzystającą bezpośrednio z odświeżalnych wyświetlaczy Braille'a.
104
105 %package -n brlapi-static
106 Summary:        Static BrlAPI library
107 Summary(pl.UTF-8):      Statyczna biblioteka BrlAPI
108 Group:          Development/Libraries
109 Requires:       brlapi-devel = %{version}-%{release}
110
111 %description -n brlapi-static
112 This is package with static BrlAPI library.
113
114 %description -n brlapi-static -l pl.UTF-8
115 Ten pakiet zawiera statyczną wersję biblioteki BrlAPI.
116
117 %package -n brlapi-apidocs
118 Summary:        BrlAPI documentation
119 Summary(pl.UTF-8):      Documentacja BrlAPI
120 Group:          Documentation
121
122 %description -n brlapi-apidocs
123 Documentation for BrlAPI in HTML format generated from brltty
124 sources by doxygen.
125
126 %description -n brlapi-apidocs -l pl.UTF-8
127 Dokumentacja BrlAPI w formacie HTML generowane ze
128 źrodeł brltty przez doxygen.
129
130 %package -n brlapi-java
131 Summary:        BrlAPI library for Java
132 Summary(pl.UTF-8):      Biblioteka BrlAPI dla Javy
133 Group:          Libraries
134 Requires:       brlapi = %{version}-%{release}
135
136 %description -n brlapi-java
137 BrlAPI library for Java.
138
139 %description -n brlapi-java -l pl.UTF-8
140 Biblioteka BrlAPI dla Javy.
141
142 %package -n python-brlapi
143 Summary:        Python interface to BrlAPI
144 Summary(pl.UTF-8):      Pythonowy interfejs do BrlAPI
145 Group:          Libraries
146 Requires:       brlapi = %{version}-%{release}
147
148 %description -n python-brlapi
149 Python interface to BrlAPI.
150
151 %description -n python-brlapi -l pl.UTF-8
152 Pythonowy interfejs do BrlAPI.
153
154 %package -n brlapi-tcl
155 Summary:        BrlAPI library for Tcl
156 Summary(pl.UTF-8):      Biblioteka BrlAPI dla Tcl
157 Group:          Libraries
158 Requires:       brlapi = %{version}-%{release}
159
160 %description -n brlapi-tcl
161 BrlAPI library for Tcl.
162
163 %description -n brlapi-tcl -l pl.UTF-8
164 Biblioteka BrlAPI dla Tcl.
165
166 %prep
167 %setup -q
168
169 %build
170 %{__aclocal}
171 %{__autoconf}
172 cp -f /usr/share/automake/config.sub acdir
173 CFLAGS="%{rpmcflags} -I/usr/include/ncurses"
174 %configure \
175         --with-install-root="$RPM_BUILD_ROOT" \
176         --disable-tainted-components \
177         --enable-api
178 %{__make}
179
180 directory="doc"
181 mkdir -p "$directory"
182 for file in `find . \( -path "./$directory" -o -path ./Documents \) -prune -o \( -name 'README*' -o -name '*.txt' -o -name '*.html' -o -name '*.sgml' -o \( -path "./Bootdisks/*" -type f -perm +ugo=x \) \) -print`
183 do
184         mkdir -p "$directory/${file%/*}"
185         cp -rp "$file" "$directory/$file"
186 done
187
188 %install
189 rm -rf $RPM_BUILD_ROOT
190 %{__make} install
191 install Documents/brltty.conf $RPM_BUILD_ROOT%{_sysconfdir}
192
193 %clean
194 rm -rf $RPM_BUILD_ROOT
195
196 %pre
197 # The pre-install scriptlet.
198
199 # If a configuration file already exists then rpm installs the new one as
200 # <path>.rpmnew. If this is done then the .rpmnew file is overwritten if it
201 # already exists.
202
203 # There's no explicit way to tell if a configuration file has been installed
204 # as itself or as a .rpmnew file. The way we'll figure it out, therefore, is by
205 # erasing the .rpmnew file now so that we can see if it gets created later.
206 rm -f "%{_sysconfdir}/brltty.conf.rpmnew"
207
208 %post
209 # The post-install scriptlet.
210
211 # If BRLTTY's boot parameter has been specified then update the just installed
212 # configuration file template to reflect the options supplied thereby.
213
214 # First, we need to determine which file to update. If there's a .rpmnew file
215 # then update it since a previous configuration file must already have existed.
216 file="%{_sysconfdir}/brltty.conf"
217 new="${file}.rpmnew"
218 [ -f "${new}" ] && file="${new}"
219
220 # Update the configuration file template via the Bootdisks/bp2cf script.
221 # Include it right within this scriptlet so that it needn't be installed.
222 # Imbed it within a subshell to ensure that it won't impact this scriptlet.
223 (
224         # First, set bp2cf's command line arguments.
225         set -- -u -f "${file}"
226
227 #!/bin/sh
228 ###############################################################################
229 # BRLTTY - A background process providing access to the Linux console (when in
230 #          text mode) for a blind person using a refreshable Braille display.
231 #
232 # Copyright (C) 1995-2003 by The BRLTTY Team. All rights reserved.
233 #
234 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
235 #
236 # This is free software, placed under the terms of the
237 # GNU General Public License, as published by the Free Software
238 # Foundation.  Please see the file COPYING for details.
239 #
240 # Web Page: http://mielke.cc/brltty/
241 #
242 # This software is maintained by Dave Mielke <dave@mielke.cc>.
243 ###############################################################################
244
245 # Convert the boot parameter to configuration file directives.
246 # If /proc is mounted then use the brltty= boot parameter in /proc/cmdline.
247 # If /proc is not mounted then use the brltty environment variable.
248 # Invoke with -h for usage information.
249
250 programName="${0##*/}"
251 programMessage()
252 {
253         echo 2>&1 "${programName}: ${1}"
254 }
255 syntaxError()
256 {
257         programMessage "${1}"
258         exit 2
259 }
260 internalError()
261 {
262         programMessage "${1}"
263         exit 3
264 }
265
266 configurationFile=""
267 requestedAction=create
268 deviceTranslation=none
269 requestedParameter=""
270 OPTIND=1
271 while getopts ":f:cundop:h" option
272 do
273         case "${option}" in
274             f) configurationFile="${OPTARG}";;
275             c) requestedAction=create;;
276             u) requestedAction=update;;
277             n) deviceTranslation=none;;
278             d) deviceTranslation=devfs;;
279             o) deviceTranslation=old;;
280             p) requestedParameter="${OPTARG}";;
281             h)
282                 cat <<EOF
283 Usage: ${programName} [option ...]
284 -f file  The configuration file to create/update.
285 -c       Create the configuration file (write to stdout if no -f).
286 -u       Update the configuration file (copying from stdin to stdout if no -f).
287 -n       Do not translate device paths.
288 -d       Do old-style to devfs device path translation.
289 -o       Do devfs to old-style device path translation.
290 -p [driver][,[device][,[table]]]
291          Explicitly specify the boot parameter.
292 -h       Display this usage summary.
293 EOF
294                 exit 0
295                 ;;
296             \?) syntaxError "unknown option: -${OPTARG}";;
297             :) syntaxError "missing value: -${OPTARG}";;
298             *) internalError "unimplemented option: -${option}";;
299         esac
300 done
301 shift "`expr $OPTIND - 1`"
302 [ "${#}" -eq 0 ] || syntaxError "too many parameters."
303
304 case "${requestedAction}" in
305     create)
306         putConfigurationLine()
307         {
308                 echo "${1}" || exit 4
309         }
310         startConfigurationFile()
311         {
312                 [ -n "${configurationFile}" ] && exec >"${configurationFile}"
313                 putConfigurationLine "`makeHeaderLine Created`"
314                 putConfigurationLine "`makeParameterLine`"
315                 putConfigurationLine ""
316         }
317         putConfigurationDirective()
318         {
319                 putConfigurationLine "${1} ${2}"
320         }
321         finalizeConfigurationFile()
322         {
323                 :
324         }
325         ;;
326     update)
327         putSedCommand()
328         {
329                 sedScript="${sedScript}
330 ${1}"
331         }
332         startConfigurationFile()
333         {
334                 if [ -n "${configurationFile}" ]; then
335                         [ -e "${configurationFile}" ] || syntaxError "file not found: ${configurationFile}"
336                         [ -f "${configurationFile}" ] || syntaxError "not a file: ${configurationFile}"
337                         [ -r "${configurationFile}" ] || syntaxError "file not readable: ${configurationFile}"
338                         [ -w "${configurationFile}" ] || syntaxError "file not writable: ${configurationFile}"
339                         outputFile="${configurationFile}.new"
340                         exec <"${configurationFile}" >"${outputFile}"
341                 fi
342                 sedScript=""
343                 putSedCommand "1i\\
344 `makeHeaderLine Updated`\\
345 `makeParameterLine`\\
346 "
347         }
348         putConfigurationDirective()
349         {
350                 value="`echo "${2}" | sed -e 's%\\([/\\]\\)%\\\\\\1%g'`"
351                 putSedCommand "/^ *#\\(${1} .*\\)/s//\\1/"
352                 putSedCommand "/^ *\\(${1}\\) .*/s//\\1 ${value}/"
353         }
354         finalizeConfigurationFile()
355         {
356                 sed -e "${sedScript}"
357                 [ -n "${outputFile}" ] && mv -f "${outputFile}" "${configurationFile}"
358         }
359         ;;
360     *) internalError "unimplemented action: ${requestedAction}";;
361 esac
362
363 translateDevice_none()
364 {
365         :
366 }
367 translateDevice_devfs()
368 {
369         minor="${device#ttyS}"
370         if [ "${minor}" != "${device}" ]; then
371                 device="tts/${minor}"
372                 return 0
373         fi
374         minor="${device#lp}"
375         if [ "${minor}" != "${device}" ]; then
376                 device="printers/${minor}"
377                 return 0
378         fi
379         programMessage "unsupported old-style device: ${device}"
380 }
381 translateDevice_old()
382 {
383         major="${device%%/*}"
384         if [ "${major}" != "${device}" ]; then
385                 minor="${device#*/}"
386                 case "${major}" in
387                     tts) devfs="ttyS${minor}";;
388                     printers) devfs="lp${minor}";;
389                 esac
390         fi
391         if [ -n "${devfs}" ]; then
392                 device="${devfs}"
393         else
394                 programMessage "unsupported devfs device: ${device}"
395         fi
396 }
397
398 makeHeaderLine()
399 {
400         echo "# ${1} by brltty-bp2cf`date +' on %Y-%m-%d at %H:%M:%S %Z (UTC%z)'`."
401 }
402 makeParameterLine()
403 {
404         echo "# Boot Parameter:${bootParameter}"
405 }
406 putConfigurationFile()
407 {
408         startConfigurationFile
409         [ -n "${brailleDriver}" ] && putConfigurationDirective "braille-driver" "${brailleDriver}"
410         [ -n "${brailleDevice}" ] && {
411         device="`echo "${brailleDevice}" | sed -e 's%//*%/%g' -e 's%^/dev/%%'`"
412         if [ "${device#/}" = "${device}" ]; then
413                 translateDevice_${deviceTranslation}
414         fi
415         putConfigurationDirective "braille-device" "${device}"
416         }
417         [ -n "${textTable}" ] && putConfigurationDirective "text-table" "${textTable}"
418         finalizeConfigurationFile
419 }
420 parseBootParameter()
421 {
422         bootParameter="${bootParameter} ${1}"
423         number=1
424         while [ "${number}" -le 3 ]; do
425                 cut="cut -d, -f${number}"
426                 [ "${number}" -gt 1 ] && cut="${cut} -s"
427                 operand="`echo ${1} | ${cut}`"
428                 if [ -n "${operand}" ]; then
429                         case "${number}" in
430                             1) brailleDriver="${operand}";;
431                             2) brailleDevice="${operand}";;
432                             3) textTable="${operand}";;
433                         esac
434                 fi
435                 number="`expr ${number} + 1`"
436         done
437 }
438 putBootParameter()
439 {
440         parseBootParameter "${1}"
441         putConfigurationFile
442 }
443 parseBootCommand()
444 {
445         found=false
446         while [ "${#}" -gt 0 ]; do
447                 case "${1}" in
448                     "brltty="*)
449                         found=true
450                         parseBootParameter "${1#*=}"
451                         ;;
452                 esac
453                 shift
454         done
455         "${found}" && putConfigurationFile
456 }
457
458 brailleDriver=""
459 brailleDevice=""
460 textTable=""
461 bootCommandFile="/proc/cmdline"
462 if [ -n "${requestedParameter}" ]; then
463         putBootParameter "${requestedParameter}"
464 elif [ -f "${bootCommandFile}" ]; then
465         parseBootCommand `cat "${bootCommandFile}"`
466 elif [ -n "${brltty}" ]; then
467         putBootParameter "${brltty}"
468 fi
469 exit 0
470 )
471
472 %post   -n brlapi -p /sbin/ldconfig
473 %postun -n brlapi -p /sbin/ldconfig
474
475 %files
476 %defattr(644,root,root,755)
477 %doc Documents/{Manual-BRLTTY/English/BRLTTY*,ChangeLog,HISTORY,TODO}
478 %doc doc/{Bindings,Bootdisks,BrailleDrivers,BrailleTables,ContractionTables,Patches,README,SpeechDrivers}
479 %attr(755,root,root) %{_bindir}/brltty
480 %attr(755,root,root) %{_bindir}/brltty-install
481 %attr(755,root,root) %{_bindir}/brltty-config
482 %attr(755,root,root) %{_bindir}/vstp
483 %{?with_x:%attr(755,root,root) %{_bindir}/xbrlapi}
484 %dir %{_libdir}/brltty
485 %attr(755,root,root) %{_libdir}/brltty/libbrlttybal.so
486 %attr(755,root,root) %{_libdir}/brltty/libbrlttybat.so
487 %attr(755,root,root) %{_libdir}/brltty/libbrlttybba.so
488 %attr(755,root,root) %{_libdir}/brltty/libbrlttybbd.so
489 %attr(755,root,root) %{_libdir}/brltty/libbrlttybbl.so
490 %attr(755,root,root) %{_libdir}/brltty/libbrlttybbm.so
491 %attr(755,root,root) %{_libdir}/brltty/libbrlttybbn.so
492 %attr(755,root,root) %{_libdir}/brltty/libbrlttybcb.so
493 %attr(755,root,root) %{_libdir}/brltty/libbrlttybec.so
494 %attr(755,root,root) %{_libdir}/brltty/libbrlttybeu.so
495 %attr(755,root,root) %{_libdir}/brltty/libbrlttybfs.so
496 %attr(755,root,root) %{_libdir}/brltty/libbrlttybht.so
497 %attr(755,root,root) %{_libdir}/brltty/libbrlttybil.so
498 %attr(755,root,root) %{_libdir}/brltty/libbrlttyblt.so
499 %attr(755,root,root) %{_libdir}/brltty/libbrlttybmb.so
500 %attr(755,root,root) %{_libdir}/brltty/libbrlttybmd.so
501 %attr(755,root,root) %{_libdir}/brltty/libbrlttybmn.so
502 %attr(755,root,root) %{_libdir}/brltty/libbrlttybpm.so
503 %attr(755,root,root) %{_libdir}/brltty/libbrlttybtn.so
504 %attr(755,root,root) %{_libdir}/brltty/libbrlttybts.so
505 %attr(755,root,root) %{_libdir}/brltty/libbrlttybtt.so
506 %attr(755,root,root) %{_libdir}/brltty/libbrlttybvd.so
507 %attr(755,root,root) %{_libdir}/brltty/libbrlttybvo.so
508 %attr(755,root,root) %{_libdir}/brltty/libbrlttybvr.so
509 %attr(755,root,root) %{_libdir}/brltty/libbrlttybvs.so
510 %{?with_x:%attr(755,root,root) %{_libdir}/brltty/libbrlttybxw.so}
511 %attr(755,root,root) %{_libdir}/brltty/libbrlttysal.so
512 %attr(755,root,root) %{_libdir}/brltty/libbrlttysbl.so
513 %attr(755,root,root) %{_libdir}/brltty/libbrlttyscb.so
514 %attr(755,root,root) %{_libdir}/brltty/libbrlttyses.so
515 %attr(755,root,root) %{_libdir}/brltty/libbrlttysfv.so
516 %attr(755,root,root) %{_libdir}/brltty/libbrlttysgs.so
517 %attr(755,root,root) %{_libdir}/brltty/libbrlttyxas.so
518 %attr(755,root,root) %{_libdir}/brltty/libbrlttyxlx.so
519 %attr(755,root,root) %{_libdir}/brltty/libbrlttyxsc.so
520 %{_sysconfdir}/brltty
521 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/brltty.conf
522 %{_mandir}/man1/brltty.1*
523 %{_mandir}/man1/vstp.1*
524
525 %files -n brlapi
526 %defattr(644,root,root,755)
527 %attr(755,root,root) %{_libdir}/libbrlapi.so.0.5
528 %attr(755,root,root) %{_libdir}/libbrlapi.so.0.5.1
529 %dir %{_libdir}/brlapi-0.5.1
530
531 %files -n brlapi-devel
532 %defattr(644,root,root,755)
533 %doc Documents/README.Gnopernicus
534 %doc Documents/Manual-BrlAPI/English/BrlAPI*
535 %attr(755,root,root) %{_libdir}/libbrlapi.so
536 %{_includedir}/brltty
537 %{_includedir}/brlapi*.h
538 %{_mandir}/man3/*
539
540 %files -n brlapi-static
541 %defattr(644,root,root,755)
542 %{_libdir}/libbrlapi.a
543
544 %if %{with apidocs}
545 %files -n brlapi-apidocs
546 %defattr(644,root,root,755)
547 %doc Documents/BrlAPIref/html/*
548 %endif
549
550 %if %{with java}
551 %files -n brlapi-java
552 %defattr(644,root,root,755)
553 %{_libdir}/java/libbrlapi_java.so
554 %{_javadir}/brlapi.jar
555 %endif
556
557 %if %{with python}
558 %files -n python-brlapi
559 %defattr(644,root,root,755)
560 %{py_sitedir}/Brlapi-*.egg-info
561 %attr(755,root,root) %{py_sitedir}/brlapi.so
562 %endif
563
564 %if %{with tcl}
565 %files -n brlapi-tcl
566 %defattr(644,root,root,755)
567 %attr(755,root,root) %{_libdir}/brlapi-0.5.1/libbrlapi_tcl.so
568 %{_libdir}/brlapi-0.5.1/pkgIndex.tcl
569 %endif
This page took 0.15006 seconds and 3 git commands to generate.