828c1999e0
writerfilter wants to convert incoming RTF and OOXML files into writer's document model. But it currently has to do so by manipulating the limited subset that we expose through the UNO API. This is both slower and less accurate than having access to the full document model. So move it inside, and then we can strip out various hacks, and optimise imports. Change-Id: Ie1114d28130ef5f9a786531bc552cb8ee7768015 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165953 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
143 lines
4.7 KiB
Bash
Executable file
143 lines
4.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# This file is part of the LibreOffice project.
|
|
#
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
#
|
|
|
|
GDBDIR="${SRCDIR}/solenv/gdb"
|
|
INSTALLDIR="${TESTINSTALLDIR}"
|
|
DYLIB=so
|
|
if [ "$(uname)" = Darwin ]; then
|
|
INSTALLDIR=$INSTALLDIR/LibreOffice.app/Contents
|
|
DYLIB=dylib
|
|
fi
|
|
|
|
die() {
|
|
echo "$1" >&2
|
|
exit 1
|
|
}
|
|
|
|
usage() {
|
|
cat <<EOT
|
|
Install gdb pretty printers and autoloaders for them.
|
|
|
|
Usage:
|
|
install-gdb-printers [ -a dir ] [ -i dir ] [ -p dir ] [ -c ]
|
|
install-gdb-printers -h
|
|
|
|
Options:
|
|
-a dir The dir where autoloaders will be placed. Defaults to whatever -i
|
|
is.
|
|
-c Create the autoloader's dir if it does not exist. This option only
|
|
makes sense if both -a and -i are used.
|
|
-h Show this help text.
|
|
-i dir The dir where libreoffice is installed. Defaults to whatever -a is.
|
|
-p dir The dir where pretty printers are placed.
|
|
|
|
Env. variables:
|
|
DESTDIR If set, it is prepended to all dir arguments.
|
|
|
|
Examples:
|
|
1) Install pretty printers into /usr/share/libreoffice/gdb, with
|
|
autoloaders in /usr/share/gdb/auto-load (run
|
|
"info gdb 'Extending GDB' Python Auto-loading" to learn more) and
|
|
installation in /usr/lib64/libreoffice (this is what Fedora does):
|
|
|
|
install-gdb-printers -a /usr/share/gdb/auto-load/usr/lib64/libreoffice -c \\
|
|
-i /usr/lib64/libreoffice -p /usr/share/libreoffice/gdb
|
|
EOT
|
|
}
|
|
|
|
make_autoload() {
|
|
local lib="${DESTDIR}${autoloaddir}/$2/$3"
|
|
local merged="$4"
|
|
|
|
local resolved;
|
|
resolved=$(readlink "${DESTDIR}${installdir}/$2/$3")
|
|
[ -n "$resolved" ] && lib=$resolved
|
|
local dir="${lib%/*}"
|
|
|
|
if ${create}; then
|
|
mkdir -p "${dir}" || die "cannot create dir '${dir}'"
|
|
fi
|
|
|
|
[[ -f ${lib}-gdb.py ]] && rm -f "${lib}-gdb.py"
|
|
if [[ -n "${merged}" ]]; then
|
|
sed -e "s!%PYTHONDIR%!${pythondir}!" -e "s!%MODULES%!${*:5}!" \
|
|
"${GDBDIR}/autoload.template" > "${lib}-gdb.py"
|
|
else
|
|
sed -e "s!%PYTHONDIR%!${pythondir}!" -e "s!%MODULES%!$1!" \
|
|
"${GDBDIR}/autoload.template" > "${lib}-gdb.py"
|
|
fi
|
|
}
|
|
|
|
# dir where the autoloaders will be placed
|
|
autoloaddir=
|
|
# The installation dir. If only one of these is set, the other is set to
|
|
# the same value.
|
|
installdir=
|
|
# dir where the pretty printers will be placed
|
|
pythondir="${GDBDIR}"
|
|
# Create autoload dir if it does not exist. This only makes sense when
|
|
# installing into system gdb dir, so $autoloaddir must be absolute path.
|
|
create=false
|
|
|
|
# b de g jklmno qrstuvwxyzABCDEFGHIJK MNOPQRSTUVWXYZ0123456789
|
|
while getopts :a:cfhi:p:L opt; do
|
|
case ${opt} in
|
|
a) autoloaddir="${OPTARG}" ;;
|
|
c) create=true ;;
|
|
h) usage; exit ;;
|
|
i) installdir="${OPTARG}" ;;
|
|
p) pythondir="${OPTARG}" ;;
|
|
*) die "unknown option ${OPTARG}" ;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z ${autoloaddir} && -z ${installdir} ]]; then
|
|
autoloaddir="${INSTALLDIR}"
|
|
installdir="${INSTALLDIR}"
|
|
elif [[ -n ${autoloaddir} && -z ${installdir} ]]; then
|
|
installdir="${autoloaddir}"
|
|
elif [[ -z ${autoloaddir} && -n ${installdir} ]]; then
|
|
autoloaddir="${installdir}"
|
|
fi
|
|
|
|
if [[ -n ${DESTDIR} ]]; then
|
|
[[ ${autoloaddir:0:1} = / ]] || die 'the arg to -a must be an absolute path'
|
|
[[ ${pythondir:0:1} = / ]] || die 'the arg to -p must be an absolute path'
|
|
fi
|
|
if ${create}; then
|
|
[[ ${autoloaddir:0:1} = / ]] || die 'the arg to -a must be an absolute path'
|
|
else
|
|
[[ ! -d ${DESTDIR}${autoloaddir} ]] && die "directory '${DESTDIR}${autoloaddir}' does not exist"
|
|
fi
|
|
[[ ! -d ${DESTDIR}${installdir} ]] && die "directory '${DESTDIR}${installdir}' does not exist"
|
|
[[ ! -d ${GDBDIR} ]] && die "directory '${GDBDIR}' does not exist"
|
|
|
|
if [[ ${DESTDIR}${pythondir} != ${GDBDIR} ]]; then
|
|
mkdir -p "${DESTDIR}${pythondir}" || die "cannot create dir '${DESTDIR}${pythondir}'"
|
|
cp -pr "${GDBDIR}/libreoffice" "${DESTDIR}${pythondir}"
|
|
fi
|
|
|
|
if [[ -n "${MERGELIBS}" ]]; then
|
|
make_autoload merged program libmergedlo."$DYLIB" merge svl tl basegfx vcl utl
|
|
make_autoload cppu program libuno_cppu."$DYLIB".3
|
|
make_autoload sal program libuno_sal."$DYLIB".3
|
|
make_autoload sw program libswlo."$DYLIB"
|
|
else
|
|
make_autoload basegfx program libbasegfxlo."$DYLIB"
|
|
make_autoload cppu program libuno_cppu."$DYLIB".3
|
|
make_autoload sal program libuno_sal."$DYLIB".3
|
|
make_autoload svl program libsvllo."$DYLIB"
|
|
make_autoload sw program libswlo."$DYLIB"
|
|
make_autoload tl program libtllo."$DYLIB"
|
|
make_autoload utl program libutllo."$DYLIB"
|
|
make_autoload vcl program libvcllo."$DYLIB"
|
|
fi
|
|
make_autoload sw_writerfilter program libsw_writerfilterlo."$DYLIB"
|
|
|
|
# vim:set shiftwidth=4 softtabstop=4 expandtab:
|