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