From 783118944874d559e30eea1600352e3feb5263a7 Mon Sep 17 00:00:00 2001 From: Andreas Wacknitz <A.Wacknitz@gmx.de> Date: Sun, 31 Mar 2024 09:35:05 +0200 Subject: [PATCH] libcares: update to 1.28.0 --- tools/license-detector | 87 +++++++++++++++++++++++++------------------ 1 files changed, 50 insertions(+), 37 deletions(-) diff --git a/tools/license-detector b/tools/license-detector index 021c8da..f70a8cd 100755 --- a/tools/license-detector +++ b/tools/license-detector @@ -19,17 +19,19 @@ function usage { [[ -n "$1" ]] && printf "ERROR: %s\n\n" "$1" >&2 - printf "Usage: license-detector [-d] LICENSE_FILE\n" >&2 + printf "Usage: license-detector [-d] [-l LICENSE] LICENSE_FILE\n" >&2 [[ -n "$1" ]] && exit 1 exit 0 } DEBUG=0 -while getopts ":hd" OPT ; do +LICENSE="*" +while getopts ":hdl:" OPT ; do case "$OPT" in "?"|"h") usage ;; "d") DEBUG=1 ;; + "l") LICENSE="*.$OPTARG" ;; esac done shift $((OPTIND - 1)) @@ -47,21 +49,16 @@ F="$LICENSE_FILE" -if grep -A 1 "Apache License" "$F" | grep -q "Version 2\.0, January 2004" ; then - D="Apache-2.0" - [[ -n "$L" ]] && L="$L OR " ; L="$L$D" -fi - if grep -q -i "Artistic License" "$F" ; then if ! grep -q -i "Artistic License.*2" "$F" ; then - D="Artistic-1.0-TODO" + D= grep -q "7\. C subroutines" "$F" && grep -q "10\. THIS PACKAGE IS PROVIDED" "$F" && D="Artistic-1.0-Perl" grep -q "7\. C or perl subroutines" "$F" && grep -q "10\. THIS PACKAGE IS PROVIDED" "$F" && D="Artistic-1.0-cl8" grep -q "7\. C or perl subroutines" "$F" && grep -q "9\. THIS PACKAGE IS PROVIDED" "$F" && D="Artistic-1.0" else D="Artistic-2.0" fi - [[ -n "$L" ]] && L="$L OR " ; L="$L$D" + [[ -n "$L" && -n "$D" ]] && L="$L OR " ; L="$L$D" fi if grep -A 1 "GNU GENERAL PUBLIC LICENSE" "$F" | grep -q "Version 1, February 1989" ; then @@ -70,49 +67,65 @@ [[ -n "$L" ]] && L="$L OR " ; L="$L$D" fi -if grep -i -A 1 "GENERAL PUBLIC LICENSE" "$F" | grep -q "Version 2, June 1991" ; then - D="GPL-2.0-only" - grep -A 2 "GNU General Public License as published by the" "$F" | grep -q "or (at your option) any" && D="GPL-2.0-or-later" - [[ -n "$L" ]] && L="$L OR " ; L="$L$D" -fi +TMPFILE=$(mktemp -q) +[[ -z "$TMPFILE" ]] && printf "ERROR: Temporary file creation failed\n" >&2 && exit 1 -if grep -A 1 "GNU LIBRARY GENERAL PUBLIC LICENSE" "$F" | grep -q "Version 2, June 1991" ; then - D="LGPL-2.0-only" - [[ -n "$L" ]] && L="$L OR " ; L="$L$D" -fi - -if grep -A 1 "GNU Lesser General Public License" "$F" | grep -q "Version 2\.1, February 1999" ; then - D="LGPL-2.1-only" - [[ -n "$L" ]] && L="$L OR " ; L="$L$D" -fi - -for l in "$WS_TOOLS"/licenses/* ; do +typeset -A matched +for l in "$WS_TOOLS"/licenses/$LICENSE ; do [[ -f "$l" ]] || continue + # skip filters + [[ "$l" != "${l%.filter}" ]] && continue - LICCMD="$(grep '^# ' "$l" | sed -e 's/^# //')" - [[ -n "$LICCMD" ]] && LICCMD=" | $LICCMD" + # extract license identifier + license_id="${l##*/}" + license_id="${license_id#header.}" + license_id="${license_id#license.}" + # sanity check, this should never happen + [[ -z "$license_id" ]] && continue - CMD="dos2unix -ascii" - CMD="$CMD | awk '/^#/{next}/^\$/{\$0=\"\\n\"}1' ORS=' '" - CMD="$CMD | sed -E -e 's/ +/ /g' -e 's/^ //' -e 's/ \$//'" - CMD="$CMD$LICCMD" - CMD="$CMD | tr ' ' '\\n' | gfmt -w 80" + # make sure we do not match one license twice + [[ -n "$matched[$license_id]" ]] && continue + + cat <<#EOF > "$TMPFILE" + dos2unix -ascii \\ + | tr -d '\\014' \\ + | LC_ALL=C sed -E -e 's/^[[:space:]]+\$//g' \\ + | awk '/^#/{next}/^\$/{\$0="\n"}1' ORS=' ' \\ + | LC_ALL=C sed -E -e 's/[[:space:]]+/ /g' -e 's/^ //' -e 's/ \$//' -e '/^\$/d' \\ + EOF + # Remove some reStructuredText markup + if [[ "${F%.rst}" != "$F" ]] ; then + cat <<#EOF >> "$TMPFILE" + | sed -e '/^\*\*\$/d' -e 's/^\*\*\([^*]\)/\1/' -e 's/\([^*]\)\*\*\$/\1/' -e 's/\([^*]\)\*\*\([^*]\)/\1\2/g' \\ + EOF + fi + # Apply filter if any + [[ -x "$l.filter" ]] && printf '\t| LC_ALL=C %s \\\n' "$l.filter" >> "$TMPFILE" + cat <<#EOF >> "$TMPFILE" + | LC_ALL=C tr '[:upper:]' '[:lower:]' \\ + | sed -e 's|http://|https://|g' \ + | tr ' ' '\\n' | fmt + EOF REDIRECT="/dev/null" if ((DEBUG)) ; then REDIRECT="/dev/stdout" - printf "[DBG] TEMPLATE %s\n" "$(basename "$l")" - eval $CMD < "$l" + printf "[DBG] TEMPLATE %s\n" "${l##*/}" + . "$TMPFILE" < "$l" printf "[DBG] FILE\n" - eval $CMD < "$F" + . "$TMPFILE" < "$F" printf "[DBG] DIFFS\n" fi - diff -i <(eval $CMD < "$l") <(eval $CMD < "$F") > "$REDIRECT" || continue + diff -i <(. "$TMPFILE" < "$l") <(. "$TMPFILE" < "$F") > "$REDIRECT" || continue + + matched[$license_id]="$l" [[ -n "$L" ]] && L="$L OR " - L="$L$(basename "$l")" + L="$L$license_id" done +rm -f "$TMPFILE" + [[ -n "$L" ]] && printf "%s\n" "$L" -- Gitblit v1.9.3