Bug 173694 - yumex not processing obsoletes correctly for modular X
Summary: yumex not processing obsoletes correctly for modular X
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: yumex
Version: rawhide
Hardware: i386
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Tim Lauridsen
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2005-11-18 22:25 UTC by Clyde E. Kunkel
Modified: 2014-01-21 22:53 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2006-01-03 17:29:44 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Clyde E. Kunkel 2005-11-18 22:25:45 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051018 Fedora/1.7.12-2

Description of problem:
When using yumex with development repository only enabled, could not update multiple packages with various X dependencies.

Version-Release number of selected component (if applicable):
yumex-0.42-9.0.fc5

How reproducible:
Always

Steps to Reproduce:
1. Start yumex
2. select packages to upgrade from update window
3. click Update Packages button

  

Actual Results:  Error dialogue window opens.  From output window, following errors reported:

['fontconfig conflicts with fonts-xorg-base',
'Missing Dependency: /usr/X11R6/bin/mkfontdir is needed by package xorg-x11',
'Missing Dependency: xorg-x11-xfs = 6.8.2-62 is needed by package xorg-x11',
'Missing Dependency: xinitrc is needed by package xorg-x11',
'Missing Dependency: xorg-x11 is needed by package xorg-x11-tools', 'Missing Dependency: xorg-x11 = 6.8.2-62 is needed by package xorg-x11-Xnest']


Expected Results:  Normal update without errors.

Additional info:

Work around:  did a manual update using yum update from a terminal, and all packages installed as well as all of the modular x packages and those depending on them.

Packages that were available in yumex update window were (and this is from memory): pango, fontconfig, fontconfig-devel, gdm, gtk+, gtk2, Xaw3, xterm, xorg-xll-xfs, xorg-x11-xinit, and 2-3 other x items.  Not listed were the rest of the modular x rpms.

Comment 1 Tim Lauridsen 2005-11-23 14:22:00 UTC
I have made some testing.

1. Installed a fresh FC4 installation with all updates.
2. Remove all kernel, but the latest
3. installed yumex
4. enabled 'development' and 'extra-development' repos. Disabled the other repos

5. run 'yum update' 
   if found 1.1 GB packages to update
   answer 'n' to update prompt.
6. run 'yum update xorg-x11-xfs'
   got the following Errors:

Error: Missing Dependency: /usr/X11R6/bin/sessreg is needed by package xinitrc
Error: Missing Dependency: XFree86-libs is needed by package synaptics
Error: Missing Dependency: /usr/X11R6/bin/Xorg is needed by package
system-config-display
Error: Missing Dependency: libdps.so.1 is needed by package ImageMagick
Error: Missing Dependency: xorg-x11 is needed by package linuxwacom
Error: Missing Dependency: XFree86-libs >= 4.2.99 is needed by package libgnomeui
Error: Missing Dependency: xorg-x11-libs is needed by package pango
Error: Missing Dependency: /usr/X11R6/lib/X11/XKeysymDB is needed by package
openmotif
Error: Missing Dependency: xorg-x11-libs = 6.8.2-37.FC4.49.2 is needed by
package xorg-x11-devel
Error: Missing Dependency: libdpstk.so.1 is needed by package ImageMagick
Error: Missing Dependency: /usr/X11R6/bin/xsetroot is needed by package xinitrc
Error: Missing Dependency: fonts-xorg-75dpi is needed by package emacs

7. Updating xorg-x11-xfs in yumex.

Got the samme errors.

'Missing Dependency: /usr/X11R6/bin/sessreg is needed by package xinitrc',
'Missing Dependency: XFree86-libs is needed by package synaptics',
'Missing Dependency: /usr/X11R6/bin/Xorg is needed by package
system-config-display',
'Missing Dependency: libdps.so.1 is needed by package ImageMagick',
'Missing Dependency: xorg-x11 is needed by package linuxwacom',
'Missing Dependency: XFree86-libs >= 4.2.99 is needed by package libgnomeui',
'Missing Dependency: xorg-x11-libs is needed by package pango',
'Missing Dependency: /usr/X11R6/lib/X11/XKeysymDB is needed by package openmotif',
'Missing Dependency: xorg-x11-libs = 6.8.2-37.FC4.49.2 is needed by package
xorg-x11-devel'
'Missing Dependency: libdpstk.so.1 is needed by package ImageMagick'
'Missing Dependency: /usr/X11R6/bin/xsetroot is needed by package xinitrc'
'Missing Dependency: fonts-xorg-75dpi is needed by package emacs'

