As the volatile sources are parsed last they were sorted behind the
dpkg/status file and hence are treated as a downgrade, which isn't
really what you want to happen as from a user POV its an upgrade.
if (Res > 0)
break;
// Versionstrings are equal - is hash also equal?
- if (Res == 0 && List.SameVersion(Hash, Ver) == true)
- break;
+ if (Res == 0)
+ {
+ if (List.SameVersion(Hash, Ver) == true)
+ break;
+ // sort (volatile) sources above not-sources like the status file
+ if ((CurrentFile->Flags & pkgCache::Flag::NotSource) == 0)
+ {
+ auto VF = Ver.FileList();
+ for (; VF.end() == false; ++VF)
+ if (VF.File().Flagged(pkgCache::Flag::NotSource) == false)
+ break;
+ if (VF.end() == true)
+ break;
+ }
+ }
// proceed with the next till we have either the right
// or we found another version (which will be lower)
}
Priority: extra
Maintainer: No Body <no@example.org>
Architecture: all
+Depends: foo:i386
Description: test package" >> ./incoming/$PKG/DEBIAN/control
if [ -n "$3" ]; then
echo -n "$3" >> ./incoming/$PKG/DEBIAN/control
chmod 700 ./incoming
testsuccesswithnotice aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
testfailure grep 'is already the newest version' rootdir/tmp/testsuccesswithnotice.output
+ chmod 711 ./incoming
else
testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
fi
-
+sed -i -e '/^Depends: foo/ d' rootdir/var/lib/dpkg/status
+testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb
+testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output