Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.

Bug 861715

Summary: libzeitgeist depends on zeitgeist
Product: [Fedora] Fedora Reporter: Christoph Wickert <cwickert>
Component: libzeitgeistAssignee: Renich Bon Ciric <renich>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 17CC: elliott.forney, fedora, hpa, kalevlember, kevin, mtasaka, nsoranzo, pbrobinson, piotrdrag, rdieter, renich, sjensen, th
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: libzeitgeist-0.3.18-3.fc16 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 861754 (view as bug list) Environment:
Last Closed: 2012-11-03 16:01:09 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 661442, 838520, 861754    

Description Christoph Wickert 2012-09-30 08:36:56 UTC
Description of problem:
libzeitgeist should not depend on the zeitgeist-deamon. A client side library that many applications link against should not require a daemon. Whether or not the user wants to install and use zeitgeist is a completely different story than installing a library.

Version-Release number of selected component (if applicable):
zeitgeist-0.9.0-1.fc17.x86_64

How reproducible:
always

Steps to Reproduce:
1. try to remove zeitgeist
  
Actual results:
# LANG=C yum remove zeitgeist
Loaded plugins: auto-update-debuginfo, langpacks, presto, refresh-packagekit
Resolving Dependencies
--> Running transaction check
---> Package zeitgeist.x86_64 0:0.9.0-1.fc17 will be erased
--> Processing Dependency: zeitgeist for package: libqzeitgeist-0.8.0-6.fc17.x86_64
--> Processing Dependency: zeitgeist for package: libzeitgeist-0.3.18-1.fc17.x86_64
--> Running transaction check
---> Package libqzeitgeist.x86_64 0:0.8.0-6.fc17 will be erased
--> Processing Dependency: libqzeitgeist.so.1()(64bit) for package: phonon-4.6.0-3.fc17.x86_64
---> Package libzeitgeist.x86_64 0:0.3.18-1.fc17 will be erased
--> Processing Dependency: libzeitgeist-1.0.so.1()(64bit) for package: zeitgeist-datahub-0.7.0-4.fc17.x86_64
--> Running transaction check
---> Package phonon.x86_64 0:4.6.0-3.fc17 will be erased
--> Processing Dependency: libphonon.so.4()(64bit) for package: 2:phonon-backend-gstreamer-4.6.2-1.fc17.x86_64
--> Processing Dependency: libphonon.so.4()(64bit) for package: 1:kdepim-runtime-4.9.1-1.fc17.x86_64
--> Processing Dependency: libphonon.so.4()(64bit) for package: 7:kdepim-libs-4.9.1-1.fc17.x86_64
--> Processing Dependency: libphonon.so.4()(64bit) for package: 7:kdepim-4.9.1-1.fc17.x86_64
--> Processing Dependency: libphonon.so.4()(64bit) for package: PyQt4-4.9.1-2.fc17.x86_64
--> Processing Dependency: libphonon.so.4()(64bit) for package: kdepimlibs-akonadi-4.9.1-3.fc17.x86_64
--> Processing Dependency: libphonon.so.4()(64bit) for package: kde-runtime-4.9.1-1.fc17.x86_64
--> Processing Dependency: libphonon.so.4()(64bit) for package: 6:kdelibs-4.9.1-4.fc17.x86_64
--> Processing Dependency: libphonon.so.4()(64bit) for package: kde-runtime-libs-4.9.1-1.fc17.x86_64
--> Processing Dependency: phonon(x86-64) >= 4.6.0 for package: 2:phonon-backend-gstreamer-4.6.2-1.fc17.x86_64
--> Processing Dependency: phonon(x86-64) >= 4.6.0 for package: 6:kdelibs-4.9.1-4.fc17.x86_64
---> Package zeitgeist-datahub.x86_64 0:0.7.0-4.fc17 will be erased
--> Running transaction check
---> Package PyQt4.x86_64 0:4.9.1-2.fc17 will be erased
--> Processing Dependency: PyQt4 for package: liveusb-creator-3.11.7-1.fc17.noarch
---> Package kde-runtime.x86_64 0:4.9.1-1.fc17 will be erased
--> Processing Dependency: kde-runtime = 4.9.1-1.fc17 for package: kde-runtime-flags-4.9.1-1.fc17.noarch
--> Processing Dependency: kde-runtime >= 4.9.1 for package: kwallet-4.9.1-1.fc17.x86_64
---> Package kde-runtime-libs.x86_64 0:4.9.1-1.fc17 will be erased
---> Package kdelibs.x86_64 6:4.9.1-4.fc17 will be erased
--> Processing Dependency: kdelibs4(x86-64) >= 4.9.1 for package: nepomuk-core-4.9.1-1.fc17.x86_64
--> Processing Dependency: kdelibs4(x86-64) >= 4.9.1 for package: kdepimlibs-4.9.1-3.fc17.x86_64
--> Processing Dependency: kdelibs4(x86-64) >= 4.9.1 for package: kactivities-4.9.1-1.fc17.x86_64
--> Processing Dependency: kdelibs4(x86-64) >= 4.9.1 for package: nepomuk-core-libs-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkcmutils.so.4()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkcmutils.so.4()(64bit) for package: kdepimlibs-4.9.1-3.fc17.x86_64
--> Processing Dependency: libkdeclarative.so.5()(64bit) for package: kactivities-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkdecore.so.5()(64bit) for package: 1:kdepim-runtime-libs-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkdecore.so.5()(64bit) for package: nepomuk-core-libs-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkdecore.so.5()(64bit) for package: libkolab-0.3.1-3.fc17.x86_64
--> Processing Dependency: libkdecore.so.5()(64bit) for package: kactivities-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkdecore.so.5()(64bit) for package: nepomuk-core-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkdecore.so.5()(64bit) for package: kdepimlibs-4.9.1-3.fc17.x86_64
--> Processing Dependency: libkdecore.so.5()(64bit) for package: libkgapi-0.4.2-1.fc17.x86_64
--> Processing Dependency: libkdecore.so.5()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkdeui.so.5()(64bit) for package: 1:kdepim-runtime-libs-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkdeui.so.5()(64bit) for package: nepomuk-core-libs-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkdeui.so.5()(64bit) for package: libkolab-0.3.1-3.fc17.x86_64
--> Processing Dependency: libkdeui.so.5()(64bit) for package: kactivities-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkdeui.so.5()(64bit) for package: nepomuk-core-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkdeui.so.5()(64bit) for package: kdepimlibs-4.9.1-3.fc17.x86_64
--> Processing Dependency: libkdeui.so.5()(64bit) for package: libkgapi-0.4.2-1.fc17.x86_64
--> Processing Dependency: libkdeui.so.5()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkdewebkit.so.5()(64bit) for package: libkgapi-0.4.2-1.fc17.x86_64
--> Processing Dependency: libkemoticons.so.4()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkemoticons.so.4()(64bit) for package: kdepimlibs-4.9.1-3.fc17.x86_64
--> Processing Dependency: libkidletime.so.4()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkidletime.so.4()(64bit) for package: nepomuk-core-libs-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkio.so.5()(64bit) for package: 1:kdepim-runtime-libs-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkio.so.5()(64bit) for package: nepomuk-core-libs-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkio.so.5()(64bit) for package: libkolab-0.3.1-3.fc17.x86_64
--> Processing Dependency: libkio.so.5()(64bit) for package: kactivities-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkio.so.5()(64bit) for package: nepomuk-core-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkio.so.5()(64bit) for package: kdepimlibs-4.9.1-3.fc17.x86_64
--> Processing Dependency: libkio.so.5()(64bit) for package: libkgapi-0.4.2-1.fc17.x86_64
--> Processing Dependency: libkio.so.5()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkparts.so.4()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkparts.so.4()(64bit) for package: kdepimlibs-4.9.1-3.fc17.x86_64
--> Processing Dependency: libkparts.so.4()(64bit) for package: libkgapi-0.4.2-1.fc17.x86_64
--> Processing Dependency: libkprintutils.so.4()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libktexteditor.so.4()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libkutils.so.4()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libnepomuk.so.4()(64bit) for package: 1:kdepim-runtime-libs-4.9.1-1.fc17.x86_64
--> Processing Dependency: libnepomuk.so.4()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libnepomuk.so.4()(64bit) for package: kdepimlibs-4.9.1-3.fc17.x86_64
--> Processing Dependency: libnepomuk.so.4()(64bit) for package: kactivities-4.9.1-1.fc17.x86_64
--> Processing Dependency: libnepomuk.so.4()(64bit) for package: libkgapi-0.4.2-1.fc17.x86_64
--> Processing Dependency: libnepomukquery.so.4()(64bit) for package: kactivities-4.9.1-1.fc17.x86_64
--> Processing Dependency: libnepomukutils.so.4()(64bit) for package: kate-part-4.9.1-1.fc17.x86_64
--> Processing Dependency: libnepomukutils.so.4()(64bit) for package: kdepimlibs-4.9.1-3.fc17.x86_64
--> Processing Dependency: libnepomukutils.so.4()(64bit) for package: libkgapi-0.4.2-1.fc17.x86_64
--> Processing Dependency: libplasma.so.3()(64bit) for package: kactivities-4.9.1-1.fc17.x86_64
--> Processing Dependency: libsolid.so.4()(64bit) for package: nepomuk-core-libs-4.9.1-1.fc17.x86_64
---> Package kdepim.x86_64 7:4.9.1-1.fc17 will be erased
---> Package kdepim-libs.x86_64 7:4.9.1-1.fc17 will be erased
---> Package kdepim-runtime.x86_64 1:4.9.1-1.fc17 will be erased
---> Package kdepimlibs-akonadi.x86_64 0:4.9.1-3.fc17 will be erased
---> Package phonon-backend-gstreamer.x86_64 2:4.6.2-1.fc17 will be erased
--> Running transaction check
---> Package kactivities.x86_64 0:4.9.1-1.fc17 will be erased
---> Package kate-part.x86_64 0:4.9.1-1.fc17 will be erased
---> Package kde-runtime-flags.noarch 0:4.9.1-1.fc17 will be erased
---> Package kdepim-runtime-libs.x86_64 1:4.9.1-1.fc17 will be erased
---> Package kdepimlibs.x86_64 0:4.9.1-3.fc17 will be erased
---> Package kwallet.x86_64 0:4.9.1-1.fc17 will be erased
---> Package libkgapi.x86_64 0:0.4.2-1.fc17 will be erased
---> Package libkolab.x86_64 0:0.3.1-3.fc17 will be erased
---> Package liveusb-creator.noarch 0:3.11.7-1.fc17 will be erased
---> Package nepomuk-core.x86_64 0:4.9.1-1.fc17 will be erased
---> Package nepomuk-core-libs.x86_64 0:4.9.1-1.fc17 will be erased
--> Finished Dependency Resolution

