Package: libdrm Version: 2.4.67-1 Severity: normal Tags: patch pending Dear maintainer,
I've prepared an NMU for libdrm (versioned as 2.4.67-1.1) and uploaded it to DELAYED/5. Please feel free to tell me if I should delay it longer. This NMU ports libdrm to hurd. This will help us to compile e.g gst-plugins-bad1.0 which will help us to remove obsolete binary packages and eventually libpng 1.2... The patch has been written in a way to only change code on hurd, all other archs are unaffected. -- tobi Regards. diff -u libdrm-2.4.67/debian/changelog libdrm-2.4.67/debian/changelog --- libdrm-2.4.67/debian/changelog +++ libdrm-2.4.67/debian/changelog @@ -1,3 +1,10 @@ +libdrm (2.4.67-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Patch for hurd. (Closes: #xxxxxx) + + -- Tobias Frost <t...@debian.org> Wed, 20 Apr 2016 21:19:56 +0200 + libdrm (2.4.67-1) unstable; urgency=medium * New upstream release. diff -u libdrm-2.4.67/debian/patches/series libdrm-2.4.67/debian/patches/series --- libdrm-2.4.67/debian/patches/series +++ libdrm-2.4.67/debian/patches/series @@ -1,0 +2 @@ +02_hurd.patch only in patch2: unchanged: --- libdrm-2.4.67.orig/debian/patches/02_hurd.patch +++ libdrm-2.4.67/debian/patches/02_hurd.patch @@ -0,0 +1,147 @@ +--- a/include/drm/drm.h ++++ b/include/drm/drm.h +@@ -42,10 +42,19 @@ + #include <asm/ioctl.h> + typedef unsigned int drm_handle_t; + ++#elif defined(__gnu_hurd__) ++#include <stdint.h> ++#include <mach/i386/ioccom.h> ++ + #else /* One of the BSDs */ + + #include <sys/ioccom.h> + #include <sys/types.h> ++ ++#endif ++ ++#if !defined(__linux__) ++ + typedef int8_t __s8; + typedef uint8_t __u8; + typedef int16_t __s16; +--- a/xf86drm.h ++++ b/xf86drm.h +@@ -58,7 +58,11 @@ + + #else /* One of the *BSDs */ + ++#if defined(__gnu_hurd__) ++#include <mach/i386/ioccom.h> ++#else + #include <sys/ioccom.h> ++#endif + #define DRM_IOCTL_NR(n) ((n) & 0xff) + #define DRM_IOC_VOID IOC_VOID + #define DRM_IOC_READ IOC_OUT +--- a/xf86drm.c ++++ b/xf86drm.c +@@ -103,6 +103,16 @@ + + #define memclear(s) memset(&s, 0, sizeof(s)) + ++/* for systems like hurd which does not have PATH_MAX. ++ Usage is only for string manipulation, so it is save to define it. ++ 1kB will be plenty space...*/ ++#ifndef PATH_MAX ++#define MY_PATH_MAX (1024) ++#else ++#define MY_PATH_MAX PATH_MAX ++#endif ++ ++ + static drmServerInfoPtr drm_server_info; + + void drmSetServerInfo(drmServerInfoPtr info) +@@ -2835,14 +2845,15 @@ + static int drmParseSubsystemType(int maj, int min) + { + #ifdef __linux__ +- char path[PATH_MAX + 1]; +- char link[PATH_MAX + 1] = ""; ++ ++ char path[MY_PATH_MAX + 1]; ++ char link[MY_PATH_MAX + 1] = ""; + char *name; + +- snprintf(path, PATH_MAX, "/sys/dev/char/%d:%d/device/subsystem", ++ snprintf(path, MY_PATH_MAX, "/sys/dev/char/%d:%d/device/subsystem", + maj, min); + +- if (readlink(path, link, PATH_MAX) < 0) ++ if (readlink(path, link, MY_PATH_MAX) < 0) + return -errno; + + name = strrchr(link, '/'); +@@ -2857,18 +2868,19 @@ + #warning "Missing implementation of drmParseSubsystemType" + return -EINVAL; + #endif ++ + } + + static int drmParsePciBusInfo(int maj, int min, drmPciBusInfoPtr info) + { + #ifdef __linux__ +- char path[PATH_MAX + 1]; ++ char path[MY_PATH_MAX + 1]; + char data[128 + 1]; + char *str; + int domain, bus, dev, func; + int fd, ret; + +- snprintf(path, PATH_MAX, "/sys/dev/char/%d:%d/device/uevent", maj, min); ++ snprintf(path, MY_PATH_MAX, "/sys/dev/char/%d:%d/device/uevent", maj, min); + fd = open(path, O_RDONLY); + if (fd < 0) + return -errno; +@@ -2949,11 +2961,11 @@ + drmPciDeviceInfoPtr device) + { + #ifdef __linux__ +- char path[PATH_MAX + 1]; ++ char path[MY_PATH_MAX + 1]; + unsigned char config[64]; + int fd, ret; + +- snprintf(path, PATH_MAX, "/sys/class/drm/%s/device/config", d_name); ++ snprintf(path, MY_PATH_MAX, "/sys/class/drm/%s/device/config", d_name); + fd = open(path, O_RDONLY); + if (fd < 0) + return -errno; +@@ -3082,7 +3094,7 @@ + DIR *sysdir; + struct dirent *dent; + struct stat sbuf; +- char node[PATH_MAX + 1]; ++ char node[MY_PATH_MAX + 1]; + int node_type, subsystem_type; + int maj, min; + int ret, i, node_count; +@@ -3118,7 +3130,7 @@ + if (node_type < 0) + continue; + +- snprintf(node, PATH_MAX, "%s/%s", DRM_DIR_NAME, dent->d_name); ++ snprintf(node, MY_PATH_MAX, "%s/%s", DRM_DIR_NAME, dent->d_name); + if (stat(node, &sbuf)) + continue; + +@@ -3198,7 +3210,7 @@ + DIR *sysdir; + struct dirent *dent; + struct stat sbuf; +- char node[PATH_MAX + 1]; ++ char node[MY_PATH_MAX + 1]; + int node_type, subsystem_type; + int maj, min; + int ret, i, node_count, device_count; +@@ -3220,7 +3232,7 @@ + if (node_type < 0) + continue; + +- snprintf(node, PATH_MAX, "%s/%s", DRM_DIR_NAME, dent->d_name); ++ snprintf(node, MY_PATH_MAX, "%s/%s", DRM_DIR_NAME, dent->d_name); + if (stat(node, &sbuf)) + continue; +