Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build failure with libmatekbd from later than 1.27.0 release & built w/ meson #707

Closed
lukefromdc opened this issue Jun 17, 2023 · 25 comments · Fixed by mate-desktop/libmatekbd#86

Comments

@lukefromdc
Copy link
Member

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

@raveit65
Copy link
Member

raveit65 commented Jul 3, 2023

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.

@raveit65
Copy link
Member

raveit65 commented Jul 3, 2023

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

@lukefromdc
Copy link
Member Author

THAT must be what i missed: the dependency on m-s-d also depending on libmatekbd

@lukefromdc
Copy link
Member Author

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

@raveit65
Copy link
Member

raveit65 commented Jul 4, 2023

Ok, that this should be test by another person who use debian.
With fedora i can't reproduce it.

@janso3
Copy link

janso3 commented Jul 9, 2023

I'm getting the same error on Debian bookworm, with current git master of libmatekbd and mate-control-center.

@janso3
Copy link

janso3 commented Jul 9, 2023

This seems to be a regression from mate-desktop/libmatekbd@aa2e787, as building libmatekbd with the Makefile resolves this for me.

@raveit65
Copy link
Member

raveit65 commented Jul 9, 2023

Please read my previous comment. The build order is important with a soname bump.

@janso3
Copy link

janso3 commented Jul 9, 2023

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.

@raveit65
Copy link
Member

raveit65 commented Jul 9, 2023

That 's would be new to build m-c-c with meson.

@lukefromdc lukefromdc changed the title Build failure with libmatekbd from later than 1.27.0 release Build failure with libmatekbd from later than 1.27.0 release & built w/ meson Jul 9, 2023
@lukefromdc
Copy link
Member Author

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.,

@raveit65
Copy link
Member

raveit65 commented Jul 11, 2023

@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.

@zhuyaliang
Copy link
Member

@raveit65 Okay, I'll solve this problem later

@zhuyaliang
Copy link
Member

@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

@lukefromdc
Copy link
Member Author

lukefromdc commented Jul 12, 2023

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

@zhuyaliang
Copy link
Member

@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

@zhuyaliang
Copy link
Member

zhuyaliang commented Jul 13, 2023

@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]$ 

@lukefromdc
Copy link
Member Author

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:~$

@zhuyaliang
Copy link
Member

@lukefromdc
Please replace Requires.private with Requires in the libmatekbdui.pc file

@lukefromdc
Copy link
Member Author

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:~$

@zhuyaliang
Copy link
Member

@lukefromdc Please try compiling the mate-control-center again to verify if the problem is resolved

@lukefromdc
Copy link
Member Author

Cleaned the build directory, reconfigured and this time the build finished

@zhuyaliang
Copy link
Member

@raveit65 @lukefromdc The problem is in libmatekbd , I will fix it as soon as possible

@lukefromdc
Copy link
Member Author

Thanks, will test it when you do

@lukefromdc
Copy link
Member Author

Now, with the soname bumb we will want to release a new minor version

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants