Package: xulrunner
Version: 1.8.0.9-1
Severity: important
Tags: patch
Hi,
xulrunner currently FTBFS on hurd-i386. Here are two patches for fixing
it:
- xulrunner-18_kbsd_nspr.dpatch.diff which fixes
debian/patches/18_kbsd_nspr.dpatch for proper Hurd support
- xulrunner-37_hurd.patch which mostly fixes various PATH_MAX/MAXPATHLEN
issues
Samuel
-- System Information:
Debian Release: 4.0
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1,
'experimental')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.19
Locale: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=ISO-8859-15)
--- xulrunner-1.8.0.9/debian/patches/18_kbsd_nspr.dpatch.orig 2007-01-27
12:37:09.000000000 +0100
+++ xulrunner-1.8.0.9/debian/patches/18_kbsd_nspr.dpatch 2007-01-27
12:35:25.000000000 +0100
@@ -72,7 +72,7 @@
diff -urN mozilla/nsprpub/pr/include/md/_pth.h
mozilla/nsprpub/pr/include/md/_pth.h
--- mozilla/nsprpub/pr/include/md/_pth.h 2005-08-18 19:24:28.000000000
+0200
+++ mozilla/nsprpub/pr/include/md/_pth.h 2006-11-20 22:10:27.000000000
+0100
-@@ -143,10 +143,15 @@
+@@ -143,13 +143,22 @@
(!memcmp(&(t), &pt_zero_tid, sizeof(pthread_t)))
#define _PT_PTHREAD_COPY_THR_HANDLE(st, dt) (dt) = (st)
#elif defined(IRIX) || defined(OSF1) || defined(AIX) || defined(SOLARIS) \
@@ -83,13 +83,20 @@
|| defined(VMS) || defined(NTO) || defined(DARWIN) \
|| defined(UNIXWARE) || defined(RISCOS)
+#ifdef __GNU__
-+/* Hurd pthreads don't have an invalid value for pthread_t. -- rmh */
-+#error Using Hurd pthreads
-+#endif
++/* Hurd pthread_ts are allocated from 0, and you just _won't_ be able to
create
++ * 4G threads :) */
++#define _PT_PTHREAD_INVALIDATE_THR_HANDLE(t) (t) = -1
++#define _PT_PTHREAD_THR_HANDLE_IS_INVALID(t) (t) == -1
++#define _PT_PTHREAD_COPY_THR_HANDLE(st, dt) (dt) = (st)
++#else
#define _PT_PTHREAD_INVALIDATE_THR_HANDLE(t) (t) = 0
#define _PT_PTHREAD_THR_HANDLE_IS_INVALID(t) (t) == 0
#define _PT_PTHREAD_COPY_THR_HANDLE(st, dt) (dt) = (st)
-@@ -195,7 +200,8 @@
++#endif
+ #else
+ #error "invalid pthread ID is not supported for this architecture"
+ #endif
+@@ -201,7 +210,8 @@
/*
* These platforms don't have sigtimedwait()
*/
@@ -99,7 +106,7 @@
|| defined(FREEBSD) || defined(NETBSD) || defined(OPENBSD) \
|| defined(BSDI) || defined(VMS) || defined(UNIXWARE) \
|| defined(DARWIN)
-@@ -235,7 +241,8 @@
+@@ -235,7 +245,8 @@
#define PT_PRIO_MAX sched_get_priority_max(SCHED_OTHER)
#endif /* defined(_PR_DCETHREADS) */
@@ -109,7 +116,7 @@
#define PT_PRIO_MIN sched_get_priority_min(SCHED_OTHER)
#define PT_PRIO_MAX sched_get_priority_max(SCHED_OTHER)
#elif defined(NTO)
-@@ -291,7 +298,8 @@
+@@ -291,7 +302,8 @@
onemillisec.tv_nsec = 1000000L; \
nanosleep(&onemillisec,NULL); \
PR_END_MACRO
--- nsprpub/pr/src/md/unix/uxrng.c.orig 2007-01-27 13:12:45.000000000 +0000
+++ nsprpub/pr/src/md/unix/uxrng.c 2007-01-27 13:12:59.000000000 +0000
@@ -139,7 +139,8 @@
}
#elif (defined(LINUX) || defined(FREEBSD) || defined(__FreeBSD_kernel__) \
- || defined(NETBSD) || defined(__NetBSD_kernel__) || defined(OPENBSD))
+ || defined(NETBSD) || defined(__NetBSD_kernel__) || defined(OPENBSD)) \
+ || defined(__GNU__)
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
--- dbm/src/ndbm.c.orig 2007-01-27 13:15:59.000000000 +0000
+++ dbm/src/ndbm.c 2007-01-27 13:16:37.000000000 +0000
@@ -67,7 +67,7 @@
dbm_open(const char *file, int flags, int mode)
{
HASHINFO info;
- char path[MAXPATHLEN];
+ char path[strlen(file) + strlen(DBM_SUFFIX) + 1];
info.bsize = 4096;
info.ffactor = 40;
--- xpcom/io/nsDirectoryService.cpp.orig 2007-01-27 13:27:22.000000000
+0000
+++ xpcom/io/nsDirectoryService.cpp 2007-01-27 13:29:44.000000000 +0000
@@ -233,6 +233,9 @@
#elif defined(XP_UNIX)
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 1024
+#endif
// In the absence of a good way to get the executable directory let
// us try this for unix:
// - if MOZILLA_FIVE_HOME is defined, that is it
--- xpcom/io/nsLocalFileUnix.cpp.orig 2007-01-27 13:32:03.000000000 +0000
+++ xpcom/io/nsLocalFileUnix.cpp 2007-01-27 13:33:38.000000000 +0000
@@ -524,6 +524,9 @@
NS_IMETHODIMP
nsLocalFile::Normalize()
{
+#ifndef PATH_MAX
+#define PATH_MAX 1024
+#endif
char resolved_path[PATH_MAX] = "";
char *resolved_path_ptr = nsnull;
--- xpcom/obsolete/nsSpecialSystemDirectory.cpp.orig 2007-01-27
13:40:06.000000000 +0000
+++ xpcom/obsolete/nsSpecialSystemDirectory.cpp 2007-01-27 13:45:21.000000000
+0000
@@ -266,7 +266,6 @@
// us try this for unix:
// - if MOZILLA_FIVE_HOME is defined, that is it
// - else give the current directory
- char buf[MAXPATHLEN];
char *moz5 = PR_GetEnv("MOZILLA_FIVE_HOME");
if (moz5)
{
@@ -285,12 +284,19 @@
}
#endif /* DEBUG */
- // Fall back to current directory.
- if (getcwd(buf, sizeof(buf)))
- {
- aFileSpec = buf;
- return;
- }
+ size_t size = 256;
+ while(1) {
+ char buf[size];
+ // Fall back to current directory.
+ if (getcwd(buf, sizeof(buf)))
+ {
+ aFileSpec = buf;
+ return;
+ }
+ if (errno != ERANGE)
+ break;
+ size *= 2;
+ }
}
#elif defined(XP_BEOS)
--- modules/libjar/nsZipArchive.cpp.orig 2007-01-27 14:03:57.000000000
+0000
+++ modules/libjar/nsZipArchive.cpp 2007-01-27 14:04:20.000000000 +0000
@@ -120,11 +120,12 @@
# ifndef S_IFLNK
# define S_IFLNK 0120000
# endif
-# ifndef PATH_MAX
-# define PATH_MAX 1024
-# endif
#endif /* XP_UNIX */
+#ifndef PATH_MAX
+# define PATH_MAX 1024
+#endif
+
#include "zipfile.h"
#include "zipstruct.h"
#include "nsZipArchive.h"
--- gfx/src/gtk/nsDeviceContextSpecG.h.orig 2007-01-27 14:15:06.000000000
+0000
+++ gfx/src/gtk/nsDeviceContextSpecG.h 2007-01-27 14:15:34.000000000 +0000
@@ -55,6 +55,10 @@
#define NS_PORTRAIT 0
#define NS_LANDSCAPE 1
+#ifndef PATH_MAX
+#define PATH_MAX 1024
+#endif
+
typedef enum
{
pmInvalid = 0,
--- toolkit/mozapps/update/src/updater/progressui_gtk.cpp.orig 2007-01-27
16:17:03.000000000 +0000
+++ toolkit/mozapps/update/src/updater/progressui_gtk.cpp 2007-01-27
16:27:03.000000000 +0000
@@ -39,6 +39,7 @@
#include <stdio.h>
#include <gtk/gtk.h>
#include <unistd.h>
+#include <string.h>
#include "progressui.h"
#include "readstrings.h"
#include "errors.h"
@@ -102,7 +103,7 @@
if (sQuit || sProgressVal > 50.0f)
return 0;
- char path[PATH_MAX];
+ char path[strlen(sProgramPath)+4+1];
snprintf(path, sizeof(path), "%s.ini", sProgramPath);
StringTable strings;
--- security/nss/lib/freebl/unix_rand.c.orig 2007-01-27 17:02:35.000000000
+0000
+++ security/nss/lib/freebl/unix_rand.c 2007-01-27 17:04:49.000000000 +0000
@@ -82,7 +82,8 @@
#if defined(SCO) || defined(UNIXWARE) || defined(BSDI) || defined(FREEBSD) \
|| defined(NETBSD) || defined(NTO) || defined(DARWIN) || defined(OPENBSD) \
- || defined(__FreeBSD_kernel__) || defined(__NetBSD_kernel__)
+ || defined(__FreeBSD_kernel__) || defined(__NetBSD_kernel__) \
+ || defined(__GNU__)
#include <sys/times.h>
#define getdtablesize() sysconf(_SC_OPEN_MAX)
--- security/nss/cmd/shlibsign/shlibsign.c.orig 2007-01-28 01:20:32.000000000
+0000
+++ security/nss/cmd/shlibsign/shlibsign.c 2007-01-28 01:21:01.000000000
+0000
@@ -163,6 +163,9 @@
#ifdef USES_LINKS
int ret;
struct stat stat_buf;
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 1024
+#endif
char link_buf[MAXPATHLEN+1];
char *link_file = NULL;
#endif