Bug 715131 - devel package ships invalid pkgconfig file
Summary: devel package ships invalid pkgconfig file
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: syncevolution
Version: 15
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Peter Robinson
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-06-21 23:24 UTC by David Woodhouse
Modified: 2011-08-28 05:33 UTC (History)
5 users (show)

Fixed In Version: syncevolution-1.1.99.6-1.fc16
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2011-08-28 05:33:27 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description David Woodhouse 2011-06-21 23:24:08 UTC
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

Comment 1 David Woodhouse 2011-07-18 23:09:58 UTC
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,-)

Comment 2 Peter Robinson 2011-07-18 23:20:54 UTC
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

Comment 3 David Woodhouse 2011-07-19 05:38:20 UTC
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?

Comment 4 David Woodhouse 2011-08-17 10:57:13 UTC
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.

Comment 5 Patrick Ohly 2011-08-17 11:04:26 UTC
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.

Comment 6 David Woodhouse 2011-08-17 13:52:19 UTC
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.

Comment 7 Fedora Update System 2011-08-18 21:49:22 UTC
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

Comment 8 Fedora Update System 2011-08-19 15:26:00 UTC
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).

Comment 9 Fedora Update System 2011-08-28 05:33:22 UTC
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.


Note You need to log in before you can comment on or make changes to this bug.