Tiny Core Linux
Tiny Core Extensions => TCE Bugs => Topic started by: GNUser on May 10, 2024, 04:36:42 PM
-
$ 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.
-
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.
-
Hi GNUser
Do you have both gnutls35.tcz and gnutls38.tcz in your
tce directory?
-
Hi Rich. Yes, and both of them are loaded:
$ tce-status -i | grep tls
gnutls35
gnutls38I'm not getting the error right now.
Both of these extensions were also loaded at the time I was getting the error.
-
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:
$ 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)
-
I narrowed it down to glib-networking.tcz. When it is loaded, I get the error.
-
glib-networking.tcz is the culprit. Error happens if glib-networking is loaded and /usr/local/lib/libgnutls.so.30 points to gnutls35:
$ 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:
$ 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 errorMy 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).
-
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:
/usr/local/lib/libgnutls.so
/usr/local/lib/libgnutls.so.30
/usr/local/lib/libgnutls.so.30.26.2
gnutls38.tcz contains:
/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.
-
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.
-
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:
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
-
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
-
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.
-
Hi Juanito
Supposing gnutls38 were changed to something like this:
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.0That should force the newer version when compiling and
still allow older programs to find the gnutls35 version.
-
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.
-
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.
-
Hi Juanito
... To force compiling against gnutls38, gnutls38-dev needs to be loaded before gnutls35-dev ...
Actually, I was thinking more along the lines of adding:
libgnutlsxx.so.28 -> libgnutlsxx.so.28.1.0
libgnutlsxx.so.28.1.0to gnutls38 and removing gnutls35 altogether.
Then change all of the gnutls35 dependencies to gnutls38.
Just a thought.
-
There's not too many extensions with a dep on gnutls35 left, but if you'd like to give it a go, please go ahead :)
-
Hi Juanito
I have the following modified files in staging ready to go:
ca-certificatesg.tcz.dep
gnutls38.tcz
gnutls38.tcz.info
gnutls38.tcz.list
gnutls38.tcz.md5.txt
gutenprint.tcz.dep
libavformat4.tcz.dep
libfilezilla.tcz.dep
libjcat.tcz.dep
libmicrohttpd.tcz.dep
libvirt.tcz.dep
mailutils.tcz.dep
mplayer-cli.tcz.dep
neatvnc.tcz.dep
qemu.tcz.dep
vino.tcz.dep
vte.tcz.dep
weechat.tcz.dep
wine.tcz.dep
wireshark.tcz.dep
I have the originals in a backup directory so they can quickly
be staged in case we want to undo this change.
Before I proceed, I want to make sure we don't outsmart ourselves.
The following -dev files still list gnutls35-dev.tcz:
curlg-dev.tcz.dep
ffmpeg4-dev.tcz.dep
libfilezilla-dev.tcz.dep
libjcat-dev.tcz.dep
libmicrohttpd-dev.tcz.dep
libvirt-dev.tcz.dep
mailutils-dev.tcz.dep
neatvnc-dev.tcz.dep
vlc-dev.tcz.dep
wireshark-dev.tcz.depDo we leave them as is? Remove them until they are updated?
Modify them? Something else?
I'll hold off running or canceling the update until I hear from you.
-
I would suggest removing gnutls35-dev from the *dev.tcz.dep files.
-
Hi Juanito
Updated *dev.tcz.dep files staged and originals backed up.
So *dev.tcz.dep files will not pull in any gnutls extensions.
If this all sounds right to you, I will move the gnutls35,tcz* and
and gnutls35-dev,tcz* files to my backup directory and run
the update.
-
Sounds good :)
-
Hi Juanito
Updates completed.
-
Hi GNUser
If you want to play the role of guinea pig:
Remove gnutls38.tcz from the beginning of your onboot.lst file.
Update your system
tce-audit builddb
tce-audit updatedeps
tce-audit fetchmissing
tce-update
exitcheck.sh reboot
After your machine reboots, gnutls35 extensions should be gone
and hopefully I didn't break anything.
If you have the space, maybe create a backup copy of your tce
directory just in case.
-
Hi Rich. I'm happy to serve as guinea pig. I can report everything is still humming after this refactoring.
Many thanks to you and to Juanito.
R.I.P. gnutls35