testing/snowstorm: new aport; work-in-progress arch=none

This commit is contained in:
William Pitcock 2011-03-25 19:57:05 -05:00
parent 6e49e8ddee
commit c1936150c0
2 changed files with 251 additions and 0 deletions

View File

@ -0,0 +1,72 @@
# Contributor: William Pitcock <nenolod@dereferenced.org>
# Maintainer:
pkgname=snowstorm
pkgver=2.5.2
pkgrel=0
pkgdesc="snowstorm viewer for secondlife (and compatible servers)"
url="http://wiki.secondlife.com/wiki/Project_Snowstorm"
arch=""
license="GPL"
depends=
depends_dev="mesa-dev sdl-dev openal-soft-dev apr-dev
apr-util-dev libvorbis-dev
libogg-dev freealut-dev db-dev boost-dev c-ares-dev
xmlrpc-epi-dev libpng-dev tut-dev openjpeg-dev gtk+-dev
qt-dev dbus-glib-dev gstreamer-dev gst-plugins-base-dev
jsoncpp-dev boost-coroutine pth-dev"
makedepends="$depends_dev cmake"
install=""
subpackages=""
source="http://67.202.104.180/~nenolod/secondlife-${pkgver}-sourcebundle.tar.gz
indra-no-breakpad.patch"
_builddir="${srcdir}/build"
_srcdir="${srcdir}/viewer-release/indra"
prepare() {
local i
mkdir "$_builddir"
cd "$_srcdir/.."
msg "Copying indra to indra.orig for easy patching"
cp -R indra indra.orig
cd "$_srcdir"
for i in $source; do
case $i in
*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
esac
done
}
build() {
msg "Preparing llqtwebkit"
cd "$_builddir/../llqtwebkit"
qmake CONFIG-=debug
make
msg "Building indra"
cd "$_builddir"
cmake -DCMAKE_INSTALL_PREFIX=/usr -DPACKAGE:BOOL=FALSE \
-DLLQTWEBKIT_INCLUDE_DIR:STRING=${srcdir}/llqtwebkit \
-DLLQTWEBKIT_LIBRARY:STRING=${srcdir}/llqtwebkit \
-DCMAKE_BUILD_TYPE:STRING=RELWITHDEBINFO \
-DOPENAL:BOOL=TRUE \
-DFMOD:BOOL=FALSE \
-DUNATTENDED:BOOL=TRUE \
-DSTANDALONE:BOOL=TRUE \
-DLL_TESTS:BOOL=FALSE \
-DNDOF:BOOL=FALSE \
-DVIEWER:BOOL=TRUE "$_srcdir" || return 1
make || return 1
}
package() {
cd "$_builddir"
make DESTDIR="$pkgdir" install || return 1
}
md5sums="e16f67d04813953e5eadc1beafc435dd secondlife-2.5.2-sourcebundle.tar.gz
c75027c0a6f7c52e0ae2b8008ca99f9e indra-no-breakpad.patch"

View File

