Bug 431273

Summary: pirut can't find installed packages
Product: [Fedora] Fedora Reporter: petrosyan
Component: yumAssignee: James Antill <james.antill>
Status: CLOSED UPSTREAM QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: low Docs Contact:
Priority: low    
Version: rawhideCC: james.antill, katzj
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: 2008-02-05 00:13:39 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 petrosyan 2008-02-01 21:54:56 UTC
Description of problem:
pirut can't find installed packages

Version-Release number of selected component (if applicable):
pirut-1.3.29-1.fc9

How reproducible:
Always

Steps to Reproduce:
1. search for a package via pirut which is already installed (for example 'codeina')

Actual results:
pirut says that no packages by that name exist

Expected results:
pirut should find the installed package

Comment 1 Jeremy Katz 2008-02-01 22:29:35 UTC
This is jantill's fault ;-)

The change with real_crit and real_crit_lower is the cause.  We can fix by also
doing the rpmdb search against real_crit, but he may have something a little bit
more elegant

Comment 2 James Antill 2008-02-01 22:56:36 UTC
 I'm happy to take the blame :), but I don't understand ... we do value.lower()
on all the rpmdb pkg fields, as we did before and the real_crit_lower should
just be moving the .lower() from each call to once.
 And I can search for unixODBC fine from the terminal.


Comment 3 James Antill 2008-02-04 23:33:41 UTC
 Ok, I _think_ the bug here is that the end result does:

            for (po, matched) in sorted(sorted_lists[val],
key=operator.itemgetter(0)):
                if (po.name, po.arch) not in yielded:
                    yield (po, matched)
                    yielded[(po.name, po.arch)] = 1

...which sorts the packages and then _only_ yields the po, if the po.name,
po.arch hasn't been seen before.
 This is "good" for the cmd line, as then we don't get lots of duplication, as
we only output the name.arch ... but pirut does:

 if pos.repoid != "installed" and self.simpleDBInstalled(po.name, po.arch):
      continue

...on the results, _and_ outputs the versions.

 On the upside, I'm pretty sure this is Seth's fault :) ... although I might
have asked for the reduction in output for the cmd line :(.

 The obvious two solutions are:

1. Drop the filtering from searchGen() and do the same thing in cli.py
2. Add an arg. to optionally enable/disable the filtering

...any preferences?

Comment 4 James Antill 2008-02-05 00:14:27 UTC
went with option #2, defaulting to make pirut work again :).