Bug 674326

Summary: Obsoletes: can lead to transaction error
Product: [Fedora] Fedora Reporter: Rex Dieter <rdieter>
Component: PackageKitAssignee: Richard Hughes <rhughes>
Status: CLOSED INSUFFICIENT_DATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 14CC: jonathan, rhughes, smparrish
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-03-14 14:12:20 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Attachments:
Description Flags
another log similar to comment #1, using updates-testing instead, not custom repo none

Description Rex Dieter 2011-02-01 13:43:52 UTC
I've a case where pkg foo-1, was split into foo-2 and foo-bar-2 where:

foo-bar:
Obsoletes: foo < 2
Requires:  foo = 2

(ie, to handle the case of an upgrade path where nothing disappears off a users' system, but that the new foo-bar is now optional and not pulled in unconditionally in the case:
yum/pkcon install foo
)

The concrete example here is,
https://admin.fedoraproject.org/updates/qt-4.7.1-13.fc14

where foo = qt-x11, and foo-bar = qt-config

Testing with these:
rpm -q PackageKit gnome-packagekit kpackagekit
PackageKit-0.6.11-2.fc14.x86_64
gnome-packagekit-2.32.0-2.fc14.x86_64
kpackagekit-0.6.3.3-1.fc14.x86_64


In various testing, I've found,
pkcon update   => works

both gnome-packagekit, kpackagekit fail in the normal 'update' case (where all available updates listed are selected), with error:
could not add package update for qt-x11-1:4.7.1-13.fc14(x86_64)updates-testing: 1:qt-x11-4.7.1-13.fc14.x86_64"

If I find and deselect 'qt-config' from the list of available updates, the transaction completes.


Is this fixable short-term in pk, or should I consider removing the Obsoletes that helps the 'update, but don't drop anything' case?  I'm open to any other advice as well.

Comment 1 Rex Dieter 2011-02-09 18:14:46 UTC
As requested on irc, output from: gpk-update-viewer --verbose:


TI:12:13:17	FI:egg-debug.c	FN:egg_debug_post_parse_hook,415
 - Verbose debugging 1 (on console 0)
TI:12:13:17	FI:egg-console-kit.c	FN:egg_console_kit_init,300
 - ConsoleKit session ID: /org/freedesktop/ConsoleKit/Session3
TI:12:13:17	FI:gpk-common.c	FN:gpk_window_set_size_request,253
 - using native mode: 700x600
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::mime-types
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::distro-id
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::version-micro
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::version-major
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::version-minor
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::backend-description
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::network-state
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::roles
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::backend-name
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::backend-author
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::groups
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::filters
TI:12:13:18	FI:gpk-update-viewer.c	FN:gpk_update_viewer_get_new_update_array,2729
 - only showing newest updates
(gpk-update-viewer:10920): PackageKit-DEBUG: role now get-updates
(gpk-update-viewer:10920): PackageKit-DEBUG: emit transaction-list-changed (when idle)
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x1, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x1, so ignoring
TI:12:13:18	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,1059
 - no last package
TI:12:13:18	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,992
 - status setup
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x2, so ignoring
TI:12:13:18	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,992
 - status info
(gpk-update-viewer:10920): PackageKit-DEBUG: properties changed, so getting new list
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x3, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::locked
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,992
 - status finished
(gpk-update-viewer:10920): PackageKit-DEBUG: properties changed, so getting new list
(gpk-update-viewer:10920): PackageKit-DEBUG: emit transaction-list-changed (when idle)
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_get_updates_cb,2631
 - adding: id=qt;1:4.7.1-13.fc14;x86_64;kde-testing, text=<b>Qt toolkit</b>
qt-1:4.7.1-13.fc14 (x86_64)
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_get_updates_cb,2631
 - adding: id=qt-config;1:4.7.1-13.fc14;x86_64;kde-testing, text=<b>Graphical configuration tool for programs using Qt 4</b>
qt-config-1:4.7.1-13.fc14 (x86_64)
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_get_updates_cb,2631
 - adding: id=qt-devel;1:4.7.1-13.fc14;x86_64;kde-testing, text=<b>Development files for the Qt toolkit</b>
qt-devel-1:4.7.1-13.fc14 (x86_64)
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_get_updates_cb,2631
 - adding: id=qt-mysql;1:4.7.1-13.fc14;x86_64;kde-testing, text=<b>MySQL driver for Qt&apos;s SQL classes</b>
qt-mysql-1:4.7.1-13.fc14 (x86_64)
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_get_updates_cb,2631
 - adding: id=qt-sqlite;1:4.7.1-13.fc14;x86_64;kde-testing, text=<b>SQLite driver for Qt&apos;s SQL classes</b>
qt-sqlite-1:4.7.1-13.fc14 (x86_64)
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_get_updates_cb,2631
 - adding: id=qt-webkit;1:4.7.1-13.fc14;x86_64;kde-testing, text=<b>Qt WebKit library</b>