Yumex is using the YumBaseCli.updatePkgs routine (in /usr/share/yum-cli/cli.py)
to do the preparation of the update, it is the same routine called when
doing a 'yum update'.
The routine seems to handle a 'yum update', different than a 'yum update
packagename'.

I will do some futher investigation.


Comment 2 Tim Lauridsen 2006-01-03 17:29:44 UTC
I solved this issue in yumex 0.44, by calling the YumBaseCli.updatePkgs with no
packagelist when all updates are selected.
in yumex 0.45-02 (cvs head) that uses the yum 2.5.0 API, i have added some
obsoletion code in the update routine. So both versions can handle a FC4 ->
Rawhide update.

Comment 3 Seth Vidal 2006-01-03 18:25:05 UTC
in 2.5.0 you should just be able to call YumBase.update()

and it handles obsoletes internally.

Comment 4 Tim Lauridsen 2006-01-04 07:32:12 UTC
(In reply to comment #3)
> in 2.5.0 you should just be able to call YumBase.update()
> 
> and it handles obsoletes internally.

Hi Seth

I have look at the code in yumBase.update().

if i just call yumBase.update(), then all availible updates will be added to
Transaction Set and obsoletes are handled ok.

But in yumex (0.45) the user have a view with availible updates to select from.
If he selects all updates i can just call yumBase.update() and everything is ok.
But if he only selects some of the updates, 
i call yumBase.update(po) for each selected update (po = the new package object)
In this case the obsoletes for the selected packages are not handled, as far as
i can see.

Ex. 

Installed.
foo1-1.0
foo2-1.0
foo3-1.0
bar1-1.0
bar2-1.0
bar3-1.0


Availible updates.

foo1-1.1 (Obsoletes bar1-1.0)
foo2-1.1 (Obsoletes bar2-1.0)
foo3-1.1 (Obsoletes bar1.1.0)

The user selects to update
foo1-1.1 
foo2-1.1 

I call 
yumBase.update(<foo1-1.1 po>)
yumBase.update(<foo2-1.1 po>)

The result is:

Installed.
foo1-1.1
foo2-1.1
foo3-1.0
bar1-1.0
bar2-1.0
bar3-1.0

it should be:
foo1-1.1
foo2-1.1
foo3-1.0
bar3-1.0








Comment 5 Tim Lauridsen 2006-01-04 07:34:25 UTC
UPS.

I should have been like this :

Availible updates.

foo1-1.1 (Obsoletes bar1-1.0)
foo2-1.1 (Obsoletes bar2-1.0)
foo3-1.1 (Obsoletes bar3.1.0)

Comment 6 Seth Vidal 2006-01-05 05:35:10 UTC
Line 1719 through 1722 of yum/__init__.py

that's in YumBase.update()

it specifically looks for obsoletes of the package they have specified. If they
have specified an installed package.


If they have specified an available package then it doesn't make sense to select
the obsoleter for that package. The user is specifically requesting the update
to another package which is not installed. That sounds to me like they are
requesting that behavior to move around the obsolete contained in another package.



Comment 7 Tim Lauridsen 2006-01-05 07:27:42 UTC
(In reply to comment #6)
> Line 1719 through 1722 of yum/__init__.py
> 
> that's in YumBase.update()
> 
> it specifically looks for obsoletes of the package they have specified. If they
> have specified an installed package.
> 
> 
> If they have specified an available package then it doesn't make sense to select
> the obsoleter for that package. The user is specifically requesting the update
> to another package which is not installed. That sounds to me like they are
> requesting that behavior to move around the obsolete contained in another package.
> 
> 

I looks like i have misunderstod something.

I call yumBase.update(newpo) 
(where newpo = the po of new version of package to update too).

I should call yumBase.update(instpo)
(where instpo = the po of the installed package to be updated)
Then the obsoletions, will be handled by yumBase.update.

Hope i got rigth this time :-)))

Thanks,
Tim




Comment 8 Tim Lauridsen 2006-01-06 10:27:14 UTC
I looks like the problem is packages is added to the Transaction Set
under Depsolve (for dependencies), then it is not check if it obsoletes something.
But if all obsoletes for all availible updates are added to the Transaction Set,
before the depsolve, then everything turn out fine.
The only place i have seen it, is when trying to upgrade from
FC4 to Rawhide.

I changed it in so if:

1. All Availible updates are selected by the user.
  just call yumbase.update()

2. if the user only selects some of the updates.
  for po in select_updates:
      yumBase.update(po)

Now i work in the same way as yum on the commandline.

i have added a special commandline option (--fullobsoletion), there forces 
all obsoletions to be added to the transaction, in the samme way as it done
in yumbase.update(), I makes it possible to upgrade from FC4 to Rawhide while
skipping som updates with broken dependencies.






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