diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:09:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:09:20 +0000 |
commit | 029f72b1a93430b24b88eb3a72c6114d9f149737 (patch) | |
tree | 765d5c2041967f9c6fef195fe343d9234a030e90 /ci/unlisted.make | |
parent | Initial commit. (diff) | |
download | vim-029f72b1a93430b24b88eb3a72c6114d9f149737.tar.xz vim-029f72b1a93430b24b88eb3a72c6114d9f149737.zip |
Adding upstream version 2:9.1.0016.upstream/2%9.1.0016
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ci/unlisted.make')
-rw-r--r-- | ci/unlisted.make | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/ci/unlisted.make b/ci/unlisted.make new file mode 100644 index 0000000..04dfcb5 --- /dev/null +++ b/ci/unlisted.make @@ -0,0 +1,49 @@ +# vim: ft=make +SHELL = /bin/bash + +# List all files that are tracked in git but not listed in Filelist. +# Exit code is 2 ("Make encountered an error") if any such files exist. + +# Filelist is a Makefile that defines many variables, so we use Make itself to +# query which variables it defines, then expand them all by wrapping each name +# in $(...), importing Filelist and using $(eval). + +include Filelist +$(eval all_patterns := $(shell \ + make -f Filelist --question --print-data-base --no-builtin-rules \ + --no-builtin-variables 2>/dev/null \ + | sed -nre \ + '/^# makefile .from \x27Filelist\x27,/ { \ + n; \ + s/ = .*//; \ + T; \ + s/.*/$$(\0)/; \ + p; \ + }')) + +# In Makefile's `prepeare` target, all the IN_README_DIR files are moved from +# READMEdir to the root, so add those files in their Git-tracked location: +all_patterns := $(all_patterns) \ + $(foreach readme, $(IN_README_DIR), READMEdir/$(readme)) + +# The result 'all_patterns' is a list of patterns (globs), which we expand with +# wildcard to get actual filenames. Note this means Filelist can list a file +# that does not exist, and it will be omitted at this step. +listed_files := $(wildcard $(all_patterns)) + +# Default target to actually run the comparison: +.PHONY: check +check: + @# There are too many files to list on the command line, so we write + @# that to a temporary file, one per line. + $(file > Filelist-listed-files) + $(foreach filename, $(listed_files),\ + $(file >> Filelist-listed-files,$(filename))) + @# Compare the sorted lists. Delete that temporary file on both + @# success and failure, but exit with diff's exit code. + diff -u0 --label files-in-git <(git ls-files | sort) \ + --label Filelist <(sort --unique Filelist-listed-files); \ + RV=$$?; \ + rm Filelist-listed-files; \ + (($$RV != 0)) && echo "Add files to the right variable in Filelist."; \ + exit $$RV |