On GNOME 2.2 systems, such as RH9 or RHEL3, using: pkg-config --libs libgnome-2.0 when compiling applications caused them to be linked to liblinc.so.1. This library does not seem to be included in my FC3 installation, which is causing some applications (in particular, a version of zenity I compiled) to no longer run.
Mark may know the story.
Yeah, so the story is: - ORBit2 used to explicitly put the link line for all its dependancies in Libs: (in the pkgconfig file) so anything that Requires: ORBit-2.0 ended up with -llinc on the link line (Would have been the same problem if linc had been in the ORBit-2.0 Requires:) - linc was subsumed by ORBit2, everything in RHEL4 has been rebuilt or upgraded and, so, no package requires the linc package. - So, if there are programs that were built against libgnome on RHEL3, and those programs aren't part of packages which require linc (e.g. with autogenerated requires), then those programs are hosed if you upgrade from RHEL3 to RHEL4 - To workaround this, you should be able to install the RHEL3 linc RPM on the upgraded system I'm not sure if we can do anything about this really - if deprecated packages get removed on upgrade when nothing requires them, then there's not much we can do about programs that either aren't packaged or don't have the appropriate requires. Interestingly, I think the RHEL3 eclipse has the same problem on RHEL4. I don't know why that doesn't have the correct requires.
In eclipse upstream we stopped using pkg-config so we could avoid linking to liblinc. I guess my thoughts on this break was that distributions would install liblinc as a requirement for ORBit2, since otherwise I think ORBit2 is breaking binary compatibility.
I don't think there's any break in binary compatibility here - well, maybe at the distribution level there is. We deprecated and removed a library, but of course some programs which were built on RHEL3 may still be linked against the library. There's nothing unusual about that - its the same for any deprecated/removed library. But there are two unusual things here, both of which are bugs IMHO: - applications need never have linked directly to liblinc. That was an ORBit2 bug and has since been fixed, but the fix doesn't help us now - applications that did link directly to liblinc should have had a Requires: linc (autogenerated most likely). Do you know why this didn't happen for eclipse?
I'm not filing this bug about eclipse in particular, although I knew about the problem because we had to work around it. This came about because I installed FC3 on my RHEL3 machine dual-boot for some testing, and GNOME applications I had compiled myself (such as zenity) I could not run on a native FC3 machine, causing a bunch of scripts to fail. For eclipse, we don't ship RPMs, we post binaries on eclipse.org and found that users on FC systems don't have liblinc installed by default.
Okay, my argument is that if we deprecate and remove any library, then any program that links to the library and is either a) a part of a package which doesn't require the library or b) is not owned by any package, but built from source is going to break on upgrade and there's not a whole lot we can do about it. So, as long as we have the policy that we can deprecate libraries if nothing in the distro is using it, then these issues are going to come up. The unfortunate part here is that programs only accidently linked directly to liblinc. FWIW, you should be able to install linc on FC3 to workaround the problem - I suspect the RHEL3 RPM might even work.