qt-webkit-1:4.7.1-13.fc14 (x86_64)
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_get_updates_cb,2631
 - adding: id=qt-webkit-devel;1:4.7.1-13.fc14;x86_64;kde-testing, text=<b>Development files for qt-webkit-devel</b>
qt-webkit-devel-1:4.7.1-13.fc14 (x86_64)
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_get_updates_cb,2631
 - adding: id=qt-x11;1:4.7.1-13.fc14;x86_64;kde-testing, text=<b>Qt GUI-related libraries</b>
qt-x11-1:4.7.1-13.fc14 (x86_64)
(gpk-update-viewer:10920): PackageKit-DEBUG: role now get-update-detail
(gpk-update-viewer:10920): PackageKit-DEBUG: role now get-details
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::locked
(gpk-update-viewer:10920): PackageKit-DEBUG: emit transaction-list-changed (when idle)
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x1, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x1, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: emit transaction-list-changed (when idle)
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,1059
 - no last package
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,992
 - status setup
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,1059
 - no last package
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,992
 - status wait
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x2, so ignoring
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,992
 - status info
(gpk-update-viewer:10920): PackageKit-DEBUG: properties changed, so getting new list
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x3, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::locked
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,992
 - status finished
(gpk-update-viewer:10920): PackageKit-DEBUG: properties changed, so getting new list
(gpk-update-viewer:10920): PackageKit-DEBUG: emit transaction-list-changed (when idle)
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x2, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::locked
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,992
 - status setup
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x3, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: properties changed, so getting new list
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x3, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x3, so ignoring
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,992
 - status finished
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::locked
(gpk-update-viewer:10920): PackageKit-DEBUG: properties changed, so getting new list
(gpk-update-viewer:10920): PackageKit-DEBUG: emit transaction-list-changed (when idle)
TI:12:13:21	FI:gpk-update-viewer.c	FN:gpk_packages_treeview_clicked_cb,2062
 - selected row is: qt;1:4.7.1-13.fc14;x86_64;kde-testing, 0x1748210
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::locked
TI:12:13:24	FI:gpk-update-viewer.c	FN:gpk_update_viewer_button_install_cb,1215
 - Doing the package updates
TI:12:13:24	FI:gpk-update-viewer.c	FN:gpk_packages_treeview_clicked_cb,2067
 - no row selected
(gpk-update-viewer:10920): PackageKit-DEBUG: adding state 0x169d010
(gpk-update-viewer:10920): PackageKit-DEBUG: doing update
(gpk-update-viewer:10920): PackageKit-DEBUG: role now simulate-update-packages
(gpk-update-viewer:10920): PackageKit-DEBUG: emit transaction-list-changed (when idle)
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x1, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x1, so ignoring
TI:12:13:24	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,1059
 - no last package
TI:12:13:24	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,992
 - status setup
(gpk-update-viewer:10920): PackageKit-DEBUG: properties changed, so getting new list
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x2, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x2, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x2, so ignoring
(gpk-update-viewer:10920): PackageKit-DEBUG: already processing request 0x2, so ignoring
TI:12:13:24	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,1059
 - no last package
TI:12:13:24	FI:gpk-update-viewer.c	FN:gpk_update_viewer_progress_cb,992
 - status finished
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::locked
(gpk-update-viewer:10920): PackageKit-DEBUG: properties changed, so getting new list
(gpk-update-viewer:10920): PackageKit-DEBUG: remove state 0x169d010
*** WARNING ***
TI:12:13:24	FI:gpk-update-viewer.c	FN:gpk_update_viewer_update_packages_cb,481
 - failed to update packages: transaction-error, could not add package update for qt-x11-1:4.7.1-13.fc14(x86_64)kde-testing: 1:qt-x11-4.7.1-13.fc14.x86_64
(gpk-update-viewer:10920): PackageKit-DEBUG: emit transaction-list-changed (when idle)
(gpk-update-viewer:10920): PackageKit-DEBUG: notify::locked
TI:12:13:32	FI:gpk-update-viewer.c	FN:gpk_update_viewer_quit,138
 - emitting action-close

Comment 2 Rex Dieter 2011-02-09 18:18:50 UTC
Created attachment 477878 [details]
another log similar to comment #1, using updates-testing instead, not custom repo

Comment 3 Rex Dieter 2011-02-09 19:24:38 UTC
I've found 2 places in the .spec that includes an Obsoletes, so may be confusing things.  I'll fix that in qt and retest to see if that's the culprit.

Comment 4 Rex Dieter 2011-02-09 19:25:26 UTC
nvm, that problem was a bit different and should be irrelevant here.

Comment 5 Rex Dieter 2011-03-14 14:12:20 UTC
dropped the Obsoletes, so I no longer have a test case or can reproduce, so I guess I'll close this out for now.

(feel free to chime in or reopen if you feel this is still worth pursuing)