Bug 521523

Summary: RPM Dependencies for 389 console are incomplete
Product: [Retired] 389 Reporter: Razvan Corneliu C.R. VILT <razvan.vilt>
Component: Install/UninstallAssignee: Nathan Kinder <nkinder>
Status: CLOSED CURRENTRELEASE QA Contact: Viktor Ashirov <vashirov>
Severity: low Docs Contact:
Priority: low    
Version: 1.2.1CC: amsharma, brianlamere, rmeggins
Target Milestone: ---Keywords: VerifiedUpstream
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-12-07 16:41:02 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 434915, 519216    

Description Razvan Corneliu C.R. VILT 2009-09-06 17:48:49 UTC
Description of problem:
Having a minimal install of RHEL I had to add the which package in order to run the 389-console. After that, the only thing missing was a font of any kind. While for fonts there should be a friendlier message, "which" should be a dependency of the RPM.

How reproducible:
Everytime

Actual output of the problems below:

[root@ds4 ~]# 389-console 
/usr/bin/389-console: line 22: which: command not found
/usr/bin/389-console: The java program is not in your path, or is not executable.
[root@ds4 ~]# yum install which
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * epel: ftp.ines.lug.ro
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package which.x86_64 0:2.16-7 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================
 Package                  Arch                      Version                     Repository               Size
==============================================================================================================
Installing:
 which                    x86_64                    2.16-7                      base                     24 k

Transaction Summary
==============================================================================================================
Install      1 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 24 k
Is this ok [y/N]: y
Downloading Packages:
which-2.16-7.x86_64.rpm                                                                |  24 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : which                                             [1/1] 

Installed: which.x86_64 0:2.16-7
Complete!
[root@ds4 ~]# 389-console 
Exception in thread "main" java.lang.Error: Probable fatal error:No fonts found.
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1088)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:960)
        at sun.font.FontManager.findOtherDeferredFont(FontManager.java:899)
        at sun.font.FontManager.findDeferredFont(FontManager.java:916)
        at sun.font.FontManager.findFont2D(FontManager.java:1904)
        at sun.font.FontManager.findFont2D(FontManager.java:1865)
        at sun.font.FontManager.getDefaultPhysicalFont(FontManager.java:1071)
        at sun.font.FontManager.initialiseDeferredFont(FontManager.java:967)
        at sun.font.CompositeFont.doDeferredInitialisation(CompositeFont.java:254)
        at sun.font.CompositeFont.getSlotFont(CompositeFont.java:334)
        at sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:77)
        at sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:93)
        at sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics.java:358)
        at sun.font.FontDesignMetrics.<init>(FontDesignMetrics.java:349)
        at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:301)
        at sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:1010)
        at javax.swing.JComponent.getFontMetrics(JComponent.java:1608)
        at javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(BasicLabelUI.java:244)
        at javax.swing.JComponent.getPreferredSize(JComponent.java:1643)
        at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1357)
        at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1305)
        at javax.swing.plaf.basic.BasicListUI$Handler.valueChanged(BasicListUI.java:2614)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211)
        at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405)
        at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415)
        at javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:459)
        at javax.swing.JList.setSelectedIndex(JList.java:2196)
        at javax.swing.plaf.basic.BasicComboPopup.setListSelection(BasicComboPopup.java:1144)
        at javax.swing.plaf.basic.BasicComboPopup.access$300(BasicComboPopup.java:63)
        at javax.swing.plaf.basic.BasicComboPopup$Handler.itemStateChanged(BasicComboPopup.java:982)
        at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1224)
        at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1281)
        at javax.swing.JComboBox.contentsChanged(JComboBox.java:1328)
        at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:117)
        at javax.swing.plaf.metal.MetalFileChooserUI$FilterComboBoxModel.propertyChange(MetalFileChooserUI.java:1099)
        at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:298)
        at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:291)
        at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:229)
        at java.awt.Component.firePropertyChange(Component.java:8001)
        at javax.swing.JFileChooser.setFileFilter(JFileChooser.java:1432)
        at javax.swing.JFileChooser.addChoosableFileFilter(JFileChooser.java:1127)
        at javax.swing.JFileChooser.updateUI(JFileChooser.java:1785)
        at javax.swing.JFileChooser.setup(JFileChooser.java:374)
        at javax.swing.JFileChooser.<init>(JFileChooser.java:347)
        at javax.swing.JFileChooser.<init>(JFileChooser.java:300)
        at com.netscape.management.client.console.Console.common_init(Unknown Source)
        at com.netscape.management.client.console.Console.<init>(Unknown Source)
        at com.netscape.management.client.console.Console.main(Unknown Source)

