From 1cb2a947aa0673a688b68f37603810a06a947c70 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 28 Oct 2007 23:25:16 +0100 Subject: [PATCH] Allow specifying the LGPL version number through --lgpl=2 or --lgpl=3. --- ChangeLog | 16 +++++++++++ doc/gnulib-intro.texi | 4 ++- doc/gnulib-tool.texi | 6 ++-- gnulib-tool | 76 ++++++++++++++++++++++++++++++++++++++++++--------- 4 files changed, 86 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 47e858b3b..6784a45ab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2007-10-28 Bruno Haible + + * gnulib-tool: Allow specifying the LGPL version number through + --lgpl=2 or --lgpl=3. + (func_usage): Document --lgpl with argument. + Handle --lgpl=... arguments. + (func_import): Recognize also gl_LGPL calls with an argument. When + --lgpl=2 is used and the module's license is just LGPL, report an + error. Set sed_transform_lib_file according to the lgpl variable. In + the generated files, use --lgpl or gl_LGPL invocations with argument, + if necessary. + * doc/gnulib-intro.texi (Copyright): Explain how to get modules under + an LGPv2+ license. + * doc/gnulib-tool.texi (Modified imports): Update explanation of + gl_LGPL macro. + 2007-10-28 Ralf Wildenhues Bruno Haible diff --git a/doc/gnulib-intro.texi b/doc/gnulib-intro.texi index 63137fefc..d5d740808 100644 --- a/doc/gnulib-intro.texi +++ b/doc/gnulib-intro.texi @@ -262,7 +262,9 @@ Texts. If you want to use some Gnulib modules under LGPL, you can do so by passing the option @samp{--lgpl} to @code{gnulib-tool}. This will replace the GPL header with an LGPL header while copying the source -files to your package. +files to your package. Similarly, if you want some Gnulib modules +under LGPLv2+ (Lesser GPL version 2.1 or newer), you can do so by +passing the option @samp{--lgpl=2} to @code{gnulib-tool}. Keep in mind that when you submit patches to files in Gnulib, you should license them under a compatible license. This means that sometimes the diff --git a/doc/gnulib-tool.texi b/doc/gnulib-tool.texi index 8af4a0548..ce510cb0c 100644 --- a/doc/gnulib-tool.texi +++ b/doc/gnulib-tool.texi @@ -310,8 +310,10 @@ The argument is the name of the library to be created. Corresponds to the @samp{--lib} command line argument. @item gl_LGPL -The presence of this macro corresponds to the @samp{--lgpl} command line -argument. It takes no arguments. +The presence of this macro without arguments corresponds to the @samp{--lgpl} +command line argument. The presence of this macro with an argument (whose +value must be 2 or 3) corresponds to the @samp{--lgpl=@var{arg}} command line +argument. @item gl_LIBTOOL The presence of this macro corresponds to the @samp{--libtool} command line diff --git a/gnulib-tool b/gnulib-tool index c091a3ea4..760d404a7 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -169,8 +169,10 @@ Options for --import: --avoid=MODULE Avoid including the given MODULE. Useful if you have code that provides equivalent functionality. This option can be repeated. - --lgpl Abort if modules aren't available under the LGPL. + --lgpl[=2|=3] Abort if modules aren't available under the LGPL. Also modify license template from GPL to LGPL. + The version number of the LGPL can be specified; + the default is currently LGPLv3. --makefile-name=NAME Name of makefile in automake syntax in the source-base and tests-base directories (default \"Makefile.am\"). @@ -594,7 +596,7 @@ fi # - auxdir from --aux-dir # - inctests true if --with-tests was given, blank otherwise # - avoidlist list of modules to avoid, from --avoid -# - lgpl true if --lgpl was given, blank otherwise +# - lgpl yes or a number if --lgpl was given, blank otherwise # - makefile_name from --makefile-name # - libtool true if --libtool was given, false if --no-libtool was # given, blank otherwise @@ -774,7 +776,15 @@ fi func_append avoidlist " $arg" shift ;; --lgpl ) - lgpl=true + lgpl=yes + shift ;; + --lgpl=* ) + arg=`echo "X$1" | sed -e 's/^X--lgpl=//'` + case "$arg" in + 2 | 3) ;; + *) func_fatal_error "invalid LGPL version number for --lgpl" ;; + esac + lgpl=$arg shift ;; --makefile-name ) shift @@ -1990,7 +2000,8 @@ func_emit_initmacro_done () # - auxdir directory relative to destdir where to place build aux files # - inctests true if --with-tests was given, blank otherwise # - avoidlist list of modules to avoid, from --avoid -# - lgpl true if library's license shall be LGPL, blank otherwise +# - lgpl yes or a number if library's license shall be LGPL, +# blank otherwise # - makefile_name from --makefile-name # - libtool true if --libtool was given, false if --no-libtool was # given, blank otherwise @@ -2059,8 +2070,11 @@ func_import () /gl_LIB(/ { s,^.*gl_LIB([[ ]*\([^])]*\).*$,cached_libname="\1",p } + /gl_LGPL(/ { + s,^.*gl_LGPL([[ ]*\([^])]*\).*$,cached_lgpl="\1",p + } /gl_LGPL/ { - s,^.*$,cached_lgpl=true,p + s,^.*$,cached_lgpl=yes,p } /gl_MAKEFILE_NAME(/ { s,^.*gl_MAKEFILE_NAME([[ ]*\([^])]*\).*$,cached_makefile_name="\1",p @@ -2211,9 +2225,25 @@ func_import () for module in $modules; do license=`func_get_license $module` case $license in - LGPL | LGPLv2+ | 'GPLed build tool') ;; + 'GPLed build tool') ;; 'public domain' | 'unlimited' | 'unmodifiable license text') ;; - *) func_fatal_error "incompatible license on module $module: $license" ;; + *) + case "$lgpl" in + yes | 3) + case $license in + LGPL | LGPLv2+) ;; + *) func_fatal_error "incompatible license on module $module: $license" ;; + esac + ;; + 2) + case $license in + LGPLv2+) ;; + *) func_fatal_error "incompatible license on module $module: $license" ;; + esac + ;; + *) func_fatal_error "invalid value lgpl=$lgpl" ;; + esac + ;; esac done fi @@ -2235,10 +2265,20 @@ func_import () if test -n "$do_copyrights"; then if test -n "$lgpl"; then # Update license. - sed_transform_lib_file=$sed_transform_lib_file' - s/GNU General/GNU Lesser General/g - s/version 2\([ ,]\)/version 2.1\1/g - ' + case "$lgpl" in + yes | 3) + sed_transform_lib_file=$sed_transform_lib_file' + s/GNU General/GNU Lesser General/g + ' + ;; + 2) + sed_transform_lib_file=$sed_transform_lib_file' + s/GNU General/GNU Lesser General/g + s/version [23]\([ ,]\)/version 2.1\1/g + ' + ;; + *) func_fatal_error "invalid value lgpl=$lgpl" ;; + esac fi fi @@ -2473,7 +2513,11 @@ func_import () func_append actioncmd " --avoid=$module" done if test -n "$lgpl"; then - func_append actioncmd " --lgpl" + if test "$lgpl" = yes; then + func_append actioncmd " --lgpl" + else + func_append actioncmd " --lgpl=$lgpl" + fi fi if test -n "$makefile_name"; then func_append actioncmd " --makefile-name=$makefile_name" @@ -2695,7 +2739,13 @@ func_import () echo "gl_TESTS_BASE([$testsbase])" test -z "$inctests" || echo "gl_WITH_TESTS" echo "gl_LIB([$libname])" - test -z "$lgpl" || echo "gl_LGPL" + if test -n "$lgpl"; then + if test "$lgpl" = yes; then + echo "gl_LGPL" + else + echo "gl_LGPL([$lgpl])" + fi + fi echo "gl_MAKEFILE_NAME([$makefile_name])" if test "$libtool" = true; then echo "gl_LIBTOOL" -- 2.11.0