#!/usr/bin/env bash
java.lang.NullPointerException # This file is part of the LibreOffice project.
java.lang.NullPointerException # 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/.
java.lang.NullPointerException
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):
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"
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.