From: Carsten Schoenert Date: Sat, 29 Mar 2014 19:58:55 +0000 (+0100) Subject: FTBFS hurd: fixing unsupported platform Hurd X-Git-Tag: archive/raspbian/1%68.9.0-1+rpi1^2~22 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=17067edbad6f9e91b7b520270d716bbb21528a0e;p=thunderbird.git FTBFS hurd: fixing unsupported platform Hurd On the Hurd platform the build failed in js/src/jit/AsmJSSignalHandlers.cpp:131 because of unsupported mode for reading / writing thead state with following message. # error "Don't know how to read/write to the thread state via the mcontext_t." The original patch comes from Richard Brown https://lists.alioth.debian.org/pipermail/pkg-mozilla-maintainers/2014-March/015565.html After release of Thunderbird 44 there are additional changes made as the various configuration files where split into more files. Gbp-Pq: Topic porting-kfreebsd-hurd Gbp-Pq: Name FTBFS-hurd-fixing-unsupported-platform-Hurd.patch --- diff --git a/dom/plugins/ipc/PluginModuleChild.cpp b/dom/plugins/ipc/PluginModuleChild.cpp index 28d0e53dd3..f1662e482b 100644 --- a/dom/plugins/ipc/PluginModuleChild.cpp +++ b/dom/plugins/ipc/PluginModuleChild.cpp @@ -283,7 +283,7 @@ bool PluginModuleChild::InitForChrome(const std::string& aPluginFilename, GetIPCChannel()->SetAbortOnError(true); -#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) +#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) || defined(OS_HURD) mShutdownFunc = (NP_PLUGINSHUTDOWN)PR_FindFunctionSymbol(mLibrary, "NP_Shutdown"); @@ -1528,7 +1528,7 @@ mozilla::ipc::IPCResult PluginModuleChild::AnswerNP_GetEntryPoints( AssertPluginThread(); MOZ_ASSERT(mIsChrome); -#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) +#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) || defined(OS_HURD) return IPC_OK(); #elif defined(OS_WIN) || defined(OS_MACOSX) *_retval = mGetEntryPointsFunc(&mFunctions); @@ -1563,7 +1563,7 @@ NPError PluginModuleChild::DoNP_Initialize(const PluginSettings& aSettings) { #endif NPError result; -#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) +#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) || defined(OS_HURD) result = mInitializeFunc(&sBrowserFuncs, &mFunctions); #elif defined(OS_WIN) || defined(OS_MACOSX) result = mInitializeFunc(&sBrowserFuncs); diff --git a/dom/plugins/ipc/PluginModuleChild.h b/dom/plugins/ipc/PluginModuleChild.h index e770c97ece..1070e1a36d 100644 --- a/dom/plugins/ipc/PluginModuleChild.h +++ b/dom/plugins/ipc/PluginModuleChild.h @@ -228,7 +228,7 @@ class PluginModuleChild : public PPluginModuleChild { // we get this from the plugin NP_PLUGINSHUTDOWN mShutdownFunc; -#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) +#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) || defined(OS_HURD) NP_PLUGINUNIXINIT mInitializeFunc; #elif defined(OS_WIN) || defined(OS_MACOSX) NP_PLUGININIT mInitializeFunc; diff --git a/ipc/chromium/chromium-config.mozbuild b/ipc/chromium/chromium-config.mozbuild index 1dd914f294..30ee42f7d6 100644 --- a/ipc/chromium/chromium-config.mozbuild +++ b/ipc/chromium/chromium-config.mozbuild @@ -67,6 +67,11 @@ else: 'OS_BSD': 1, }) + elif CONFIG['OS_ARCH'] == 'GNU': + DEFINES.update({ + 'OS_HURD': 1, + }) + else: DEFINES['OS_LINUX'] = 1 diff --git a/ipc/chromium/moz.build b/ipc/chromium/moz.build index 3766f259e5..5710d102ae 100644 --- a/ipc/chromium/moz.build +++ b/ipc/chromium/moz.build @@ -114,7 +114,7 @@ if os_bsd or os_linux: 'src/base/message_pump_glib.cc', ] -if os_solaris: +if os_solaris or os_hurd: SOURCES += [ 'src/base/process_util_linux.cc', 'src/base/time_posix.cc', diff --git a/ipc/chromium/src/base/message_loop.cc b/ipc/chromium/src/base/message_loop.cc index 4741bf0caa..1eb555f9e5 100644 --- a/ipc/chromium/src/base/message_loop.cc +++ b/ipc/chromium/src/base/message_loop.cc @@ -21,7 +21,7 @@ #if defined(OS_POSIX) # include "base/message_pump_libevent.h" #endif -#if defined(OS_LINUX) || defined(OS_BSD) +#if defined(OS_LINUX) || defined(OS_BSD)|| defined(OS_HURD) # if defined(MOZ_WIDGET_GTK) # include "base/message_pump_glib.h" # endif @@ -235,7 +235,7 @@ MessageLoop::MessageLoop(Type type, nsIEventTarget* aEventTarget) if (type_ == TYPE_UI) { # if defined(OS_MACOSX) pump_ = base::MessagePumpMac::Create(); -# elif defined(OS_LINUX) || defined(OS_BSD) +# elif defined(OS_LINUX) || defined(OS_BSD) || defined(OS_HURD) pump_ = new base::MessagePumpForUI(); # endif // OS_LINUX } else if (type_ == TYPE_IO) { diff --git a/ipc/chromium/src/base/process_util_posix.cc b/ipc/chromium/src/base/process_util_posix.cc index 719178ea55..bed6f31be0 100644 --- a/ipc/chromium/src/base/process_util_posix.cc +++ b/ipc/chromium/src/base/process_util_posix.cc @@ -120,7 +120,7 @@ void CloseSuperfluousFds(void* aCtx, bool (*aShouldPreserve)(void*, int)) { #if defined(ANDROID) static const rlim_t kSystemDefaultMaxFds = 1024; static const char kFDDir[] = "/proc/self/fd"; -#elif defined(OS_LINUX) || defined(OS_SOLARIS) +#elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(OS_HURD) static const rlim_t kSystemDefaultMaxFds = 8192; static const char kFDDir[] = "/proc/self/fd"; #elif defined(OS_MACOSX) diff --git a/ipc/chromium/src/build/build_config.h b/ipc/chromium/src/build/build_config.h index 4e0711daef..72105fc50b 100644 --- a/ipc/chromium/src/build/build_config.h +++ b/ipc/chromium/src/build/build_config.h @@ -24,6 +24,7 @@ # define OS_MACOSX 1 #elif defined(__linux__) || defined(__GLIBC__) || defined(__GNU__) # define OS_LINUX 1 +# define OS_HURD 1 #elif defined(__DragonFly__) # define OS_DRAGONFLY 1 #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) @@ -50,7 +51,7 @@ // For access to standard POSIX features, use OS_POSIX instead of a more // specific macro. #if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \ - defined(OS_SOLARIS) + defined(OS_SOLARIS) || defined(OS_HURD) # define OS_POSIX 1 #endif diff --git a/ipc/chromium/src/third_party/libeventcommon.mozbuild b/ipc/chromium/src/third_party/libeventcommon.mozbuild index 5037ec77a5..c858d9c8aa 100644 --- a/ipc/chromium/src/third_party/libeventcommon.mozbuild +++ b/ipc/chromium/src/third_party/libeventcommon.mozbuild @@ -8,6 +8,7 @@ os_win = 0 os_posix = 0 os_macosx = 0 os_bsd = 0 +os_hurd = 0 os_linux = 0 os_solaris = 0 @@ -25,6 +26,10 @@ else: elif CONFIG['OS_ARCH'] == 'SunOS': os_solaris = 1 libevent_include_suffix = 'solaris' + # attempt to get GNU hurd into the build again, further modification probably needed + elif CONFIG['OS_ARCH'] == 'GNU': + os_hurd = 1 + libevent_include_suffix = 'gnu' else: os_linux = 1 if CONFIG['OS_TARGET'] == 'Android': diff --git a/ipc/glue/GeckoChildProcessHost.cpp b/ipc/glue/GeckoChildProcessHost.cpp index d87cb0a046..9cc001e5da 100644 --- a/ipc/glue/GeckoChildProcessHost.cpp +++ b/ipc/glue/GeckoChildProcessHost.cpp @@ -789,7 +789,7 @@ bool GeckoChildProcessHost::PerformAsyncLaunch( // and passing wstrings from one config to the other is unsafe. So // we split the logic here. -# if defined(OS_POSIX) +# if defined(OS_POSIX) || defined(OS_HURD) # if defined(MOZ_WIDGET_GTK) if (mProcessType == GeckoProcessType_Content) { // disable IM module to avoid sandbox violation @@ -810,7 +810,7 @@ bool GeckoChildProcessHost::PerformAsyncLaunch( MOZ_ASSERT(gGREBinPath); nsCString path; NS_CopyUnicodeToNative(nsDependentString(gGREBinPath), path); -# if defined(OS_LINUX) || defined(OS_BSD) +# if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_HURD) const char* ld_library_path = PR_GetEnv("LD_LIBRARY_PATH"); nsCString new_ld_lib_path(path.get()); @@ -897,7 +897,7 @@ bool GeckoChildProcessHost::PerformAsyncLaunch( childArgv.push_back(pidstring); if (!CrashReporter::IsDummy()) { -# if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) +# if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_SOLARIS) || defined(OS_HURD) int childCrashFd, childCrashRemapFd; if (!CrashReporter::CreateNotificationPipeForChild(&childCrashFd, &childCrashRemapFd)) { diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp index 636537f847..cfb297020f 100644 --- a/js/src/wasm/WasmSignalHandlers.cpp +++ b/js/src/wasm/WasmSignalHandlers.cpp @@ -108,7 +108,7 @@ using mozilla::DebugOnly; # define R01_sig(p) ((p)->sc_frame.fixreg[1]) # define R32_sig(p) ((p)->sc_frame.srr0) # endif -#elif defined(__linux__) || defined(__sun) +#elif defined(__linux__) || defined(__sun) || defined(__GNU__) # if defined(__linux__) # define EIP_sig(p) ((p)->uc_mcontext.gregs[REG_EIP]) # define EBP_sig(p) ((p)->uc_mcontext.gregs[REG_EBP])