Browse Source

dpkg: Do not call modstatdb_note() unnecessarily on remove or purge

Move the modstatdb_note() inside the !f_pending conditional where
the want status is being changed, there's no point in always calling
this function afterwards if there's been no status change at all.
Guillem Jover 13 years ago
parent
commit
5bbc18af9d
2 changed files with 5 additions and 2 deletions
  1. 1 0
      debian/changelog
  2. 4 2
      src/remove.c

+ 1 - 0
debian/changelog

@@ -59,6 +59,7 @@ dpkg (1.17.0) UNRELEASED; urgency=low
   * Execute maintainer scripts in a new execution context, based on the
     current one and the specific maintainer script filename, and if it's
     not different to the current one, use "dpkg_script_t" as a fallback.
+  * Do not unnecessarily create a dpkg update log record on remove or purge.
 
  -- Guillem Jover <guillem@debian.org>  Fri, 03 Aug 2012 13:21:00 +0200
 

+ 4 - 2
src/remove.c

@@ -3,7 +3,7 @@
  * remove.c - functionality for removing packages
  *
  * Copyright © 1995 Ian Jackson <ian@chiark.greenend.org.uk>
- * Copyright © 2007-2012 Guillem Jover <guillem@debian.org>
+ * Copyright © 2007-2013 Guillem Jover <guillem@debian.org>
  *
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -114,8 +114,10 @@ void deferred_remove(struct pkginfo *pkg) {
       pkg_set_want(pkg, want_purge);
     else
       pkg_set_want(pkg, want_deinstall);
+
+    if (!f_noact)
+      modstatdb_note(pkg);
   }
-  if (!f_noact) modstatdb_note(pkg);
 
   debug(dbg_general, "checking dependencies for remove '%s'",
         pkg_name(pkg, pnaw_always));