bug-gnulib
[Top][All Lists]
Advanced

[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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]