Bug 158125

Summary: ccs-devel has bogus dependency on ccs
Product: [Retired] Red Hat Cluster Suite Reporter: Charlie Brady <charlieb-fedora-bugzilla>
Component: ccsAssignee: Chris Feist <cfeist>
Status: CLOSED WONTFIX QA Contact: Cluster QE <mspqa-list>
Severity: medium Docs Contact:
Priority: medium    
Version: 4CC: cluster-maint
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2005-05-26 19:48:12 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Charlie Brady 2005-05-18 20:40:55 UTC
I wish to compile cpam. I therefore need these files on my devel system:

/usr/include/ccs.h
/usr/lib/libccs.a

These files are in ccs-devel. I try to install ccs-devel and I am told:

[charlieb@localhost SRPMS]$ sudo rpm -Uhv /tmp/ccs-devel-0.25-0.17.i386.rpm
error: Failed dependencies:
        ccs = 0.25-0.17 is needed by ccs-devel-0.25-0.17
[charlieb@localhost SRPMS]$

Comment 1 Charlie Brady 2005-05-18 20:41:22 UTC
s/cpam/cman/

Comment 2 Chris Feist 2005-05-19 21:53:10 UTC
You need to install ccs.  It is standard procedure for the *-devel packages to
require their respective * packages.

Comment 3 Charlie Brady 2005-05-19 22:04:14 UTC
> You need to install ccs.

Why? My build system is not in a cluster.

> It is standard procedure for the *-devel packages to
> require their respective * packages.

The standard procedure is wrong then. It's not logical.  x-devel is required for
development. It's needed on a development system. x is required for what
whatever x does, and might be appropriate for a server or a workstation, or a
whatever. 

Bogus dependencies just make "dependency hell" more common, and give RPM a bad
name. Please reconsider. Talk to Jeff or others.

Note, there may be an issue here with shared libraries. Shared libraries should
go into both packages, as they might be needed for development.




Comment 4 Charlie Brady 2005-05-19 22:05:41 UTC
Re-opening, as I'm convinced it is a bug, and hope that you will reconsider.



Comment 5 Chris Feist 2005-05-20 19:21:56 UTC
We don't want to allow the user to accidently have differing versions of ccs &
ccs-devel on the same machine.  Also, if we end up using shared libraries then
we put symlinks to the shared libraries from the main package in the -devel package.

Which Jeff are you talking about?  I can get his opinion on this matter as well.

Comment 6 Chris Feist 2005-05-25 22:12:00 UTC
Closing bug as NOTABUG.

Comment 7 Charlie Brady 2005-05-25 23:32:14 UTC
> We don't want to allow the user to accidently have differing versions of ccs &
> ccs-devel on the same machine.

I'd be interested to explore why not. Do they conflict?

> Also, if we end up using shared libraries then
> we put symlinks to the shared libraries from the main package in the -devel 
> package.

Why don't you put the shared libraries in both packages?

> Which Jeff are you talking about?  I can get his opinion on this matter as
> well.

I was thinking about Jeff Johnson, but you could also try Eric Troan.

You haven't said why you don't think it's a bug. You are forcing me to install a
package I don't need or want. That's a bug. Surely. (Yes, it seems to be a
widespread bug, but it's a bug nonetheless. The widespread nature of the bug
simply means that I will need to install multiple runtime packages on my
development only box, just to satisfy your dependencies.



Comment 8 Chris Feist 2005-05-26 18:41:25 UTC
In the general case where you have a shared library, the -devel/main requirement
is a real dependency where you put merely the libfoo.so symlink in the devel
package.

But it's also just to enforce consistency.  When I run "up2date foo" or "yum
update foo", I don't expect to have an old version of foo-devel left around (and
vice versa).

There's also an argument about interface versioning - Can you ensure that an
application built against libccs.a will be able to talk to the ccsd if the
-devel/main package versions aren't matched up?  Another good reason to enforce
the requirement.



Comment 9 Charlie Brady 2005-05-26 19:34:26 UTC
> In the general case where you have a shared library, the -devel/main requirement
> is a real dependency where you put merely the libfoo.so symlink in the devel
> package.

Why? Why can't you put the shared library in both packages? Why force foo if you
only want foo-devel?

> When I run "up2date foo" or "yum update foo", I don't expect to have an old 
> version of foo-devel left around (and vice versa).

OK, so you add "Obsoletes: foo-devel < n.n" to foo.

> There's also an argument about interface versioning - Can you ensure that an
> application built against libccs.a will be able to talk to the ccsd if the
> -devel/main package versions aren't matched up?  Another good reason to
> enforce the requirement.

Is that not an argument for including the .so in ccs-devel? It's also an
argument for putting protocol version information in the comms between said app
and ccsd. Or some other dependency information in the application RPM. Otherwise
what's to stop me installing ccs-devel (and ccs because you insist on it) one
day, compiling the app with static linking, then upgrading ccs (and ccs-devel
because you insist on it)? I'll be able to do it, but the apps won't talk.

To put it another way, what's the point in splitting foo-devel from foo, if you
can't install it separately? foo-devel content is guaranteed to be harmless if
you don't need it, but the same can't be said about foo.



Comment 10 Chris Feist 2005-05-26 19:48:12 UTC
> To put it another way, what's the point in splitting foo-devel from foo, if you
> can't install it separately? foo-devel content is guaranteed to be harmless if
> you don't need it, but the same can't be said about foo.

We split foo-devel off from foo so that if the user doesn't want to do
development they aren't required to have those extra packages.

> Why? Why can't you put the shared library in both packages? Why force foo if you
> only want foo-devel?

Putting the shared library in both places is a waste of space and can cause
problems if the libraries get out of sync with each other.

Virtually every other -devel package in RHEL is dependent on its main package.
The benefit of keeping all of the -devel packages as similiar as possible
outweighs the limited benefit of not having to install the main package while
building.  Closing this bug as WONTFIX.



Comment 11 Charlie Brady 2005-05-26 19:53:57 UTC
> We split foo-devel off from foo so that if the user doesn't want to do
> development they aren't required to have those extra packages.

But you don't mind me being required to install (potentially dangerous) binaries
that I don't want, when I only want to develop.

> Putting the shared library in both places is a waste of space and can cause
> problems if the libraries get out of sync with each other.

It's only a waste of space in the packages, not in the installed system. RPM
will prevent the shared libraries from getting out of sync.

> Virtually every other -devel package in RHEL is dependent on its main package.

Doesn't mean any of them is right :-)

> Closing this bug as WONTFIX.

Oh well, can't say I didn't try. Thanks for listening.