[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Differences between "module license" and "file license"
From: |
Bruno Haible |
Subject: |
Re: Differences between "module license" and "file license" |
Date: |
Tue, 07 Feb 2023 13:31:19 +0100 |
Bjarni Ingi Gislason wrote:
> Module License File License File name
> ================= ============== =====================================
> LGPLv2+ GPL lib/alignalloc.h
> LGPLv2+ GPL lib/alignalloc.c
> GPL LGPLv2+ lib/glob.c
> GPL LGPLv2+ lib/glob_internal.h
> GPL LGPLv2+ lib/glob_pattern_p.c
> GPL LGPLv2+ lib/globfree.c
> LGPLv2+ LGPLv3+ or GPLv2+ lib/uniwidth/width0.h
> LGPLv2+ LGPLv3+ or GPLv2+ lib/uniwidth/width2.h
Thanks for the report.
For the 'glob' module, there is no contradiction: some
files of this module come from glibc and therefore share the
LGPLv2+ file license. And the module depends on 'fstatat',
which is GPL, therefore 'glob' must be GPL as well.
2023-02-07 Bruno Haible <bruno@clisp.org>
check-copyright: Don't fail because of the 'glob' module.
Reported by Bjarni Ingi Gislason <bjarniig@simnet.is> in
<https://lists.gnu.org/archive/html/bug-gnulib/2023-02/msg00057.html>.
* check-copyright: Filter out the files from the 'glob' module.
diff --git a/check-copyright b/check-copyright
index ee173c2595..bfd42fe1f2 100755
--- a/check-copyright
+++ b/check-copyright
@@ -170,12 +170,20 @@ for file in $candidates; do
fi
done
if test "$file_license" != "$weakest_license"; then
- if test $error = 0; then
- echo "Module License File License File name"
- echo "================= =================
====================================="
+ # The 'glob' module is a special case. It contains LGPLv2+ code (shared
with
+ # glibc) but at the same time also has a dependency to a module under GPL
+ # (namely, 'fstatat'). This is not a mistake.
+ if test "$weakest_license" = GPL \
+ && case "$file" in lib/glob*) true ;; *) false ;; esac; then
+ :
+ else
+ if test $error = 0; then
+ echo "Module License File License File name"
+ echo "================= =================
====================================="
+ fi
+ printf '%-17s %-17s %s\n' "$weakest_license" "$file_license" "$file"
+ error=1
fi
- printf '%-17s %-17s %s\n' "$weakest_license" "$file_license" "$file"
- error=1
fi
done
exit $error