Having livecd-creator depend on zeitgeist because pyqt is compiled against libzeitgeist is just ridiculous as it offers absolutely not benefit.
This is just one example of many, another one is in bug 838520.


Additional info:
This problem was already mentioned in the libzeitgeist review, but nobody seemed to care: https://bugzilla.redhat.com/show_bug.cgi?id=674188#c2

Comment 1 Mamoru TASAKA 2012-09-30 09:06:29 UTC
FYI
I don't know well about zeitgeist, however being library package depending on "core" package is not unfamiliar

$ rpm -q --requires perl-libs | grep "perl ="
perl = 4:5.16.1-232.fc18

It is not just "library package should not depend on core package", but "people should judge if only installing library package really works", and it is up to maintainer's judgment.

Comment 2 Mamoru TASAKA 2012-09-30 09:11:01 UTC
Again although I am not familiar with zeitgeist:

At least on F-17 (released branch) I am against removing "Requires = zeitgeist" on libzeitgeist because it may cause new issue.

Comment 3 Mamoru TASAKA 2012-09-30 09:20:34 UTC
Christoph, are you really sure that removing this dependency will cause no problem?

Comment 4 Christoph Wickert 2012-09-30 09:30:20 UTC
(In reply to comment #1)
> FYI
> I don't know well about zeitgeist, however being library package depending
> on "core" package is not unfamiliar
> 
> $ rpm -q --requires perl-libs | grep "perl ="
> perl = 4:5.16.1-232.fc18

I think this is completely different case. perl requires libperl.so from the perl-libs package, but zeitgeist itself does not require libzeitgeist-1.0.so.1.

> It is not just "library package should not depend on core package", 

I never said that. My point is that client side libraries should not depend on daemons. Interpreters such as perl are a different story.

And please note that zeitgeist is not the core package of libzeitgeist either.

> "people should judge if only installing library package really works", and
> it is up to maintainer's judgment.

If "really works" means, you get zeitgeist support out of the box, then no, it doesn't. However zeitgeist offers additional functionality that only some people want and others not. In fact, they cannot use it as the applications cannot even use it either. livecd-creator for example cannot use zeitgeist even though it uses pyqt with is compiled with libzeitgeist. kdepim cannot use it either. totem only uses it with a plugin that is not enabled by default. (to be continued).

(In reply to comment #2)
> At least on F-17 (released branch) I am against removing "Requires =
> zeitgeist" on libzeitgeist because it may cause new issue.

Such as?

Comment 5 Christoph Wickert 2012-09-30 09:32:22 UTC
(In reply to comment #3)
> Christoph, are you really sure that removing this dependency will cause no
> problem?

I cannot think of any. Note that the dependency is wrong anyway as it lacks %?isa. Despite of this bug still I see no bug reports, so I doubt removing it causes any harm.

Comment 6 Mamoru TASAKA 2012-09-30 11:54:39 UTC
(In reply to comment #5)
> (In reply to comment #3)
> > Christoph, are you really sure that removing this dependency will cause no
> > problem?
> 
> I cannot think of any. Note that the dependency is wrong anyway as it lacks
> %?isa. Despite of this bug still I see no bug reports, so I doubt removing
> it causes any harm.

?? %?isa is just to ensure that correct arch rpm is to be installed, and even without ?isa yum installs correct arch rpm by default, so by default missing ?isa would cause no problem, you see. Many old rpms in Fedora lacks ?isa dependency.

(In reply to comment #4)
> (In reply to comment #1)
> > FYI
> > I don't know well about zeitgeist, however being library package depending
> > on "core" package is not unfamiliar
> > 
> > $ rpm -q --requires perl-libs | grep "perl ="
> > perl = 4:5.16.1-232.fc18
> 
> I think this is completely different case. perl requires libperl.so from the
> perl-libs package, but zeitgeist itself does not require
> libzeitgeist-1.0.so.1.

You think so, so judging it is completely up to maintainer's choice.

> > It is not just "library package should not depend on core package", 
> 
> I never said that. My point is that client side libraries should not depend
> on daemons. Interpreters such as perl are a different story.

Can you really clarify the difference of client side and daemon side here?

> And please note that zeitgeist is not the core package of libzeitgeist
> either.
> 
> > "people should judge if only installing library package really works", and
> > it is up to maintainer's judgment.
> 
> If "really works" means, you get zeitgeist support out of the box, then no,
> it doesn't. However zeitgeist offers additional functionality that only some
> people want and others not. In fact, they cannot use it as the applications
> cannot even use it either. livecd-creator for example cannot use zeitgeist
> even though it uses pyqt with is compiled with libzeitgeist. kdepim cannot
> use it either. totem only uses it with a plugin that is not enabled by
> default. (to be continued).

I mean here is whether zeitgeist support really works without zeitgeist rpm or not.

> 
> (In reply to comment #2)
> > At least on F-17 (released branch) I am against removing "Requires =
> > zeitgeist" on libzeitgeist because it may cause new issue.
> 
> Such as?

Changing dependency on released branch must be avioded (as you yourself said as bug 838520 comment 9 ). Chaning dependency may cause unexpected error, raising example should not be needed here.

Comment 7 Christoph Wickert 2012-09-30 13:40:32 UTC
(In reply to comment #6)
> ?? %?isa is just to ensure that correct arch rpm is to be installed, and
> even without ?isa yum installs correct arch rpm by default, so by default
> missing ?isa would cause no problem, you see. Many old rpms in Fedora lacks
> ?isa dependency.

The current dependency is not bullet-proof. It either needs to be fixed or removed.

> (In reply to comment #4)
> > (In reply to comment #1)
> > I think this is completely different case. perl requires libperl.so from the
> > perl-libs package, but zeitgeist itself does not require
> > libzeitgeist-1.0.so.1.
> 
> You think so, so judging it is completely up to maintainer's choice.

I stated a fact and not an opinion. Your statement on the other hand is IHMO very problematic. Fedora is a distribution made of thousands of packages maintained by hundreds of maintainers. We need to work together as a team, so there is nothing that is *completely* up to the maintainer. We all are bound to the packaging guidelines which clearly state: "Packagers should revisit an explicit dependency as appropriate to avoid it becoming inaccurate and superfluous."

> > > It is not just "library package should not depend on core package", 
> > 
> > I never said that. My point is that client side libraries should not depend
> > on daemons. Interpreters such as perl are a different story.
> 
> Can you really clarify the difference of client side and daemon side here?

I would have expected you to ask me about the difference between daemon and interpreter, but yes, for me the difference is pretty clear: The library is used to access services provided by the daemon.

> I mean here is whether zeitgeist support really works without zeitgeist rpm
> or not.

Of course not, but even with zeitgeist installed overwhelming majority of the packages that in one way or the other depend on libzeitgeist cannot use any zeitgeist functionality. If something can, fine, then it should require zeitgeist.

Please note that we are talking about only 4 packages in total: 
gnome-activity-journal, totem, synapse and pogo-zeitgeist. The latter is a good example how to do it right: The stuff that needs (lib)zeitgeist is in a subpackage which then requires the zeitgeist daemon.

If something *can* use mysql, it doesn't mean it *must* use it. If you want to install mysql as service, then you need to install it. I don't see why this should be different for zeitgeist.

It's on the application that offers an additional capability to require this additional capability. 4 packages benefit from this, hundreds other don't. 

> Changing dependency on released branch must be avioded (as you yourself said
> as bug 838520 comment 9 ).

The quote from the update policy refers to dependencies and "large dependency chains". We are talking about the lack of such, so about the exact opposite here.

> Chaning dependency may cause unexpected error,
> raising example should not be needed here.

We are here to make a decision on whether or not to remove the dependency. In order to do so, we need to take all pros and cons into account. So the question is not if something "should not be needed" to underline one's point of view but if there is a valid argument we miss.

This being said please tell me what errors you expect. Existing Fedora installations will continue to have zeitgeist installed, so there is no change and thus there shouldn't be any unexpected errors. New installations of some packages will no longer install zeitgeist, but this shouldn't lead to any unexpected behavior either. What was unexpected was that suddenly zeitgeist got installed for people who updated totem.

Comment 8 Fedora Update System 2012-10-03 02:32:31 UTC
libzeitgeist-0.3.18-3.fc18 has been submitted as an update for Fedora 18.
https://admin.fedoraproject.org/updates/libzeitgeist-0.3.18-3.fc18

Comment 9 Renich Bon Ciric 2012-10-03 02:35:35 UTC
Guys, thank you for your participation.

It is obvious to me that libzeitgeist is intended to be used to access zeitgeist. This said, it is also obvious that, in a development environment or if you intend to build some plugin against the lib, you will, ultimately, end up installing zeitgeist.

Due to some dependencies of some "misdivided" packages, you end up installing zeitgeist even when you don't intend to use it.

In order to provide a fix for the current situation, I will remove zeitgeist as a requirement for libzeitgeist.

I think we should push packages that build against libzeitgeist to separate the plugin/functonality into a sub-package and, in those cases, maybe include zeitgeist as a requirement.

Comment 10 Fedora Update System 2012-10-03 02:47:56 UTC
libzeitgeist-0.3.18-3.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/libzeitgeist-0.3.18-3.fc17

Comment 11 Fedora Update System 2012-10-03 02:56:22 UTC
libzeitgeist-0.3.18-3.fc16 has been submitted as an update for Fedora 16.
https://admin.fedoraproject.org/updates/libzeitgeist-0.3.18-3.fc16

Comment 12 Fedora Update System 2012-10-03 17:03:09 UTC
Package libzeitgeist-0.3.18-3.fc18:
* should fix your issue,
* was pushed to the Fedora 18 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing libzeitgeist-0.3.18-3.fc18'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2012-15289/libzeitgeist-0.3.18-3.fc18
then log in and leave karma (feedback).

Comment 13 Christoph Wickert 2012-11-03 16:01:09 UTC
libzeitgeist-0.3.18-3.fc16 is in stable, closing.

Comment 14 Kalev Lember 2013-02-20 14:11:31 UTC
Looks like the fix never made it to rawhide, only to f16-f18. Can you fix up the deps in rawhide as well, please?

Comment 15 Rex Dieter 2013-02-20 14:16:51 UTC
indeed, I'll merge the change