]> git.saurik.com Git - apt.git/commitdiff
show distribution mismatch for changed codenames
authorDavid Kalnischkies <david@kalnischkies.de>
Fri, 11 Nov 2016 12:15:27 +0000 (13:15 +0100)
committerDavid Kalnischkies <david@kalnischkies.de>
Fri, 11 Nov 2016 22:40:39 +0000 (23:40 +0100)
We have the last Release file around for other checks, so its trivial to
look if the new Release file contains a new codename (e.g. the user has
"testing" in the sources and it flipped from stretch to buster).

Such a change can be okay and expected, but also be a hint of problems,
so a warning if we see it happen seems okay. We can only print it once
anyhow and frontends and co are likely to ignore/hide it.

apt-pkg/acquire-item.cc
test/integration/test-bug-841874-warning-for-mismatching-distribution

index 54cb9db71dddeabaf46c6d94c592cd8cb7ef999b..154b9a16e8e08e72c3dd9ac34665b608610853c8 100644 (file)
@@ -1608,6 +1608,14 @@ bool pkgAcqMetaBase::VerifyVendor(string const &)                        /*{{{*/
    if (TransactionManager->MetaIndexParser->CheckDist(ExpectedDist) == false)
       _error->Warning(_("Conflicting distribution: %s (expected %s but got %s)"),
            Desc.Description.c_str(), ExpectedDist.c_str(), NowCodename.c_str());
+   // might be okay, might be not
+   if (TransactionManager->LastMetaIndexParser != nullptr)
+   {
+      auto const LastCodename = TransactionManager->LastMetaIndexParser->GetCodename();
+      if (LastCodename.empty() == false && NowCodename.empty() == false && LastCodename != NowCodename)
+        _error->Warning(_("Conflicting distribution: %s (expected %s but got %s)"),
+              Desc.Description.c_str(), LastCodename.c_str(), NowCodename.c_str());
+   }
    return true;
 }
                                                                        /*}}}*/
index 7502eefc38e959c55bf21f51cc32f35aecdbdcf3..6cc8e317341c9a80a7bcc805badce8b8347a1a01 100755 (executable)
@@ -47,3 +47,15 @@ testfailure apt show foo
 ln -s "${APTARCHIVE}/dists/testing" "${APTARCHIVE}/dists/buster"
 testsuccess apt update
 testsuccess apt show foo
+
+# changing codenames gets a warning, too
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e 's#buster#testing#g' rootdir/etc/apt/sources.list.d/*
+testsuccess apt update
+testsuccess apt show foo
+sed -i -e 's#^Codename: buster#Codename: zurg#g' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testwarningmsg "W: Conflicting distribution: file:$APTARCHIVE testing/updates InRelease (expected buster/updates but got zurg/updates)" apt update
+testsuccess apt show foo
+testsuccess apt update
+testsuccess apt show foo