extra/libreoffice to 4.2.5-1

This commit is contained in:
Kevin Mihelich 2014-06-20 23:52:13 +00:00
parent 84652f674b
commit f08b283ed0
4 changed files with 6 additions and 3134 deletions

View file

@ -23,9 +23,9 @@ pkgname=('libreoffice-common'
'libreoffice-postgresql-connector'
'libreoffice-extension-wiki-publisher'
'libreoffice-extension-nlpsolver') # svn up -r 142692 (last one with all extensions built)
_LOver=4.2.4.2
pkgver=4.2.4
pkgrel=2
_LOver=4.2.5.2
pkgver=4.2.5
pkgrel=1
arch=('i686' 'x86_64')
license=('LGPL3')
url="http://www.libreoffice.org/"
@ -102,9 +102,6 @@ source=(${_mirror}/${pkgbase}{,-help,-translations}-${_LOver}.tar.xz{,.asc}
${_additional_source_url}/language-subtag-registry-2014-03-27.tar.bz2
make-pyuno-work-with-system-wide-module-install.diff
libreoffice-common.sh libreoffice-common.csh
prevent_KDE_Qt_from_interfering_with_the_session_manager.diff
icu53.diff
icu53_crashfix.diff
icudata-stdlibs.patch)
noextract=(15cb8c0803064faef0c4ddf5bc5ca279-boost_1_54_0.tar.bz2
185d60944ea767075d27247c3162b3bc-unowinreg.dll
@ -147,11 +144,11 @@ noextract=(15cb8c0803064faef0c4ddf5bc5ca279-boost_1_54_0.tar.bz2
libe-book-0.0.3.tar.bz2
libabw-0.0.2.tar.bz2
language-subtag-registry-2014-03-27.tar.bz2)
md5sums=('698a482f0cacd8b5eba9865fdd8a5403'
md5sums=('eb44cc33bb9331db4c1b6ae0b03fff9f'
'SKIP'
'a0ed88ac1758d2f87687fcf4bb7c9432'
'867c10167b05ba19162b78032405524b'
'SKIP'
'3db05930dc7c694d2cf58875b3245c2e'
'6bcd61a3f977f78c64b1eaa13a40524c'
'SKIP'
'15cb8c0803064faef0c4ddf5bc5ca279'
'1f24ab1d39f4a51faf22244c94a6203f'
@ -197,9 +194,6 @@ md5sums=('698a482f0cacd8b5eba9865fdd8a5403'
'07d2bf5ad839a394cca008b3ec6e7bb1'
'4195735a80876ae812fca5736b50192a'
'e7e4b3e70e99e5cba8f8dfcacf3b0d87'
'fa2109339289663cb8ea7cf27cc22f4e'
'07f53a9f899e533f9393e48b5d429165'
'2a296750092824cd5631e7b529433b28'
'0fa64bbd473ad7da9eb78a3890c29c2a')
prepare() {
@ -222,14 +216,6 @@ prepare() {
# fix not upstreamable pyuno paths - patch taken from Debian
patch -Np1 -i ${srcdir}/make-pyuno-work-with-system-wide-module-install.diff
# fix some startup issues with kde4 integration
# https://bugs.archlinux.org/task/39819 - https://bugs.freedesktop.org/show_bug.cgi?id=77128
patch -Np1 -i ${srcdir}/prevent_KDE_Qt_from_interfering_with_the_session_manager.diff
# upstream fixes for icu 53
patch -Np1 -i ${srcdir}/icu53.diff
patch -Np1 -i ${srcdir}/icu53_crashfix.diff
# fix icu building on ARM
patch -Np1 -i ${srcdir}/icudata-stdlibs.patch

File diff suppressed because it is too large Load diff

View file

@ -1,271 +0,0 @@
From 1ce42d1001139a9168e9451dbd48a6daef95c691 Mon Sep 17 00:00:00 2001
From: Eike Rathke <erack@redhat.com>
Date: Wed, 30 Apr 2014 16:51:05 +0000
Subject: resolve crashes with ICU 53.1 in locales with collator data, fdo#77071
ICU 53.1 changed API behavior:
https://ssl.icu-project.org/apiref/icu4c/classicu_1_1RuleBasedCollator.html#a2f4c7eeaf020ad68e3bd9722dd272357
isn't correct anymore:
length: size of the image. If negative, the API will try to figure out the
length of the image
NO, IT WILL NOT! It bails out with an error instead.
Introduced a function to obtain the length for each collator data.
base: collator, usually root. The base is required to be present through the
lifetime of the collator. Currently it cannot be NULL.
NOT "usually root"! There's a check now that bails out if
if(base->tailoring != CollationRoot::getRoot(errorCode))
So using an instance created with icu::Locale::getRoot()
(cherry picked from commit a3c627fe38236e82bc6008075d862b3cbfbd9ce3)
Conflicts:
i18npool/source/collator/collator_unicode.cxx
Backported.
make DISABLE_DYNLOADING on Android happy, fdo#77071 related
(cherry picked from commit dc7ba1af236ec28d399eff833d56608fde9fb70d)
Change-Id: Ia9c4e27d5ef4f8083bbe57e4e2f4b3ff63bb42ed
Reviewed-on: https://gerrit.libreoffice.org/9215
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
---
diff --git a/i18npool/source/collator/collator_unicode.cxx b/i18npool/source/collator/collator_unicode.cxx
index 90dd2f3b..42dfef3 100644
--- a/i18npool/source/collator/collator_unicode.cxx
+++ b/i18npool/source/collator/collator_unicode.cxx
@@ -84,6 +84,27 @@ const sal_uInt8* get_collator_data_zh_radical();
const sal_uInt8* get_collator_data_zh_stroke();
const sal_uInt8* get_collator_data_zh_zhuyin();
+size_t get_collator_data_ca_charset_length();
+size_t get_collator_data_dz_charset_length();
+size_t get_collator_data_hu_charset_length();
+size_t get_collator_data_ja_charset_length();
+size_t get_collator_data_ja_phonetic_alphanumeric_first_length();
+size_t get_collator_data_ja_phonetic_alphanumeric_last_length();
+size_t get_collator_data_ko_charset_length();
+size_t get_collator_data_ku_alphanumeric_length();
+size_t get_collator_data_ln_charset_length();
+size_t get_collator_data_my_dictionary_length();
+size_t get_collator_data_ne_charset_length();
+size_t get_collator_data_sid_charset_length();
+size_t get_collator_data_zh_TW_charset_length();
+size_t get_collator_data_zh_TW_radical_length();
+size_t get_collator_data_zh_TW_stroke_length();
+size_t get_collator_data_zh_charset_length();
+size_t get_collator_data_zh_pinyin_length();
+size_t get_collator_data_zh_radical_length();
+size_t get_collator_data_zh_stroke_length();
+size_t get_collator_data_zh_zhuyin_length();
+
}
#endif
@@ -120,6 +141,7 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& rAlgorithm, const lang::
}
if (!collator && OUString::createFromAscii(LOCAL_RULE_LANGS).indexOf(rLocale.Language) >= 0) {
const sal_uInt8* (*func)() = NULL;
+ size_t (*funclen)() = NULL;
#ifndef DISABLE_DYNLOADING
OUStringBuffer aBuf;
@@ -132,11 +154,21 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& rAlgorithm, const lang::
aBuf.appendAscii("get_").append(rLocale.Language).appendAscii("_");
if ( rLocale.Language == "zh" ) {
OUString func_base = aBuf.makeStringAndClear();
+ OUString funclen_base = func_base + "_length";
if (OUString("TW HK MO").indexOf(rLocale.Country) >= 0)
- func=(const sal_uInt8* (*)()) osl_getFunctionSymbol(hModule,
+ {
+ func = (const sal_uInt8* (*)()) osl_getFunctionSymbol(hModule,
OUString(func_base + "TW_" + rAlgorithm).pData);
+ funclen = (size_t (*)()) osl_getFunctionSymbol(hModule,
+ OUString(funclen_base + "TW_" + rAlgorithm).pData);
+ }
if (!func)
- func=(const sal_uInt8* (*)()) osl_getFunctionSymbol(hModule, OUString(func_base + rAlgorithm).pData);
+ {
+ func = (const sal_uInt8* (*)()) osl_getFunctionSymbol(
+ hModule, OUString(func_base + rAlgorithm).pData);
+ funclen = (size_t (*)()) osl_getFunctionSymbol(
+ hModule, OUString(funclen_base + rAlgorithm).pData);
+ }
} else {
if ( rLocale.Language == "ja" ) {
// replace algorithm name to implementation name.
@@ -149,72 +181,147 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& rAlgorithm, const lang::
} else {
aBuf.append(rAlgorithm);
}
- func=(const sal_uInt8* (*)()) osl_getFunctionSymbol(hModule, aBuf.makeStringAndClear().pData);
+ OUString func_base = aBuf.makeStringAndClear();
+ OUString funclen_base = func_base + "_length";
+ func = (const sal_uInt8* (*)()) osl_getFunctionSymbol(hModule, func_base.pData);
+ funclen = (size_t (*)()) osl_getFunctionSymbol(hModule, funclen_base.pData);
}
}
#else
if ( rLocale.Language == "ca" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_ca_charset;
+ funclen = get_collator_data_ca_charset_length;
+ }
} else if ( rLocale.Language == "dz" || rLocale.Language == "bo" ) {
// 'bo' Tibetan uses the same collation rules as 'dz' Dzongkha
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_dz_charset;
+ funclen = get_collator_data_dz_charset_length;
+ }
} else if ( rLocale.Language == "hu" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_hu_charset;
+ funclen = get_collator_data_hu_charset_length;
+ }
} else if ( rLocale.Language == "ja" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_ja_charset;
+ funclen = get_collator_data_ja_charset_length;
+ }
else if ( rAlgorithm == "phonetic (alphanumeric first)" )
+ {
func = get_collator_data_ja_phonetic_alphanumeric_first;
+ funclen = get_collator_data_ja_phonetic_alphanumeric_first_length;
+ }
else if ( rAlgorithm == "phonetic (alphanumeric last)" )
+ {
func = get_collator_data_ja_phonetic_alphanumeric_last;
+ funclen = get_collator_data_ja_phonetic_alphanumeric_last_length;
+ }
#if (U_ICU_VERSION_MAJOR_NUM < 53)
} else if ( rLocale.Language == "ko" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_ko_charset;
+ funclen = get_collator_data_ko_charset_length;
+ }
#endif
} else if ( rLocale.Language == "ku" ) {
if ( rAlgorithm == "alphanumeric" )
+ {
func = get_collator_data_ku_alphanumeric;
+ funclen = get_collator_data_ku_alphanumeric_length;
+ }
} else if ( rLocale.Language == "ln" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_ln_charset;
+ funclen = get_collator_data_ln_charset_length;
+ }
} else if ( rLocale.Language == "my" ) {
if ( rAlgorithm == "dictionary" )
+ {
func = get_collator_data_my_dictionary;
+ funclen = get_collator_data_my_dictionary_length;
+ }
} else if ( rLocale.Language == "ne" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_ne_charset;
+ funclen = get_collator_data_ne_charset_length;
+ }
} else if ( rLocale.Language == "sid" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_sid_charset;
+ funclen = get_collator_data_sid_charset_length;
+ }
} else if ( rLocale.Language == "zh" && (rLocale.Country == "TW" || rLocale.Country == "HK" || rLocale.Country == "MO") ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_zh_TW_charset;
+ funclen = get_collator_data_zh_TW_charset_length;
+ }
else if ( rAlgorithm == "radical" )
+ {
func = get_collator_data_zh_TW_radical;
+ funclen = get_collator_data_zh_TW_radical_length;
+ }
else if ( rAlgorithm == "stroke" )
+ {
func = get_collator_data_zh_TW_stroke;
+ funclen = get_collator_data_zh_TW_stroke_length;
+ }
} else if ( rLocale.Language == "zh" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_zh_charset;
+ funclen = get_collator_data_zh_charset_length;
+ }
else if ( rAlgorithm == "pinyin" )
+ {
func = get_collator_data_zh_pinyin;
+ funclen = get_collator_data_zh_pinyin_length;
+ }
else if ( rAlgorithm == "radical" )
+ {
func = get_collator_data_zh_radical;
+ funclen = get_collator_data_zh_radical_length;
+ }
else if ( rAlgorithm == "stroke" )
+ {
func = get_collator_data_zh_stroke;
+ funclen = get_collator_data_zh_stroke_length;
+ }
else if ( rAlgorithm == "zhuyin" )
+ {
func = get_collator_data_zh_zhuyin;
+ funclen = get_collator_data_zh_zhuyin_length;
+ }
}
#endif
- if (func) {
+ if (func && funclen) {
const sal_uInt8* ruleImage=func();
- uca_base = new RuleBasedCollator(static_cast<UChar*>(NULL), status);
+ size_t ruleImageSize = funclen();
+ // Not only changed ICU 53.1 the API behavior that a negative
+ // length (ruleImageSize) now leads to failure, but also that
+ // the base RuleBasedCollator passed as uca_base here needs to
+ // have a base->tailoring == CollationRoot::getRoot() otherwise
+ // the init bails out as well, as it does for the previously
+ // used "empty" RuleBasedCollator.
+ // The default collator of the en-US locale would also fulfill
+ // the requirement. The collator of the actual locale or the
+ // NULL (default) locale does not.
+ uca_base = static_cast<RuleBasedCollator*>(icu::Collator::createInstance(
+ icu::Locale::getRoot(), status));
if (! U_SUCCESS(status)) throw RuntimeException();
- collator = new RuleBasedCollator(reinterpret_cast<const uint8_t*>(ruleImage), -1, uca_base, status);
+ collator = new RuleBasedCollator(
+ reinterpret_cast<const uint8_t*>(ruleImage), ruleImageSize, uca_base, status);
if (! U_SUCCESS(status)) throw RuntimeException();
}
}
diff --git a/i18npool/source/collator/gencoll_rule.cxx b/i18npool/source/collator/gencoll_rule.cxx
index a801545..5ba9f5d 100644
--- a/i18npool/source/collator/gencoll_rule.cxx
+++ b/i18npool/source/collator/gencoll_rule.cxx
@@ -65,8 +65,10 @@ void data_write(char* file, char* name, sal_uInt8 *data, sal_Int32 len)
fprintf(fp, "#ifndef DISABLE_DYNLOADING\n");
fprintf(fp, "SAL_DLLPUBLIC_EXPORT const sal_uInt8* get_%s() { return %s; }\n", name, name);
+ fprintf(fp, "SAL_DLLPUBLIC_EXPORT size_t get_%s_length() { return sizeof(%s); }\n", name, name);
fprintf(fp, "#else\n");
fprintf(fp, "SAL_DLLPUBLIC_EXPORT const sal_uInt8* get_collator_data_%s() { return %s; }\n", name, name);
+ fprintf(fp, "SAL_DLLPUBLIC_EXPORT size_t get_collator_data_%s_length() { return sizeof(%s); }\n", name, name);
fprintf(fp, "#endif\n");
fprintf(fp, "\n");
fprintf (fp, "}\n");
--
cgit v0.9.0.2-2-gbebe

