diff options
author | root <root@rshg054.dnsready.net> | 2013-02-10 01:12:52 -0800 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2013-02-10 01:12:52 -0800 |
commit | 1bb2648cde916ac27d3dd75d7b64a4ddc89787b7 (patch) | |
tree | 016bfa1969323404c37dbef29cfc7242a5a8e9f3 /extra/libreoffice | |
parent | e9c244cac8e5dc1c59c7e8b7bc885fef04224b70 (diff) |
Sun Feb 10 01:12:35 PST 2013
Diffstat (limited to 'extra/libreoffice')
-rw-r--r-- | extra/libreoffice/PKGBUILD.36 | 715 | ||||
-rw-r--r-- | extra/libreoffice/buildfix.diff | 12 | ||||
-rw-r--r-- | extra/libreoffice/buildfix_icu49.diff | 42 | ||||
-rw-r--r-- | extra/libreoffice/fix_broken_hebrew_wordwrapping.diff | 360 | ||||
-rw-r--r-- | extra/libreoffice/git_fixes.diff | 743 |
5 files changed, 0 insertions, 1872 deletions
diff --git a/extra/libreoffice/PKGBUILD.36 b/extra/libreoffice/PKGBUILD.36 deleted file mode 100644 index 71ee72c1c..000000000 --- a/extra/libreoffice/PKGBUILD.36 +++ /dev/null @@ -1,715 +0,0 @@ -# $Id: PKGBUILD 160067 2012-05-29 19:20:54Z andyrtr $ -# Maintainer: AndyRTR <andyrtr@archlinux.org> - -pkgbase="libreoffice" -pkgname=('libreoffice-common' - 'libreoffice-base' - 'libreoffice-calc' - 'libreoffice-draw' - 'libreoffice-gnome' - 'libreoffice-impress' - 'libreoffice-kde4' - 'libreoffice-math' - 'libreoffice-sdk' - 'libreoffice-sdk-doc' - 'libreoffice-writer' - 'libreoffice-en-US' - 'libreoffice-postgresql-connector' - 'libreoffice-extension-pdfimport' - 'libreoffice-extension-presenter-screen' - 'libreoffice-extension-presentation-minimizer' - 'libreoffice-extension-report-builder' - 'libreoffice-scripting-beanshell' - 'libreoffice-scripting-javascript' - 'libreoffice-extension-scripting-python' - 'libreoffice-extension-wiki-publisher' - 'libreoffice-extension-nlpsolver') # svn up -r 142692 (last one with all extensions built -_LOver=3.6.0.4 -pkgver=3.6.0 -pkgrel=1 -arch=('i686' 'x86_64') -license=('LGPL3') -url="http://www.libreoffice.org/" -makedepends=( # makedepends - 'sane' 'perl-archive-zip' 'zip' 'unzip' 'unixodbc' 'hsqldb-java' #'boost' - 'apache-ant' 'gperf' 'poppler>=0.18.0' 'kdelibs' 'gconf' 'cppunit' - 'beanshell' 'vigra' 'clucene' 'junit' 'libmythes' 'libwpg' 'imagemagick' - 'mesa' 'gstreamer0.10-base' 'java-environment' 'postgresql-libs' 'doxygen' 'clucene' - #'saxon' - currently broken - # the runtime dependencies - "curl>=7.20.0" "hunspell>=1.2.8" "python2>=2.7" 'libwpd>=0.9.2' 'libwps' 'libxaw' "neon>=0.28.6" - 'pango' 'nspr' 'libjpeg' 'libxrandr' 'libgl' 'dbus-glib' 'libxslt' 'librsvg' "icu>=49.1" - 'redland' 'hyphen' 'lpsolve' 'gcc-libs' 'sh' 'libtextcat' 'graphite' - 'hicolor-icon-theme' 'desktop-file-utils' 'shared-mime-info' 'gtk2' 'orbit2' 'translate-toolkit' 'xdg-utils' - 'ttf-dejavu') # to satisfy regression tests - -# http://download.documentfoundation.org/mirrors/all.html -# http://wiki.documentfoundation.org/Mirrors - -_mirror="http://download.documentfoundation.org/libreoffice/src/${pkgver}" -#_mirror="http://dev-builds.libreoffice.org/pre-releases/src" -_additional_source_url="http://dev-www.libreoffice.org/src" -_additional_source_url2="http://dev-www.libreoffice.org/extern" -source=(${_mirror}/${pkgbase}-{core,help,translations}-${_LOver}.tar.xz - ${_additional_source_url}/18f577b374d60b3c760a3a3350407632-STLport-4.5.tar.gz - ${_additional_source_url}/f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2 - ${_additional_source_url}/a9a1db27688bad49418667b434d29c1f-libvisio-0.0.18.tar.bz2 - ${_additional_source_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz - ${_additional_source_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip - ${_additional_source_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip - ${_additional_source_url}/fdb27bfe2dbe2e7b57ae194d9bf36bab-SampleICC-1.3.2.tar.gz - ${_additional_source_url}/ada24d37d8d638b3d8a9985e80bc2978-source-9.0.0.7-bj.zip - ${_additional_source_url}/2a177023f9ea8ec8bd00837605c5df1b-jakarta-tomcat-5.0.30-src.tar.gz - ${_additional_source_url}/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip - ${_additional_source_url}/3c219630e4302863a9a83d0efde889db-commons-logging-1.1.1-src.tar.gz - ${_additional_source_url}/2ae988b339daec234019a7066f96733e-commons-lang-2.3-src.tar.gz - ${_additional_source_url}/2c9b0f83ed5890af02c0df1c1776f39b-commons-httpclient-3.1-src.tar.gz - ${_additional_source_url}/af3c3acf618de6108d65fcdc92b492e1-commons-codec-1.3-src.tar.gz - ${_additional_source_url}/eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip - ${_additional_source_url}/39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip - ${_additional_source_url}/3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip - ${_additional_source_url}/97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip - ${_additional_source_url}/f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip - ${_additional_source_url}/8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip - ${_additional_source_url}/d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip - ${_additional_source_url}/3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip - ${_additional_source_url}/ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip - ${_additional_source_url}/db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip - ${_additional_source_url}/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip - ${_additional_source_url}/0ff7d225d087793c8c2c680d77aac3e7-mdds_0.5.3.tar.bz2 - ${_additional_source_url}/6097739c841f671cb21332b9cc593ae7-libexttextcat-3.3.1.tar.bz2 - ${_additional_source_url}/0d2dcdfbf28d6208751b33057f5361f0-libcmis-0.2.3.tar.gz - ${_additional_source_url}/ce5a1def34578b75959ac31210f031f6-libcdr-0.0.8.tar.bz2 - ${_additional_source_url2}/185d60944ea767075d27247c3162b3bc-unowinreg.dll - buildfix.diff - libreoffice-common.sh libreoffice-common.csh) -noextract=(a9a1db27688bad49418667b434d29c1f-libvisio-0.0.18.tar.bz2 - 18f577b374d60b3c760a3a3350407632-STLport-4.5.tar.gz - f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2 - 185d60944ea767075d27247c3162b3bc-unowinreg.dll - 0ff7d225d087793c8c2c680d77aac3e7-mdds_0.5.3.tar.bz2 - ada24d37d8d638b3d8a9985e80bc2978-source-9.0.0.7-bj.zip - 798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip - 1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz - fdb27bfe2dbe2e7b57ae194d9bf36bab-SampleICC-1.3.2.tar.gz - 6097739c841f671cb21332b9cc593ae7-libexttextcat-3.3.1.tar.bz2 - 0d2dcdfbf28d6208751b33057f5361f0-libcmis-0.2.3.tar.gz - 35c94d2df8893241173de1d16b6034c0-swingExSrc.zip - 2a177023f9ea8ec8bd00837605c5df1b-jakarta-tomcat-5.0.30-src.tar.gz - a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip - 3c219630e4302863a9a83d0efde889db-commons-logging-1.1.1-src.tar.gz - 2ae988b339daec234019a7066f96733e-commons-lang-2.3-src.tar.gz - 2c9b0f83ed5890af02c0df1c1776f39b-commons-httpclient-3.1-src.tar.gz - af3c3acf618de6108d65fcdc92b492e1-commons-codec-1.3-src.tar.gz - eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip - 39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip - 3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip - 97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip - f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip - 8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip - d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip - 3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip - ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip - db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip - ce5a1def34578b75959ac31210f031f6-libcdr-0.0.8.tar.bz2 - ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip) -md5sums=('67cf97e86c75363238a371f64ef5f606' - '8422b0c4c797abeefed3ee4490586dd2' - '6cc8fa86be8c657ba23434c6c8d99416' - '18f577b374d60b3c760a3a3350407632' - 'f02578f5218f217a9f20e9c30e119c6a' - 'a9a1db27688bad49418667b434d29c1f' - '1f24ab1d39f4a51faf22244c94a6203f' - '35c94d2df8893241173de1d16b6034c0' - '798b2ffdc8bcfe7bca2cf92b62caf685' - 'fdb27bfe2dbe2e7b57ae194d9bf36bab' - 'ada24d37d8d638b3d8a9985e80bc2978' - '2a177023f9ea8ec8bd00837605c5df1b' - 'a7983f859eafb2677d7ff386a023bc40' - '3c219630e4302863a9a83d0efde889db' - '2ae988b339daec234019a7066f96733e' - '2c9b0f83ed5890af02c0df1c1776f39b' - 'af3c3acf618de6108d65fcdc92b492e1' - 'eeb2c7ddf0d302fba4bfc6e97eac9624' - '39bb3fcea1514f1369fcfc87542390fd' - '3404ab6b1792ae5f16bbd603bd1e1d03' - '97b2d4dba862397f446b217e2b623e71' - 'f94d9870737518e3b597f9265f4e9803' - '8ce2fcd72becf06c41f7201d15373ed9' - 'd8bd5eed178db6e2b18eeed243f85aa8' - '3bdf40c0d199af31923e900d082ca2dd' - 'ace6ab49184e329db254e454a010f56d' - 'db60e4fde8dd6d6807523deb71ee34dc' - 'ba2930200c9f019c2d93a8c88c651a0f' - '0ff7d225d087793c8c2c680d77aac3e7' - '6097739c841f671cb21332b9cc593ae7' - '0d2dcdfbf28d6208751b33057f5361f0' - 'ce5a1def34578b75959ac31210f031f6' - '185d60944ea767075d27247c3162b3bc' - '234e91ac65945ce1ab1e3839780e90f7' - 'f0e72d0e1bc93a50a3aa9d31350b156c' - '867c682b45f477f916786e00c45d7ab7') - -build() { - - unset J2REDIR; unset J2SDKDIR; unset JAVA_HOME; unset CLASSPATH; unset EXTRAOPTS - [ -z "${JAVA_HOME}" ] && . /etc/profile.d/jdk.sh || . /etc/profile.d/openjdk6.sh - [ -z "${ANT_HOME}" ] && . /etc/profile.d/apache-ant.sh - - cd ${srcdir}/libreoffice-core-$_LOver - - # move external sources into place - mkdir ${srcdir}/ext_sources && pushd ${srcdir}/ext_sources - for source in "${noextract[@]}"; do - ln -s ${srcdir}/$source . - done - popd - - ln -s ../libreoffice-help-$_LOver/helpcontent2 . - ln -s ../libreoffice-translations-$_LOver/translations . - - # buildfixes & bugfixes - patch -Np1 -i ${srcdir}/buildfix.diff - - #use the CFLAGS but remove the LibO overridden ones - for i in $CFLAGS; do - case "$i" in - -O?|-pipe|-Wall|-g|-fexceptions) continue;; - esac - ARCH_FLAGS="$ARCH_FLAGS $i" - done - - # python2 fix - export PYTHON=python2 - - #autoconf -f - - # non-SMP test build - #export MAKEFLAGS="-j1" - #./configure --with-build-version="${_LOver} ArchLinux build-${pkgrel}" --with-vendor="ArchLinux" \ - - ./autogen.sh --with-build-version="${_LOver} ArchLinux build-${pkgrel}" --with-vendor="ArchLinux" \ - --with-unix-wrapper="libreoffice" \ - --enable-split-app-modules \ - --with-max-jobs=${MAKEFLAGS/-j/} --with-num-cpus=${MAKEFLAGS/-j/} \ - --with-external-tar="${srcdir}/ext_sources" \ - --disable-fetch-external \ - --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc \ - --libdir=/usr/lib --mandir=/usr/share/man \ - --disable-verbose \ - --with-lang="" \ - --enable-crashdump \ - --enable-dbus \ - --enable-evolution2\ - --enable-gio\ - --disable-gnome-vfs\ - --disable-kde\ - --enable-kde4\ - --enable-gtk3 \ - --enable-lockdown\ - --enable-mergelibs \ - --enable-opengl \ - --enable-odk\ - --enable-ext-scripting-beanshell \ - --enable-ext-scripting-javascript \ - --enable-ext-wiki-publisher \ - --enable-ext-nlpsolver \ - --disable-ext-mysql-connector \ - --with-system-mysql \ - --enable-librsvg=system \ - --without-fonts\ - --without-afms\ - --without-ppds\ - --without-system-libwps\ - --without-system-libcdr \ - --without-system-mdds\ - --without-myspell-dicts \ - --without-system-libvisio \ - --without-system-libcmis \ - --without-system-libexttextcat \ - --without-system-jfreereport \ - --without-system-apache-commons \ - --with-system-dicts \ - --with-external-dict-dir=/usr/share/hunspell \ - --with-external-hyph-dir=/usr/share/hyphen \ - --with-external-thes-dir=/usr/share/mythes \ - --with-system-beanshell \ - --with-system-cppunit\ - --with-system-graphite\ - --with-system-libwpg \ - --with-system-libwps \ - --with-system-redland\ - --without-system-saxon\ - --disable-mozilla \ - --without-system-mozilla \ - --without-system-mozilla-headers \ - --with-ant-home="/usr/share/apache-ant"\ - --without-system-boost\ - --with-system-cairo\ - --with-system-libs\ - --with-system-mythes\ - --with-system-headers\ - --with-system-hsqldb \ - --with-alloc=system\ - --with-system-clucene\ - --without-system-servlet-api \ - --with-java-target-version=1.5 \ - $EXTRAOPTS - -#--enable-split-opt-features Split file lists for some optional features, .e.g. pyuno, testtool - - touch src.downloaded - #./download - make - # fake installation to create split file lists - mkdir $srcdir/fakeinstall - make DESTDIR=${srcdir}/fakeinstall distro-pack-install -} - -#check() { -# cd ${srcdir}/build -# make check -#} - -package_libreoffice-common() { - - pkgdesc="common files for LibreOffice - a productivity suite that is compatible with other major office suites" - install=libreoffice-common.install - depends=('libreoffice-langpack' "hunspell>=1.2.8" "python2>=2.7" "neon>=0.28.6" - 'nspr' 'libsm' 'redland' 'hyphen' 'graphite' "icu>=49.1" - 'hicolor-icon-theme' 'desktop-file-utils' 'shared-mime-info' 'xdg-utils' 'orbit2') - #'saxon' - optdepends=('libreoffice-langpack: additional language support' - 'java-runtime: adds java support' - 'libcups: adds printing support' - 'gconf: adds additional gnome support' - 'nss: adds support for signed files/macros' - 'pstoedit: translates PostScript and PDF graphics into other vector formats' - 'poppler: for shipped pdfimport extension' - 'libmythes: for use in thesaurus' - 'beanshell: interactive java -- good for prototyping /macros' - 'vigra: C++ computer vision library, usable in Basebmp' - 'libmspack: library for Microsoft compression formats for use in FontOOo' - 'libwpg: library for importing and converting Corel WordPerfect(tm) Graphics images' - 'clucene: full-text search engine library needed in the help section' - 'sane: for scanner access' - 'unixodbc: adds ODBC database support' - 'gstreamer0.10-base: + some gstr-plugins to support multimedia content, e.g. in impress') - backup=(etc/libreoffice/sofficerc - etc/libreoffice/bootstraprc - etc/libreoffice/psprint.conf) - groups=('libreoffice') - provides=('go-openoffice') - conflicts=('go-openoffice') - replaces=('go-openoffice' 'openoffice-base' 'libreoffice') - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/common_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/common_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done - - # put configuration files into place - install -dm755 ${pkgdir}/etc/libreoffice - install -m644 ${pkgdir}/usr/lib/libreoffice/program/{bootstraprc,sofficerc} ${pkgdir}/etc/libreoffice/ - install -m644 ${pkgdir}/usr/lib/libreoffice/share/psprint/psprint.conf ${pkgdir}/etc/libreoffice/ - # install dummy links to make them found by LibO - cd ${pkgdir}/usr/lib/libreoffice/program/ - ln -vsf /etc/libreoffice/{bootstraprc,sofficerc} . - cd ${pkgdir}/usr/lib/libreoffice/share/psprint/ - ln -vsf /etc/libreoffice/psprint.conf . - - # set python-uno PYTHON path - install -dm755 ${pkgdir}/etc/profile.d - install -m755 ${srcdir}/libreoffice-common.{sh,csh} ${pkgdir}/etc/profile.d/ - - # move bash-completion files to its new place - install -dm755 ${pkgdir}/usr/share/bash-completion/completions - mv ${pkgdir}/etc/bash_completion.d/libreoffice.sh ${pkgdir}/usr/share/bash-completion/completions/libreoffice.sh - rm -rf ${pkgdir}/etc/bash_completion.d - - # some files would conflict - rm -f ${pkgdir}/usr/lib/libreoffice/program/classes/ScriptProviderForJavaScript.jar - rm -f ${pkgdir}/usr/lib/libreoffice/program/classes/js.jar - rm -f ${pkgdir}/usr/lib/libreoffice/program/services/scriptproviderforjavascript.rdb -} - -package_libreoffice-base() { - pkgdesc="GUI database front-end for LibreOffice. Allows creation and management of databases through a GUI." - install=libreoffice-base.install - depends=('libreoffice-common' 'hsqldb-java') - optdepends=('libreoffice-postgresql-connector') - backup=() - groups=('libreoffice') - replaces=('libreoffice') - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/base_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/base_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done -} - -package_libreoffice-postgresql-connector() { - pkgdesc="A PostgreSQL connector for the database front-end for LibreOffice" - depends=('libreoffice-base' 'postgresql-libs') - groups=('libreoffice') - replaces=('libreoffice') - - # no file-list so far - install -dm755 ${pkgdir}/usr/lib/libreoffice/program/services - install -m644 ${srcdir}/fakeinstall/usr/lib/libreoffice/program/postgresql-sdbc.uno.so ${pkgdir}/usr/lib/libreoffice/program - install -m644 ${srcdir}/fakeinstall/usr/lib/libreoffice/program/postgresql-sdbc-impl.uno.so ${pkgdir}/usr/lib/libreoffice/program - install -m644 ${srcdir}/fakeinstall/usr/lib/libreoffice/program/postgresql-sdbc.ini ${pkgdir}/usr/lib/libreoffice/program - install -m644 ${srcdir}/fakeinstall/usr/lib/libreoffice/program/services/postgresql-sdbc.rdb ${pkgdir}/usr/lib/libreoffice/program/services - install -dm755 ${pkgdir}/usr/lib/libreoffice/share/registry - install -m644 ${srcdir}/fakeinstall/usr/lib/libreoffice/share/registry/postgresqlsdbc.xcd ${pkgdir}/usr/lib/libreoffice/share/registry - - # create directories from *list.txt file -# for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/postgresql_list.txt`; do -# install -dm755 ${pkgdir}/${directory/\%dir/} -# done -# # install files into the pkg from fakeinstall dir -# for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/postgresql_list.txt`; do -# dirname=`dirname $file` -# # check if directory has been already been created - some are missing like manpages -# [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname -# # mv file from fakeinstall to pkgdir -# mv ${srcdir}/fakeinstall${file} ${pkgdir}$file -# done -} - -package_libreoffice-calc() { - pkgdesc="Spreadsheet application for LibreOffice." - install=libreoffice-calc.install - depends=('libreoffice-common' 'lpsolve' ) - optdepends=() - backup=() - groups=('libreoffice') - replaces=('libreoffice') - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/calc_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/calc_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done -} - -package_libreoffice-draw() { - pkgdesc="Drawing Application for LibreOffice." - install=libreoffice-draw.install - depends=('libreoffice-common') - optdepends=() - backup=() - groups=('libreoffice') - replaces=('libreoffice') - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/draw_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/draw_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done -} - -package_libreoffice-gnome() { - pkgdesc="Plug-in for LibreOffice that enables integration into the Gnome and other gtk desktop environment." - depends=('libreoffice-common' 'gtk2' 'gtk3') #'dbus-glib' - optdepends=() - backup=() - groups=('libreoffice') - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/gnome_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/gnome_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done -} - -package_libreoffice-impress() { - pkgdesc="Presentation Application for LibreOffice." - install=libreoffice-impress.install - depends=('libreoffice-common') - optdepends=('mesa: for the OGLTrans extension') - backup=() - groups=('libreoffice') - replaces=('libreoffice') - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/impress_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/impress_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done -} - -package_libreoffice-kde4() { - pkgdesc="Plug-in for LibreOffice that enables integration into the KDE4 desktop environment." - depends=('libreoffice-common' 'kdelibs') - optdepends=() - backup=() - groups=('libreoffice') - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/kde4_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/kde4_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done -} - -package_libreoffice-math() { - pkgdesc="Equation Editor Application for LibreOffice." - depends=('libreoffice-common') - optdepends=() - backup=() - groups=('libreoffice') - replaces=('libreoffice') - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/math_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/math_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done -} - -package_libreoffice-sdk() { - pkgdesc="Software Development Kit for LibreOffice." - depends=('libreoffice-common' 'gcc-libs' 'sh' 'make' 'zip' 'gcc' 'java-environment') - optdepends=() - backup=() - groups=('libreoffice') - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/sdk_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/sdk_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done - - # fix environment path to keep compatibility with openjdk6 and openjdk7 - #sed -i -e "s:\/usr\/lib\/jvm\/java-7-openjdk:\$J2SDKDIR:" /usr/lib/libreoffice/sdk/setsdkenv_unix.{sh,csh} - sed -i -e "s:\/usr\/lib\/jvm\/java-7-openjdk:\$J2SDKDIR:" ${pkgdir}/usr/lib/libreoffice/sdk/setsdkenv_unix.{sh,csh} -} - -package_libreoffice-sdk-doc() { - pkgdesc="Software Development Kit documentation for LibreOffice" - depends=('libreoffice-common' 'libreoffice-sdk') - optdepends=() - backup=() - groups=('libreoffice') - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/sdk_doc_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/sdk_doc_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done - - #fix permissions - find ${pkgdir}/usr/lib/libreoffice/sdk/examples -type f -exec chmod -x {} \; -} - -package_libreoffice-writer() { - pkgdesc="Word Processor Application for LibreOffice." - install=libreoffice-writer.install - depends=('libreoffice-common' 'libwpd>=0.9.2' 'libwps' 'libxml2') - optdepends=('libwpg: library for importing and converting Corel WordPerfect(tm) Graphics images') - backup=() - groups=('libreoffice') - replaces=('libreoffice') - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/writer_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/writer_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done -} - -package_libreoffice-en-US() { - pkgdesc="English (US) language pack for LibreOffice" - #arch=('any') - provides=('openoffice-en-US' 'libreoffice-langpack') - replaces=(openoffice-en-US) - conflicts=(openoffice-en-US) - - # create directories from *list.txt file - for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/lang_en_US_list.txt`; do - install -dm755 ${pkgdir}/${directory/\%dir/} - done - # install files into the pkg from fakeinstall dir - for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/lang_en_US_list.txt`; do - dirname=`dirname $file` - # check if directory has been already been created - some are missing like manpages - [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname - # mv file from fakeinstall to pkgdir - mv ${srcdir}/fakeinstall${file} ${pkgdir}$file - done -} - -package_libreoffice-extension-pdfimport() { - - pkgdesc="This extension allows you to import and modify PDF documents" - depends=('libreoffice-common' 'poppler') - groups=('libreoffice-extensions') - - install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions - unzip -q ${srcdir}/libreoffice-core-$_LOver/solver/unxlng*/bin/pdfimport.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/pdfimport -} - -package_libreoffice-extension-presenter-screen() { - - pkgdesc="This extension provides more control over your slide show presentation, such as the ability to see the upcoming slide, the slide notes, and a presentation timer whereas the audience see only the current slide" - depends=('libreoffice-common' 'java-environment') - groups=('libreoffice-extensions') - - install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions - unzip -q ${srcdir}/libreoffice-core-$_LOver/solver/unxlng*/bin/presenter-screen.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/presenter-screen -} - -package_libreoffice-extension-presentation-minimizer() { - - pkgdesc="This extension reduce the file size of the current presentation" - depends=('libreoffice-common' 'gcc-libs') - groups=('libreoffice-extensions') - - install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions - unzip -q ${srcdir}/libreoffice-core-$_LOver/solver/unxlng*/bin/presentation-minimizer.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/presentation-minimizer -} - -package_libreoffice-extension-report-builder() { - - pkgdesc="This extension creates smart-looking database reports" - #arch=('any') - depends=('libreoffice-common' 'java-environment') - groups=('libreoffice-extensions') - - install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions - unzip -q ${srcdir}/libreoffice-core-$_LOver/solver/unxlng*/bin/report-builder.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/report-builder -} - -package_libreoffice-scripting-beanshell() { - - pkgdesc="LibreOffice extension - Enables support for scripts in BeanShell" - depends=('libreoffice-common' 'java-environment') - groups=('libreoffice-extensions') - - install -dm755 ${pkgdir}/usr/lib/libreoffice/program/{classes,services} - mv ${srcdir}/fakeinstall/usr/lib/libreoffice/program/classes/ScriptProviderForBeanShell.jar ${pkgdir}/usr/lib/libreoffice/program/classes/ - mv ${srcdir}/fakeinstall/usr/lib/libreoffice/program/services/scriptproviderforbeanshell.rdb ${pkgdir}/usr/lib/libreoffice/program/services/ -} - -package_libreoffice-scripting-javascript() { - - pkgdesc="LibreOffice extension - Enables support for scripts in JavaScript" - depends=('libreoffice-common' 'java-environment') - groups=('libreoffice-extensions') - - install -dm755 ${pkgdir}/usr/lib/libreoffice/program/{classes,services} - mv ${srcdir}/libreoffice-core-$_LOver/solver/unxlng*/bin/{js.jar,ScriptProviderForJavaScript.jar} ${pkgdir}/usr/lib/libreoffice/program/classes/ - mv ${srcdir}/libreoffice-core-$_LOver/solver/unxlng*/xml/scriptproviderforjavascript.rdb ${pkgdir}/usr/lib/libreoffice/program/services/ -} - -package_libreoffice-extension-scripting-python() { - - pkgdesc="LibreOffice extension - Enables support for scripts in Python" - depends=('libreoffice-common' 'python2') - groups=('libreoffice-extensions') - - install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions - unzip -q ${srcdir}/libreoffice-core-$_LOver/solver/unxlng*/bin/script-provider-for-python.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/script-provider-for-python -} - -package_libreoffice-extension-wiki-publisher() { - - pkgdesc="This extension enables you to create Wiki articles on MediaWiki servers without having to know the syntax of the MediaWiki markup language" - #arch=('any') - depends=('libreoffice-common' 'java-environment') - groups=('libreoffice-extensions') - - install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions - unzip -q ${srcdir}/libreoffice-core-$_LOver/solver/unxlng*/bin/wiki-publisher.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/wiki-publisher -} - -package_libreoffice-extension-nlpsolver() { - - pkgdesc="This extension integrates into Calc and offers new Solver engines to use for optimizing nonlinear programming models" - #arch=('any') - depends=('libreoffice-common' 'java-environment') - groups=('libreoffice-extensions') - - install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions - unzip -q ${srcdir}/libreoffice-core-$_LOver/solver/unxlng*/bin/nlpsolver.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/nlpsolver -} diff --git a/extra/libreoffice/buildfix.diff b/extra/libreoffice/buildfix.diff deleted file mode 100644 index 327b10bb1..000000000 --- a/extra/libreoffice/buildfix.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- libreoffice-core-3.5.99.1/sdext/Module_sdext.mk 2012-06-07 13:57:10.000000000 +0200 -+++ libreoffice-core-3.5.99.1/sdext/Module_sdext.mk.new 2012-06-09 18:21:03.376024873 +0200 -@@ -49,9 +49,6 @@ - StaticLibrary_pdfimport_s \ - )) - --$(eval $(call gb_Module_add_check_targets,sdext,\ -- CppunitTest_pdfimport \ --)) - endif - - ifeq ($(ENABLE_PRESENTER_SCREEN),YES) diff --git a/extra/libreoffice/buildfix_icu49.diff b/extra/libreoffice/buildfix_icu49.diff deleted file mode 100644 index 7a774dee0..000000000 --- a/extra/libreoffice/buildfix_icu49.diff +++ /dev/null @@ -1,42 +0,0 @@ -https://bugs.gentoo.org/show_bug.cgi?id=410307 - ---- i18npool/source/breakiterator/data/char_in.txt -+++ i18npool/source/breakiterator/data/char_in.txt -@@ -15,7 +15,7 @@ - $CR = [\p{Grapheme_Cluster_Break = CR}]; - $LF = [\p{Grapheme_Cluster_Break = LF}]; - $Control = [\p{Grapheme_Cluster_Break = Control}]; --$Prepend = [\p{Grapheme_Cluster_Break = Prepend}]; -+# $Prepend = [\p{Grapheme_Cluster_Break = Prepend}]; - $Extend = [\p{Grapheme_Cluster_Break = Extend}]; - $SpacingMark = [\p{Grapheme_Cluster_Break = SpacingMark}]; - $BengaliLetter = [\u0985-\u09B9 \u09CE \u09DC-\u09E1 \u09F0-\u09F1]; -@@ -72,7 +72,7 @@ - [^$Control $CR $LF] $Extend; - - [^$Control $CR $LF] $SpacingMark; --$Prepend [^$Control $CR $LF]; -+# $Prepend [^$Control $CR $LF]; - - - ## ------------------------------------------------- -@@ -94,7 +94,7 @@ - - $Extend [^$Control $CR $LF]; - $SpacingMark [^$Control $CR $LF]; --[^$Control $CR $LF] $Prepend; -+# [^$Control $CR $LF] $Prepend; - - - ## ------------------------------------------------- ---- i18npool/source/breakiterator/data/char.txt -+++ i18npool/source/breakiterator/data/char.txt -@@ -16,7 +16,7 @@ - $CR = [\p{Grapheme_Cluster_Break = CR}]; - $LF = [\p{Grapheme_Cluster_Break = LF}]; - $Control = [\p{Grapheme_Cluster_Break = Control}]; --$Prepend = [\p{Grapheme_Cluster_Break = Prepend}]; -+# $Prepend = [\p{Grapheme_Cluster_Break = Prepend}]; - $Extend = [\p{Grapheme_Cluster_Break = Extend}]; - $SpacingMark = [\p{Grapheme_Cluster_Break = SpacingMark}]; - # True Indic wants to move by syllables. Break up SpacingMark. This based on Unicode 6.0 data diff --git a/extra/libreoffice/fix_broken_hebrew_wordwrapping.diff b/extra/libreoffice/fix_broken_hebrew_wordwrapping.diff deleted file mode 100644 index ba4850c77..000000000 --- a/extra/libreoffice/fix_broken_hebrew_wordwrapping.diff +++ /dev/null @@ -1,360 +0,0 @@ -From 20c24114143d6d38774b56a142fd4ae05094308e Mon Sep 17 00:00:00 2001 -From: Caolán McNamara <caolanm@redhat.com> -Date: Sun, 13 May 2012 21:41:30 +0000 -Subject: Resolves: fdo#49849 implement Unicode 6.1 hebrew line breaking rules - -i.e. sync with svn diff -c 31071 -http://source.icu-project.org/repos/icu/icu/trunk/source/data/brkitr/line.txt - -Change-Id: I I I41b3d02f1a0da3b83a9684f29d466660d96254c6 ---- -diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx -index 14051d4..ffd590c 100644 ---- a/i18npool/qa/cppunit/test_breakiterator.cxx -+++ b/i18npool/qa/cppunit/test_breakiterator.cxx -@@ -42,6 +42,7 @@ - #include <unotest/bootstrapfixturebase.hxx> - - #include <rtl/strbuf.hxx> -+#include <rtl/ustrbuf.hxx> - - #include <string.h> - -@@ -58,6 +59,9 @@ public: - void testWeak(); - void testAsian(); - void testThai(); -+#if TODO -+ void testNorthernThai(); -+#endif - - CPPUNIT_TEST_SUITE(TestBreakIterator); - CPPUNIT_TEST(testLineBreaking); -@@ -71,6 +71,9 @@ - CPPUNIT_TEST(testWeak); - CPPUNIT_TEST(testAsian); - CPPUNIT_TEST(testThai); -+#if TODO -+ CPPUNIT_TEST(testNorthernThai); -+#endif - CPPUNIT_TEST_SUITE_END(); - - private: -@@ -80,28 +83,46 @@ - uno::Reference<i18n::XBreakIterator> m_xBreak; - }; - --//See https://bugs.freedesktop.org/show_bug.cgi?id=31271 for motivation - void TestBreakIterator::testLineBreaking() - { -- ::rtl::OUString aTest1(RTL_CONSTASCII_USTRINGPARAM("(some text here)")); -- - i18n::LineBreakHyphenationOptions aHyphOptions; - i18n::LineBreakUserOptions aUserOptions; - lang::Locale aLocale; - -- aLocale.Language = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("en")); -- aLocale.Country = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("US")); -- -+ //See https://bugs.freedesktop.org/show_bug.cgi?id=31271 - { -- //Here we want the line break to leave text here) on the next line -- i18n::LineBreakResults aResult = m_xBreak->getLineBreak(aTest1, strlen("(some tex"), aLocale, 0, aHyphOptions, aUserOptions); -- CPPUNIT_ASSERT_MESSAGE("Expected a break at the the start of the word", aResult.breakIndex == 6); -+ ::rtl::OUString aTest(RTL_CONSTASCII_USTRINGPARAM("(some text here)")); -+ -+ aLocale.Language = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("en")); -+ aLocale.Country = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("US")); -+ -+ { -+ //Here we want the line break to leave text here) on the next line -+ i18n::LineBreakResults aResult = m_xBreak->getLineBreak(aTest, strlen("(some tex"), aLocale, 0, aHyphOptions, aUserOptions); -+ CPPUNIT_ASSERT_MESSAGE("Expected a break at the the start of the word", aResult.breakIndex == 6); -+ } -+ -+ { -+ //Here we want the line break to leave "here)" on the next line -+ i18n::LineBreakResults aResult = m_xBreak->getLineBreak(aTest, strlen("(some text here"), aLocale, 0, aHyphOptions, aUserOptions); -+ CPPUNIT_ASSERT_MESSAGE("Expected a break at the the start of the word", aResult.breakIndex == 11); -+ } - } - -+ //See https://bugs.freedesktop.org/show_bug.cgi?id=49849 - { -- //Here we want the line break to leave "here)" on the next line -- i18n::LineBreakResults aResult = m_xBreak->getLineBreak(aTest1, strlen("(some text here"), aLocale, 0, aHyphOptions, aUserOptions); -- CPPUNIT_ASSERT_MESSAGE("Expected a break at the the start of the word", aResult.breakIndex == 11); -+ const sal_Unicode HEBREW1[] = { 0x05DE, 0x05D9, 0x05DC, 0x05D9, 0x5DD }; -+ ::rtl::OUString aWord(HEBREW1, SAL_N_ELEMENTS(HEBREW1)); -+ ::rtl::OUString aTest(rtl::OUStringBuffer(aWord).append(' ').append(aWord).makeStringAndClear()); -+ -+ aLocale.Language = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("he")); -+ aLocale.Country = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IL")); -+ -+ { -+ //Here we want the line break to happen at the whitespace -+ i18n::LineBreakResults aResult = m_xBreak->getLineBreak(aTest, aTest.getLength()-1, aLocale, 0, aHyphOptions, aUserOptions); -+ CPPUNIT_ASSERT_MESSAGE("Expected a break at the the start of the word", aResult.breakIndex == aWord.getLength()+1); -+ } - } - } - -@@ -295,27 +320,29 @@ void TestBreakIterator::testThai() - aLocale.Language = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("th")); - aLocale.Country = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TH")); - -- i18n::Boundary aBounds; -- { -- const sal_Unicode THAI1[] = { 0x0E01, 0x0E38, 0x0E2B, 0x0E25, 0x0E32, 0x0E1A }; -- ::rtl::OUString aTest(THAI1, SAL_N_ELEMENTS(THAI1)); -- aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale, -- i18n::WordType::DICTIONARY_WORD, true); -- CPPUNIT_ASSERT_MESSAGE("Should skip full word", -- aBounds.startPos == 0 && aBounds.endPos == aTest.getLength()); -- } -+ const sal_Unicode THAI1[] = { 0x0E01, 0x0E38, 0x0E2B, 0x0E25, 0x0E32, 0x0E1A }; -+ ::rtl::OUString aTest(THAI1, SAL_N_ELEMENTS(THAI1)); -+ i18n::Boundary aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale, -+ i18n::WordType::DICTIONARY_WORD, true); -+ CPPUNIT_ASSERT_MESSAGE("Should skip full word", -+ aBounds.startPos == 0 && aBounds.endPos == aTest.getLength()); -+} - --#ifdef TODO -- { -- const sal_Unicode NORTHERN_THAI1[] = { 0x0E01, 0x0E38, 0x0E4A, 0x0E2B, 0x0E25, 0x0E32, 0x0E1A }; -- ::rtl::OUString aTest(NORTHERN_THAI1, SAL_N_ELEMENTS(NORTHERN_THAI1)); -- aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale, -- i18n::WordType::DICTIONARY_WORD, true); -- CPPUNIT_ASSERT_MESSAGE("Should skip full word", -- aBounds.startPos == 0 && aBounds.endPos == aTest.getLength()); -- } --#endif -+#if TODO -+void TestBreakIterator::testNorthernThai() -+{ -+ lang::Locale aLocale; -+ aLocale.Language = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("nod")); -+ aLocale.Country = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TH")); -+ -+ const sal_Unicode NORTHERN_THAI1[] = { 0x0E01, 0x0E38, 0x0E4A, 0x0E2B, 0x0E25, 0x0E32, 0x0E1A }; -+ ::rtl::OUString aTest(NORTHERN_THAI1, SAL_N_ELEMENTS(NORTHERN_THAI1)); -+ i18n::Boundary aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale, -+ i18n::WordType::DICTIONARY_WORD, true); -+ CPPUNIT_ASSERT_MESSAGE("Should skip full word", -+ aBounds.startPos == 0 && aBounds.endPos == aTest.getLength()); - } -+#endif - - void TestBreakIterator::setUp() - { -diff --git a/i18npool/source/breakiterator/data/README b/i18npool/source/breakiterator/data/README -new file mode 100644 -index 0000000..8d7598d ---- a/dev/null -+++ b/i18npool/source/breakiterator/data/README -@@ -0,0 +1,12 @@ -+The originals of these come from svn checkout -+http://source.icu-project.org/repos/icu/icu/trunk/source/data/brkitr they no -+longer appear in the icu tarballs, but are in icu's svn -+ -+At various stages these copies have been customized and are not horribly out of -+sync. It unclear which diffs from the base versions are deliberate and which -+are now accidental :-( -+ -+We need to review the various issues referenced in the commits that caused -+custimizations and see if they're still relevant or not, write regression tests -+for them, if any are still relavant then apply the changes back on top of the -+latest versions. -diff --git a/i18npool/source/breakiterator/data/line.txt b/i18npool/source/breakiterator/data/line.txt -index cbabee6..91c8f3d 100644 ---- a/i18npool/source/breakiterator/data/line.txt -+++ b/i18npool/source/breakiterator/data/line.txt -@@ -61,11 +61,13 @@ $BB = [:LineBreak = Break_Before:]; - $BK = [:LineBreak = Mandatory_Break:]; - $B2 = [:LineBreak = Break_Both:]; - $CB = [:LineBreak = Contingent_Break:]; -+$CJ = [:LineBreak = Conditional_Japanese_Starter:]; - $CL = [:LineBreak = Close_Punctuation:] ; - $CM = [:LineBreak = Combining_Mark:]; - $CR = [:LineBreak = Carriage_Return:]; - $EX = [:LineBreak = Exclamation:]; - $GL = [:LineBreak = Glue:]; -+$HL = [:LineBreak = Hebrew_Letter:]; - $HY = [:LineBreak = Hyphen:]; - $H2 = [:LineBreak = H2:]; - $H3 = [:LineBreak = H3:]; -@@ -77,7 +79,7 @@ $JV = [:LineBreak = JV:]; - $JT = [:LineBreak = JT:]; - $LF = [:LineBreak = Line_Feed:]; - $NL = [:LineBreak = Next_Line:]; --$NS = [:LineBreak = Nonstarter:]; -+$NS = [[:LineBreak = Nonstarter:] $CJ]; - $NU = [:LineBreak = Numeric:]; - $OP = [[:LineBreak = Open_Punctuation:] - $DG]; - $PO = [:LineBreak = Postfix_Numeric:]; -@@ -118,6 +120,7 @@ $B2cm = $B2 $CM*; - $CLcm = $CL $CM*; - $EXcm = $EX $CM*; - $GLcm = $GL $CM*; -+$HLcm = $HL $CM*; - $HYcm = $HY $CM*; - $H2cm = $H2 $CM*; - $H3cm = $H3 $CM*; -@@ -150,6 +153,7 @@ $B2 $CM+; - $CL $CM+; - $EX $CM+; - $GL $CM+; -+$HL $CM+; - $HY $CM+; - $H2 $CM+; - $H3 $CM+; -@@ -186,7 +190,7 @@ $CANT_CM = [ $SP $BK $CR $LF $NL $ZW $CM]; # Bases that can't take CMs - # so for this one case we need to manually list out longer sequences. - # - $AL_FOLLOW_NOCM = [$BK $CR $LF $NL $ZW $SP]; --$AL_FOLLOW_CM = [$CL $EX $IS $SY $WJ $GL $QU $BA $HY $NS $IN $NU $ALPlus $OP]; -+$AL_FOLLOW_CM = [$CL $EX $HL $IS $SY $WJ $GL $QU $BA $HY $NS $IN $NU $ALPlus $OP]; - $AL_FOLLOW = [$AL_FOLLOW_NOCM $AL_FOLLOW_CM]; - - -@@ -320,8 +324,13 @@ $LB20NonBreaks $CM* ($BAcm | $HYcm | $NScm); - $BBcm [^$CB]; # $BB x - $BBcm $LB20NonBreaks $CM*; - -+# LB 21a Don't break after Hebrew + Hyphen -+# HL (HY | BA) x -+# -+$HLcm ($HYcm | $BAcm) [^$CB]?; -+ - # LB 22 --$ALcm $INcm; -+($ALcm | $HLcm) $INcm; - $CM+ $INcm; # by rule 10, any otherwise unattached CM behaves as AL - $IDcm $INcm; - $INcm $INcm; -@@ -331,16 +340,18 @@ $NUcm $INcm; - # $LB 23 - $IDcm $POcm; - $ALcm $NUcm; # includes $LB19 -+$HLcm $NUcm; - $CM+ $NUcm; # Rule 10, any otherwise unattached CM behaves as AL - $NUcm $ALcm; -+$NUcm $HLcm; - - # - # LB 24 - # - $PRcm $IDcm; - $ALcm $PRcm; --$PRcm $ALcm; --$POcm $ALcm; -+$PRcm ($ALcm | $HLcm); -+$POcm ($ALcm | $HLcm); - - # - # LB 25 Numbers. -@@ -361,8 +372,8 @@ $PRcm ($JLcm | $JVcm | $JTcm | $H2cm | $H3cm); - - # LB 28 Do not break between alphabetics - # --$ALcm $ALcm; --$CM+ $ALcm; # The $CM+ is from rule 10, and unattached CM is treated as AL -+($ALcm | $HLcm) ($ALcm | $HLcm); -+$CM+ ($ALcm | $HLcm); # The $CM+ is from rule 10, an unattached CM is treated as AL - - # LB 29 - $IScm ($ALcm | $NUcm); -@@ -371,11 +382,9 @@ $IScm ($ALcm | $NUcm); - # Rule 30 Do not break between letters, numbers or ordinary symbols - # and opening or closing punctuation - # --($ALcm | $NUcm) $OPcm; -+($ALcm | $HLcm | $NUcm) $OPcm; - $CM+ $OPcm; --$CLcm ($ALcm | $NUcm); -- -- -+$CLcm ($ALcm | $HLcm | $NUcm); - - # - # Reverse Rules. -@@ -391,6 +400,7 @@ $CM+ $B2; - $CM+ $CL; - $CM+ $EX; - $CM+ $GL; -+$CM+ $HL; - $CM+ $HY; - $CM+ $H2; - $CM+ $H3; -@@ -544,24 +554,25 @@ $CM* ($BA | $HY | $NS) $CM* [$LB20NonBreaks-$CM]; # . x (BA | HY | NS) - $CM* [$LB20NonBreaks-$CM] $CM* $BB; # BB x . - [^$CB] $CM* $BB; # - -- -+# LB21a -+[^$CB] $CM* ($HY | $BA) $CM* $HL; - - # LB 22 --$CM* $IN $CM* $ALPlus; -+$CM* $IN $CM* ($ALPlus | $HL); - $CM* $IN $CM* $ID; - $CM* $IN $CM* $IN; - $CM* $IN $CM* $NU; - - # LB 23 - $CM* $PO $CM* $ID; --$CM* $NU $CM* $ALPlus; --$CM* $ALPlus $CM* $NU; -+$CM* $NU $CM* ($ALPlus | $HL); -+$CM* ($ALPlus | $HL) $CM* $NU; - - # LB 24 - $CM* $ID $CM* $PR; - $CM* $PR $CM* $ALPlus; --$CM* $ALPlus $CM* $PR; --$CM* $ALPlus $CM* $PO; -+$CM* ($ALPlus | $HL) $CM* $PR; -+$CM* ($ALPlus | $HL) $CM* $PO; - - $CM* $ALPlus $CM* ($IS | $SY | $HY)+ / $SP; - $CM* $NU+ $CM* $HY+ / $SP; -@@ -580,15 +591,14 @@ $CM* $PO $CM* ($H3 | $H2 | $JT | $JV | $JL); - $CM* ($H3 | $H2 | $JT | $JV | $JL) $CM* $PR; - - # LB 28 --$CM* $ALPlus $CM* $ALPlus; -- -+$CM* ($ALPlus | $HL) $CM* ($ALPlus | $HL); - - # LB 29 - $CM* ($NU | $ALPlus) $CM* $IS+ [^$SP]; - - # LB 30 --$CM* $OP $CM* ($NU | $ALPlus); --$CM* ($NU | $ALPlus) $CM* ($CL | $SY)+ [^$SP]; -+$CM* $OP $CM* ($ALPlus | $HL | $NU); -+$CM* ($ALPlus | $HL | $NU) $CM* ($CL | $SY)+ [^$SP]; - - - ## ------------------------------------------------- -@@ -609,6 +619,9 @@ $SP+ $CM* $QU; - $SP+ $CM* $CL; - $SP+ $CM* $B2; - -+# LB 21 -+$CM* ($HY | $BA) $CM* $HL; -+ - # LB 18 - ($CM* ($IS | $SY))+ $CM* $NU; - $CL $CM* ($NU | $IS | $SY); -@@ -629,6 +642,6 @@ $dictionary $dictionary; - # turn off rule chaining. We don't want to move more - # than necessary. - # --[$CM $OP $QU $CL $B2 $PR $HY $SP $dictionary]+ [^$CM $OP $QU $CL $B2 $PR $HY $dictionary]; -+[$CM $OP $QU $CL $B2 $PR $HY $BA $SP $dictionary]+ [^$CM $OP $QU $CL $B2 $PR $HY $BA $dictionary]; - $dictionary $dictionary; - --- -cgit v0.9.0.2-2-gbebe diff --git a/extra/libreoffice/git_fixes.diff b/extra/libreoffice/git_fixes.diff deleted file mode 100644 index a4cd891cb..000000000 --- a/extra/libreoffice/git_fixes.diff +++ /dev/null @@ -1,743 +0,0 @@ -From 427529801dee122250e44d2311b34651db92bbdb Mon Sep 17 00:00:00 2001 -From: Stephan Bergmann <sbergman@redhat.com> -Date: Tue, 21 Aug 2012 16:55:11 +0000 -Subject: Typo - -Change-Id: I41fd1463b6432818ee36e7f90e920a5fd98c7106 -(cherry picked from commit 1316cfe8a72f7c7bc2f5ad7644a2d4c54b77fc8b) - -Signed-off-by: Eike Rathke <erack@redhat.com> ---- -diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx -index d929787..55ebaca 100644 ---- a/desktop/source/app/app.cxx -+++ b/desktop/source/app/app.cxx -@@ -194,7 +194,7 @@ void removeTree(OUString const & url) { - osl::FileBase::RC rc = osl::Directory::remove(url); - SAL_WARN_IF( - rc != osl::FileBase::E_None, "desktop", -- "cannot remove directory " << url << ": " +rc); -+ "cannot remove directory " << url << ": " << +rc); - // at least on Windows XP removing some existing directories fails with - // osl::FileBase::E_ACCESS because they are read-only; but keeping those - // directories around should be harmless once they are empty --- -cgit v0.9.0.2-2-gbebe -From b4f8acb41165a28b2db47acd3c6b624a4c507c54 Mon Sep 17 00:00:00 2001 -From: Stephan Bergmann <sbergman@redhat.com> -Date: Fri, 24 Aug 2012 14:06:15 +0000 -Subject: Fix removeRdbFiles (caused extension update to fail) - -removeRdbFiles suffered from a confusion that ImplementationInfo.uri denotes the -corresponding component (.so, .jar, etc.), but not the .rdb file. So removing -an .rdb file silently failed to remove the corresponding implementations, so re- -installing a similar enough .rdb (as typically happens during extension update) -would fail due to duplicate implementation names. - -Change-Id: I25d4ff72656c99a3af509eef09e89c18cfd0aabe -Reviewed-on: https://gerrit.libreoffice.org/476 -Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com> -Tested-by: Norbert Thiebaud <nthiebaud@gmail.com> ---- -diff --git a/cppuhelper/source/defaultbootstrap.cxx b/cppuhelper/source/defaultbootstrap.cxx -index c3bdba3..7fd1e4a 100644 ---- a/cppuhelper/source/defaultbootstrap.cxx -+++ b/cppuhelper/source/defaultbootstrap.cxx -@@ -130,9 +130,10 @@ struct ImplementationInfo: private boost::noncopyable { - rtl::OUString const & theName, rtl::OUString const & theLoader, - rtl::OUString const & theUri, rtl::OUString const & thePrefix, - css::uno::Reference< css::uno::XComponentContext > const & -- theAlienContext): -+ theAlienContext, -+ rtl::OUString const & theRdbFile): - name(theName), loader(theLoader), uri(theUri), prefix(thePrefix), -- alienContext(theAlienContext) -+ alienContext(theAlienContext), rdbFile(theRdbFile) - {} - - explicit ImplementationInfo(rtl::OUString const & theName): name(theName) {} -@@ -142,6 +143,7 @@ struct ImplementationInfo: private boost::noncopyable { - rtl::OUString const uri; - rtl::OUString const prefix; - css::uno::Reference< css::uno::XComponentContext > const alienContext; -+ rtl::OUString const rdbFile; - std::vector< rtl::OUString > services; - std::vector< rtl::OUString > singletons; - }; -@@ -149,12 +151,12 @@ struct ImplementationInfo: private boost::noncopyable { - struct Implementation: private boost::noncopyable { - Implementation( - rtl::OUString const & name, rtl::OUString const & loader, -- rtl::OUString const & uri, -- rtl::OUString const & prefix = rtl::OUString(), -- css::uno::Reference< css::uno::XComponentContext > const & -- alienContext -- = css::uno::Reference< css::uno::XComponentContext >()): -- info(new ImplementationInfo(name, loader, uri, prefix, alienContext)), -+ rtl::OUString const & uri, rtl::OUString const & prefix, -+ css::uno::Reference< css::uno::XComponentContext > const & alienContext, -+ rtl::OUString const & rdbFile): -+ info( -+ new ImplementationInfo( -+ name, loader, uri, prefix, alienContext, rdbFile)), - loaded(false) - {} - -@@ -466,7 +468,7 @@ void Parser::handleImplementation() { - implementation_.reset( - new Implementation( - attrImplementation_, attrLoader_, attrUri_, attrPrefix_, -- alienContext_)); -+ alienContext_, reader_.getUrl())); - if (!data_->namedImplementations.insert( - NamedImplementations::value_type( - attrImplementation_, implementation_)). -@@ -1502,7 +1504,9 @@ bool ServiceManager::readLegacyRdbFile(rtl::OUString const & uri) { - boost::shared_ptr< Implementation > impl( - new Implementation( - name, readLegacyRdbString(uri, implKey, "UNO/ACTIVATOR"), -- readLegacyRdbString(uri, implKey, "UNO/LOCATION"))); -+ readLegacyRdbString(uri, implKey, "UNO/LOCATION"), -+ rtl::OUString(), -+ css::uno::Reference< css::uno::XComponentContext >(), uri)); - if (!data_.namedImplementations.insert( - NamedImplementations::value_type(name, impl)). - second) -@@ -1744,7 +1748,7 @@ void ServiceManager::removeRdbFiles(std::vector< rtl::OUString > const & uris) { - j != data_.namedImplementations.end();) - { - assert(j->second.get() != 0); -- if (j->second->info->uri == *i) { -+ if (j->second->info->rdbFile == *i) { - clear.push_back(j->second); - //TODO: The below leaves data_ in an inconsistent state upon - // exceptions: --- -cgit v0.9.0.2-2-gbebe -From 6d261e7aac12a876acb6496085e5329632595d39 Mon Sep 17 00:00:00 2001 -From: Stephan Bergmann <sbergman@redhat.com> -Date: Fri, 24 Aug 2012 14:45:20 +0000 -Subject: fdo#53968 etc.: Fix more "doesn't start after upgrade" problems - -* fdo#53968 revealed that multiple soffice.bin instances can run removeTree in - parallel. Therefore, demoted failures from exceptions to SAL_WARNs. (And - keeping fingers crossed.) - -* a8cdce148c76c93c5d41820610d6e6ac175e03a7 "fdo#53655: Ignore failure to remove - directories (as happens on Windows XP)" was due to a forgotten - osl::Directory::close before calling osl::Directory::remove after all. - -* UserInstallations have been seen in the wild where no extensions were - installed per-user (any longer), but user/uno_packages/cache/registry/ - com.sun.star.comp.deployment.component.PackageRegistryBackend/*.rdb files - contained data nevertheless. To reliably clean out any old junk, - refreshBundledExtensionsDir has been extended to cleanExtensionsCache which in - tandem with an extended Desktop::SynchronizeExtensionRepositories now cleanly - re-installs all bundled, shared, and per-user extensions after a LO upgrade. - -Change-Id: Ic6b5b6c1945d76eb3a65b6cd4512a657b7a835a0 -Reviewed-on: https://gerrit.libreoffice.org/477 -Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com> -Tested-by: Norbert Thiebaud <nthiebaud@gmail.com> ---- -diff --git a/desktop/inc/app.hxx b/desktop/inc/app.hxx -index 25b6352..c830b02 100644 ---- a/desktop/inc/app.hxx -+++ b/desktop/inc/app.hxx -@@ -203,6 +203,7 @@ class Desktop : public Application - - sal_Bool m_bMinimized; - sal_Bool m_bInvisible; -+ bool m_bCleanedExtensionCache; - bool m_bServicesRegistered; - sal_uInt16 m_nAppEvents; - BootstrapError m_aBootstrapError; -diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx -index 55ebaca..5fb653b 100644 ---- a/desktop/source/app/app.cxx -+++ b/desktop/source/app/app.cxx -@@ -147,77 +147,81 @@ namespace { - - void removeTree(OUString const & url) { - osl::Directory dir(url); -- switch (dir.open()) { -+ osl::FileBase::RC rc = dir.open(); -+ switch (rc) { - case osl::FileBase::E_None: - break; - case osl::FileBase::E_NOENT: - return; //TODO: SAL_WARN if recursive - default: -- throw css::uno::RuntimeException( -- "cannot open directory " + url, -- css::uno::Reference< css::uno::XInterface >()); -+ SAL_WARN("desktop", "cannot open directory " << url << ": " << +rc); -+ return; - } - for (;;) { - osl::DirectoryItem i; -- osl::FileBase::RC rc = dir.getNextItem(i, SAL_MAX_UINT32); -+ rc = dir.getNextItem(i, SAL_MAX_UINT32); - if (rc == osl::FileBase::E_NOENT) { - break; - } - if (rc != osl::FileBase::E_None) { -- throw css::uno::RuntimeException( -- ("cannot iterate directory " + url + ": " -- + OUString::valueOf(static_cast< sal_Int32 >(rc))), -- css::uno::Reference< css::uno::XInterface >()); -+ SAL_WARN( -+ "desktop","cannot iterate directory " << url << ": " << +rc); -+ break; - } - osl::FileStatus stat( - osl_FileStatus_Mask_Type | osl_FileStatus_Mask_FileName | - osl_FileStatus_Mask_FileURL); - rc = i.getFileStatus(stat); - if (rc != osl::FileBase::E_None) { -- throw css::uno::RuntimeException( -- ("cannot stat in directory " + url + ": " -- + OUString::valueOf(static_cast< sal_Int32 >(rc))), -- css::uno::Reference< css::uno::XInterface >()); -+ SAL_WARN( -+ "desktop", "cannot stat in directory " << url << ": " << +rc); -+ continue; - } - if (stat.getFileType() == osl::FileStatus::Directory) { //TODO: symlinks - removeTree(stat.getFileURL()); - } else { - rc = osl::File::remove(stat.getFileURL()); -- if (rc != osl::FileBase::E_None) { -- throw css::uno::RuntimeException( -- ("cannot remove file " + stat.getFileURL() + ": " -- + OUString::valueOf(static_cast< sal_Int32 >(rc))), -- css::uno::Reference< css::uno::XInterface >()); -- } -+ SAL_WARN_IF( -+ rc != osl::FileBase::E_None, "desktop", -+ "cannot remove file " << stat.getFileURL() << ": " << +rc); - } - } -- osl::FileBase::RC rc = osl::Directory::remove(url); -+ if (dir.isOpen()) { -+ rc = dir.close(); -+ SAL_WARN_IF( -+ rc != osl::FileBase::E_None, "desktop", -+ "cannot close directory " << url << ": " << +rc); -+ } -+ rc = osl::Directory::remove(url); - SAL_WARN_IF( - rc != osl::FileBase::E_None, "desktop", - "cannot remove directory " << url << ": " << +rc); -- // at least on Windows XP removing some existing directories fails with -- // osl::FileBase::E_ACCESS because they are read-only; but keeping those -- // directories around should be harmless once they are empty - } - --// Remove any existing UserInstallation's user/extensions/bundled cache --// remaining from old installations. Apparently due to the old --// share/prereg/bundled mechanism (disabled since --// 5c47e5f63a79a9e72ec4a100786b1bbf65137ed4 "fdo#51252 Disable copying --// share/prereg/bundled to avoid startup crashes"), that cache could contain --// corrupted information (like a UNO component registered twice, which got --// changed from active to passive registration in one LO version, but the --// version of the corresponding bundled extension only incremented in a later LO --// version). At least in theory, this function could be removed again once no --// UserInstallation can be poisoned by that old share/prereg/bundled mechanism --// any more. (But then Desktop::SynchronizeExtensionRepositories might need to --// be revisited, see 2d2b19dea1ab401b1b4971ff5b12b87bb11fd666 "Force --// ExtensionManager resync when the implementation changes" which effectively --// got reverted again now. Now, a mismatch between a UserInstallation's --// user/extensions/bundled and an installation's share/extensions will always be --// detected here and lead to a removal of user/extensions/bundled, so that --// Desktop::SynchronizeExtensionRepositories will then definitely resync --// share/extensions.) -+// Remove any existing UserInstallation's extensions cache data remaining from -+// old installations. This addresses at least two problems: -+// -+// For one, apparently due to the old share/prereg/bundled mechanism (disabled -+// since 5c47e5f63a79a9e72ec4a100786b1bbf65137ed4 "fdo#51252 Disable copying -+// share/prereg/bundled to avoid startup crashes"), the user/extensions/bundled -+// cache could contain corrupted information (like a UNO component registered -+// twice, which got changed from active to passive registration in one LO -+// version, but the version of the corresponding bundled extension only -+// incremented in a later LO version). -+// -+// For another, UserInstallations have been seen in the wild where no extensions -+// were installed per-user (any longer), but user/uno_packages/cache/registry/ -+// com.sun.star.comp.deployment.component.PackageRegistryBackend/*.rdb files -+// contained data nevertheless. -+// -+// When a LO upgrade is detected (i.e., no/ user/extensions/bundled/buildid or -+// one containing an old build ID), then user/extensions/bundled, -+// user/extensions/shared, and user/uno_packages/cache/registry/ -+// com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc are -+// removed. That should prevent any problems starting the service manager due -+// to old junk. Later on in Desktop::SynchronizeExtensionRepositories, the -+// removed cache data is recreated. -+// - // As a special case, if you create a UserInstallation with LO >= 3.6.1, then - // run an old LO <= 3.5.x using share/prereg/bundled on the same - // UserInstallation (so that it partially overwrites user/extensions/bundled, -@@ -230,33 +234,50 @@ void removeTree(OUString const & url) { - // <= 3.5.x messed with user/extensions/bundled in the meantime, then it would - // have rewritten the unorc (dropping the token), and LO >= 3.6.1 can detect - // that. --void refreshBundledExtensionsDir() { -+// -+// Multiple instances of soffice.bin can execute this code in parallel for a -+// single UserInstallation, as it is called before OfficeIPCThread is set up. -+// Therefore, any errors here only lead to SAL_WARNs. -+// -+// At least in theory, this function could be removed again once no -+// UserInstallation can be poisoned by old junk any more. -+bool cleanExtensionCache() { - OUString buildId( - "${$BRAND_BASE_DIR/program/" SAL_CONFIGFILE("version") ":buildid}"); - rtl::Bootstrap::expandMacros(buildId); //TODO: detect failure -- OUString dir("$BUNDLED_EXTENSIONS_USER"); -- rtl::Bootstrap::expandMacros(dir); //TODO: detect failure -- OUString url(dir + "/buildid"); -- OUString nonPrereg( -- "${$BUNDLED_EXTENSIONS_USER/registry/" -- "com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc:" -- "LIBO_NON_PREREG_BUNDLED_EXTENSIONS}"); -- rtl::Bootstrap::expandMacros(nonPrereg); -- if (nonPrereg == "TRUE") { -- osl::File f(url); -- switch (f.open(osl_File_OpenFlag_Read)) { -+ OUString extDir( -+ "${$BRAND_BASE_DIR/program/" SAL_CONFIGFILE("bootstrap") -+ ":UserInstallation}/user/extensions"); -+ rtl::Bootstrap::expandMacros(extDir); //TODO: detect failure -+ OUString bundledDir = extDir + "/bundled"; -+ OUString buildIdFile(bundledDir + "/buildid"); -+ OUString bundledRcFile( -+ "$BUNDLED_EXTENSIONS_USER/registry/" -+ "com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc"); -+ rtl::Bootstrap::expandMacros(bundledRcFile); //TODO: detect failure -+ rtl::Bootstrap bundledRc(bundledRcFile); -+ OUString nonPrereg; -+ if (bundledRc.getHandle() == 0 -+ || (bundledRc.getFrom("LIBO_NON_PREREG_BUNDLED_EXTENSIONS", nonPrereg) -+ && nonPrereg == "TRUE")) -+ { -+ osl::File f(buildIdFile); -+ osl::FileBase::RC rc = f.open(osl_File_OpenFlag_Read); -+ switch (rc) { - case osl::FileBase::E_None: - { - rtl::ByteSequence s1; -- osl::FileBase::RC rc = f.readLine(s1); -- if (f.close() != osl::FileBase::E_None) { -- SAL_WARN( -- "desktop", "cannot close " + url + " after reading"); -- } -+ rc = f.readLine(s1); -+ osl::FileBase::RC rc2 = f.close(); -+ SAL_WARN_IF( -+ rc2 != osl::FileBase::E_None, "desktop", -+ "cannot close " << buildIdFile << " after reading: " -+ << +rc2); - if (rc != osl::FileBase::E_None) { -- throw css::uno::RuntimeException( -- "cannot read from " + url, -- css::uno::Reference< css::uno::XInterface >()); -+ SAL_WARN( -+ "desktop", -+ "cannot read from " << buildIdFile << ": " << +rc); -+ break; - } - OUString s2( - reinterpret_cast< char const * >(s1.getConstArray()), -@@ -264,53 +285,56 @@ void refreshBundledExtensionsDir() { - // using ISO 8859-1 avoids any and all conversion errors; - // the content should only be a subset of ASCII, anyway - if (s2 == buildId) { -- return; -+ return false; - } - break; - } - case osl::FileBase::E_NOENT: - break; - default: -- throw css::uno::RuntimeException( -- "cannot open " + url + " for reading", -- css::uno::Reference< css::uno::XInterface >()); -+ SAL_WARN( -+ "desktop", -+ "cannot open " << buildIdFile << " for reading: " << +rc); -+ break; - } - } -- removeTree(dir); -- switch (osl::Directory::createPath(dir)) { -- case osl::FileBase::E_None: -- case osl::FileBase::E_EXIST: -- break; -- default: -- throw css::uno::RuntimeException( -- "cannot create path " + dir, -- css::uno::Reference< css::uno::XInterface >()); -- } -- osl::File f(url); -- if (f.open(osl_File_OpenFlag_Write | osl_File_OpenFlag_Create) != -- osl::FileBase::E_None) -- { -- throw css::uno::RuntimeException( -- "cannot open " + url + " for writing", -- css::uno::Reference< css::uno::XInterface >()); -+ removeTree(extDir); -+ OUString userRcFile( -+ "$UNO_USER_PACKAGES_CACHE/registry/" -+ "com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc"); -+ rtl::Bootstrap::expandMacros(userRcFile); //TODO: detect failure -+ osl::FileBase::RC rc = osl::File::remove(userRcFile); -+ SAL_WARN_IF( -+ rc != osl::FileBase::E_None && rc != osl::FileBase::E_NOENT, "desktop", -+ "cannot remove file " << userRcFile << ": " << +rc); -+ rc = osl::Directory::createPath(bundledDir); -+ SAL_WARN_IF( -+ rc != osl::FileBase::E_None && rc != osl::FileBase::E_EXIST, "desktop", -+ "cannot create path " << bundledDir << ": " << +rc); -+ osl::File f(buildIdFile); -+ rc = f.open(osl_File_OpenFlag_Write | osl_File_OpenFlag_Create); -+ if (rc != osl::FileBase::E_None) { -+ SAL_WARN( -+ "desktop", -+ "cannot open " << buildIdFile << " for writing: " << +rc); -+ return true; - } - rtl::OString buf(OUStringToOString(buildId, RTL_TEXTENCODING_UTF8)); - // using UTF-8 avoids almost all conversion errors (and buildid - // containing single surrogate halves should never happen, anyway); the - // content should only be a subset of ASCII, anyway -- sal_uInt64 n; -- if (f.write(buf.getStr(), buf.getLength(), n) != osl::FileBase::E_None -- || n != static_cast< sal_uInt32 >(buf.getLength())) -- { -- throw css::uno::RuntimeException( -- "cannot write to " + url, -- css::uno::Reference< css::uno::XInterface >()); -- } -- if (f.close() != osl::FileBase::E_None) { -- throw css::uno::RuntimeException( -- "cannot close " + url + " after writing", -- css::uno::Reference< css::uno::XInterface >()); -- } -+ sal_uInt64 n = 0; -+ rc = f.write(buf.getStr(), buf.getLength(), n); -+ SAL_WARN_IF( -+ (rc != osl::FileBase::E_None -+ || n != static_cast< sal_uInt32 >(buf.getLength())), -+ "desktop", -+ "cannot write to " << buildIdFile << ": " << +rc << ", " << n); -+ rc = f.close(); -+ SAL_WARN_IF( -+ rc != osl::FileBase::E_None, "desktop", -+ "cannot close " << buildIdFile << " after writing: " << +rc); -+ return true; - } - - } -@@ -538,7 +562,8 @@ rtl::OUString ReplaceStringHookProc( const rtl::OUString& rStr ) - } - - Desktop::Desktop() --: m_bServicesRegistered( false ) -+: m_bCleanedExtensionCache( false ) -+, m_bServicesRegistered( false ) - , m_aBootstrapError( BE_OK ) - { - RTL_LOGFILE_TRACE( "desktop (cd100003) ::Desktop::Desktop" ); -@@ -553,7 +578,7 @@ void Desktop::Init() - RTL_LOGFILE_CONTEXT( aLog, "desktop (cd100003) ::Desktop::Init" ); - SetBootstrapStatus(BS_OK); - -- refreshBundledExtensionsDir(); -+ m_bCleanedExtensionCache = cleanExtensionCache(); - - // We need to have service factory before going further, but see fdo#37195. - // Doing this will mmap common.rdb, making it not overwritable on windows, -diff --git a/desktop/source/app/check_ext_deps.cxx b/desktop/source/app/check_ext_deps.cxx -index dd01d9b..a6221a9 100644 ---- a/desktop/source/app/check_ext_deps.cxx -+++ b/desktop/source/app/check_ext_deps.cxx -@@ -51,6 +51,7 @@ - #include "com/sun/star/deployment/ExtensionManager.hpp" - #include "com/sun/star/deployment/LicenseException.hpp" - #include "com/sun/star/deployment/ui/LicenseDialog.hpp" -+#include <com/sun/star/task/OfficeRestartManager.hpp> - #include <com/sun/star/task/XJob.hpp> - #include <com/sun/star/task/XJobExecutor.hpp> - #include <com/sun/star/task/XInteractionApprove.hpp> -@@ -77,12 +78,15 @@ class SilentCommandEnv - task::XInteractionHandler, - ucb::XProgressHandler > - { -+ uno::Reference<uno::XComponentContext> mxContext; - Desktop *mpDesktop; - sal_Int32 mnLevel; - sal_Int32 mnProgress; - - public: -- SilentCommandEnv( Desktop* pDesktop ); -+ SilentCommandEnv( -+ uno::Reference<uno::XComponentContext> const & xContext, -+ Desktop* pDesktop ); - virtual ~SilentCommandEnv(); - - // XCommandEnvironment -@@ -105,12 +109,14 @@ public: - }; - - //----------------------------------------------------------------------------- --SilentCommandEnv::SilentCommandEnv( Desktop* pDesktop ) --{ -- mpDesktop = pDesktop; -- mnLevel = 0; -- mnProgress = 25; --} -+SilentCommandEnv::SilentCommandEnv( -+ uno::Reference<uno::XComponentContext> const & xContext, -+ Desktop* pDesktop ): -+ mxContext( xContext ), -+ mpDesktop( pDesktop ), -+ mnLevel( 0 ), -+ mnProgress( 25 ) -+{} - - //----------------------------------------------------------------------------- - SilentCommandEnv::~SilentCommandEnv() -@@ -144,10 +150,9 @@ void SilentCommandEnv::handle( Reference< task::XInteractionRequest> const & xRe - - if ( request >>= licExc ) - { -- uno::Reference< uno::XComponentContext > xContext = comphelper_getProcessComponentContext(); - uno::Reference< ui::dialogs::XExecutableDialog > xDialog( - deployment::ui::LicenseDialog::create( -- xContext, VCLUnoHelper::GetInterface( NULL ), -+ mxContext, VCLUnoHelper::GetInterface( NULL ), - licExc.ExtensionName, licExc.Text ) ); - sal_Int16 res = xDialog->execute(); - if ( res == ui::dialogs::ExecutableDialogResults::CANCEL ) -@@ -416,7 +421,20 @@ sal_Bool Desktop::CheckExtensionDependencies() - void Desktop::SynchronizeExtensionRepositories() - { - RTL_LOGFILE_CONTEXT(aLog,"desktop (jl) ::Desktop::SynchronizeExtensionRepositories"); -- dp_misc::syncRepositories( new SilentCommandEnv( this ) ); -+ uno::Reference< uno::XComponentContext > context( -+ comphelper_getProcessComponentContext()); -+ uno::Reference< ucb::XCommandEnvironment > silent( -+ new SilentCommandEnv(context, this)); -+ if (m_bCleanedExtensionCache) { -+ deployment::ExtensionManager::get(context)->reinstallDeployedExtensions( -+ true, "user", Reference<task::XAbortChannel>(), silent); -+ task::OfficeRestartManager::get(context)->requestRestart( -+ silent->getInteractionHandler()); -+ } else { -+ // reinstallDeployedExtensions above already calls syncRepositories -+ // internally: -+ dp_misc::syncRepositories(m_bCleanedExtensionCache, silent); -+ } - } - - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -diff --git a/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx b/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx -index 29ded17..7795e309 100644 ---- a/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx -+++ b/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx -@@ -1124,7 +1124,7 @@ void ExtensionCmdQueue::acceptLicense( const uno::Reference< deployment::XPackag - - void ExtensionCmdQueue::syncRepositories( const uno::Reference< uno::XComponentContext > &xContext ) - { -- dp_misc::syncRepositories( new ProgressCmdEnv( xContext, NULL, OUSTR("Extension Manager") ) ); -+ dp_misc::syncRepositories( false, new ProgressCmdEnv( xContext, NULL, OUSTR("Extension Manager") ) ); - } - - void ExtensionCmdQueue::stop() -diff --git a/desktop/source/deployment/inc/dp_misc.h b/desktop/source/deployment/inc/dp_misc.h -index 29fd140..06e67aa 100644 ---- a/desktop/source/deployment/inc/dp_misc.h -+++ b/desktop/source/deployment/inc/dp_misc.h -@@ -154,8 +154,10 @@ void TRACE(::rtl::OUString const & sText); - recently added or removed. - */ - DESKTOP_DEPLOYMENTMISC_DLLPUBLIC --void syncRepositories(::com::sun::star::uno::Reference< -- ::com::sun::star::ucb::XCommandEnvironment> const & xCmdEnv); -+void syncRepositories( -+ bool force, -+ ::com::sun::star::uno::Reference< -+ ::com::sun::star::ucb::XCommandEnvironment> const & xCmdEnv); - - } - -diff --git a/desktop/source/deployment/manager/dp_extensionmanager.cxx b/desktop/source/deployment/manager/dp_extensionmanager.cxx -index 68403f1..b3c21b4 100644 ---- a/desktop/source/deployment/manager/dp_extensionmanager.cxx -+++ b/desktop/source/deployment/manager/dp_extensionmanager.cxx -@@ -1205,9 +1205,10 @@ uno::Sequence< uno::Sequence<Reference<deploy::XPackage> > > - } - } - --//only to be called from unopkg!!! -+// Only to be called from unopkg or soffice bootstrap (with force=true in the -+// latter case): - void ExtensionManager::reinstallDeployedExtensions( -- OUString const & repository, -+ sal_Bool force, OUString const & repository, - Reference<task::XAbortChannel> const & xAbortChannel, - Reference<ucb::XCommandEnvironment> const & xCmdEnv ) - throw (deploy::DeploymentException, -@@ -1220,10 +1221,11 @@ void ExtensionManager::reinstallDeployedExtensions( - xPackageManager = getPackageManager(repository); - - ::osl::MutexGuard guard(getMutex()); -- xPackageManager->reinstallDeployedPackages(xAbortChannel, xCmdEnv); -+ xPackageManager->reinstallDeployedPackages( -+ force, xAbortChannel, xCmdEnv); - //We must sync here, otherwise we will get exceptions when extensions - //are removed. -- dp_misc::syncRepositories(xCmdEnv); -+ dp_misc::syncRepositories(force, xCmdEnv); - const uno::Sequence< Reference<deploy::XPackage> > extensions( - xPackageManager->getDeployedPackages(xAbortChannel, xCmdEnv)); - -diff --git a/desktop/source/deployment/manager/dp_extensionmanager.hxx b/desktop/source/deployment/manager/dp_extensionmanager.hxx -index 22e2d41..ec1edbc 100644 ---- a/desktop/source/deployment/manager/dp_extensionmanager.hxx -+++ b/desktop/source/deployment/manager/dp_extensionmanager.hxx -@@ -182,7 +182,7 @@ public: - css::uno::RuntimeException); - - virtual void SAL_CALL reinstallDeployedExtensions( -- ::rtl::OUString const & repository, -+ sal_Bool force, ::rtl::OUString const & repository, - css::uno::Reference< css::task::XAbortChannel> const & xAbortChannel, - css::uno::Reference< css::ucb::XCommandEnvironment> const & xCmdEnv ) - throw ( -diff --git a/desktop/source/deployment/manager/dp_manager.cxx b/desktop/source/deployment/manager/dp_manager.cxx -index 8a08320c..8e3d109 100644 ---- a/desktop/source/deployment/manager/dp_manager.cxx -+++ b/desktop/source/deployment/manager/dp_manager.cxx -@@ -1164,14 +1164,14 @@ PackageManagerImpl::getDeployedPackages( - //ToDo: the function must not call registerPackage, do this in - //XExtensionManager.reinstallDeployedExtensions - void PackageManagerImpl::reinstallDeployedPackages( -- Reference<task::XAbortChannel> const & /*xAbortChannel*/, -+ sal_Bool force, Reference<task::XAbortChannel> const & /*xAbortChannel*/, - Reference<XCommandEnvironment> const & xCmdEnv_ ) - throw (deployment::DeploymentException, - CommandFailedException, CommandAbortedException, - lang::IllegalArgumentException, RuntimeException) - { - check(); -- if (office_is_running()) -+ if (!force && office_is_running()) - throw RuntimeException( - OUSTR("You must close any running Office process before " - "reinstalling packages!"), static_cast<OWeakObject *>(this) ); -diff --git a/desktop/source/deployment/manager/dp_manager.h b/desktop/source/deployment/manager/dp_manager.h -index 3b335d7..3c7f8d9 100644 ---- a/desktop/source/deployment/manager/dp_manager.h -+++ b/desktop/source/deployment/manager/dp_manager.h -@@ -236,6 +236,7 @@ public: - css::uno::RuntimeException); - - virtual void SAL_CALL reinstallDeployedPackages( -+ sal_Bool force, - css::uno::Reference<css::task::XAbortChannel> const & xAbortChannel, - css::uno::Reference<css::ucb::XCommandEnvironment> const & xCmdEnv ) - throw (css::deployment::DeploymentException, -diff --git a/desktop/source/deployment/misc/dp_misc.cxx b/desktop/source/deployment/misc/dp_misc.cxx -index b225db6..9ed579f 100644 ---- a/desktop/source/deployment/misc/dp_misc.cxx -+++ b/desktop/source/deployment/misc/dp_misc.cxx -@@ -591,7 +591,7 @@ void TRACE(::rtl::OString const & sText) - } - - void syncRepositories( -- Reference<ucb::XCommandEnvironment> const & xCmdEnv) -+ bool force, Reference<ucb::XCommandEnvironment> const & xCmdEnv) - { - OUString sDisable; - ::rtl::Bootstrap::get( OUSTR( "DISABLE_EXTENSION_SYNCHRONIZATION" ), sDisable, OUString() ); -@@ -602,7 +602,8 @@ void syncRepositories( - //synchronize shared before bundled otherewise there are - //more revoke and registration calls. - sal_Bool bModified = false; -- if (needToSyncRepostitory(OUString(RTL_CONSTASCII_USTRINGPARAM("shared"))) -+ if (force -+ || needToSyncRepostitory(OUString(RTL_CONSTASCII_USTRINGPARAM("shared"))) - || needToSyncRepostitory(OUString(RTL_CONSTASCII_USTRINGPARAM("bundled")))) - { - xExtensionManager = -diff --git a/desktop/source/pkgchk/unopkg/unopkg_app.cxx b/desktop/source/pkgchk/unopkg/unopkg_app.cxx -index 43faed5..ef16ea1 100644 ---- a/desktop/source/pkgchk/unopkg/unopkg_app.cxx -+++ b/desktop/source/pkgchk/unopkg/unopkg_app.cxx -@@ -392,7 +392,7 @@ extern "C" DESKTOP_DLLPUBLIC int unopkg_main() - //synching is done in XExtensionManager.reinstall - if (!subcmd_gui && ! subCommand.equals(OUSTR("reinstall")) - && ! dp_misc::office_is_running()) -- dp_misc::syncRepositories(xCmdEnv); -+ dp_misc::syncRepositories(false, xCmdEnv); - - if ( subcmd_add || subCommand == "remove" ) - { -@@ -436,7 +436,7 @@ extern "C" DESKTOP_DLLPUBLIC int unopkg_main() - RTL_CONSTASCII_STRINGPARAM("reinstall") )) - { - xExtensionManager->reinstallDeployedExtensions( -- repository, Reference<task::XAbortChannel>(), xCmdEnv); -+ false, repository, Reference<task::XAbortChannel>(), xCmdEnv); - } - else if ( subCommand == "list" ) - { -diff --git a/offapi/com/sun/star/deployment/XExtensionManager.idl b/offapi/com/sun/star/deployment/XExtensionManager.idl -index b68ab20..2912e45 100644 ---- a/offapi/com/sun/star/deployment/XExtensionManager.idl -+++ b/offapi/com/sun/star/deployment/XExtensionManager.idl -@@ -260,6 +260,9 @@ interface XExtensionManager - <p> - Please use this in case of suspected cache inconsistencies only. - </p> -+ @param force -+ set to true when called during soffice bootstrap after cleaning -+ old extension cache - @param repositroy - the name of the repository - @param xAbortChannel -@@ -268,6 +271,7 @@ interface XExtensionManager - command environment for error and progress handling - */ - void reinstallDeployedExtensions( -+ [in] boolean force, - [in] string repository, - [in] com::sun::star::task::XAbortChannel xAbortChannel, - [in] com::sun::star::ucb::XCommandEnvironment xCmdEnv ) -diff --git a/offapi/com/sun/star/deployment/XPackageManager.idl b/offapi/com/sun/star/deployment/XPackageManager.idl -index 12e7e0e..39ff04a 100644 ---- a/offapi/com/sun/star/deployment/XPackageManager.idl -+++ b/offapi/com/sun/star/deployment/XPackageManager.idl -@@ -225,12 +225,16 @@ interface XPackageManager - Please use this in case of suspected cache inconsistencies only. - </p> - -+ @param force -+ set to true when called during soffice bootstrap after cleaning -+ old extension cache - @param xAbortChannel - abort channel to asynchronously abort the adding process - @param xCmdEnv - command environment for error and progress handling - */ - void reinstallDeployedPackages( -+ [in] boolean force, - [in] com::sun::star::task::XAbortChannel xAbortChannel, - [in] com::sun::star::ucb::XCommandEnvironment xCmdEnv ) - raises (DeploymentException, --- -cgit v0.9.0.2-2-gbebe |