The synthesis.pc file shipped in the syncevolution-devel package references a -lsynthesissdk library, which does not exist. $ gcc -xc /dev/null `pkg-config --libs syncevolution` /usr/bin/ld: cannot find -lsynthesissdk collect2: ld returned 1 exit status
diff --git a/syncevolution.spec b/syncevolution.spec index 99fac53..180493b 100644 --- a/syncevolution.spec +++ b/syncevolution.spec @@ -116,7 +116,7 @@ make install DESTDIR=$RPM_BUILD_ROOT docdir=%{_docdir} rm -rf $RPM_BUILD_ROOT%{_datadir}/doc #Remove libtool archives and static libs -find %{buildroot} -name '*.la' -o -name '*.a' | xargs rm +find %{buildroot} -name '*.la' -o -name '*.a' | grep -v /libsynthesissdk.a | xargs rm %find_lang %{name} @@ -166,6 +166,7 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/sync-moblin.desktop %{_includedir}/synthesis %{_libdir}/pkgconfig/s*.pc %{_libdir}/*so +%{_libdir}/libsynthesissdk.a %files gtk %defattr(-,root,root,-)
I'm not sure why that patch makes the pkgconfig file valid given that the Fedora package guidelines suggest removing static libraries, or at least shipping them in a -static package if necessary. Really the real fix to the problem is upstream including proper unbundling of libsynthesis
The bug is that the pkgconfig file refers to a library that doesn't exist: $ pkg-config --libs syncevolution -lsyncevolution -lsynthesissdk -lsmltk -lsynthesis $ gcc -xc /dev/null `pkg-config --libs syncevolution` /usr/bin/ld: cannot find -lsynthesissdk The patch makes the pkgconfig file valid because it makes that file exist. I certainly agree that it's not the ideal solution to the problem. But at the moment we have a syncevolution-devel package which is just totally broken, so *anything* would be an improvement, surely?
It occurs to me that "proper unbundling of libsynthesis", while desirable, still wouldn't fix this problem. You'd just move it to the libsynthesis package. The real problem is that libsynthesis ships a static library and refers to it in its pkgconfig file, and our packaging deletes static libraries. So the -devel package CANNOT WORK.
libsynthesisdk.a must not be deleted. It is needed: - provides glue code which dlopens() a suitable libsynthesis (optional, SyncEvolution doesn't use this feature and links against libsynthesis directly) - provides C++ wrapper classes for the libsynthesis C API The C++ classes do not have a stable API/ABI and thus should not be put into a shared library. The stable API/ABI and most code is in libsynthesis, which is shared.
OK, so the upstream developer has clearly stated that my patch in comment #1 is correct; that the libsynthesissdk.a library is necessary. Peter, if you want to take it up with upstream and try to persuade Patrick that this code should be given a stable ABI and then shipped as a shared library (despite the fact that it seems to exist as a separate entity solely for the purpose of having an unstable ABI), by all means feel free to do so. But in the *meantime* please can we fix the -devel package to include the existing library that the pkgconfig file explicitly references.
syncevolution-1.1.99.6-1.fc16 has been submitted as an update for Fedora 16. https://admin.fedoraproject.org/updates/syncevolution-1.1.99.6-1.fc16
Package syncevolution-1.1.99.6-1.fc16: * should fix your issue, * was pushed to the Fedora 16 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing syncevolution-1.1.99.6-1.fc16' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/syncevolution-1.1.99.6-1.fc16 then log in and leave karma (feedback).
syncevolution-1.1.99.6-1.fc16 has been pushed to the Fedora 16 stable repository. If problems still persist, please make note of it in this bug report.