Subject: bug#35625: Python3 Cannot Find Existing Shared Library within guix environment

From: Gábor Boskovits <[email-masked]>
Date: Wed, 8 May 2019 14:38:02 +0200

Hello Jesse,

Jesse Gibbons <[email-masked]> ezt írta (időpont: 2019. máj. 8.,
Sze, 0:33):

> I brought this to the help mailing list, and now I see it as a
> particular bug in guix. When I change into a guix environment and try
> to run a Python project that uses the WebKitGTK2 library, it cannot
> find the specified shared library, even though it is in $LIBRARY_PATH.
> As a result, the project crashes. This does not happen when I call guix
> build. On a side note, guix build fails due to another error (possibly
> related).
>
> Thanks in advance for looking into this.
> -Jesse
>
>
> Package Definition:
> #!
> see https://github.com/jendrikseipp/rednotebook
> !#
> (define-module (custom packages rednotebook)
>   #:use-module (guix packages)
>   #:use-module (guix download)
>   #:use-module (guix build-system python)
>   #:use-module (guix licenses))
> (define-public rednotebook
>
>   (package
>    (name "rednotebook")
>    (version "2.11.1")
>    (source
>     (origin
>      (method url-fetch)
>      (uri (string-append
>            "https://github.com/jendrikseipp/rednotebook/archive/v"
>            version
>            ".tar.gz"))
>      (sha256
>       (base32
>        "15n1ziypfj3lzpvhha7r637zrb259l9yrcsvkic9cg5mndiaivs3"))))
>    (build-system python-build-system)
>    (inputs
>     `(("python" ,(@ (gnu packages python) python-3))))
>    (propagated-inputs
>     `(("python-pygobject"
>        ,(@ (gnu packages glib) python-pygobject))
>       ("gtk+" ,(@ (gnu packages gtk) gtk+))
>       ("gtksourceview"
>        ,(@ (gnu packages gtk) gtksourceview-3))
>       ("webkitgtk"
>        ,(@ (gnu packages webkit) webkitgtk-2.24))
>       ("python-pyyaml"
>        ,(@ (gnu packages python-xyz) python-pyyaml))))
>    (home-page "https://www.rednotebook.app")
>    (synopsis #f)
>    (description
>     "RedNotebook is a modern desktop journal. It lets you format, tag and
> search your entries. You can also add pictures, links and customizable
> templates, spell check your notes, and export to plain text, HTML, Latex or
> PDF.")
>    (license gpl2+))
>   )
>
>
> Program log (streams merged):
> Adding /home/jesse/Documents/rednotebook/rednotebook-2.11.1 to sys.path
> 2019-05-07 16:15:41,122 INFO     Writing log to file
> "/home/jesse/.rednotebook/rednotebook.log"
> 2019-05-07 16:15:41,122 INFO     System encoding: utf-8
> 2019-05-07 16:15:41,122 INFO     Language code: None
> rednotebook/journal.py:161: PyGIDeprecationWarning: Since version 3.11,
> calling threads_init is no longer needed. See:
> https://wiki.gnome.org/PyGObject/Threading
>   GObject.threads_init()
> 2019-05-07 16:15:41,182 WARNING  For spell checking, please install
> enchant (python3-enchant).
>
> ** (journal.py:2179): WARNING **: 16:15:41.209: Failed to load shared
> library 'libwebkit2gtk-4.0.so.37' referenced by the typelib:
> libwebkit2gtk-4.0.so.37: cannot open shared object file: No such file or
> directory
>
> ** (journal.py:2179): WARNING **: 16:15:41.209: Failed to load shared
> library 'libjavascriptcoregtk-4.0.so.18' referenced by the typelib:
> libjavascriptcoregtk-4.0.so.18: cannot open shared object file: No such
> file or directory
> /gnu/store/kz1d84nv5rlqdf415i16wz8zvf492l1c-profile/lib/python3.7/site-packages/gi/types.py:226:
> Warning: cannot derive 'rednotebook+gui+browser+Browser' from non-derivable
> parent type 'void'
>   _gi.type_register(cls, namespace.get('__gtype_name__'))
> Traceback (most recent call last):
>   File "rednotebook/journal.py", line 168, in <module>
>     from rednotebook.gui.main_window import MainWindow
>   File
> "/home/jesse/Documents/rednotebook/rednotebook-2.11.1/rednotebook/gui/main_window.py",
> line 45, in <module>
>     from rednotebook.gui import browser
>   File
> "/home/jesse/Documents/rednotebook/rednotebook-2.11.1/rednotebook/gui/browser.py",
> line 41, in <module>
>     class Browser(WebKit2.WebView):
>   File
> "/gnu/store/kz1d84nv5rlqdf415i16wz8zvf492l1c-profile/lib/python3.7/site-packages/gi/types.py",
> line 235, in __init__
>     super(GObjectMeta, cls).__init__(name, bases, dict_)
>   File
> "/gnu/store/kz1d84nv5rlqdf415i16wz8zvf492l1c-profile/lib/python3.7/site-packages/gi/types.py",
> line 214, in __init__
>     cls._type_register(cls.__dict__)
>   File
> "/gnu/store/kz1d84nv5rlqdf415i16wz8zvf492l1c-profile/lib/python3.7/site-packages/gi/types.py",
> line 226, in _type_register
>     _gi.type_register(cls, namespace.get('__gtype_name__'))
> RuntimeError: could not create new GType: rednotebook+gui+browser+Browser
> (subclass of void)
>
> So it seems that the guix environment  misses some environment variables.
Can you check if this is still the case, when you keep the build output
using guix build --keep-failed --check, and then guix environment
<package>, and source the environment variables dropped at the kept build
directory?

If that helps, then can you send the two environments?