Bug 210924

Summary: YaST finds and selects non-matching PPDs
Product: [openSUSE] openSUSE 10.2 Reporter: Glenn Holmer <gholmer>
Component: PrintingAssignee: Michal Zugec <mzugec>
Status: RESOLVED FIXED QA Contact: Johannes Meixner <jsmeix>
Severity: Major    
Priority: P5 - None    
Version: Alpha 5   
Target Milestone: ---   
Hardware: PC   
OS: Other   
Whiteboard:
Found By: Other Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: y2log after printer re-installing printer

Description Glenn Holmer 2006-10-08 12:02:36 UTC
In 10.1 there is a driver for this specific model, but I can't find any 
driver that gives acceptable results in 10.2 alpha 5 (tried DeskJet 
Series, New DeskJet Series, etc.).

10.1 is using driver "HP DeskJet 6840 Foomatic/hpijs (recommended)
(manufacturer-PPDs/hplip/HP-DeskJet_6840-hpijs.ppd.gz)".
Comment 1 Glenn Holmer 2006-10-08 12:26:02 UTC
Seems to be because package "hplip" didn't get installed, but installing it manually poses another problem: even though I select "HP / DeskJet 6840", the driver that gets loaded is for the 6800.  There is a driver in hplip for the 6840:

shadow@shoggoth:~> rpm -ql hplip | grep 6840
/usr/share/cups/model/manufacturer-PPDs/hplip/HP-DeskJet_6840-hpijs.ppd.gz

In any case, I don't get any output, and /etc/cups/printers.conf contains this:

State Stopped
StateMessage Filter "foomatic-rip" for printer "hp6840" not available: Too many levels of symbolic links
Comment 2 Johannes Meixner 2006-10-09 06:55:25 UTC
Strange "Too many levels of symbolic links" message.
/usr/lib/cups/filter/foomatic-rip should be only one level of
symbolic link to /usr/bin/foomatic-rip

Can you do on your system what I did on my system
---------------------------------------------------------------------------
root@host# type -a foomatic-rip
foomatic-rip is /usr/bin/foomatic-rip

root@host# cd /usr/lib/cups/filter/

root@host# file foomatic-rip 
foomatic-rip: symbolic link to `../../../bin/foomatic-rip'

root@host# file ../../../bin/foomatic-rip
../../../bin/foomatic-rip: perl script text
---------------------------------------------------------------------------
and report the results of your system.

Comment 3 Glenn Holmer 2006-10-09 10:36:00 UTC
shoggoth:~ # type -a foomatic-rip
foomatic-rip is /usr/bin/foomatic-rip
shoggoth:~ # cd /usr/lib/cups/filter
shoggoth:/usr/lib/cups/filter # file foomatic-rip
foomatic-rip: broken symbolic link to `foomatic-rip'
shoggoth:/usr/lib/cups/filter # file ../../../bin/foomatic-rip
../../../bin/foomatic-rip: perl script text
shoggoth:/usr/lib/cups/filter # ls -l foomatic-rip
lrwxrwxrwx 1 root root 12 Oct  7 09:15 foomatic-rip -> foomatic-rip
shoggoth:/usr/lib/cups/filter # 

Comment 4 Johannes Meixner 2006-10-09 10:57:33 UTC
There is a wrong link in the foomatic-filters package!

To fix it now, do:
cd /usr/lib/cups/filter
ln -s ../../../bin/foomatic-rip foomatic-rip
Comment 5 Johannes Meixner 2006-10-09 11:02:36 UTC
I meant
cd /usr/lib/cups/filter
rm foomatic-rip
ln -s ../../../bin/foomatic-rip foomatic-rip

Please test and report whether it works for you then.
Comment 6 Johannes Meixner 2006-10-09 11:10:30 UTC
Submitted fixed foomatic-filters package to STABLE.
Comment 7 Johannes Meixner 2006-10-09 11:17:39 UTC
Filed seperated bug #210984 because package "hplip" didn't get installed.
Comment 8 Glenn Holmer 2006-10-09 23:39:59 UTC
It produces good output after fixing the symlink, but even though I selected the 6840 driver, YaST still shows using HP-DeskJet_6800-hpijs.ppd.gz. /usr/share/cups/model/manufacturer-PPDs/hplip does contain an HP-DeskJet_6840-hpijs.ppd.gz (in addition to the 6800).

