Subject: pkg/26769: [PATCH] make x11/libxklavier build without xkb again
To: None <gnats-bugs@gnats.NetBSD.org>
From: None <lillack@mis.mpg.de>
List: pkgsrc-bugs
Date: 08/26/2004 15:42:39
>Number:         26769
>Category:       pkg
>Synopsis:       [PATCH] make x11/libxklavier build without xkb again
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Aug 26 15:43:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     Robert Lillack
>Release:        none
>Organization:
Max Planck Institute for Mathematics in the Sciences, Leipzig, Germany
>Environment:
SunOS dirac 5.9 Generic_112233-11 sun4u sparc SUNW,Sun-Fire-880

>Description:
x11/libxklavier has trouble building if there are no xkb headers present.
It looks like someone fixed that (or tried but did not actually compiled it) and still there are some undefined symbols.
>How-To-Repeat:
Get a machine without xkb. Try to compile libxklavier. It checks for the headers, finds out that they are not available but there are not enough #ifdefs in xklavier_config_xkb.c
>Fix:
Easy. Just replace patches/patch-aa with the following file:

------------------------------------------------------------------------
$NetBSD$

--- libxklavier/xklavier_config_xkb.c.orig      2004-06-09 03:06:29.000000000 +0200
+++ libxklavier/xklavier_config_xkb.c
@@ -29,6 +29,9 @@
 XkbRF_VarDefsRec _xklVarDefs;
 static XkbRF_RulesPtr _xklRules;
 static XkbComponentNamesRec componentNames;
+#else
+#define XkbRF_RulesPtr void*
+static void *_xklRules;
 #endif
 
 static char *locale;
@@ -167,15 +170,17 @@ static void _XklConfigCleanAfterKbd(  )
 // check only client side support
 Bool XklMultipleLayoutsSupported( void )
 {
+#ifdef XKB_HEADERS_PRESENT
   enum { NON_SUPPORTED, SUPPORTED, UNCHECKED };
 
   static int supportState = UNCHECKED;
 
   if ( supportState == UNCHECKED )
   {
+    XkbRF_RulesPtr rulesPtr;
     XklDebug( 100, "!!! Checking multiple layouts support\n" );
     supportState = NON_SUPPORTED;
-    XkbRF_RulesPtr rulesPtr = _XklLoadRulesSet();
+    rulesPtr = _XklLoadRulesSet();
     if ( rulesPtr )
     {
       XkbRF_VarDefsRec varDefs;
@@ -197,6 +202,9 @@ Bool XklMultipleLayoutsSupported( void )
     }
   }
   return supportState == SUPPORTED;
+#else
+  return False;
+#endif
 }
 
 Bool XklConfigActivate( const XklConfigRecPtr data,
------------------------------------------------------------------------

>Release-Note:
>Audit-Trail:
>Unformatted: