[BRLTTY] Packaging questions

Didier Spaier didier at slint.fr
Wed Oct 25 13:38:02 EDT 2017


(I sent this answer to Peter only at first, sorry). 

Hello Peter,

nice to meet you on this list too ;)

Le 25/10/2017 à 17:57, Peter Vágner a écrit :
> After reading about these two issues related to the relativelly new polkit
> authorization / authentification support [1], [2] I wanted to suggest that
> Arch linux brltty package should be modernized to take advantage of new
> features and integrate better with the rest of the system.
> However in the process I've discovered even more issues and I think I'm
> getting lost in the chain of dependencies.

I don't see links associated to the number under brackets like [1].
Maybe you forgot to append them? 

> Currently arch linux packages are built in chroot so only the dependencies
> listed inside the PKGBUILD script are picked by the build system
> configuration (that is autotools in brltty's case). There is an exception
> to this though. Packages that are part of base and base-devel groups of
> packages are all installed. So all base packages can be used as a runtime
> dependencies and all base-devel packages can be used as a build time
> dependencies.
> Currently these are specified as runtime dependencies: libxaw gpm icu tcl
> bluez-libs espeak
> And these as build time dependencies: at-spi2-core tcl speech-dispatcher
> cython
> 
> Configure is ran like this on arch linux
>   ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
>     --mandir=/usr/share/man \
>     --with-tables-directory=/usr/share/brltty \
>     --with-screen-driver=lx \
>     --enable-gpm \
>     --disable-java-bindings \
> Should this be reconsidered? I assume linux driver is specific to linux and
> there are drivers for other platforms such as Android or Windows that are
> not suitable for linux for example. Should we rather rely on auto detection
> here? At-spi2 driver might be clashing with orca. Are there cases where
> it's usefull? What about screen driver? When using linux driver and running
> screen on a tty is the screen output accessible to brltty or should both
> drivers be in use in such a case? Or is the screen screen driver only
> suitable when running on a mac as indicated by many of the email list
> discussions?

Well, I don't know the Arch build system but generally speaking it's
safe no to include options unless you want to exclude some stuff from the
package, and configure will just build according to the installed deps
at that time in the host system. Let me give two examples.

1) In the installed Slint that you know the package is configured so:
cut here
# Let's help to find the headers shipped with speech-dispatcher
CPPFLAGS="-I/usr/include -I/usr/include/speech-dispatcher" \
PYTHON=/usr/bin/python3 \
./configure \
  --prefix=/usr \
  --bindir=/bin \
  --sbindir=/sbin \
  --libdir=/lib${LIBDIRSUFFIX} \
  --infodir=/usr/info \
  --mandir=/usr/man \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --disable-java-bindings \
  --build=$ARCH-slackware-linux | tee LOG
cut here

As a result and because I build on a full Slint system I get in the LOG
file attached (stripped from all the rest) a configuration summary that
shows that the resulting package include everything plus the kitchen
sink.

2) In the installer the package is stripped down this way:
./configure \
  --prefix=/usr \
  --bindir=/bin \
  --sbindir=/sbin \
  --libdir=/lib${LIBDIRSUFFIX} \
  --infodir=/usr/info \
  --mandir=/usr/man \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --build=$ARCH-slint-linux \
  --disable-contracted-braille \
  --disable-speech-support \
  --disable-icu \
  --disable-x \
  --disable-gpm \
  --disable-api \
  --disable-ocaml-bindings \
  --disable-java-bindings \
  --disable-lisp-bindings \
  --disable-python-bindings \
  --disable-tcl-bindings \
  --disable-polkit \
  --with-pcm-package=no \
  --with-midi-package=no \
  --with-fm-package=no \
  --with-curses=ncurses \
  --with-bluetooth-package=no

As you see we don't include the bindings, all stuff needed for speech
support (as we use speakup instead), polkit (we are root during
installation), etc.

