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