[yast-devel] RPM Dependencies in General (...and How to Fix Them)
Dear developers, ==About== Most of you have probably already ran into problems with binary-incompatible YCP modules after updating to newer yast2-core. It happens when new core is changed internally and it's caused by wrong RPM dependencies in yast2-* packages. ==Solution in yast2.rpm== Only yast2.rpm contained Requires: yast2-core but even that definition hadn't been enough. By now, yast2.spec.in contains: Requires: yast2-core >= %(echo `rpm -q --queryformat '%{VERSION}' yast2-core`) (suggested by Coolo) ==Solution for All YaST RPMs== Nowadays, all (?) YaST packages require yast2.rpm but only some of them define a version they rely on. To fix the problem with binary-incompatibility, we could adjust all YaST RPMs to either Require the last yast2-core.rpm (or Conflict older than the current one) or Require the last yast2.rpm Hard to say what is better: /sbin/yast2 is owned by yast2-rpm (how we usually start a YaST module) /usr/lib/YaST2/bin/y2base is owned by yast2-core Side note: This does not affect YaST RPMs that don't contain any YCP modules (YCP scripts are compiled on the fly -- no binary incompatibility). ==Conclusion== I'd vote for requiring the last (and newer) yast2.rpm bu I'd like to hear from you what do *you* think of that. Please, let me know. Thx && Bye Lukas -- Lukas Ocilka, YaST Developer (xn--luk-gla45d) ----------------------------------------------------------------- SUSE LINUX, s. r. o., Lihovarska 1060/12, Praha 9, Czech Republic
Dňa Tuesday 04 December 2007 13:56:08 Lukas Ocilka ste napísal:
Dear developers,
==About== Most of you have probably already ran into problems with binary-incompatible YCP modules after updating to newer yast2-core. It happens when new core is changed internally and it's caused by wrong RPM dependencies in yast2-* packages.
==Solution in yast2.rpm== Only yast2.rpm contained Requires: yast2-core but even that definition hadn't been enough. By now, yast2.spec.in contains: Requires: yast2-core >= %(echo `rpm -q --queryformat '%{VERSION}' yast2-core`) (suggested by Coolo)
Hmm, so we cannot release yast2.rpm as maintenance update without releasing also yast2-core? Stano -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Stanislav Visnovsky napsal(a):
Dňa Tuesday 04 December 2007 13:56:08 Lukas Ocilka ste napísal:
Dear developers,
==About== Most of you have probably already ran into problems with binary-incompatible YCP modules after updating to newer yast2-core. It happens when new core is changed internally and it's caused by wrong RPM dependencies in yast2-* packages.
==Solution in yast2.rpm== Only yast2.rpm contained Requires: yast2-core but even that definition hadn't been enough. By now, yast2.spec.in contains: Requires: yast2-core >= %(echo `rpm -q --queryformat '%{VERSION}' yast2-core`) (suggested by Coolo)
Hmm, so we cannot release yast2.rpm as maintenance update without releasing also yast2-core?
We can release a new yast2.rpm as an update if the %{VERSION} of yast2-core is the same as it was before. But new yast2-core needs to rebuild everything. Well, maybe not always... It depends. That's why I wanted you to tell me your opinions :) Thanks Lukas
Dňa Tuesday 04 December 2007 14:35:00 Lukas Ocilka ste napísal:
Stanislav Visnovsky napsal(a):
Dňa Tuesday 04 December 2007 13:56:08 Lukas Ocilka ste napísal:
Dear developers,
==About== Most of you have probably already ran into problems with binary-incompatible YCP modules after updating to newer yast2-core. It happens when new core is changed internally and it's caused by wrong RPM dependencies in yast2-* packages.
==Solution in yast2.rpm== Only yast2.rpm contained Requires: yast2-core but even that definition hadn't been enough. By now, yast2.spec.in contains: Requires: yast2-core >= %(echo `rpm -q --queryformat '%{VERSION}' yast2-core`) (suggested by Coolo)
Hmm, so we cannot release yast2.rpm as maintenance update without releasing also yast2-core?
We can release a new yast2.rpm as an update if the %{VERSION} of yast2-core is the same as it was before.
But new yast2-core needs to rebuild everything. Well, maybe not always... It depends.
That's why I wanted you to tell me your opinions :)
So, it's no-no then ;-) I suggest to put the version dependency everytime yast2-core changes the binary format - this happens like once in 2 openSUSE releases. Stano -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Stanislav Visnovsky napsal(a):
But new yast2-core needs to rebuild everything. Well, maybe not always... It depends.
That's why I wanted you to tell me your opinions :)
So, it's no-no then ;-)
I suggest to put the version dependency everytime yast2-core changes the binary format - this happens like once in 2 openSUSE releases.
Anyway, new yast2-core.rpm is requested only by yast2.rpm, other YaST RPMs stay binary-incompatible. How to solve that? Change RPM dependencies in *all* packages? Can't we do that somehow automatically? For instance: yast2-core: Provides: YaST_Bytecode_1_4_4 (And change it in case of binary-incompatibility) For other YaST RPMS: yast2-firewall: Requires: $current_Bytecode (written during build) L.
Am Dienstag 04 Dezember 2007 schrieb Stanislav Visnovsky:
Dňa Tuesday 04 December 2007 13:56:08 Lukas Ocilka ste napísal:
Dear developers,
==About== Most of you have probably already ran into problems with binary-incompatible YCP modules after updating to newer yast2-core. It happens when new core is changed internally and it's caused by wrong RPM dependencies in yast2-* packages.
==Solution in yast2.rpm== Only yast2.rpm contained Requires: yast2-core but even that definition hadn't been enough. By now, yast2.spec.in contains: Requires: yast2-core >= %(echo `rpm -q --queryformat '%{VERSION}' yast2-core`) (suggested by Coolo)
Hmm, so we cannot release yast2.rpm as maintenance update without releasing also yast2-core?
Perhaps you should not increase the version number on maintenance updates :) Greetings, Stephan -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
* Stanislav Visnovsky
Hmm, so we cannot release yast2.rpm as maintenance update without releasing also yast2-core?
Sound like a good reason to adapt yast2 versioning to all other packages of the distribution, namely - keep version fixed for a distribution, maintenance updates only increase the release. If this rule is followed, dependencies on the version (without specifying a release) should be fine. Klaus --- SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Klaus Kaempf napsal(a):
* Stanislav Visnovsky
[Dec 04. 2007 14:31]: Hmm, so we cannot release yast2.rpm as maintenance update without releasing also yast2-core?
Sound like a good reason to adapt yast2 versioning to all other packages of the distribution, namely
- keep version fixed for a distribution, maintenance updates only increase the release.
If this rule is followed, dependencies on the version (without specifying a release) should be fine.
On the other hand this still doesn't solve the problem with binary-incompatible core (unless explicitly expressed a dependency on 'current' yast2-core.rpm or 'current' yast2.rpm in every single package). We currently use the YaST-versioning for expressing cross-package dependencies. Let's think about pros and cons of switching to some other versioning... Ideas, Examples? Lukas
participants (4)
-
Klaus Kaempf
-
Lukas Ocilka
-
Stanislav Visnovsky
-
Stephan Kulow