Comment 1 Rich Megginson 2009-09-21 19:30:04 UTC
Should be relatively straightforward to add a Requires: which - not sure what the problem is with java and the fonts.

Comment 2 Razvan Corneliu C.R. VILT 2009-09-22 10:34:34 UTC
The problem for Java is quite simple. The console requires some fonts of some kind to be provided to Java in order for it to start up visually. Unfortunately, you can easily install an unusable console due to the lack of any fonts (from the RPM dependencies) on the system. The question is: should we have a generic "provides: fonts" in each font RPM such that yum installs some random pack? Is that really a bug?

Comment 3 Rich Megginson 2009-09-22 13:50:25 UTC
Is there a way to Require fonts in general or Require specific fonts?  That would be easy to add to the spec.

Comment 4 Razvan Corneliu C.R. VILT 2009-09-23 19:03:07 UTC
I'm not really sure if specific fonts would be the right thing. That's the issue that I'm fighting with. Probably the best thing to do would be to just skip this. part. Who knows what fonts Gnome or KDE will default to in the future and we don't want to force the user to use a certain font. Furthermore, if someone wants to use a localized version of the product, something like bitstream vera sans might not apply anymore or might not be optimal in CJK languages or in scripted languages like Arabic or Farsi.

The other option would be to include a single fallback font in the JDK implementation. Technically, it should be a requirement for the Swing/AWT/SWT/Java2D/etc. packages.

Comment 5 Rich Megginson 2009-09-30 14:30:12 UTC
Added the "which" package to the Requires

Checking in F-10/389-console.spec;
/cvs/extras/rpms/389-console/F-10/389-console.spec,v  <--  389-console.spec
new revision: 1.3; previous revision: 1.2
done
Checking in F-11/389-console.spec;
/cvs/extras/rpms/389-console/F-11/389-console.spec,v  <--  389-console.spec
new revision: 1.3; previous revision: 1.2
done
Checking in F-12/389-console.spec;
/cvs/extras/rpms/389-console/F-12/389-console.spec,v  <--  389-console.spec
new revision: 1.4; previous revision: 1.3
done
Checking in devel/389-console.spec;
/cvs/extras/rpms/389-console/devel/389-console.spec,v  <--  389-console.spec
new revision: 1.4; previous revision: 1.3
done

Comment 6 Fedora Update System 2009-10-07 19:59:48 UTC
389-console-1.1.3-5.fc12 has been submitted as an update for Fedora 12.
http://admin.fedoraproject.org/updates/389-console-1.1.3-5.fc12

Comment 7 Fedora Update System 2009-10-07 19:59:54 UTC
389-console-1.1.3-4.fc11 has been submitted as an update for Fedora 11.
http://admin.fedoraproject.org/updates/389-console-1.1.3-4.fc11

Comment 8 Fedora Update System 2009-10-07 20:00:00 UTC
389-console-1.1.3-4.fc10 has been submitted as an update for Fedora 10.
http://admin.fedoraproject.org/updates/389-console-1.1.3-4.fc10

Comment 9 Fedora Update System 2009-11-04 12:08:22 UTC
389-console-1.1.3-4.fc11 has been pushed to the Fedora 11 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 10 Fedora Update System 2009-11-04 12:19:22 UTC
389-console-1.1.3-4.fc10 has been pushed to the Fedora 10 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 11 Brian LaMere 2010-06-10 00:25:58 UTC
(In reply to comment #4)
> I'm not really sure if specific fonts would be the right thing. That's the
> issue that I'm fighting with. Probably the best thing to do would be to just
> skip this. part. Who knows what fonts Gnome or KDE will default to in the
> future and we don't want to force the user to use a certain font. Furthermore,
> if someone wants to use a localized version of the product, something like
> bitstream vera sans might not apply anymore or might not be optimal in CJK
> languages or in scripted languages like Arabic or Farsi.
> 
> The other option would be to include a single fallback font in the JDK
> implementation. Technically, it should be a requirement for the
> Swing/AWT/SWT/Java2D/etc. packages.    

Having just run in to this same problem on a headless Fedora13 system, I'd think that instead of having the exception just barf it would be helpful to catch that exception in the java code, and fail with a more useful message.  Or yes, perhaps the jdk should have had a basic font package as a dependency?  The common fonts is such a small package, and unlike other packages that have package dependencies that make almost no sense, having this one depend on one of the basic font packages (liberation-fonts-common?) seems comparatively reasonable.