Open kloczek opened 9 months ago
Looks like below patch fixes this issue
--- a/configure.ac
+++ b/configure.ac
@@ -55,6 +55,7 @@
PKG_CHECK_MODULES(SESSION_PROPERTIES,
glib-2.0 >= $GLIB_REQUIRED
+ gio-unix-2.0 >= $GLIB_REQUIRED
gtk+-3.0 >= $GTK_REQUIRED
)
Please let me know if you want this as PR.
Please show me your spec file. Or take a look at mine. https://src.fedoraproject.org/rpms/mate-session-manager/blob/rawhide/f/mate-session-manager.spec I was able to build m-s-m without any problem for f40 and rawhide. https://koji.fedoraproject.org/koji/buildinfo?buildID=2408391 https://koji.fedoraproject.org/koji/buildinfo?buildID=2408388
Please show me your spec file. Or take a look at mine.
https://src.fedoraproject.org/rpms/mate-session-manager/blob/rawhide/f/mate-session-manager.spec I was able to build m-s-m without any problem for f40 and rawhide. https://koji.fedoraproject.org/koji/buildinfo?buildID=2408391 https://koji.fedoraproject.org/koji/buildinfo?buildID=2408388
Fedora has a lot indirect dependencies caused by well known bug in pkgconfig dependencies generator. https://github.com/rpm-software-management/rpm/blob/master/scripts/pkgconfigdeps.sh#L42-L60
As you see it is used here $pkgconfig --print-requires --print-requires-private
which is causing that to the REQUIRES are added dependencies used on STATIC LINKING.
From https://people.freedesktop.org/~dbn/pkg-config-guide.html
Since pkg-config always exposes the link flags of the Requires libraries, these modules will become direct dependencies of the program. On the other hand, libraries from Requires.private will only be included when static linking. For this reason, it is usually only appropriate to add modules from the same package in Requires.
This causes that if .pc file contains Requires.private: foo
that foo
is added to -devel REQUIRES.
At the same time PKG_CHECK_MODULES()
aclocal macro executes pkgconf with only --print-requires
.
I've been wrtiting about that issue MANY times in last FOUR YEARS. No one want to listen about that.
Now that issue affects even latest pkgconfig. My recent comment about that you can read about that on https://github.com/pkgconf/pkgconf/issues/321
This Issue with indirect dependencies is very CLEARLY visible as mate-session-manager is using gio-unix-2.0
header files and is NOT CHECKING dependencies about that pkgconfig API (gio-unix-2.0
has in its Cflags:
own base path with its headers).
Weird, for me it works without adding gio-unix-2.0 >= $GLIB_REQUIRED
.
No, idea, another team member should take a look at it.
Edit:
BuildRequires: dbus-glib-devel
was all what i need in my spec file.
BuildRequires: dbus-glib-devel was all what i need in my spec file.
Which is equivalent of pkgconfig(dbus-glib-1)
which actually is required in configure.ac
PKG_CHECK_MODULES(DBUS_GLIB, dbus-glib-1 >= $DBUS_GLIB_REQUIRED)
Just check in which one .pc file in build env you have gio-unix-2.0
in Requires.private:
.
As I mentioned in pkgconfig ticket I have no at all any .pc files with Requires.private:
because that field suppose to be used ONLY on STATIC LINKIG (and I have no any static libraries in my distro).
We do not use static linking in official fedora Mate. And my build works fine. https://koji.fedoraproject.org/koji/buildinfo?buildID=2408391 https://koji.fedoraproject.org/koji/buildinfo?buildID=2408388
We do not use static linking in official fedora Mate. And my build works fine.
No one wrote anything which may point on something like that (and not me as well).
I've QUOTED only that all *.private:
are for static linking which IPLIES that use those fields by rpm dependencies generator is WRONG and cases MANY other issues which this one is only yet-another-ripple on that buggy pond.
Did you check what you have in .pc files in mate-session-manager
build env as I've asked to check that? 🤔
No one wrote anything which may point on something like that (and not me as well).
We reached a level which i don't like , bye! You can check that for yourself. Download the package from koji site and open it with engrampa.
Looks like mate-session-manager uses
gio-unix-2.0
becausebuild fails with
```console [tkloczko@pers-jacek mate-session-manager-1.28.0]$ make -k make all-recursive make[1]: Entering directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0' Making all in po make[2]: Entering directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/po' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/po' Making all in mate-submodules make[2]: Entering directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/mate-submodules' Making all in libegg make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/mate-submodules/libegg' make[3]: Nothing to be done for 'all'. make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/mate-submodules/libegg' make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/mate-submodules' make[3]: Nothing to be done for 'all-am'. make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/mate-submodules' make[2]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/mate-submodules' Making all in mate-session make[2]: Entering directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/mate-session' make all-am make[3]: Entering directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/mate-session' make[3]: Nothing to be done for 'all-am'. make[3]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/mate-session' make[2]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/mate-session' Making all in capplet make[2]: Entering directory '/home/tkloczko/rpmbuild/BUILD/mate-session-manager-1.28.0/capplet' CC gsm-properties-dialog.o In file included from gsm-properties-dialog.c:35: msm-desktop-app-dialog.h:6:10: fatal error: gio/gdesktopappinfo.h: No such file or directory 6 | #includeAt the same time: