Package: apt Version: 1.0.9.2 Severity: wishlist Tags: patch Hi!
Some time ago I went hunting for instances of old Status field values, and found apt used them, and several other projects had taken the apt implementation as reference or inspiration. So let's clean this up. More details in the commit message. :) I've only build-tested this, but it seems it is just an internal variable affected, so no ABI breakage should come from this (famous last words :). Thanks, Guillem
From 97f7435eae9f0e589e792775df02e82d419187ce Mon Sep 17 00:00:00 2001 From: Guillem Jover <guil...@debian.org> Date: Mon, 1 Sep 2014 16:09:48 +0200 Subject: [PATCH] Update Status field values handling Remove long obsolete (hold, hold-reinstreq, removal-failed) or just wrong (post-inst-failed vs postinst-failed) values, that have been autoconverted by dpkg at run-time to their new equivalents, so there should not be any such instance in any recent system (removal-failed since dpkg 1.1.4 in Apr 1996, hold and hold-reinstreq since dpkg 1.2.0 in May 1996). dpkg even stopped doing the mapping in 1.15.4 and 1.15.8 respectively. At the same time sort the list in the same order as they appear in the dpkg code. --- apt-pkg/deb/deblistparser.cc | 18 ++++++------------ doc/dpkg-tech.dbk | 28 +++++----------------------- 2 files changed, 11 insertions(+), 35 deletions(-) diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 7d4fd52..e61708d 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -338,13 +338,9 @@ unsigned short debListParser::VersionHash() /* Status lines are of the form, Status: want flag status want = unknown, install, hold, deinstall, purge - flag = ok, reinstreq, hold, hold-reinstreq - status = not-installed, unpacked, half-configured, - half-installed, config-files, post-inst-failed, - removal-failed, installed - - Some of the above are obsolete (I think?) flag = hold-* and - status = post-inst-failed, removal-failed at least. + flag = ok, reinstreq + status = not-installed, config-files, half-installed, unpacked, + half-configured, triggers-awaited, triggers-pending, installed */ bool debListParser::ParseStatus(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver) @@ -401,15 +397,13 @@ bool debListParser::ParseStatus(pkgCache::PkgIterator &Pkg, // Process the flag field WordList StatusList[] = {{"not-installed",pkgCache::State::NotInstalled}, + {"config-files",pkgCache::State::ConfigFiles}, + {"half-installed",pkgCache::State::HalfInstalled}, {"unpacked",pkgCache::State::UnPacked}, {"half-configured",pkgCache::State::HalfConfigured}, - {"installed",pkgCache::State::Installed}, - {"half-installed",pkgCache::State::HalfInstalled}, - {"config-files",pkgCache::State::ConfigFiles}, {"triggers-awaited",pkgCache::State::TriggersAwaited}, {"triggers-pending",pkgCache::State::TriggersPending}, - {"post-inst-failed",pkgCache::State::HalfConfigured}, - {"removal-failed",pkgCache::State::HalfInstalled}, + {"installed",pkgCache::State::Installed}, {NULL, 0}}; if (GrabWord(string(Start,I-Start),StatusList,Pkg->CurrentState) == false) return _error->Error("Malformed 3rd word in the Status line"); diff --git a/doc/dpkg-tech.dbk b/doc/dpkg-tech.dbk index 660ccab..2584cf6 100644 --- a/doc/dpkg-tech.dbk +++ b/doc/dpkg-tech.dbk @@ -222,13 +222,11 @@ Where <replaceable>Want</replaceable> may be one of <emphasis>unknown</emphasis>, <emphasis>install</emphasis>, <emphasis>hold</emphasis>, <emphasis>deinstall</emphasis>, <emphasis>purge</emphasis>. <replaceable>Flag</replaceable> may -be one of <emphasis>ok</emphasis>, <emphasis>reinstreq</emphasis>, -<emphasis>hold</emphasis>, -<emphasis>hold-reinstreq</emphasis>. <replaceable>Status</replaceable> may -be one of <emphasis>not-installed</emphasis>, <emphasis>unpacked</emphasis>, -<emphasis>half-configured</emphasis>, <emphasis>installed</emphasis>, -<emphasis>half-installed</emphasis> <emphasis>config-files</emphasis>, -<emphasis>post-inst-failed</emphasis>, <emphasis>removal-failed</emphasis>. +be one of <emphasis>ok</emphasis>, <emphasis>reinstreq</emphasis>. +<replaceable>Status</replaceable> may +be one of <emphasis>not-installed</emphasis>, <emphasis>config-files</emphasis>, +<emphasis>half-installed</emphasis>, <emphasis>unpacked</emphasis>, +<emphasis>half-configured</emphasis> and <emphasis>installed</emphasis>. The states are as follows:- </para> <variablelist> @@ -287,22 +285,6 @@ nothing else. </para> </listitem> </varlistentry> -<varlistentry> -<term>post-inst-failed</term> -<listitem> -<para> -Old name for half-configured. Do not use. -</para> -</listitem> -</varlistentry> -<varlistentry> -<term>removal-failed</term> -<listitem> -<para> -Old name for half-installed. Do not use. -</para> -</listitem> -</varlistentry> </variablelist> <para> The two last items are only left in dpkg for compatibility - they are -- 2.1.1.391.g7a54a76