Using Distrobox to run older bibisect binaries on bleeding edge Linux distros

Ilmari Lauhakangas ilmari.lauhakangas at libreoffice.org
Mon Nov 14 06:41:18 UTC 2022


Last week after updating my Arch Linux I noticed all bibisect builds 
failed to run with:

loading component library 
<file:///home/user/bibisect-linux-64-7.4/instdir/program/../program/libsdlo.so> 
failed /home/tdf/lode/bibisect/core74/cppuhelper/source/shlib.cxx:311.

Thorsten also saw this on another rolling distro and I decided to look 
into using containers to run bibisect builds. While this seems to have 
been some buggy package update that has now been fixed, containers will 
still be useful as I've been unable to run anything older than 
LibreOffice 6.3 on this system for a long time.

There are a couple of options to run GUI apps in containers. One is 
https://github.com/mviereck/x11docker (which also supports Wayland 
despite the name). Another is https://github.com/89luca89/distrobox

I went with Distrobox and will document how I set things up. I should 
later add this to the wiki.

Install xhost package, on Arch it is called xorg-xhost.

Add to the ~/.bashrc of the host machine:
xhost +si:localuser:$USER

Create ~/distroboxhomes to store the home directories of the containers. 
Create subdirs for the container homes.

For running bibisect repos 5.2 and newer, I picked Fedora 30. In the 
init hooks I added libreoffice to broadly take care of dependencies.

distrobox create --name fedora30 --image fedora:30 --init-hooks "sudo 
dnf install -y git java-1.8.0-openjdk.x86_64 dbus-glib 
kf5-kcoreaddons.x86_64 kf5-ki18n.x86_64 kf5-kconfig.x86_64 
kf5-kwindowsystem.x86_64 kf5-kio.x86_64 libreoffice" --home 
$HOME/distroboxhomes/fedora30

In the .bash_profile of fedora30, I had to add

unset XDG_DATA_DIRS

Otherwise the gtk2/3 backends would not launch. I also added convenience 
aliases:

alias libogen='SAL_USE_VCLPLUGIN=gen instdir/program/soffice'
alias libogtk3='SAL_USE_VCLPLUGIN=gtk3 instdir/program/soffice'
alias libokf5='SAL_USE_VCLPLUGIN=kf5 instdir/program/soffice'

For the oldest bibisect repos, I ended up using CentOS 7 as I could not 
get older Ubuntu or Debian to run LibreOffice (was launched, but window 
was not painted).

distrobox create --name centos7 --image centos:7 --init-hooks "sudo yum 
install -y epel-release git java-1.7.0-openjdk.x86_64 
java-1.8.0-openjdk.x86_64 libreoffice libpng12" --home 
$HOME/distroboxhomes/centos7

In the centos7 .bash_profile, in addition to unset XDG_DATA_DIRS I 
included an alias that allows running the builds from 50max repo:

alias 
libo50='LD_PRELOAD=/usr/lib64/libcurl.so.4:/usr/lib64/libnss3.so:/usr/lib64/libnssutil3.so 
SAL_USE_VCLPLUGIN=gen opt/program/soffice'

For more efficient navigation in the command line with Ctrl to jump 
between word boundaries and deleting words, I created an .inputrc file 
in the centos7 home with:

# C-backspace
"\C-h": backward-kill-word

# C-delete
"\e[3;5~": kill-word

# Move with C-right, left
"\e[1;5C": forward-word
"\e[1;5D": backward-word

In fedora30 only Ctrl-Backspace binding was missing.

Now I can just run

distrobox enter fedora30

and go about my bibisecting.

For the container manager I use Podman. You can pick what you want by 
configuring: https://distrobox.privatedns.org/#configure-distrobox

Ilmari


More information about the LibreOffice mailing list