WelcomeWelcome | FAQFAQ | DownloadsDownloads | WikiWiki

Author Topic: gio (part of glib2.tcz) shows gnutls-related warning  (Read 2144 times)

Offline GNUser

  • Wiki Author
  • Hero Member
  • *****
  • Posts: 1511
gio (part of glib2.tcz) shows gnutls-related warning
« on: May 10, 2024, 04:36:42 PM »
Code: [Select]
$ gio info <any_binary_file>
/usr/local/lib/libgnutls.so.30: version `GNUTLS_3_7_4' not found (required by /usr/local/lib/gio/modules/libgiognutls.so)
Failed to load module: /usr/local/lib/gio/modules/libgiognutls.so
...
I just noticed this today. I think it's new with TCL15 x86_64.

Offline GNUser

  • Wiki Author
  • Hero Member
  • *****
  • Posts: 1511
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #1 on: May 10, 2024, 06:37:41 PM »
The error occurred when I was compiling something and had a lot of extensions loaded. When I boot using my usual (very minimal) onboot.lst, the error does not occur. Strange.

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11633
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #2 on: May 10, 2024, 07:59:01 PM »
Hi GNUser
Do you have both  gnutls35.tcz  and  gnutls38.tcz  in your
tce directory?

Offline GNUser

  • Wiki Author
  • Hero Member
  • *****
  • Posts: 1511
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #3 on: May 10, 2024, 08:36:26 PM »
Hi Rich. Yes, and both of them are loaded:
Code: [Select]
$ tce-status -i | grep tls
gnutls35
gnutls38
I'm not getting the error right now.

Both of these extensions were also loaded at the time I was getting the error.

Offline GNUser

  • Wiki Author
  • Hero Member
  • *****
  • Posts: 1511
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #4 on: May 10, 2024, 08:41:00 PM »
If I load gtk3-dev.tcz, the error shows up again.

On my system, these are the additional extensions that are loaded when I load gtk3-dev, so the culprit has to be one of these:

Code: [Select]
$ tce-load -wil gtk3-dev
gtk3-dev is already downloaded.
m4.tcz: OK
util-macros.tcz: OK
xorg-proto.tcz: OK
xcb-proto.tcz: OK
libXdmcp-dev.tcz: OK
libXau-dev.tcz: OK
libxcb-dev.tcz: OK
libxkbcommon-dev.tcz: OK
json-glib.tcz: OK
json-glib-dev.tcz: OK
util-linux-dev.tcz: OK
attr-dev.tcz: OK
libcap-dev.tcz: OK
acl-dev.tcz: OK
elogind-dev.tcz: OK
linux-pam.tcz: OK
linux-pam-dev.tcz: OK
icu67.tcz: OK
js78.tcz: OK
js78-dev.tcz: OK
expat2-dev.tcz: OK
polkit.tcz: OK
polkit-dev.tcz: OK
liblz4-dev.tcz: OK
liblzma-dev.tcz: OK
zstd.tcz: OK
zstd-dev.tcz: OK
libjpeg-turbo-bin.tcz: OK
libjpeg-turbo-dev.tcz: OK
libxshmfence-dev.tcz: OK
libpciaccess-dev.tcz: OK
libdrm-dev.tcz: OK
xtrans.tcz: OK
libX11-dev.tcz: OK
libXext-dev.tcz: OK
libXxf86vm-dev.tcz: OK
libXfixes-dev.tcz: OK
libXdamage-dev.tcz: OK
libGL-dev.tcz: OK
glu-dev.tcz: OK
libXrender-dev.tcz: OK
libXrandr-dev.tcz: OK
libXi-dev.tcz: OK
freeglut.tcz: OK
freeglut-dev.tcz: OK
tiff-bin.tcz: OK
tiff-dev.tcz: OK
libdaemon.tcz: OK
libdaemon-dev.tcz: OK
gcc_libs-dev.tcz: OK
font-util.tcz: OK
libxcvt-dev.tcz: OK
pixman-dev.tcz: OK
openssl-dev.tcz: OK
libxml2-python.tcz: OK
libxml2-bin.tcz: OK
libxml2-dev.tcz: OK
wayland-dev.tcz: OK
libEGL-dev.tcz: OK
libepoxy-dev.tcz: OK
libfontenc-dev.tcz: OK
graphite-dev.tcz: OK
harfbuzz-bin.tcz: OK
harfbuzz-dev.tcz: OK
libpng-bin.tcz: OK
libpng-dev.tcz: OK
freetype-dev.tcz: OK
libXfont2-dev.tcz: OK
xorg-server-dev.tcz: OK
xbitmaps.tcz: OK
libxkbfile-dev.tcz: OK
libXxf86dga-dev.tcz: OK
libXv-dev.tcz: OK
libXvmc-dev.tcz: OK
libXtst-dev.tcz: OK
libXss-dev.tcz: OK
libXres-dev.tcz: OK
libXinerama-dev.tcz: OK
fontconfig-dev.tcz: OK
libXft-dev.tcz: OK
libXcursor-dev.tcz: OK
libXcomposite-dev.tcz: OK
libXpm-dev.tcz: OK
libSM-dev.tcz: OK
libICE-dev.tcz: OK
libXt-dev.tcz: OK
libXmu-dev.tcz: OK
libXaw-dev.tcz: OK
libFS-dev.tcz: OK
makedepend.tcz: OK
Xorg-7.7-dev.tcz: OK
dbus-dev.tcz: OK
nss-mdns.tcz: OK
avahi.tcz: OK
avahi-dev.tcz: OK
qpdf.tcz: OK
libpoppler07.tcz: OK
cups-filters.tcz: OK
cups.tcz: OK
cups-dev.tcz: OK
libusb-dev.tcz: OK
libsane.tcz: OK
libsane-dev.tcz: OK
sqlite3-bin.tcz: OK
sqlite3-dev.tcz: OK
libgusb.tcz: OK
libgusb-dev.tcz: OK
lcms2-dev.tcz: OK
colord.tcz: OK
colord-dev.tcz: OK
libpsl.tcz: OK
libpsl-dev.tcz: OK
glib-networking.tcz: OK
libsoup.tcz: OK
libsoup-dev.tcz: OK
rest.tcz: OK
rest-dev.tcz: OK
fribidi-dev.tcz: OK
cairo-dev.tcz: OK
pango-dev.tcz: OK
at-spi2-core-dev.tcz: OK
gdk-pixbuf2-xlib-dev.tcz: OK
gdk-pixbuf2-dev.tcz: OK
gtk3-dev.tcz: OK

$ gio info test.txt
/usr/local/lib/libgnutls.so.30: version `GNUTLS_3_7_4' not found (required by /usr/local/lib/gio/modules/libgiognutls.so)
« Last Edit: May 10, 2024, 08:52:56 PM by GNUser »

