[hplip/f14] Update IEEE 1284 Device IDs in hpijs.drv from hpcups.drv.

Tim Waugh twaugh at fedoraproject.org
Tue Jun 28 13:43:40 UTC 2011


commit ffb1be134ffc58560a873000dcddade494d6ef3d
Author: Tim Waugh <twaugh at redhat.com>
Date:   Tue Jun 28 12:44:07 2011 +0100

    Update IEEE 1284 Device IDs in hpijs.drv from hpcups.drv.

 copy-deviceids.py |   73 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 hplip.spec        |    7 +++++
 2 files changed, 80 insertions(+), 0 deletions(-)
---
diff --git a/copy-deviceids.py b/copy-deviceids.py
new file mode 100755
index 0000000..978b979
--- /dev/null
+++ b/copy-deviceids.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+import os
+import re
+import sys
+if len (sys.argv) < 3:
+    print "Specify hpcups.drv and hpijs.drv pathnames"
+    sys.exit (1)
+
+hpcups_drv = sys.argv[1]
+hpijs_drv = sys.argv[2]
+
+# Match e.g.      Attribute "ShortNickName" "" "blah"
+# and catch 'blah' in group 0
+snn_re = re.compile ('^\s*Attribute\s+"ShortNickName"\s+""\s+"(.*)"\s*$')
+
+# Match e.g.      Attribute "1284DeviceID" "" "blah"
+# and catch everything before 'blah' in group 0, 'blah' in group 1,
+# trailing characters in group 2
+devid_re = re.compile ('^(\s*Attribute\s+"1284DeviceID"\s+""\s+")(.*)("\s*)$')
+
+# Match e.g.   }
+end_re = re.compile ('^\s*}')
+
+devid_by_snn = dict()
+
+hpcups_lines = file (hpcups_drv, "r").readlines ()
+current_snn = None
+for line in hpcups_lines:
+    if current_snn == None:
+        match = snn_re.match (line)
+        if match == None:
+            continue
+
+        current_snn = match.groups ()[0]
+    else:
+        match = devid_re.match (line)
+        if match:
+            devid_by_snn[current_snn] = match.groups ()[1]
+            continue
+
+    if end_re.match (line):
+        current_snn = None
+
+print >>sys.stderr, \
+    "%d IEEE 1284 Device IDs loaded from %s" % (len (devid_by_snn),
+                                                os.path.basename (hpcups_drv))
+
+replaced = 0
+hpijs_lines = file (hpijs_drv, "r").readlines ()
+current_snn = None
+for line in hpijs_lines:
+    if current_snn == None:
+        match = snn_re.match (line)
+        if match:
+            current_snn = match.groups ()[0]
+            if current_snn.endswith (" hpijs"):
+                current_snn = current_snn[:-6]
+    else:
+        match = devid_re.match (line)
+        if match:
+            devid = devid_by_snn.get (current_snn)
+            if devid:
+                line = (match.groups ()[0] + devid + match.groups ()[2])
+                replaced += 1
+
+    if end_re.match (line):
+        current_snn = None
+
+    print line.rstrip ("\n")
+
+print >>sys.stderr, \
+    "%d IEEE 1284 Device IDs replaced in %s" % (replaced,
+                                                os.path.basename (hpijs_drv))
diff --git a/hplip.spec b/hplip.spec
index 37024b0..d538b36 100644
--- a/hplip.spec
+++ b/hplip.spec
@@ -11,6 +11,7 @@ Obsoletes: xojpanel <= 0.91
 Url: http://hplip.sourceforge.net/
 Source0: http://kent.dl.sourceforge.net/sourceforge/hplip/%{name}-%{version}.tar.gz
 Source1: hpcups-update-ppds.sh
+Source2: copy-deviceids.py
 Patch1: hplip-pstotiff-is-rubbish.patch
 Patch2: hplip-strstr-const.patch
 Patch3: hplip-ui-optional.patch
@@ -170,6 +171,11 @@ rm -rf $RPM_BUILD_DIR/%{name}-%{version}
 # HP Color LaserJet CM3530 MFP (bug #659381).
 # HP LaserJet Professional P1606dn (bug #708472).
 %patch5 -p1 -b .deviceIDs-drv
+chmod +x %{SOURCE2}
+mv prnt/drv/hpijs.drv.in{,.deviceIDs-drv-hpijs}
+%{SOURCE2} prnt/drv/hpcups.drv.in \
+	prnt/drv/hpijs.drv.in.deviceIDs-drv-hpijs \
+	> prnt/drv/hpijs.drv.in
 
 # Stopped hpcups pointlessly trying to read spool files
 # directly (bug #552572).
@@ -519,6 +525,7 @@ fi
 %changelog
 * Tue Jun 28 2011 Tim Waugh <twaugh at redhat.com> 3.11.5-4
 - Added Device ID for HP LaserJet Professional P1606dn (bug #708472).
+- Update IEEE 1284 Device IDs in hpijs.drv from hpcups.drv.
 
 * Fri Jun 10 2011 Tim Waugh <twaugh at redhat.com> 3.11.5-3
 - Re-create installed hpcups PPDs unconditionally (bug #712241).


More information about the scm-commits mailing list