> I have run ./configure to see which packages it checks for so I can try to
> come up with clear suggestions on what to add or change.
> 
> linuxdoc and doxygen sound to me as they would suit well as build time
> dependencies for building the documentation. Have you a recommendation for
> me whether docs built with these two packages should be included as a part
> of the binary package? I guess doxygen docs are developer documentation for
> the API's and linuxdoc is the user documentation. Is this correct?
> 
> Polkit is not currently being used on Arch linux and because of the two
> already mentioned issues that prompted me to look into this, we can say we
> definatelly would like to get it added as a runtime dependency. Now a
> related question: I am currently running arch brltty package with no polkit
> support compiled in. When connecting to brlapi in python, I'm getting this
> exception:
>>>> import brlapi
>>>> ba=brlapi.Connection()
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "brlapi.pyx", line 304, in brlapi.Connection.__init__
> (brlapi.auto.c:5039
> )
> brlapi.ConnectionError: couldn't connect to b':0' with key
> b'polkit+keyfile:/etc
> /brlapi.key': b'connect: No such file or directory'
> (brlerrno 11, libcerrno 2, gaierrno 0)
> Is BRLTTY really running?
> I know brlapi server is not running as I have no braille display connected
> and since brltty 3.5 brlapi server is not started in such a case.

You can use the tty device like in this example:
brltty -b tt -d /dev/tty12 and you will get the output on /dev/tty12
Thanks again Samuel for the tip!

I wan' answer beyond ythis pint by lack of knowledge

Greetings,

Didier

PS I will upload a Slint64-14.2.1RC2 ISO real soon now, then wait a few
days for comments. Peter, I will be especially eager to hear from you ;)

-------------- next part --------------
config.status: Options Summary:
   execute-root: 
   install-root: 
   libdir: /lib64
   sysconfdir: /etc
   program-directory: /bin
   drivers-directory: /lib64/brltty
   writable-directory: /var/run/brltty
   tables-directory: /etc/brltty
   manpage-directory: /usr/man
   include-directory: ${prefix}/include/brltty
   init-path: 
   stderr-path: 
   standalone-programs: no
   i18n: yes
   icu: yes
   iconv: yes
   polkit: yes
   api: yes
   api-parameters: 
   java-bindings: no
   lisp-bindings: yes
   ocaml-bindings: yes
   python-bindings: yes
   tcl-bindings: yes
   api-socket-path: /var/lib/BrlAPI
   curses-package: ncursesw
   x: yes
   gui-toolkit-package: Xaw
   system-package: linux
   contracted-braille: yes
   gpm: yes
   pgmpath-package: linux
   service-package: none
   params-package: linux
   dynld-package: dlfcn
   charset-package: iconv
   hostcmd-package: unix
   mntpt-package: mntent
   mntfs-package: linux
   kbd-package: linux
   bell-package: linux
   leds-package: linux
   beep-package: linux
   pcm-package: alsa
   midi-package: alsa
   fm-package: adlib
   serial-package: termios
   usb-package: linux
   bluetooth-package: linux
   ports-package: glibc
   libbraille-root: 
   external-braille-drivers: al at ba bc bd bl bm bn cb ce ec eu fs hd hm ht hw ir lt mb md mm mn mt np pg pm sk tn ts tt vd vo vr vs xw bg
   internal-braille-drivers: 
   braille-parameters: 
   braille-device: usb:,bluetooth:
   text-table: en-nabcc
   attributes-table: left_right
   speech-support: yes
   espeak-root: /usr
   flite-root: 
   mikropuhe-root: 
   speechd-root: yes
   swift-root: 
   theta-root: 
   viavoice-root: 
   external-speech-drivers: al bl cb es fv gs sd xs
   internal-speech-drivers: 
   speech-parameters: 
   external-screen-drivers: lx sc a2
   internal-screen-drivers: 
   screen-parameters: 
   screen-driver: lx
   relocatable-install: no
   stripping: yes


More information about the BRLTTY mailing list