On 10.1 it shows the 6840 driver.
Comment 9 Johannes Meixner 2006-10-10 06:18:20 UTC
/usr/share/cups/model/manufacturer-PPDs/hplip/HP-DeskJet_6800-hpijs.ppd.gz
and
/usr/share/cups/model/manufacturer-PPDs/hplip/HP-DeskJet_6840-hpijs.ppd.gz
are identical regarding the "DeviceModel" entry
(both have DeviceModel 'deskjet 5600') and the differences in both PPDs
are only about the model names - the rest is identical.
This is because both models are internally the same (they belong to the
same "device/print class" DJGenericVIP), see the HP documentation
/usr/share/doc/packages/hplip/supported_devices/inkjet.html
and
/usr/share/doc/packages/hplip/tech_docs/device_classes.html

Therefore it does not really matter in this particular case
which PPD you use.
Nevertheless there may be a problem which PPDs YaST assigns to
a specific model.
Therefore I am interested to find out why YaST does not assign
the 100% correct PPD in your case:

YaST finds matching PPDs by comparing the autodetected model string
with the "ModelName" entry in the PPDs.
The "ModelName" entries are:
*ModelName:     "HP DeskJet 6800"
*ModelName:     "HP DeskJet 6840"
so that the question is now what the autodetected model string is.
This depends on how your printer is connected to the system.
If it is via USB then attach the output of
lsusb -v
as plain text attachment to this bug.
Furthermore attach also the output of
hwinfo --printer
as plain text attachment to this bug.

Furthermore we need the YaST log for exactly one setup of your printer:
Please provide the YaST log file as follows:
1.
Have a clean state to start:
Remove all your print queues in YaST and finish YaST.
2.
Move the old YaST log file away:
mv /var/log/YaST2/y2log /var/log/YaST2/y2log.old
3.
Start YaST and do again setup your pinter.
Finish YaST and save the log file:
cp -p /var/log/YaST2/y2log /var/log/YaST2/y2log.save
4.
Attach /var/log/YaST2/y2log.save
as attachment with mime type "text plain" to this bug.
Comment 10 Glenn Holmer 2006-10-10 11:22:02 UTC
Created attachment 101104 [details]
y2log after printer re-installing printer

The printer is network attached ("Print Directly to Network Printer").
Comment 11 Johannes Meixner 2006-10-11 06:45:44 UTC
Michal,
there is the problem that YaST seems to find and select an incorrect
PPD file, see starting at comment #8.
Even if it doesn't matter for this particular printer, it is a
major problem if this would happen for other printer models too.
I increase severity to major because at the moment it seems
YaST might find and select really wrong PPDs for a given model
which would result non-working print queues.

In attachment #101104 [details] there is:
------------------------------------------------------------------------------
Printerdb.ycp:615 Sorted PPD files for HP:DESKJET6840:
["/usr/share/cups/model/manufacturer-PPDs/hplip/HP-DeskJet_6800-hpijs.ppd.gz",
 "/usr/share/cups/model/manufacturer-PPDs/hplip/HP-DeskJet_6840-hpijs.ppd.gz"]
...
Printerdb.ycp:666 Selected file:
/usr/share/cups/model/manufacturer-PPDs/hplip/HP-DeskJet_6800-hpijs.ppd.gz
------------------------------------------------------------------------------

I do not understand why YaST selects HP-DeskJet_6800-hpijs.ppd.gz
which has the ModelName entry "HP DeskJet 6800" when the user
has manually chosen the model "HP:DESKJET6840" which should match
perfectly to HP-DeskJet_6840-hpijs.ppd.gz which has the
ModelName entry "HP DeskJet 6840".

I also do not understand why YaST finds HP-DeskJet_6800-hpijs.ppd.gz
as a matching PPD for the model "DESKJET6840" at all because the
ModelName entry in this PPD should not match at all.
Comment 13 Michal Zugec 2006-11-01 19:00:18 UTC
fixed in yast2-printer-2.14.7