office-gobmx/bin/update_pch.sh
Luboš Luňák 9cd3132284 make update_pch.sh abort on an error
The script depends also on generated sources in workdir, which
it may fail to find if they haven't been built before running
the script. Prefer to fail on errors rather than ignoring them.

Note that when using builddir != srcdir, the script requires
$WORKDIR to be set (done e.g. by the recommended
'make cmd cmd="./bin/update_pch.sh [..]"').

Change-Id: I93429c133bd0876730a850d944707880848201f0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113798
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2021-04-08 17:21:55 +02:00

70 lines
1.9 KiB
Bash
Executable file

#! /bin/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/.
#
# Usage: update_pch.sh [<module>/inc/pch/precompiled_xxx.hxx]
# Usage: update_pch.sh [<module>]
# Invoke: make cmd cmd="./bin/update_pch.sh [..]"
if test -n "$SRC_DIR"; then
root="$SRC_DIR"
else
root=`dirname $0`
root=`cd $root/.. >/dev/null && pwd`
fi
root=`readlink -f $root`
cd $root
if test -z "$1"; then
headers=`ls ./*/inc/pch/precompiled_*.hxx`
else
headers="$@"
fi
# Split the headers into an array.
IFS=' ' read -a aheaders <<< $headers
hlen=${#aheaders[@]};
if [ $hlen -gt 1 ]; then
if [ -z "$PARALLELISM" ]; then
PARALLELISM=0 # Let xargs decide
fi
echo $headers | xargs -n 1 -P $PARALLELISM $0
exit $?
fi
for x in $headers; do
if [ -d "$x" ]; then
# We got a directory, find pch files to update.
headers=`find $root/$x/ -type f -iname "precompiled_*.hxx"`
if test -n "$headers"; then
$0 "$headers"
fi
else
header=$x
update_msg=`echo $header | sed -e s%$root/%%`
module=`readlink -f $header | sed -e s%$root/%% -e s%/.*%%`
if [ "$module" = "pch" ]; then
continue # PCH's in pch/inc/pch/ are handled manually
fi
echo updating $update_msg
if [ "$module" = "external" ]; then
module=external/`readlink -f $header | sed -e s%$root/external/%% -e s%/.*%%`
fi
libname=`echo $header | sed -e s/.*precompiled_// -e s/\.hxx//`
./bin/update_pch "$module" "$libname"
exitcode=$?
if test $exitcode -ne 0 -a $exitcode -ne 2; then
echo Failed.
exit 1
fi
fi
done
#echo Done.
exit 0