From f47b29353f31a11a466ca6e499812bc10186a9f8 Mon Sep 17 00:00:00 2001 From: Paul Jones Date: Wed, 18 Aug 2010 22:11:34 +1000 Subject: qt: Bump to 4.6.3 Also add option to build example and demo code [Peter: fix patch handling] Signed-off-by: Paul Jones Signed-off-by: Peter Korsgaard --- package/qt/Config.in | 5 ++ package/qt/qt-4.6.2-fix-qt-uclibc-build.patch | 27 ------- package/qt/qt-4.6.2-pthread_getattr_np.patch | 109 -------------------------- package/qt/qt-4.6.3-pthread_getattr_np.patch | 109 ++++++++++++++++++++++++++ package/qt/qt.mk | 10 ++- 5 files changed, 121 insertions(+), 139 deletions(-) delete mode 100644 package/qt/qt-4.6.2-fix-qt-uclibc-build.patch delete mode 100644 package/qt/qt-4.6.2-pthread_getattr_np.patch create mode 100644 package/qt/qt-4.6.3-pthread_getattr_np.patch (limited to 'package/qt') diff --git a/package/qt/Config.in b/package/qt/Config.in index 93a8ab1a8..50c292991 100644 --- a/package/qt/Config.in +++ b/package/qt/Config.in @@ -16,6 +16,11 @@ config BR2_PACKAGE_QT_DEBUG help If unsure, say N. +config BR2_PACKAGE_QT_DEMOS + bool "Compile and install demos and examples (with code)" + help + If unsure, say N. + choice prompt "Library type" default BR2_PACKAGE_QT_SHARED diff --git a/package/qt/qt-4.6.2-fix-qt-uclibc-build.patch b/package/qt/qt-4.6.2-fix-qt-uclibc-build.patch deleted file mode 100644 index a76774bbc..000000000 --- a/package/qt/qt-4.6.2-fix-qt-uclibc-build.patch +++ /dev/null @@ -1,27 +0,0 @@ -From http://bugreports.qt.nokia.com/browse/QTBUG-8365 - -Starting a QtEmbedded-4.6.2 application linked against uClibc 0.9.30.1 results -in an immediate segmentation fault. -This is due to an incompatibility of the uClibc with the standard libc about -the "realpath" function. The man of the function clearly specifies that -"if resolved path (the second argument) is NULL, then realpath uses malloc to -allocate a buffer ...". However, uClibc doesn't support this functionality and -issues a warning at compile-time when the function is called with a NULL -argument. ---- -diff -aurp -x '*.o' qt-everywhere-opensource-src-4.6.2-old/src/corelib/io/qfsfileengine.cpp qt-everywhere-opensource-src-4.6.2/src/corelib/io/qfsfileengine.cpp ---- qt-everywhere-opensource-src-4.6.2-old/src/corelib/io/qfsfileengine.cpp 2010-02-11 16:55:23.000000000 +0100 -+++ qt-everywhere-opensource-src-4.6.2/src/corelib/io/qfsfileengine.cpp 2010-02-19 14:57:06.000000000 +0100 -@@ -145,10 +145,9 @@ QString QFSFileEnginePrivate::canonicali - #endif - // Mac OS X 10.5.x doesn't support the realpath(X,0) extenstion we use here. - #if defined(Q_OS_LINUX) || defined(Q_OS_SYMBIAN) -- char *ret = realpath(path.toLocal8Bit().constData(), (char*)0); -- if (ret) { -+ char ret[PATH_MAX]; -+ if (realpath(path.toLocal8Bit().constData(), ret)) { - QString canonicalPath = QDir::cleanPath(QString::fromLocal8Bit(ret)); -- free(ret); - return canonicalPath; - } - #endif diff --git a/package/qt/qt-4.6.2-pthread_getattr_np.patch b/package/qt/qt-4.6.2-pthread_getattr_np.patch deleted file mode 100644 index 767818524..000000000 --- a/package/qt/qt-4.6.2-pthread_getattr_np.patch +++ /dev/null @@ -1,109 +0,0 @@ -Add pthred_getattr_np / phread_attr_getstrack alternatives for uClibc - -Based on https://dev.openwrt.org/log/packages/Xorg/lib/qt4/patches/100-fix-webkit-for-uclibc.patch?rev=20371 - -Signed-off-by: Johan Sagaert ---- qt-everywhere-opensource-src-4.6.2/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp 2010-02-11 16:55:20.000000000 +0100 -+++ qt-everywhere-opensource-src-4.6.2JS/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp 2010-05-23 10:49:29.000000000 +0200 -@@ -74,6 +74,22 @@ - #endif - #include - -+#if defined(QT_LINUXBASE) -+#include -+#endif -+ -+#if defined(__UCLIBC__) -+// versions of uClibc 0.9.31 and below do not have -+// pthread_getattr_np or pthread_attr_getstack. -+#if __UCLIBC_MAJOR__ == 0 && \ -+ (__UCLIBC_MINOR__ < 9 || \ -+ (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 31)) -+#define UCLIBC_USE_PROC_SELF_MAPS 1 -+#include -+extern int *__libc_stack_end; -+#endif -+#endif -+ - #if PLATFORM(SOLARIS) - #include - #else -@@ -667,16 +683,59 @@ static inline void* currentThreadStackBa - get_thread_info(find_thread(NULL), &threadInfo); - return threadInfo.stack_end; - #elif PLATFORM(UNIX) -+#ifdef UCLIBC_USE_PROC_SELF_MAPS -+ // Read /proc/self/maps and locate the line whose address -+ // range contains __libc_stack_end. -+ FILE *file = fopen("/proc/self/maps", "r"); -+ if (!file) -+ return 0; -+ __fsetlocking(file, FSETLOCKING_BYCALLER); -+ char *line = NULL; -+ size_t lineLen = 0; -+ while (!feof_unlocked(file)) { -+ if (getdelim(&line, &lineLen, '\n', file) <= 0) -+ break; -+ -+ long from; -+ long to; -+ if (sscanf (line, "%lx-%lx", &from, &to) != 2) -+ continue; -+ if (from <= (long)__libc_stack_end && (long)__libc_stack_end < to) { -+ fclose(file); -+ free(line); -+#ifdef _STACK_GROWS_UP -+ return (void *)from; -+#else -+ return (void *)to; -+#endif -+ } -+ } -+ fclose(file); -+ free(line); -+ return 0; -+ #else - static void* stackBase = 0; - static size_t stackSize = 0; - static pthread_t stackThread; - pthread_t thread = pthread_self(); - if (stackBase == 0 || thread != stackThread) { -+ -+#if defined(QT_LINUXBASE) -+ // LinuxBase is missing pthread_getattr_np - resolve it once at runtime instead -+ // see http://bugs.linuxbase.org/show_bug.cgi?id=2364 -+ typedef int (*GetAttrPtr)(pthread_t, pthread_attr_t *); -+ static int (*pthread_getattr_np_ptr)(pthread_t, pthread_attr_t *) = 0; -+ if (!pthread_getattr_np_ptr) -+ *(void **)&pthread_getattr_np_ptr = dlsym(RTLD_DEFAULT, "pthread_getattr_np"); -+#endif - pthread_attr_t sattr; - pthread_attr_init(&sattr); - #if HAVE(PTHREAD_NP_H) || PLATFORM(NETBSD) - // e.g. on FreeBSD 5.4, neundorf@kde.org - pthread_attr_get_np(thread, &sattr); -+#elif defined(QT_LINUXBASE) -+ if (pthread_getattr_np_ptr) -+ pthread_getattr_np_ptr(thread, &sattr); - #else - // FIXME: this function is non-portable; other POSIX systems may have different np alternatives - pthread_getattr_np(thread, &sattr); -@@ -688,6 +747,7 @@ static inline void* currentThreadStackBa - stackThread = thread; - } - return static_cast(stackBase) + stackSize; -+#endif - #elif PLATFORM(WINCE) - if (g_stackBase) - return g_stackBase; ---- qt-everywhere-opensource-src-4.6.2/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp 2010-02-11 16:55:17.000000000 +0100 -+++ qt-everywhere-opensource-src-4.6.2JS/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp 2010-05-23 01:41:06.000000000 +0200 -@@ -83,7 +83,7 @@ - // pthread_getattr_np or pthread_attr_getstack. - #if __UCLIBC_MAJOR__ == 0 && \ - (__UCLIBC_MINOR__ < 9 || \ -- (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 30)) -+ (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 31)) - #define UCLIBC_USE_PROC_SELF_MAPS 1 - #include - extern int *__libc_stack_end; diff --git a/package/qt/qt-4.6.3-pthread_getattr_np.patch b/package/qt/qt-4.6.3-pthread_getattr_np.patch new file mode 100644 index 000000000..767818524 --- /dev/null +++ b/package/qt/qt-4.6.3-pthread_getattr_np.patch @@ -0,0 +1,109 @@ +Add pthred_getattr_np / phread_attr_getstrack alternatives for uClibc + +Based on https://dev.openwrt.org/log/packages/Xorg/lib/qt4/patches/100-fix-webkit-for-uclibc.patch?rev=20371 + +Signed-off-by: Johan Sagaert +--- qt-everywhere-opensource-src-4.6.2/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp 2010-02-11 16:55:20.000000000 +0100 ++++ qt-everywhere-opensource-src-4.6.2JS/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp 2010-05-23 10:49:29.000000000 +0200 +@@ -74,6 +74,22 @@ + #endif + #include + ++#if defined(QT_LINUXBASE) ++#include ++#endif ++ ++#if defined(__UCLIBC__) ++// versions of uClibc 0.9.31 and below do not have ++// pthread_getattr_np or pthread_attr_getstack. ++#if __UCLIBC_MAJOR__ == 0 && \ ++ (__UCLIBC_MINOR__ < 9 || \ ++ (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 31)) ++#define UCLIBC_USE_PROC_SELF_MAPS 1 ++#include ++extern int *__libc_stack_end; ++#endif ++#endif ++ + #if PLATFORM(SOLARIS) + #include + #else +@@ -667,16 +683,59 @@ static inline void* currentThreadStackBa + get_thread_info(find_thread(NULL), &threadInfo); + return threadInfo.stack_end; + #elif PLATFORM(UNIX) ++#ifdef UCLIBC_USE_PROC_SELF_MAPS ++ // Read /proc/self/maps and locate the line whose address ++ // range contains __libc_stack_end. ++ FILE *file = fopen("/proc/self/maps", "r"); ++ if (!file) ++ return 0; ++ __fsetlocking(file, FSETLOCKING_BYCALLER); ++ char *line = NULL; ++ size_t lineLen = 0; ++ while (!feof_unlocked(file)) { ++ if (getdelim(&line, &lineLen, '\n', file) <= 0) ++ break; ++ ++ long from; ++ long to; ++ if (sscanf (line, "%lx-%lx", &from, &to) != 2) ++ continue; ++ if (from <= (long)__libc_stack_end && (long)__libc_stack_end < to) { ++ fclose(file); ++ free(line); ++#ifdef _STACK_GROWS_UP ++ return (void *)from; ++#else ++ return (void *)to; ++#endif ++ } ++ } ++ fclose(file); ++ free(line); ++ return 0; ++ #else + static void* stackBase = 0; + static size_t stackSize = 0; + static pthread_t stackThread; + pthread_t thread = pthread_self(); + if (stackBase == 0 || thread != stackThread) { ++ ++#if defined(QT_LINUXBASE) ++ // LinuxBase is missing pthread_getattr_np - resolve it once at runtime instead ++ // see http://bugs.linuxbase.org/show_bug.cgi?id=2364 ++ typedef int (*GetAttrPtr)(pthread_t, pthread_attr_t *); ++ static int (*pthread_getattr_np_ptr)(pthread_t, pthread_attr_t *) = 0; ++ if (!pthread_getattr_np_ptr) ++ *(void **)&pthread_getattr_np_ptr = dlsym(RTLD_DEFAULT, "pthread_getattr_np"); ++#endif + pthread_attr_t sattr; + pthread_attr_init(&sattr); + #if HAVE(PTHREAD_NP_H) || PLATFORM(NETBSD) + // e.g. on FreeBSD 5.4, neundorf@kde.org + pthread_attr_get_np(thread, &sattr); ++#elif defined(QT_LINUXBASE) ++ if (pthread_getattr_np_ptr) ++ pthread_getattr_np_ptr(thread, &sattr); + #else + // FIXME: this function is non-portable; other POSIX systems may have different np alternatives + pthread_getattr_np(thread, &sattr); +@@ -688,6 +747,7 @@ static inline void* currentThreadStackBa + stackThread = thread; + } + return static_cast(stackBase) + stackSize; ++#endif + #elif PLATFORM(WINCE) + if (g_stackBase) + return g_stackBase; +--- qt-everywhere-opensource-src-4.6.2/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp 2010-02-11 16:55:17.000000000 +0100 ++++ qt-everywhere-opensource-src-4.6.2JS/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp 2010-05-23 01:41:06.000000000 +0200 +@@ -83,7 +83,7 @@ + // pthread_getattr_np or pthread_attr_getstack. + #if __UCLIBC_MAJOR__ == 0 && \ + (__UCLIBC_MINOR__ < 9 || \ +- (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 30)) ++ (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 31)) + #define UCLIBC_USE_PROC_SELF_MAPS 1 + #include + extern int *__libc_stack_end; diff --git a/package/qt/qt.mk b/package/qt/qt.mk index eb1ef0ffe..92f1253c7 100644 --- a/package/qt/qt.mk +++ b/package/qt/qt.mk @@ -12,7 +12,7 @@ # ###################################################################### -QT_VERSION:=4.6.2 +QT_VERSION:=4.6.3 QT_SOURCE:=qt-everywhere-opensource-src-$(QT_VERSION).tar.gz QT_SITE:=http://get.qt.nokia.com/qt/source QT_CAT:=$(ZCAT) @@ -48,6 +48,12 @@ else QT_CONFIGURE+= -no-qt3support endif +ifeq ($(BR2_PACKAGE_QT_DEMOS),y) +QT_CONFIGURE+= -examplesdir $(TARGET_DIR)/usr/share/qt/examples -demosdir $(TARGET_DIR)/usr/share/qt/demos +else +QT_CONFIGURE+= -nomake examples -nomake demos +endif + # ensure glib is built first if enabled for Qt's glib support ifeq ($(BR2_PACKAGE_LIBGLIB2),y) QT_DEP_LIBS+=libglib2 @@ -520,8 +526,6 @@ endif -hostprefix $(STAGING_DIR)/usr \ -fast \ -no-rpath \ - -nomake examples \ - -nomake demos \ ) touch $@ -- cgit v1.2.3