View file

@ -1,72 +0,0 @@
From 01d128557726134b5da9e9b951e60286eac311a8 Mon Sep 17 00:00:00 2001
From: Luboš Luňák <l.lunak@collabora.com>
Date: Tue, 25 Mar 2014 12:20:16 +0100
Subject: [PATCH] prevent KDE/Qt from interfering with the session manager
I occassionally get lockups in IceProcessMessages() called from QtCore,
I'm actually not exactly sure why, as theoretically two connections
from one app shouldn't be a problem, but since LO does its own
session handling, there's no need to the KDE/Qt code to be involved,
so prevent it from connecting to the session manager altogether.
Change-Id: Iebe20d4cb5403e5fea8bd5d8c1f69b62d1c2907b
(cherry picked from commit 71f2aff7a56cef4e133abad3c2e447c76c5ee1fe)
---
diff --git a/vcl/unx/kde4/KDEXLib.cxx b/vcl/unx/kde4/KDEXLib.cxx
index 820d39a..e4900a7 100644
--- a/vcl/unx/kde4/KDEXLib.cxx
+++ b/vcl/unx/kde4/KDEXLib.cxx
@@ -166,8 +166,23 @@
KCmdLineArgs::init( m_nFakeCmdLineArgs, m_pAppCmdLineArgs, kAboutData );
+ // LO does its own session management, so prevent KDE/Qt from interfering
+ // (QApplication::disableSessionManagement(false) wouldn't quite do,
+ // since that still actually connects to the session manager, it just
+ // won't save the application data on session shutdown).
+ char* session_manager = NULL;
+ if( getenv( "SESSION_MANAGER" ) != NULL )
+ {
+ session_manager = strdup( getenv( "SESSION_MANAGER" ));
+ unsetenv( "SESSION_MANAGER" );
+ }
m_pApplication = new VCLKDEApplication();
- kapp->disableSessionManagement();
+ if( session_manager != NULL )
+ {
+ setenv( "SESSION_MANAGER", session_manager, 1 );
+ free( session_manager );
+ }
+
KApplication::setQuitOnLastWindowClosed(false);
#if KDE_HAVE_GLIB
diff --git a/vcl/unx/kde4/VCLKDEApplication.hxx b/vcl/unx/kde4/VCLKDEApplication.hxx
index 412ee34..4ce0b2c 100644
--- a/vcl/unx/kde4/VCLKDEApplication.hxx
+++ b/vcl/unx/kde4/VCLKDEApplication.hxx
@@ -21,22 +21,14 @@
#define Region QtXRegion
-#include <QSessionManager>
-
#include <kapplication.h>
#undef Region
-/* #i59042# override KApplications method for session management
- * since it will interfere badly with our own.
- */
class VCLKDEApplication : public KApplication
{
public:
VCLKDEApplication();
-
- virtual void commitData(QSessionManager&) {};
-
virtual bool x11EventFilter(XEvent* event);
};