Bug#691925: update-notifier-common: Add an option to only show security packages

2012-11-06 Thread Julian Andres Klode
On Wed, Oct 31, 2012 at 02:01:47PM +0100, Rodolphe QuiƩdeville wrote:
 Package: update-notifier-common
 Version: 0.99.3debian8
 Severity: wishlist
 
 Hi,
 
 Please found attach a patch to add an option -s like -p but to show onlys 
 packages from security

Total NAK. You're duplicating most of the code. What you want is
to modify write_package_names to add an additional filtering
stage, by checking whether the candidates of the packages
are security updates.

But you should probably submit this upstream to Ubuntu anyway,
after signing a Contributor License Agreement with Canonical.
-- 
Julian Andres Klode  - Debian Developer, Ubuntu Member

See http://wiki.debian.org/JulianAndresKlode and http://jak-linux.org/.


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#691925: update-notifier-common: Add an option to only show security packages

2012-10-31 Thread Rodolphe QuiƩdeville
Package: update-notifier-common
Version: 0.99.3debian8
Severity: wishlist

Hi,

Please found attach a patch to add an option -s like -p but to show onlys 
packages from security

Regards,


-- System Information:
Debian Release: 6.0.6
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-openvz-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages update-notifier-common depends on:
ii  python2.6.6-3+squeeze7   interactive high-level object-orie
ii  python-apt0.7.100.1+squeeze1 Python interface to libapt-pkg

Versions of packages update-notifier-common recommends:
ii  libpam-modules1.1.1-6.1+squeeze1 Pluggable Authentication Modules f

update-notifier-common suggests no packages.

-- no debconf information
=== modified file 'ChangeLog'
--- ChangeLog   2006-01-26 23:07:09 +
+++ ChangeLog   2012-10-31 12:39:08 +
@@ -1,3 +1,8 @@
+2012-10-31  Rodolphe Quiedeville  rodol...@quiedeville.org
+
+   * data/apt_check.py: add option -s, --packahe-security to print
+   only security package's name
+
 2006-01-11  Scott James Remnant  sc...@netsplit.com
 
* src/reboot.c: New file containing code to deal with reboot

=== modified file 'data/apt_check.py'
--- data/apt_check.py   2011-05-26 16:02:42 +
+++ data/apt_check.py   2012-10-31 12:53:35 +
@@ -65,6 +65,34 @@
   cache.packages)
 outstream.write(\n.join(map(lambda p: p.name, pkgs)))
 
+def write_package_security(outstream, cache, depcache):
+ write out package names from security that change to outstream 
+for pkg in cache.packages:
+# skip packages that are not marked upgraded/installed
+if not (depcache.marked_install(pkg) or depcache.marked_upgrade(pkg)):
+continue
+# check if this is really a upgrade or a false positive
+# (workaround for ubuntu #7907)
+inst_ver = pkg.current_ver
+cand_ver = depcache.get_candidate_ver(pkg)
+if cand_ver == inst_ver:
+continue
+
+# check for security upgrades
+if isSecurityUpgrade(cand_ver):
+outstream.write(%s\n % pkg.name)
+continue 
+
+# now check for security updates that are masked by a 
+# candidate version from another repo (-proposed or -updates)
+for ver in pkg.version_list:
+if (inst_ver and apt_pkg.version_compare(ver.ver_str, 
inst_ver.ver_str) = 0):
+#print skipping '%s'  % ver.VerStr
+continue
+if isSecurityUpgrade(ver):
+outstream.write(%s\n % pkg.name)
+break
+
 def write_human_readable_summary(outstream, upgrades, security_updates):
  write out human summary summary to outstream 
 outstream.write(gettext.dngettext(update-notifier,
@@ -144,7 +172,7 @@
 continue
 
 # now check for security updates that are masked by a 
-# canidate version from another repo (-proposed or -updates)
+# candidate version from another repo (-proposed or -updates)
 for ver in pkg.version_list:
 if (inst_ver and apt_pkg.version_compare(ver.ver_str, 
inst_ver.ver_str) = 0):
 #print skipping '%s'  % ver.VerStr
@@ -154,7 +182,9 @@
 break
 
 # print the number of upgrades
-if options and options.show_package_names:
+if options and options.show_package_security:
+write_package_security(sys.stderr, cache, depcache)
+elif options and options.show_package_names:
 write_package_names(sys.stderr, cache, depcache)
 elif options and options.readable_output:
 write_human_readable_summary(sys.stdout, upgrades, security_updates)
@@ -185,6 +215,11 @@
   action=store_true,
   dest=show_package_names,
   help=_(Show the packages that are going to be 
installed/upgraded))
+parser.add_option(-s,
+  --package-security,
+  action=store_true,
+  dest=show_package_security,
+  help=_(Like -p but show only packages from security))
 parser.add_option(,
   --human-readable,
   action=store_true,