pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkg/41501: x11/modular-xorg-server fails to compile on solaris 10



The following reply was made to PR pkg/41501; it has been noted by GNATS.

From: Claes =?utf-8?B?TsOkc3TDqW4=?= <pekdon%gmail.com@localhost>
To: gnats-bugs <gnats-bugs%netbsd.org@localhost>
Cc: 
Subject: Re: pkg/41501: x11/modular-xorg-server fails to compile on solaris 10
Date: Sat, 12 Mar 2022 20:07:02 +0100

 At least I am not experiencing the reported issue on Solaris sparc.
 
 I do however experience a few other compile issues, which gets resolved
 by the following patches.
 
 $NetBSD$
 
 --- os/backtrace.c.orig	2021-12-15 19:01:24.000000000 +0000
 +++ os/backtrace.c
 @@ -227,6 +227,8 @@ xorg_backtrace_frame(uintptr_t pc, int s
  #endif                          /* HAVE_WALKCONTEXT */
  
  #ifdef HAVE_PSTACK
 +#include <unistd.h>
 +
  static int
  xorg_backtrace_pstack(void)
  {
 
 $NetBSD$
 
 --- hw/xfree86/os-support/solaris/sun_init.c.orig	2022-03-12 17:13:42.454602673 +0000
 +++ hw/xfree86/os-support/solaris/sun_init.c
 @@ -61,6 +61,7 @@ static char consoleDev[PATH_MAX] = "/dev
     Used by hw/xfree86/common/xf86AutoConfig.c for VIS_GETIDENTIFIER */
  _X_HIDDEN char xf86SolarisFbDev[PATH_MAX] = "/dev/fb";
  
 +#ifdef HAS_USL_VTS
  static void
  switch_to(int vt, const char *from)
  {
 @@ -76,6 +77,7 @@ switch_to(int vt, const char *from)
          xf86Msg(X_WARNING, "%s: VT_WAITACTIVE failed: %s\n",
                  from, strerror(errno));
  }
 +#endif
  
  void
  xf86OpenConsole(void)
 
 And updated patch-hw_xfree86_os-support_bus_Sbus.c:
 
 $NetBSD: patch-hw_xfree86_os-support_bus_Sbus.c,v 1.3 2016/11/16 10:14:37 wiz Exp $
 
 Merge most of netbsdSbus.c from xsrc.
 
 --- hw/xfree86/os-support/bus/Sbus.c.orig	2021-12-15 19:01:24.000000000 +0000
 +++ hw/xfree86/os-support/bus/Sbus.c
 @@ -34,6 +34,9 @@
  #ifdef __sun
  #include <sys/utsname.h>
  #endif
 +#if defined(__NetBSD__) && defined(__sparc__)
 +#include <dev/ofw/openfirmio.h>
 +#endif
  #include "xf86.h"
  #include "xf86Priv.h"
  #include "xf86_OSlib.h"
 @@ -50,7 +53,9 @@ static int promP1275 = -1;
  
  #define MAX_PROP	128
  #define MAX_VAL		(4096-128-4)
 +#ifdef __sun
  static struct openpromio *promOpio;
 +#endif
  
  sbusDevicePtr *xf86SbusInfo = NULL;
  
 @@ -68,17 +73,29 @@ struct sbus_devtable sbusDeviceTable[] =
      {SBUS_DEVICE_GT, FBTYPE_SUNGT, "gt", NULL, "Sun Graphics Tower"},
      {SBUS_DEVICE_MGX, -1, "mgx", NULL, "Quantum 3D MGXplus"},
      {SBUS_DEVICE_LEO, FBTYPE_SUNLEO, "leo", "sunleo", "Sun ZX or Turbo ZX"},
 -    {SBUS_DEVICE_TCX, FBTYPE_TCXCOLOR, "tcx", "suntcx", "Sun TCX"},
 +    {SBUS_DEVICE_TCX, FBTYPE_TCXCOLOR, "tcx", "suntcx", "Sun TCX or S24"},
      {SBUS_DEVICE_FFB, FBTYPE_CREATOR, "ffb", "sunffb", "Sun FFB"},
      {SBUS_DEVICE_FFB, FBTYPE_CREATOR, "afb", "sunffb", "Sun Elite3D"},
 +#ifdef FBTYPE_P9100
 +    {SBUS_DEVICE_P9100, FBTYPE_P9100, "pnozz", "pnozz", "Weitek P9100"},
 +#endif /* FBTYPE_P9100 */
 +#ifdef FBTYPE_AG10E
 +    {SBUS_DEVICE_AG10E, FBTYPE_AG10E, "ag10e", "ag10e", "Fujitsu AG-10e"},
 +#endif /* FBTYPE_AG10E */
      {0, 0, NULL}
  };
  
 +#ifndef __sun
 +static struct ofiocdesc ofio;
 +static char of_buf[256];
 +#endif
 +
  int
  promGetSibling(int node)
  {
 +#ifdef __sun
      promOpio->oprom_size = sizeof(int);
 -
 + 
      if (node == -1)
          return 0;
      *(int *) promOpio->oprom_array = node;
 @@ -86,13 +103,22 @@ promGetSibling(int node)
          return 0;
      promCurrentNode = *(int *) promOpio->oprom_array;
      return *(int *) promOpio->oprom_array;
 +#else
 +    if (node == -1)
 +        return 0;
 +    if (ioctl(promFd, OFIOCGETNEXT, &node) < 0)
 +        return 0;
 +    promCurrentNode = node;
 +    return node;
 +#endif
  }
  
  int
  promGetChild(int node)
  {
 +#ifdef __sun
      promOpio->oprom_size = sizeof(int);
 -
 + 
      if (!node || node == -1)
          return 0;
      *(int *) promOpio->oprom_array = node;
 @@ -100,26 +126,52 @@ promGetChild(int node)
          return 0;
      promCurrentNode = *(int *) promOpio->oprom_array;
      return *(int *) promOpio->oprom_array;
 +#else
 +    if (!node || node == -1)
 +        return 0;
 +    if (ioctl(promFd, OFIOCGETCHILD, &node) < 0)
 +        return 0;
 +    promCurrentNode = node;
 +    return node;
 +#endif
  }
  
  char *
  promGetProperty(const char *prop, int *lenp)
  {
 +#ifdef __sun
      promOpio->oprom_size = MAX_VAL;
 -
 + 
      strcpy(promOpio->oprom_array, prop);
      if (ioctl(promFd, OPROMGETPROP, promOpio) < 0)
          return 0;
 +
      if (lenp)
          *lenp = promOpio->oprom_size;
      return promOpio->oprom_array;
 +#else
 +    ofio.of_nodeid = promCurrentNode;
 +    ofio.of_name = (char *)prop;
 +    ofio.of_namelen = strlen(prop);
 +    ofio.of_buf = of_buf;
 +    ofio.of_buflen = sizeof(of_buf);
 +
 +    if (ioctl(promFd, OFIOCGET, &ofio) < 0)
 +        return 0;
 +
 +    of_buf[ofio.of_buflen] = '\0';
 +
 +    if (lenp)
 +        *lenp = ofio.of_buflen;
 +    return of_buf;
 +#endif
  }
  
  int
  promGetBool(const char *prop)
  {
 +#ifdef __sun
      promOpio->oprom_size = 0;
 -
      *(int *) promOpio->oprom_array = 0;
      for (;;) {
          promOpio->oprom_size = MAX_PROP;
 @@ -130,6 +182,19 @@ promGetBool(const char *prop)
          if (!strcmp(promOpio->oprom_array, prop))
              return 1;
      }
 +#else
 +    ofio.of_nodeid = promCurrentNode;
 +    ofio.of_name = (char *)prop;
 +    ofio.of_namelen = strlen(prop);
 +    ofio.of_buf = of_buf;
 +    ofio.of_buflen = sizeof(of_buf);
 +
 +    if (ioctl(promFd, OFIOCGET, &ofio) < 0)
 +        return 0;
 +    if (ofio.of_buflen < 0)
 +        return 0;
 +    return 1;
 +#endif
  }
  
  #define PROM_NODE_SIBLING 0x01
 @@ -180,8 +245,8 @@ promIsP1275(void)
          promP1275 = TRUE;
      else
          promP1275 = FALSE;
 -#elif defined(__FreeBSD__)
 -    promP1275 = TRUE;
 +#elif defined(__FreeBSD__) || defined(__NetBSD__)
 +     promP1275 = TRUE;
  #else
  #error Missing promIsP1275() function for this OS
  #endif
 @@ -198,8 +263,10 @@ sparcPromClose(void)
          close(promFd);
          promFd = -1;
      }
 +#ifdef __sun
      free(promOpio);
      promOpio = NULL;
 +#endif
      promOpenCount = 0;
  }
  
 @@ -213,11 +280,13 @@ sparcPromInit(void)
      promFd = open("/dev/openprom", O_RDONLY, 0);
      if (promFd == -1)
          return -1;
 +#ifdef __sun
      promOpio = (struct openpromio *) malloc(4096);
      if (!promOpio) {
          sparcPromClose();
          return -1;
      }
 +#endif
      promRootNode = promGetSibling(0);
      if (!promRootNode) {
          sparcPromClose();
 @@ -399,9 +468,9 @@ sparcPromAssignNodes(void)
           * were the types of the cards missed. */
          char buffer[64];
          int fbNum, devId;
 -        static struct {
 -            int devId;
 -            char *prefix;
 +        static const struct {
 +            const int devId;
 +            const char *prefix;
          } procFbPrefixes[] = {
              {SBUS_DEVICE_BW2, "BWtwo"},
              {SBUS_DEVICE_CG14, "CGfourteen"},
 


Home | Main Index | Thread Index | Old Index