Red Hat Bugzilla – Bug 507419
s-c-k mustn't require pyxf86config on s390 and s390x
Last modified: 2009-07-26 21:53:51 EDT
Description of problem:
libxf86config and pyxf86config are not available on mainframe and shouldn't be required by system-config-keyboard on those archs.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. try to build boot images for s390x
2. anaconda requires system-config-keyboard which in turn requires pyxf86config
3. pyxf86config is not available on this arch as we don't have any X servers there
or just try to install anaconda on s390x
creation of boot images fails, this is blocking progress with F-11/s390x atm.
A simple "%ifnarch s390 s390x" around the Requirement for pyxf86config doesn't
work as ifnarch is ignored in noarch packages.
Karsten: I think you (or was it someone else?) committed that fix. If this is a request for fix in another branch, or I remember incorrectly, feel free to fix whatever you want to wherever you want to (I'd grant permission in pkgdb, but i think you secondary arch people have cvs write access there anyways?)
Oh now I see you backed out the change.
About the only solution I can see here is to make the package arch-dependent by removing the BuildArch, right?
I've talked with the anaconda maintainer to see if we can drop the requirement for s-c-k in anaconda for s390 and s390x. Unfortunately it looks like we need it at least for the keyboard layout selection in vnc installs. All other methods with
an x3270 terminal will use whatever the setup on your local machine is.
So yes, it seems that we can't avoid turning this package into a real arch package. Maybe you find a nasty trick to do arch dependent requirements in noarch packages ;-)
This is currently blocking any progress on getting bootable images for s390x,
I'd appreciate it if you could take some time in the next few days to think of a solution.
In addition to the Requirement fix, we need to check what exactly needs pyxf86config and disable that in the code, too (for s390 and s390x).
In /usr/share/system-config-keyboard/keyboard_backend.py, we have class KeyboardBackend and inside that we have a method called modifyXConfig(). This method imports pyxf86config (import xf86config) for the purposes of modifying the keyboard section of the X configuration file.
For s390x, we don't need this so KeyboardBackend should do something like this on s390x:
def modifyXConfig(self, fullname, layout, model, variant, options):
This may not be the best way to solve things, but this is the part of system-config-keyboard that uses pyxf86config.
I just had a look at s-c-k and the xf86config is already protected by a check
for /etc/X11/XF86Config and /etc/X11/xorg.conf. AFAIK we don't have those files
on s390x, so we don't need to anything in the code, just in the spec file