@ -0,0 +1,179 @@
--- indra.orig/cmake/GoogleBreakpad.cmake
+++ indra/cmake/GoogleBreakpad.cmake
@@ -2,7 +2,7 @@
include(Prebuilt)
if (STANDALONE)
- set(BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED ON)
+ set(BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED OFF)
include(FindGoogleBreakpad)
else (STANDALONE)
use_prebuilt_binary(google_breakpad)
--- indra.orig/llcommon/llapp.cpp
+++ indra/llcommon/llapp.cpp
@@ -46,7 +46,9 @@
#include "llstring.h"
#include "lleventtimer.h"
+#if 0
#include "google_breakpad/exception_handler.h"
+#endif
//
// Signal handling
@@ -143,8 +145,6 @@
// Set the application to this instance.
sApplication = this;
- mExceptionHandler = 0;
-
// initialize the buffer to write the minidump filename to
// (this is used to avoid allocating memory in the crash handler)
memset(minidump_path, 0, MAX_MINDUMP_PATH_LENGTH);
@@ -177,8 +177,6 @@
mThreadErrorp = NULL;
}
- if(mExceptionHandler != 0) delete mExceptionHandler;
-
LLCommon::cleanupClass();
}
@@ -284,75 +282,7 @@
void LLApp::setupErrorHandling()
{
- // Error handling is done by starting up an error handling thread, which just sleeps and
- // occasionally checks to see if the app is in an error state, and sees if it needs to be run.
-
-#if LL_WINDOWS
- // This sets a callback to handle w32 signals to the console window.
- // The viewer shouldn't be affected, sicne its a windowed app.
- SetConsoleCtrlHandler( (PHANDLER_ROUTINE) ConsoleCtrlHandler, TRUE);
-
- // Install the Google Breakpad crash handler for Windows
- if(mExceptionHandler == 0)
- {
- llwarns << "adding breakpad exception handler" << llendl;
- mExceptionHandler = new google_breakpad::ExceptionHandler(
- L"C:\\Temp\\", 0, windows_post_minidump_callback, 0, google_breakpad::ExceptionHandler::HANDLER_ALL);
- }
-
-#else
- //
- // Start up signal handling.
- //
- // There are two different classes of signals. Synchronous signals are delivered to a specific
- // thread, asynchronous signals can be delivered to any thread (in theory)
- //
- setup_signals();
-
- // Add google breakpad exception handler configured for Darwin/Linux.
- bool installHandler = true;
-#ifdef LL_DARWIN
- // For the special case of Darwin, we do not want to install the handler if
- // the process is being debugged as the app will exit with value ABRT (6) if
- // we do. Unfortunately, the code below which performs that test relies on
- // the structure kinfo_proc which has been tagged by apple as an unstable
- // API. We disable this test for shipping versions to avoid conflicts with
- // future releases of Darwin. This test is really only needed for developers
- // starting the app from a debugger anyway.
- #ifndef LL_RELEASE_FOR_DOWNLOAD
- int mib[4];
- mib[0] = CTL_KERN;
- mib[1] = KERN_PROC;
- mib[2] = KERN_PROC_PID;
- mib[3] = getpid();
-
- struct kinfo_proc info;
- memset(&info, 0, sizeof(info));
-
- size_t size = sizeof(info);
- int result = sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0);
- if((result == 0) || (errno == ENOMEM))
- {
- // P_TRACED flag is set, so this process is being debugged; do not install
- // the handler
- if(info.kp_proc.p_flag & P_TRACED) installHandler = false;
- }
- else
- {
- // Failed to discover if the process is being debugged; default to
- // installing the handler.
- installHandler = true;
- }
- #endif
-#endif
- if(installHandler && (mExceptionHandler == 0))
- {
- std::string dumpPath = "/tmp/";
- mExceptionHandler = new google_breakpad::ExceptionHandler(dumpPath, 0, &unix_post_minidump_callback, 0, true);
- }
-#endif
-
- startErrorThread();
+ sDisableCrashlogger = TRUE;
}
void LLApp::startErrorThread()
@@ -403,20 +333,10 @@
void LLApp::setMiniDumpDir(const std::string &path)
{
- if(mExceptionHandler == 0) return;
-#ifdef LL_WINDOWS
- wchar_t buffer[MAX_MINDUMP_PATH_LENGTH];
- mbstowcs(buffer, path.c_str(), MAX_MINDUMP_PATH_LENGTH);
- mExceptionHandler->set_dump_path(std::wstring(buffer));
-#else
- mExceptionHandler->set_dump_path(path);
-#endif
}
void LLApp::writeMiniDump()
{
- if(mExceptionHandler == 0) return;
- mExceptionHandler->WriteMinidump();
}
// static
@@ -473,13 +393,6 @@
void LLApp::disableCrashlogger()
{
- // Disable Breakpad exception handler.
- if (mExceptionHandler != 0)
- {
- delete mExceptionHandler;
- mExceptionHandler = 0;
- }
-
sDisableCrashlogger = TRUE;
}
--- indra.orig/llcommon/llapp.h
+++ indra/llcommon/llapp.h
@@ -60,9 +60,11 @@
};
#endif
+#if 0
namespace google_breakpad {
class ExceptionHandler; // See exception_handler.h
}
+#endif
class LL_COMMON_API LLApp : public LLOptionInterface
{
@@ -330,9 +332,9 @@
private:
// the static application instance if it was created.
static LLApp* sApplication;
-
+#if 0
google_breakpad::ExceptionHandler * mExceptionHandler;
-
+#endif
#if !LL_WINDOWS
friend void default_unix_signal_handler(int signum, siginfo_t *info, void *);