Code review comment for lp:~evfool/synaptic/lp945997

Revision history for this message
Daniel Hartwig (wigs) wrote :

> I did not make my research,, just simply checked that it
> works for me for both multiarch and simple packages

Indeed my initial look at the logic was not deep enough either! Consider:

$ apt-cache show bison:i386 bison:amd64 | grep …
Package: bison
Status: install ok installed
Architecture: i386
Multi-Arch: foreign

Package: bison
Architecture: amd64
Multi-Arch: foreign

$ ls /var/lib/dpkg/info/bison*.list
/var/lib/dpkg/info/bison.list

The properties screen for bison:amd64 (which is *not* installed) will display the installed files belonging to bison:i386.

Quick fix: determine whether the package is installed before looking for the files:

const char *RPackage::installedFiles()
{
static string filelist;
static string notInstalled = _("The list of installed files is only available for installed packages");
vector<string> sV;
string s;

if (!(getFlags() & FInstalled))
  return notInstalled.c_str();

[*] The sensible thing to do is not guess where dpkg stores the file list and instead call “dpkg -L PKGNAME”. There are various issues with that (in fact, even the released code has issues such as being ignorant of DPkg::Run-Directory), none of which will be addressed until after Wheezy.

« Back to merge proposal