Offline GNUser

  • Wiki Author
  • Hero Member
  • *****
  • Posts: 1511
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #5 on: May 10, 2024, 08:59:52 PM »
I narrowed it down to glib-networking.tcz. When it is loaded, I get the error.

Offline GNUser

  • Wiki Author
  • Hero Member
  • *****
  • Posts: 1511
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #6 on: May 10, 2024, 09:08:07 PM »
glib-networking.tcz is the culprit. Error happens if glib-networking is loaded and /usr/local/lib/libgnutls.so.30 points to gnutls35:
Code: [Select]
$ ls -l /usr/local/lib/libgnutls.so.30
lrwxrwxrwx    1 root     root            50 May 10 20:58 /usr/local/lib/libgnutls.so.30 -> /tmp/tcloop/gnutls35/usr/local/lib/libgnutls.so.30
$ gio info test.txt
/usr/local/lib/libgnutls.so.30: version `GNUTLS_3_7_4' not found (required by /usr/local/lib/gio/modules/libgiognutls.so)
Failed to load module: /usr/local/lib/gio/modules/libgiognutls.so

If glib-networking is loaded and /usr/local/lib/libgnutls.so.30 points to gnutls38, there is no error:
Code: [Select]
$ sudo rm /usr/local/lib/libgnutls.so.30
$ sudo ln -s /tmp/tcloop/gnutls38/usr/local/lib/libgnutls.so.30 /usr/local/lib/libgnutls.so.30
$ gio info test.txt
-> no error
My suggestion is for glib-networking.tcz to have a startup script that makes sure libgnutls.so.30 is pointing to gnutls38.

EDIT: It seems this is another example of an unintentional abi breakage between library versions with same major version number (similar to the ncurses issue).
« Last Edit: May 10, 2024, 09:18:43 PM by GNUser »

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11633
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #7 on: May 10, 2024, 09:16:05 PM »
Hi GNUser
I narrowed it down to glib-networking.tcz. When it is loaded, I get the error.
Well yeah. That's because it depends on seeing the correct version of libgnutls.so.

gnutls35.tcz contains:
Code: [Select]
/usr/local/lib/libgnutls.so
/usr/local/lib/libgnutls.so.30
/usr/local/lib/libgnutls.so.30.26.2

gnutls38.tcz contains:
Code: [Select]
/usr/local/lib/libgnutls.so
/usr/local/lib/libgnutls.so.30
/usr/local/lib/libgnutls.so.30.37.1

The dependency file for glib-networking.tcz lists gnutls38.tcz.
It's probably finding libgnutls.so from gnutls35.tcz.
Try swapping the load order for gnutls35.tcz and gnutls38.tcz.

Offline GNUser

  • Wiki Author
  • Hero Member
  • *****
  • Posts: 1511
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #8 on: May 10, 2024, 09:23:24 PM »
Try swapping the load order for gnutls35.tcz and gnutls38.tcz.
I don't load either extension manually--they are both brought in as dependencies. To swap the order I'd have to go through every extension that I load, figure out which ones bring in gnutls35 vs. gnutls38, and arrange my onboot.lst accordingly. This is too much work. (Plus I'd have to remember this issue any time in the future that I want to try a new extension with gnutls in the dependency tree.)

If a startup script in glib-networking is not the way to go, let's just let it go. I'll deal with this breakage when I bump into it.

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11633
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #9 on: May 10, 2024, 10:37:02 PM »
Hi GNUser
Add  gnutls38.tcz  to the beginning of your onboot.lst file.
See if any extensions that depend on  gnutls35.tcz  complain.
I'm hoping maybe  gnutls38.tcz  is backward compatible.

If it helps, the following have some dependency on  gnutls35.tcz.
I filtered out the -dev.tcz extensions to keep the lister shorter:
Code: [Select]
atom-apm.tcz.tree
atom-libs.tcz.tree
atom-locale.tcz.tree
atom.tcz.tree
audacious-plugins.tcz.tree
audacious.tcz.tree
auto-multiple-choice.tcz.tree
brave-browser.tcz.tree
ca-certificatesg.tcz.tree
chromium-browser.tcz.tree
colord-gir.tcz.tree
colord-gtk-gir.tcz.tree
colord-gtk.tcz.tree
colord.tcz.tree
cups-filters.tcz.tree
cups-pk-helper.tcz.tree
cups.tcz.tree
curlg.tcz.tree
cutechess.tcz.tree
devede.tcz.tree
easyprint.tcz.tree
ffmpeg4.tcz.tree
ffmpeg5.tcz.tree
ffmpegthumbnailer.tcz.tree
filezilla.tcz.tree
freerdp.tcz.tree
fwupd-gir.tcz.tree
fwupd.tcz.tree
gdm-gir.tcz.tree
gdm.tcz.tree
ghostscript.tcz.tree
gimagereader.tcz.tree
gimp-gir.tcz.tree
gimp-locale.tcz.tree
gimp.tcz.tree
gnome-boxes.tcz.tree
gnome-connections.tcz.tree
gnome-control-center.tcz.tree
gnome-internet-radio-locator.tcz.tree
gnome-network-displays.tcz.tree
gnome-remote-desktop.tcz.tree
gnome-session.tcz.tree
gnome-settings-daemon.tcz.tree
gnome-shell-extension-emoji-selector.tcz.tree
gnome-shell-extensions.tcz.tree
gnome-shell-extension-weather.tcz.tree
gnome-shell-gir.tcz.tree
gnome-shell.tcz.tree
gnome-tweaks.tcz.tree
gnutls35.tcz.tree
gst-libav.tcz.tree
gthumb.tcz.tree
gtk-frdp-gir.tcz.tree
gtk-frdp.tcz.tree
gutenprint-locale.tcz.tree
gutenprint.tcz.tree
gv.tcz.tree
hplip-plugins.tcz.tree
hplip.tcz.tree
iridium-browser.tcz.tree
kermit.tcz.tree
kodi.tcz.tree
libavdevice4.tcz.tree
libavdevice5.tcz.tree
libavfilter4.tcz.tree
libavfilter5.tcz.tree
libavformat4.tcz.tree
libavformat5.tcz.tree
libcups.tcz.tree
libfilezilla.tcz.tree
libgs.tcz.tree
libjcat-gir.tcz.tree
libjcat.tcz.tree
libmicrohttpd.tcz.tree
libreoffice.tcz.tree
libsane.tcz.tree
libspectre.tcz.tree
libvirt-glib-gir.tcz.tree
libvirt-glib.tcz.tree
libvirt-python3.6.tcz.tree
libvirt.tcz.tree
mailutils-locale.tcz.tree
mailutils.tcz.tree
miktex.tcz.tree
minidlna.tcz.tree
mplayer-cli.tcz.tree
mpv.tcz.tree
mutter-gir.tcz.tree
mutter.tcz.tree
neatvnc.tcz.tree
opencv.tcz.tree
opera-62.tcz.tree
pdfscale.tcz.tree
photoflare.tcz.tree
pianobar.tcz.tree
py3.6cups.tcz.tree
qemu-arm.tcz.tree
qemu.tcz.tree
qmplay2.tcz.tree
qpdf.tcz.tree
qt-5.x-all.tcz.tree
qt-5.x-bin.tcz.tree
qt-5.x-printsupport.tcz.tree
rpi-imager.tcz.tree
samba-python3.6.tcz.tree
samba.tcz.tree
shotcut.tcz.tree
simple-scan.tcz.tree
simplescreenrecorder.tcz.tree
subsurface.tcz.tree
system-config-printer.tcz.tree
timg.tcz.tree
totem-gir.tcz.tree
totem.tcz.tree
translate-shell.tcz.tree
ungoogled-chromium.tcz.tree
vinagre.tcz.tree
vino.tcz.tree
virt-manager.tcz.tree
vivaldi.tcz.tree
vlc-locale.tcz.tree
vlc.tcz.tree
vte-gir.tcz.tree
vte.tcz.tree
weechat.tcz.tree
wine.tcz.tree
wireshark.tcz.tree

Offline GNUser

  • Wiki Author
  • Hero Member
  • *****
  • Posts: 1511
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #10 on: May 10, 2024, 11:02:06 PM »
Add  gnutls38.tcz  to the beginning of your onboot.lst file.
That's a nice idea, thank you. It solves the problem without adding complexity to the system or a burden to my memory.
See if any extensions that depend on  gnutls35.tcz  complain.
None so far.
I'm hoping maybe  gnutls38.tcz  is backward compatible.
It seems so. Which raises an obvious question: If it turns out that gnutls38 is completely backward compatible, why do we need both gnutls35 and gnutls38 in the repo? It would be simpler to:

1. rename gnutls38.tcz to gnutls.tcz, rename gnutls38-dev.tcz to gnutls-dev.tcz
2. remove gnutls35.tcz and gnutls35-dev.tcz from the repo
3. make sure all .dep files that contain gnutls35{,-dev}.tcz or gnutls38{,-dev}.tcz are edited to contain gnutls{,-dev}.tcz
« Last Edit: May 10, 2024, 11:09:56 PM by GNUser »

Online Juanito

  • Administrator
  • Hero Member
  • *****
  • Posts: 14819
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #11 on: May 11, 2024, 03:29:49 AM »
gnutls38 is only semi-backwards compatible.with gnutls35.

Although both gnutls35 and gnutls38 contain libgnutls.so.30, gnutls35 contains libgnutlsxx.so.28 and gnutls38 contains libgnutlsxx.so.30. I'm not sure how many extensions have a dependency on libgnutlsxx, but there will be a problem if there are some that do.

I've been occupied with eliminating dependencies on openssl-1.1.1 and will now look again at eliminating dependencies on gnutls35 - the most pressing being libcups and libavformat.

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11633
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #12 on: May 11, 2024, 07:15:47 AM »
Hi Juanito
Supposing gnutls38 were changed to something like this:
Code: [Select]
libgnutlsxx.so -> libgnutlsxx.so.30.0.0
libgnutlsxx.so.30 -> libgnutlsxx.so.30.0.0
libgnutlsxx.so.30.0.0
libgnutlsxx.so.28 -> libgnutlsxx.so.28.1.0
libgnutlsxx.so.28.1.0
That should force the newer version when compiling and
still allow older programs to find the gnutls35 version.
« Last Edit: May 11, 2024, 03:14:28 PM by Rich »

Online Juanito

  • Administrator
  • Hero Member
  • *****
  • Posts: 14819
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #13 on: May 11, 2024, 08:00:11 AM »
My feeling is that those changes would lead to confusion.

To force compiling against gnutls38, gnutls38-dev needs to be loaded before gnutls35-dev or, failing that, the rootfs symlinks to gnutls35-dev can be removed and replaced with those of gnutls38-dev.

Offline GNUser

  • Wiki Author
  • Hero Member
  • *****
  • Posts: 1511
Re: gio (part of glib2.tcz) shows gnutls-related warning
« Reply #14 on: May 11, 2024, 08:23:14 AM »
gnutls38 is only semi-backwards compatible.with gnutls35.

Although both gnutls35 and gnutls38 contain libgnutls.so.30, gnutls35 contains libgnutlsxx.so.28 and gnutls38 contains libgnutlsxx.so.30. I'm not sure how many extensions have a dependency on libgnutlsxx, but there will be a problem if there are some that do.
This is crystal clear. Thank you for the clarification.