Using gtksourceview4

I fixed a few things in gedit’s snapcraft file from its git master repo. When I tried running it, I got this error:

$ snap run gedit
gedit: error while loading shared libraries: libgtksourceview-4.so.0:
 cannot open shared object file: No such file or directory

So I tried building gnome-calculator (which also switched to gtksourceview4 this development cycle) and I get the same error.

How do we fix this?

Also can we detect this problem during the build instead of at runtime?

1 Like

You might want to check if the gnome-3-26-1604 content snap has ship this library, if not try adding it via the use of stage-packages key.

Ok, I tried this with gnome-calculator (since it’s a bit faster to work with than gedit:

--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
       - libmpfr-dev
       - valac
       - yelp-tools
+    stage-packages:
+      - libgtksourceview-4-dev
     prime:
       - "-usr/lib/gnome-calculator/libcalculator.a"
       - "-usr/share/appdata"

log excerpt

Priming gnome-calculator 
The linker version '2.23' used by the base 'core' is incompatible with files in this snap:
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/lib/x86_64-linux-gnu/libbsd.so.0.9.1 (2.25)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/lib/x86_64-linux-gnu/libexpat.so.1.6.8 (2.25)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/lib/x86_64-linux-gnu/libfdisk.so.1.1.0 (2.25)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/lib/x86_64-linux-gnu/libuuid.so.1.3.0 (2.25)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/lib/x86_64-linux-gnu/security/pam_systemd.so (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/bin/make (2.27)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/bin/python3.7 (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/bin/python3.7m (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/bin/x86_64-linux-gnu-ld.bfd (2.27)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/dconf/dconf-service (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/python3.7/lib-dynload/ossaudiodev.cpython-37m-x86_64-linux-gnu.so (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/i915_dri.so (2.27)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/i965_dri.so (2.27)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/kms_swrast_dri.so (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/nouveau_vieux_dri.so (2.27)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/r200_dri.so (2.27)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/r300_dri.so (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/r600_dri.so (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/radeon_dri.so (2.27)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/swrast_dri.so (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/virtio_gpu_dri.so (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libEGL_mesa.so.0.0.0 (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0 (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (2.25)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1.0.0 (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libexpatw.so.1.6.8 (2.25)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libgbm.so.1.0.0 (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libgnutls.so.30.23.0 (2.25)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 (2.27)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libp11-kit.so.0.3.0 (2.26)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libperl.so.5.28.1 (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6 (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libxml2.so.2.9.4 (2.28)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0 (2.27)
    /home/jeremy/devel/git.gnome.org/gnome-calculator/prime/usr/lib/x86_64-linux-gnu/perl/5.28.1/auto/IO/IO.so (2.28)

My development system is running disco which I guess is my problem here. What do you suggest we do now?

As you’ve noticed, you have to build the snap package on the same Ubuntu release of the Ubuntu Core system the snap’s targeting, which is currently Ubuntu 16.04, you can:

  • Build the snap in an Ubuntu 16.04 LXD container, install LXD and export the SNAPCRAFT_BUILD_ENVIRONMENT environment variable with the value lxd set and run snapcraft then Snapcraft should do the thing.
    NOTE: This feature is no longer supported in the new snapcraft syntax(if your recipe don’t have the base key set, you’re using the legacy syntax)
  • Build the snap in an Ubuntu 16.04 VM, any hypervisor should do but you may want to try CanonicalLtd/multipass: Multipass orchestrates virtual Ubuntu instances

Thank you for your help. I managed to get gedit and gnome-calculator master to build with gtksourceview4. It ended up being quite a bit more complicated than I expected.

1 Like