Build failure with libmatekbd from later than 1.27.0 release & built w/ meson
lukefromdc opened this issue · 25 comments
Expected behaviour
Build of mate-control-center from git master completes with libmatekbd from git master
Actual behaviour
build errors out with:
/usr/bin/ld: mate-keyboard-properties-xkbltadd.o: undefined reference to symbol 'matekbd_keyboard_config_merge_items'
Steps to reproduce the behaviour
Build and install libmatekbd from current git master
then configure mate-control-center and attempt to build. Configuration finishes, build fails
MATE general version
1.27.0 from git master
Package version
locally built from git master
Linux Distribution
Debian Unstable with locally built gtk-3.24.34 with gtk-classic patches for striped treeviews and locally built glib 2.74
Link to bugreport of your Distribution (requirement)
None as this is a local build
Hmm, we have definitively a so-name bump with libmatekbd.
new:
/usr/lib64/libmatekbd.so.6
/usr/lib64/libmatekbd.so.6.0.2
/usr/lib64/libmatekbdui.so.6
/usr/lib64/libmatekbdui.so.6.0.2
old:
%{_libdir}/libmatekbd.so.4*
%{_libdir}/libmatekbdui.so.4*
Related to mate-desktop/libmatekbd@bcbcc53
That means all packages which depends on libmatekbd needs to be rebuilt.
I will test now building mcc.
Edit:
mate-settings-daemon, mate-screensaver and mate-control-center are depending from libmatekbd.
I would rebuilt m-s-d first because it is a dependency from m-c-c too.
Building m-c-c from master with latest libmatekbd works well here with fedora 38 (building RPM's with mock build server and compiling by hand)
I choose this build order for re-building:
libmatekbd
mate-settings-daemon
mate-screensaver
mate-control-center
THAT must be what i missed: the dependency on m-s-d also depending on libmatekbd
Somehow I still got this build error (same as before)
A11Y ui-a11y.err
CCLD mate-keyboard-properties
/usr/bin/ld: mate-keyboard-properties-xkbltadd.o: undefined reference to symbol 'matekbd_keyboard_config_merge_items'
/usr/bin/ld: /lib/x86_64-linux-gnu/libmatekbd.so.6: error adding symbols: DSO missing from command line
Ok, that this should be test by another person who use debian.
With fedora i can't reproduce it.
I'm getting the same error on Debian bookworm, with current git master of libmatekbd and mate-control-center.
This seems to be a regression from mate-desktop/libmatekbd@aa2e787, as building libmatekbd with the Makefile resolves this for me.
Please read my previous comment. The build order is important with a soname bump.
Please read my previous comment. The build order is important with a soname bump.
I did build them it that order (on a fresh Debian install), but the meson build yielded the same error.
The autogen.sh procedure works.
That 's would be new to build m-c-c with meson.
I can confirm that rebuilding libmatekbd from current git master with autotools allows mate-control-center's build to finish and the "keyboard" capplet to run as expected after installation. Changed the name of this report to reflect this fact.,
@zhuyaliang
Can you take a look at it why libmatekbd build with meson caused this issue, please?
Seems a regression of the support of meson build system.
I'd like to make a new release after so-name bump.
@raveit65 Okay, I'll solve this problem later
@lukefromdc
I have no replication issues using Ubuntu
. Please run the following command and check the output
cat /usr/lib/x86_64-linux-gnu/pkgconfig/libmatekbd.pc
ls -l /usr/lib/x86_64-linux-gnu/libmatekbd*
grep -rin LIBMATEKBDUI_LIBS mate-control-center/capplets/keyboard/Makefile
If I reinstall the libmatekbd package I built with meson, m-c-c will run with it installed, just had to be BUILT over libmatekbd built with autotools. Also confirmed the issue still exists after yesterday's Debian Sid updates
With the meson version installed I get these outputs from the first two test commands:
luke@ubuntu:~$ cat /usr/lib/x86_64-linux-gnu/pkgconfig/libmatekbd.pc
prefix=/usr
includedir=${prefix}/include
libdir=${prefix}/lib/x86_64-linux-gnu
Name: libmatekbd
Description: MATE keyboard shared library
Version: 1.27.0
Requires.private: glib-2.0 >= 2.45.0, gobject-2.0 >= 2.45.0, gio-2.0 >= 2.25.0, gdk-3.0 >= 3.22.0, gtk+-3.0 >= 3.22.0, x11, libxklavier >= 5.2
Libs: -L${libdir} -lmatekbd
Cflags: -I${includedir}
luke@ubuntu:~$
luke@ubuntu:~$ ls -l /usr/lib/x86_64-linux-gnu/libmatekbd*
lrwxrwxrwx 1 root root 15 Jul 12 12:05 /usr/lib/x86_64-linux-gnu/libmatekbd.so -> libmatekbd.so.6
lrwxrwxrwx 1 root root 19 Jul 12 12:05 /usr/lib/x86_64-linux-gnu/libmatekbd.so.6 -> libmatekbd.so.6.0.2
-rwxr-xr-x 1 root root 92616 Jul 12 12:05 /usr/lib/x86_64-linux-gnu/libmatekbd.so.6.0.2
lrwxrwxrwx 1 root root 17 Jul 12 12:05 /usr/lib/x86_64-linux-gnu/libmatekbdui.so -> libmatekbdui.so.6
lrwxrwxrwx 1 root root 21 Jul 12 12:05 /usr/lib/x86_64-linux-gnu/libmatekbdui.so.6 -> libmatekbdui.so.6.0.2
-rwxr-xr-x 1 root root 362672 Jul 12 12:05 /usr/lib/x86_64-linux-gnu/libmatekbdui.so.6.0.2
luke@ubuntu:~$
Third command required slight modification for a renamed build directory, got this output:
230703$ grep -rin LIBMATEKBDUI_LIBS capplets/keyboard/Makefile
314:LIBMATEKBDUI_LIBS = -lmatekbdui
476:mate_keyboard_properties_LDADD = $(MATECC_CAPPLETS_LIBS) $(LIBMATEKBDUI_LIBS)
luke@ubuntu:~/Desktop/Development/MATE_Development_Work/mate-control-center_1.27.0+git20230703$
Attaching a tarball with mate-control-center/capplets/keyboard/Makefile from the m-c-c build directory from a failed build. Note that configuration completed, the build errored out
Makefile.tar.gz
@lukefromdc Thank you very much for the detailed information provided. The issue has been identified,Missing libmatekbd link in Makefile,Please manually add link testing first.
LIBMATEKBDUI_LIBS = -lmatekbdui -lmatekbd
The problem may be in configure.ac
, and I will continue to investigate the cause of the problem
@raveit65 Sorry, I currently only have time in the evening, so resolving the issue will be delayed
@lukefromdc Please run the command and check the output
cat /usr/lib/x86_64-linux-gnu/pkgconfig/libmatekbdui.pc
[test@localhost mate-control-center]$ pkg-config --libs "libmatekbdui >= 1.17"
-lmatekbdui -lmatekbd -Wl,--export-dynamic -lgmodule-2.0 -pthread -lglib-2.0 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lcairo -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lxklavier
[test@localhost mate-control-center]$ pkg-config --libs "libmatekbd >= 1.17"
-lmatekbd -Wl,--export-dynamic -lgmodule-2.0 -pthread -lglib-2.0 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lcairo -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lxklavier
[test@localhost mate-control-center]$
Latest command with a meson build installed yielded:
prefix=/usr
includedir=${prefix}/include
libdir=${prefix}/lib/x86_64-linux-gnu
Name: libmatekbdui
Description: MATE keyboard shared library
Version: 1.27.0
Requires.private: libmatekbd, glib-2.0 >= 2.45.0, gobject-2.0 >= 2.45.0, gio-2.0 >= 2.25.0, gdk-3.0 >= 3.22.0, gtk+-3.0 >= 3.22.0, x11, libxklavier >= 5.2
Libs: -L${libdir} -lmatekbdui
Libs.private: -lm
Cflags: -I${includedir}
luke@ubuntu:~$
@lukefromdc
Please replace Requires.private
with Requires
in the libmatekbdui.pc
file
luke@ubuntu:~$ cat /usr/lib/x86_64-linux-gnu/pkgconfig/libmatekbdui.pc
prefix=/usr
includedir=${prefix}/include
libdir=${prefix}/lib/x86_64-linux-gnu
Name: libmatekbdui
Description: MATE keyboard shared library
Version: 1.27.0
Requires: libmatekbd, glib-2.0 >= 2.45.0, gobject-2.0 >= 2.45.0, gio-2.0 >= 2.25.0, gdk-3.0 >= 3.22.0, gtk+-3.0 >= 3.22.0, x11, libxklavier >= 5.2
Libs: -L${libdir} -lmatekbdui
Libs.private: -lm
Cflags: -I${includedir}
luke@ubuntu:~$
@lukefromdc Please try compiling the mate-control-center
again to verify if the problem is resolved
Cleaned the build directory, reconfigured and this time the build finished
@raveit65 @lukefromdc The problem is in libmatekbd
, I will fix it as soon as possible
Thanks, will test it when you do
Now, with the soname bumb we will want to release a new minor version