--- Begin Message ---
Source: libdrm
Version: 2.4.102-1
Severity: important
Tags: ftbfs, patch
User: debian-k...@lists.debian.org
Usertags: kfreebsd
Hello,
Currently libdrm FTBFS GNU/kFreeBSD (and GNU/Hurd) due to usage of
#elif __FreeBSD__ instead of #elif defined(__FreeBSD__) in xf86drm.c.
Attached is a patch to fix this: xf86drm.c.diff. For completeness all
entries of #ifdef __linux__ are also replaced by #if
defined(__linux__), and similar for ifdef __FreeBSD__. This patch is
enough to make libdrm build properly on kfreebsd-any.
Patches for Hurd together with fixes for PATH_MAX issues will be added
to bug report #909436.
Thanks!
Index: libdrm-2.4.102/xf86drm.c
===================================================================
--- libdrm-2.4.102.orig/xf86drm.c
+++ libdrm-2.4.102/xf86drm.c
@@ -491,7 +491,7 @@ drm_public int drmAvailable(void)
int fd;
if ((fd = drmOpenMinor(0, 1, DRM_NODE_PRIMARY)) < 0) {
-#ifdef __linux__
+#if defined(__linux__)
/* Try proc for backward Linux compatibility */
if (!access("/proc/dri/0", R_OK))
return 1;
@@ -524,7 +524,7 @@ static int drmGetMinorBase(int type)
static int drmGetMinorType(int major, int minor)
{
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__)
char name[SPECNAMELEN];
int id;
@@ -688,7 +688,7 @@ static int drmOpenByName(const char *nam
}
}
-#ifdef __linux__
+#if defined(__linux__)
/* Backward-compatibility /proc support */
for (i = 0; i < 8; i++) {
char proc_name[64], buf[512];
@@ -2775,7 +2775,7 @@ drm_public int drmIsMaster(int fd)
drm_public char *drmGetDeviceNameFromFd(int fd)
{
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__)
struct stat sbuf;
int maj, min;
int nodetype;
@@ -2815,14 +2815,14 @@ drm_public char *drmGetDeviceNameFromFd(
static bool drmNodeIsDRM(int maj, int min)
{
-#ifdef __linux__
+#if defined(__linux__)
char path[64];
struct stat sbuf;
snprintf(path, sizeof(path), "/sys/dev/char/%d:%d/device/drm",
maj, min);
return stat(path, &sbuf) == 0;
-#elif __FreeBSD__
+#elif defined(__FreeBSD__)
char name[SPECNAMELEN];
if (!devname_r(makedev(maj, min), S_IFCHR, name, sizeof(name)))
@@ -2894,7 +2894,7 @@ drm_public int drmPrimeFDToHandle(int fd
static char *drmGetMinorNameForFD(int fd, int type)
{
-#ifdef __linux__
+#if defined(__linux__)
DIR *sysdir;
struct dirent *ent;
struct stat sbuf;
@@ -2935,7 +2935,7 @@ static char *drmGetMinorNameForFD(int fd
closedir(sysdir);
return NULL;
-#elif __FreeBSD__
+#elif defined(__FreeBSD__)
struct stat sbuf;
char dname[SPECNAMELEN];
const char *mname;
@@ -2998,7 +2998,7 @@ static char *drmGetMinorNameForFD(int fd
return NULL;
n = snprintf(buf, sizeof(buf), dev_name, DRM_DIR_NAME, min);
- if (n == -1 || n >= sizeof(buf))
+ if (n == -1 || n >= (int)sizeof(buf))
return NULL;
return strdup(buf);
@@ -3015,7 +3015,7 @@ drm_public char *drmGetRenderDeviceNameF
return drmGetMinorNameForFD(fd, DRM_NODE_RENDER);
}
-#ifdef __linux__
+#if defined(__linux__)
static char * DRM_PRINTFLIKE(2, 3)
sysfs_uevent_get(const char *path, const char *fmt, ...)
{
@@ -3062,7 +3062,7 @@ sysfs_uevent_get(const char *path, const
/* Little white lie to avoid major rework of the existing code */
#define DRM_BUS_VIRTIO 0x10
-#ifdef __linux__
+#if defined(__linux__)
static int get_subsystem_type(const char *device_path)
{
char path[PATH_MAX + 1] = "";
@@ -3101,7 +3101,7 @@ static int get_subsystem_type(const char
static int drmParseSubsystemType(int maj, int min)
{
-#ifdef __linux__
+#if defined(__linux__)
char path[PATH_MAX + 1] = "";
char real_path[PATH_MAX + 1] = "";
int subsystem_type;
@@ -3128,7 +3128,7 @@ static int drmParseSubsystemType(int maj
#endif
}
-#ifdef __linux__
+#if defined(__linux__)
static void
get_pci_path(int maj, int min, char *pci_path)
{
@@ -3146,7 +3146,7 @@ get_pci_path(int maj, int min, char *pci
}
#endif
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__)
static int get_sysctl_pci_bus_info(int maj, int min, drmPciBusInfoPtr info)
{
char dname[SPECNAMELEN];
@@ -3208,7 +3208,7 @@ static int get_sysctl_pci_bus_info(int m
static int drmParsePciBusInfo(int maj, int min, drmPciBusInfoPtr info)
{
-#ifdef __linux__
+#if defined(__linux__)
unsigned int domain, bus, dev, func;
char pci_path[PATH_MAX + 1], *value;
int num;
@@ -3255,7 +3255,7 @@ static int drmParsePciBusInfo(int maj, i
info->func = pinfo.func;
return 0;
-#elif __FreeBSD__
+#elif defined(__FreeBSD__)
return get_sysctl_pci_bus_info(maj, min, info);
#else
#warning "Missing implementation of drmParsePciBusInfo"
@@ -3317,7 +3317,7 @@ static int drmGetMaxNodeName(void)
3 /* length of the node number */;
}
-#ifdef __linux__
+#if defined(__linux__)
static int parse_separate_sysfs_files(int maj, int min,
drmPciDeviceInfoPtr device,
bool ignore_revision)
@@ -3391,7 +3391,7 @@ static int drmParsePciDeviceInfo(int maj
drmPciDeviceInfoPtr device,
uint32_t flags)
{
-#ifdef __linux__
+#if defined(__linux__)
if (!(flags & DRM_DEVICE_GET_PCI_REVISION))
return parse_separate_sysfs_files(maj, min, device, true);
@@ -3424,7 +3424,7 @@ static int drmParsePciDeviceInfo(int maj
device->subdevice_id = pinfo.subdevice_id;
return 0;
-#elif __FreeBSD__
+#elif defined(__FreeBSD__)
drmPciBusInfo info;
struct pci_conf_io pc;
struct pci_match_conf patterns[1];
@@ -3615,7 +3615,7 @@ free_device:
return ret;
}
-#ifdef __linux__
+#if defined(__linux__)
static int drm_usb_dev_path(int maj, int min, char *path, size_t len)
{
char *value, *tmp_path, *slash;
@@ -3657,7 +3657,7 @@ static int drm_usb_dev_path(int maj, int
static int drmParseUsbBusInfo(int maj, int min, drmUsbBusInfoPtr info)
{
-#ifdef __linux__
+#if defined(__linux__)
char path[PATH_MAX + 1], *value;
unsigned int bus, dev;
int ret;
@@ -3698,7 +3698,7 @@ static int drmParseUsbBusInfo(int maj, i
static int drmParseUsbDeviceInfo(int maj, int min, drmUsbDeviceInfoPtr info)
{
-#ifdef __linux__
+#if defined(__linux__)
char path[PATH_MAX + 1], *value;
unsigned int vendor, product;
int ret;
@@ -3768,7 +3768,7 @@ free_device:
static int drmParseOFBusInfo(int maj, int min, char *fullname)
{
-#ifdef __linux__
+#if defined(__linux__)
char path[PATH_MAX + 1], *name, *tmp_name;
snprintf(path, sizeof(path), "/sys/dev/char/%d:%d/device", maj, min);
@@ -3803,7 +3803,7 @@ static int drmParseOFBusInfo(int maj, in
static int drmParseOFDeviceInfo(int maj, int min, char ***compatible)
{
-#ifdef __linux__
+#if defined(__linux__)
char path[PATH_MAX + 1], *value, *tmp_name;
unsigned int count, i;
int err;
@@ -4278,7 +4278,7 @@ drm_public int drmGetDevices(drmDevicePt
drm_public char *drmGetDeviceNameFromFd2(int fd)
{
-#ifdef __linux__
+#if defined(__linux__)
struct stat sbuf;
char path[PATH_MAX + 1], *value;
unsigned int maj, min;
@@ -4302,7 +4302,7 @@ drm_public char *drmGetDeviceNameFromFd2
free(value);
return strdup(path);
-#elif __FreeBSD__
+#elif defined(__FreeBSD__)
return drmGetDeviceNameFromFd(fd);
#else
struct stat sbuf;
--- End Message ---