summaryrefslogtreecommitdiff
path: root/pygnulib
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2022-08-03 16:49:15 +0200
committerBruno Haible <bruno@clisp.org>2022-08-03 16:50:03 +0200
commite2d15e5c893e42b32a840a6641d5fa8cef7b4f7c (patch)
tree1c11d2131d4dec895679058fd729ec8d6f8856e3 /pygnulib
parent65301e0739f8c86cf96403d6426551df3c3f3ac3 (diff)
downloadgnulib-e2d15e5c893e42b32a840a6641d5fa8cef7b4f7c.tar.gz
gnulib-tool.py: Follow gnulib-tool changes, part 23.
Follow gnulib-tool changes 2016-11-11 Bruno Haible <bruno@clisp.org> gnulib-tool: Support for the dual "LGPLv3+ or GPLv2" license. 2016-12-02 Nikos Mavrogiannopoulos <nmav@gnutls.org> gnulib-tool (func_import): Adhere to the license guideline ... 2016-12-02 Daiki Ueno <ueno@gnu.org> gnulib-tool (func_import): Relax the regex ... * gnulib-tool.py: For --lgpl, accept value 3orGPLv2. * pygnulib/GLInfo.py (GLInfo.usage): Update. * pygnulib/GLConfig.py (GLConfig.setLGPL): Update argument check. * pygnulib/GLImport.py (GLImport.__init__, GLImport.gnulib_cache): Update gl_LGPL handling. (GLImport.prepare): Update license compatibility checks and license header rewriting. * pygnulib/GLTestDir.py (GLTestDir.execute): Update license compatibility checks. Handle also the licenses GPLv3+, GPL, LGPLv3+.
Diffstat (limited to 'pygnulib')
-rw-r--r--pygnulib/GLConfig.py12
-rw-r--r--pygnulib/GLImport.py52
-rw-r--r--pygnulib/GLInfo.py3
-rw-r--r--pygnulib/GLTestDir.py16
4 files changed, 54 insertions, 29 deletions
diff --git a/pygnulib/GLConfig.py b/pygnulib/GLConfig.py
index dc0cce3490..d126b35dbe 100644
--- a/pygnulib/GLConfig.py
+++ b/pygnulib/GLConfig.py
@@ -784,21 +784,21 @@ class GLConfig(object):
# Define lgpl methods.
def getLGPL(self):
'''Check for abort if modules aren't available under the LGPL.
- Default value is False, which means that lgpl is disabled.'''
+ Default value is None, which means that lgpl is disabled.'''
return self.table['lgpl']
def setLGPL(self, lgpl):
'''Abort if modules aren't available under the LGPL.
- Default value is False, which means that lgpl is disabled.'''
- if (type(lgpl) is int and 2 <= lgpl <= 3) or type(lgpl) is bool:
+ Default value is None, which means that lgpl is disabled.'''
+ if lgpl in [None, True, '2', '3orGPLv2', '3']:
self.table['lgpl'] = lgpl
- else: # if lgpl is not False, 2 or 3
+ else:
raise TypeError('invalid LGPL version: %s' % repr(lgpl))
def resetLGPL(self):
'''Disable abort if modules aren't available under the LGPL.
- Default value is False, which means that lgpl is disabled.'''
- self.table['lgpl'] = False
+ Default value is None, which means that lgpl is disabled.'''
+ self.table['lgpl'] = None
def getIncludeGuardPrefix(self):
'''Return include_guard_prefix to use inside GLEmiter class.'''
diff --git a/pygnulib/GLImport.py b/pygnulib/GLImport.py
index 046cf4745d..04b3fddaab 100644
--- a/pygnulib/GLImport.py
+++ b/pygnulib/GLImport.py
@@ -175,10 +175,10 @@ class GLImport(object):
tempdict = dict(zip(keys, values))
if 'gl_LGPL' in tempdict:
lgpl = cleaner(tempdict['gl_LGPL'])
- if lgpl.isdecimal():
- self.cache.setLGPL(int(self.cache['lgpl']))
+ if lgpl != '':
+ self.cache.setLGPL(lgpl)
else: # if 'gl_LGPL' not in tempdict
- self.cache.setLGPL(False)
+ self.cache.setLGPL(None)
if tempdict['gl_LIB']:
self.cache.setLibName(cleaner(tempdict['gl_LIB']))
if tempdict['gl_LOCAL_DIR']:
@@ -533,11 +533,11 @@ class GLImport(object):
if self.config.checkTestFlag(TESTS['tests']):
emit += 'gl_WITH_TESTS\n'
emit += 'gl_LIB([%s])\n' % libname
- if lgpl != False:
+ if lgpl != None:
if lgpl == True:
emit += 'gl_LGPL\n'
else: # if lgpl != True
- emit += 'gl_LGPL([%d])\n' % lgpl
+ emit += 'gl_LGPL([%s])\n' % lgpl
emit += 'gl_MAKEFILE_NAME([%s])\n' % makefile
if conddeps:
emit += 'gl_CONDITIONAL_DEPENDENCIES\n'
@@ -849,17 +849,18 @@ AC_DEFUN([%s_FILE_LIST], [\n''' % macro_prefix
compatibilities['all'] = ['GPLv2+ build tool', 'GPLed build tool',
'public domain', 'unlimited',
'unmodifiable license text']
- compatibilities[3] = ['LGPL', 'LGPLv2+', 'LGPLv3+']
- compatibilities[2] = ['LGPLv2+']
+ compatibilities['3'] = ['LGPLv2+', 'LGPLv3+ or GPLv2', 'LGPLv3+', 'LGPL']
+ compatibilities['3orGPLv2'] = ['LGPLv2+', 'LGPLv3+ or GPLv2']
+ compatibilities['2'] = ['LGPLv2+']
if lgpl:
for module in main_modules:
license = module.getLicense()
if license not in compatibilities['all']:
- if lgpl == 3 or lgpl == True:
- if license not in compatibilities[3]:
+ if lgpl == True:
+ if license not in compatibilities['3']:
listing.append(tuple([str(module), license]))
- elif lgpl == 2:
- if license not in compatibilities[2]:
+ else:
+ if license not in compatibilities[lgpl]:
listing.append(tuple([str(module), license]))
if listing:
raise GLError(11, listing)
@@ -889,18 +890,35 @@ AC_DEFUN([%s_FILE_LIST], [\n''' % macro_prefix
sed_transform_main_lib_file = sed_transform_lib_file
if copyrights:
if lgpl: # if lgpl is enabled
- if lgpl == 3:
+ if lgpl == True or lgpl == '3':
sed_transform_main_lib_file += '''
s/GNU General/GNU Lesser General/g
s/General Public License/Lesser General Public License/g
- s/Lesser Lesser General Public License/Lesser General Public''' \
- + ' License/g'
- elif lgpl == 2:
+ s/Lesser Lesser General Public License/Lesser General Public License/g'''
+ elif lgpl == '3orGPLv2':
+ sed_transform_main_lib_file += '''
+ /^ *This program is free software/i\\
+ This program is free software: you can redistribute it and\\/or\\
+ modify it under the terms of either:\\
+\\
+ * the GNU Lesser General Public License as published by the Free\\
+ Software Foundation; either version 3 of the License, or (at your\\
+ option) any later version.\\
+\\
+ or\\
+\\
+ * the GNU General Public License as published by the Free\\
+ Software Foundation; either version 2 of the License, or (at your\\
+ option) any later version.\\
+\\
+ or both in parallel, as here.
+ /^ *This program is free software/,/^$/d
+ '''
+ elif lgpl == '2':
sed_transform_main_lib_file += '''
s/GNU General/GNU Lesser General/g
s/General Public License/Lesser General Public License/g
- s/Lesser Lesser General Public License/Lesser General Public''' \
- + '''License/g
+ s/Lesser Lesser General Public License/Lesser General Public License/g
s/version [23]\\([ ,]\\)/version 2.1\\1/g'''
else: # if lgpl is disabled
sed_transform_main_lib_file += lgpl2gpl
diff --git a/pygnulib/GLInfo.py b/pygnulib/GLInfo.py
index 79c1ba0cf1..720e357c90 100644
--- a/pygnulib/GLInfo.py
+++ b/pygnulib/GLInfo.py
@@ -251,7 +251,8 @@ Options for --import, --add/remove-import:
placed (default \"tests\").
--aux-dir=DIRECTORY Directory relative to --dir where auxiliary build
tools are placed (default comes from configure.ac).
- --lgpl[=2|=3] Abort if modules aren't available under the LGPL.
+ --lgpl[=2|=3orGPLv2|=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.
diff --git a/pygnulib/GLTestDir.py b/pygnulib/GLTestDir.py
index 83555faad7..29c3010ce0 100644
--- a/pygnulib/GLTestDir.py
+++ b/pygnulib/GLTestDir.py
@@ -195,13 +195,19 @@ class GLTestDir(object):
if license not in ['GPLv2+ build tool', 'GPLed build tool',
'public domain', 'unlimited', 'unmodifiable license text']:
incompatible = False
- if requested_licence == 'GPLv2+':
- if license not in ['GPLv2+', 'LGPLv2+']:
+ if requested_licence == 'GPLv3+' or requested_licence == 'GPL':
+ if license not in ['LGPLv2+', 'LGPLv3+ or GPLv2', 'LGPLv3+', 'LGPL', 'GPLv2+', 'GPLv3+', 'GPL']:
incompatible = True
- elif requested_licence in ['LGPL']:
- if license not in ['LGPL', 'LGPLv2+']:
+ elif requested_licence == 'GPLv2+':
+ if license not in ['LGPLv2+', 'LGPLv3+ or GPLv2', 'GPLv2+']:
incompatible = True
- elif requested_licence in ['LGPLv2+']:
+ elif requested_licence == 'LGPLv3+' or requested_licence == 'LGPL':
+ if license not in ['LGPLv2+', 'LGPLv3+ or GPLv2', 'LGPLv3+', 'LGPL']:
+ incompatible = True
+ elif requested_licence == 'LGPLv3+ or GPLv2':
+ if license not in ['LGPLv2+', 'LGPLv3+ or GPLv2']:
+ incompatible = True
+ elif requested_licence == 'LGPLv2+':
if license not in ['LGPLv2+']:
incompatible = True
if incompatible: