build-sys: fix update-potfiles script
Now are using "git ls-files" to avoid finding non-project files or autoheaders which could break the dist tarball. For non-git source dirs we assume that any existing POTFILES.in is up-todate (build from tarball) or we provide at least an empty list to not be a show-stopper for builds from poor "git archive". Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
This commit is contained in:
parent
f339d2a5c2
commit
0a8e0e8b2f
|
@ -3,16 +3,38 @@
|
|||
# Copyright (C) 2009 Karel Zak <kzak@redhat.com>
|
||||
#
|
||||
|
||||
# find all *.c files,
|
||||
# find all git-tracked and existing *.c and *.h files
|
||||
# exclude some (sub)directories
|
||||
# sort the list
|
||||
# exclude /samples/ subdirectories
|
||||
# exclude ./tests/ from the list
|
||||
# and remove "./" prefix
|
||||
|
||||
[ ! -f "po/Makevars" ] && \
|
||||
echo "You must run this script in the top-level directory"
|
||||
if [ ! -f "po/Makevars" ]; then
|
||||
echo "error: update-potfiles must run in the top-level directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
find -name "*.c" -or -name "*.h" | \
|
||||
sort | \
|
||||
sed '/samples/d; /config\.h/d; /util-linux-.*/d; /\.\/tests/d; s/^\.\///' \
|
||||
> po/POTFILES.in
|
||||
# find all git-tracked files
|
||||
source_files=$(git ls-files . 2>/dev/null)
|
||||
if [ $? -ne 0 ] || [ -z "$source_files" ]; then
|
||||
echo "$0: warning: update-potfiles requires git" >&2
|
||||
# we still go through the rest of this script to provide at least an empty
|
||||
# list or remove non-existing (deleted) files
|
||||
source_files=$(cat po/POTFILES.in 2>/dev/null)
|
||||
fi
|
||||
|
||||
# apply include/exclude patterns
|
||||
source_files=$(
|
||||
echo "$source_files" \
|
||||
| sed \
|
||||
-e '/\(\.h\|\.c\)$/!d' \
|
||||
-e '/^tests\//d' \
|
||||
-e '/\/samples\//d' \
|
||||
)
|
||||
|
||||
# throw away non-existing files (dirty git repo)
|
||||
echo "$source_files" \
|
||||
| xargs -r find 2>/dev/null \
|
||||
| sort \
|
||||
> po/POTFILES.in
|
||||
|
||||
# if this script is broken then we have probably an empty list
|
||||
[ -s po/POTFILES.in ] || echo "$0: warning: po/POTFILES.in is empty" >&2
|
||||
|
|
Loading…
Reference in New Issue