annotate pygnulib/GLModuleSystem.py @ 40196:e63f5d3edab5

relocatable-prog: Update documentation. * doc/relocatable-maint.texi (Supporting Relocation): Update to match the recent changes.
author Bruno Haible <bruno@clisp.org>
date Sun, 24 Feb 2019 01:49:15 +0100
parents eb64273b66c2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
1 #!/usr/bin/python
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
2 # encoding: UTF-8
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
3
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
4 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
5 # Define global imports
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
6 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
7 import os
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
8 import re
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
9 import sys
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
10 import codecs
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
11 import hashlib
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
12 import subprocess as sp
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
13 from . import constants
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
14 from .GLError import GLError
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
15 from .GLConfig import GLConfig
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
16 from .GLFileSystem import GLFileSystem
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
17
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
18
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
19 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
20 # Define module information
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
21 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
22 __author__ = constants.__author__
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
23 __license__ = constants.__license__
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
24 __copyright__ = constants.__copyright__
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
25
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
26
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
27 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
28 # Define global constants
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
29 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
30 PYTHON3 = constants.PYTHON3
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
31 NoneType = type(None)
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
32 APP = constants.APP
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
33 DIRS = constants.DIRS
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
34 ENCS = constants.ENCS
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
35 UTILS = constants.UTILS
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
36 MODES = constants.MODES
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
37 TESTS = constants.TESTS
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
38 compiler = constants.compiler
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
39 joinpath = constants.joinpath
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
40 cleaner = constants.cleaner
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
41 string = constants.string
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
42 isabs = os.path.isabs
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
43 isdir = os.path.isdir
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
44 isfile = os.path.isfile
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
45 normpath = os.path.normpath
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
46 relpath = os.path.relpath
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
47 filter_filelist = constants.filter_filelist
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
48
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
49
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
50 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
51 # Define GLModuleSystem class
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
52 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
53 class GLModuleSystem(object):
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
54 '''GLModuleSystem is used to operate with module system using dynamic
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
55 searching and patching.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
56
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
57 def __init__(self, config):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
58 '''GLModuleSystem.__init__(config) -> GLModuleSystem
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
59
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
60 Create new GLModuleSystem instance. Some functions use GLFileSystem class
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
61 to look up a file in localdir or gnulib directories, or combine it through
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
62 'patch' utility.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
63 self.args = dict()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
64 if type(config) is not GLConfig:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
65 raise(TypeError('config must be a GLConfig, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
66 type(config).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
67 self.config = config
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
68 self.filesystem = GLFileSystem(self.config)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
69
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
70 def __repr__(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
71 '''x.__repr__ <==> repr(x)'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
72 result = '<pygnulib.GLModuleSystem %s>' % hex(id(self))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
73 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
74
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
75 def exists(self, module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
76 '''GLModuleSystem.exists(module) -> bool
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
77
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
78 Check whether the given module exists.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
79 GLConfig: localdir.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
80 if type(module) is bytes or string:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
81 if type(module) is bytes:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
82 module = module.decode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
83 else: # if module has not bytes or string type
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
84 raise(TypeError(
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
85 'module must be a string, not %s' % type(module).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
86 result = bool()
19150
5c17a702a50f gnulib-tool.py: follow gnulib-tool changes, part 5
Bruno Haible <bruno@clisp.org>
parents: 19148
diff changeset
87 badnames = ['ChangeLog', 'COPYING', 'README', 'TEMPLATE',
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
88 'TEMPLATE-EXTENDED', 'TEMPLATE-TESTS']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
89 if isfile(joinpath(DIRS['modules'], module)) or \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
90 all([ # Begin all(iterable) function
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
91 self.config['localdir'],
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
92 isdir(joinpath(self.config['localdir'], 'modules')),
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
93 isfile(
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
94 joinpath(self.config['localdir'], 'modules', module))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
95 ]): # Close all(iterable) function
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
96 if module not in badnames:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
97 result = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
98 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
99
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
100 def find(self, module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
101 '''GLModuleSystem.find(module) -> GLModule
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
102
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
103 Find the given module.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
104 if type(module) is bytes or string:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
105 if type(module) is bytes:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
106 module = module.decode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
107 else: # if module has not bytes or string type
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
108 raise(TypeError(
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
109 'module must be a string, not %s' % type(module).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
110 if self.exists(module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
111 path, istemp = self.filesystem.lookup(joinpath('modules', module))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
112 result = GLModule(self.config, path, istemp)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
113 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
114 else: # if not self.exists(module)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
115 if self.config['errors']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
116 raise(GLError(3, module))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
117 else: # if not self.config['errors']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
118 sys.stderr.write('gnulib-tool: warning: ')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
119 sys.stderr.write('file %s does not exist\n' % str(module))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
120
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
121 def list(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
122 '''GLModuleSystem.list() -> list
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
123
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
124 Return the available module names as tuple. We could use a combination
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
125 of os.walk() function and re module. However, it takes too much time to
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
126 complete, so this version uses subprocess to run shell commands.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
127 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
128 listing = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
129 localdir = self.config['localdir']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
130 find_args = ['find', 'modules', '-type', 'f', '-print']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
131 sed_args = \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
132 [
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
133 'sed',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
134 '-e', r's,^modules/,,',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
135 '-e', r'/^ChangeLog$/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
136 '-e', r'/\/ChangeLog$/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
137 '-e', r'/^COPYING$/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
138 '-e', r'/\/COPYING$/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
139 '-e', r'/^README$/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
140 '-e', r'/\/README$/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
141 '-e', r'/^TEMPLATE$/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
142 '-e', r'/^TEMPLATE-EXTENDED$/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
143 '-e', r'/^TEMPLATE-TESTS$/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
144 '-e', r'/^\..*/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
145 '-e', r'/~$/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
146 '-e', r'/-tests$/d',
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
147 ]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
148
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
149 # Read modules from gnulib root directory.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
150 os.chdir(constants.DIRS['root'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
151 find = sp.Popen(find_args, stdout=sp.PIPE)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
152 result += find.stdout.read().decode("UTF-8")
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
153
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
154 # Read modules from local directory.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
155 if localdir and isdir(joinpath(localdir, 'modules')):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
156 os.chdir(localdir)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
157 find = sp.Popen(find_args, stdout=sp.PIPE)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
158 result += find.stdout.read().decode("UTF-8")
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
159 sed_args += ['-e', r's,\.diff$,,']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
160
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
161 # Save the list of the modules to file.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
162 os.chdir(DIRS['cwd'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
163 path = joinpath(self.config['tempdir'], 'list')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
164 with codecs.open(path, 'wb', 'UTF-8') as file:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
165 file.write(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
166
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
167 # Filter the list of the modules.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
168 stdin = codecs.open(path, 'rb', 'UTF-8')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
169 sed = sp.Popen(sed_args, stdin=stdin, stdout=sp.PIPE)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
170 result = sed.stdout.read().decode("UTF-8")
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
171 stdin.close()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
172 os.remove(path)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
173 listing = [line for line in result.split('\n') if line.strip()]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
174 listing = sorted(set(listing))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
175 return(listing)
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
176
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
177
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
178 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
179 # Define GLModule class
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
180 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
181 class GLModule(object):
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
182 '''GLModule is used to create a module object from the file with the given
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
183 path. GLModule can get all information about module, get its dependencies,
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
184 files, etc.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
185
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
186 def __init__(self, config, module, patched=False):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
187 '''GLModule.__init__(config, module[, patched]) -> GLModule
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
188
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
189 Create new GLModule instance. Arguments are module and patched, where
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
190 module is a string representing the path to the module and patched is a
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
191 bool indicating that module was created after applying patch.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
192 self.args = dict()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
193 self.cache = dict()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
194 self.content = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
195 if type(config) is not GLConfig:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
196 raise(TypeError('config must be a GLConfig, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
197 type(config).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
198 if type(module) is bytes or type(module) is string:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
199 if type(module) is bytes:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
200 module = module.decode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
201 else: # if module has not bytes or string type
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
202 raise(TypeError('module must be a string, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
203 type(module).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
204 if type(patched) is not bool:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
205 raise(TypeError('patched must be a bool, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
206 type(module).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
207 self.module = module
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
208 self.patched = patched
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
209 self.config = config
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
210 self.filesystem = GLFileSystem(self.config)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
211 self.modulesystem = GLModuleSystem(self.config)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
212 with codecs.open(module, 'rb', 'UTF-8') as file:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
213 self.content = file.read()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
214 self.regex = '(?:Description:|Comment:|Status:|Notice:|Applicability:|\
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
215 Files:|Depends-on:|configure\\.ac-early:|configure\\.ac:|Makefile\\.am:|\
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
216 Include:|Link:|License:|Maintainer:)'
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
217
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
218 def __eq__(self, module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
219 '''x.__eq__(y) <==> x==y'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
220 result = bool()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
221 if type(module) is GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
222 if self.module == module.module:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
223 result = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
224 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
225
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
226 def __ne__(self, module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
227 '''x.__ne__(y) <==> x!=y'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
228 result = bool()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
229 if type(module) is GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
230 if self.module != module.module:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
231 result = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
232 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
233
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
234 def __ge__(self, module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
235 '''x.__ge__(y) <==> x>=y'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
236 result = bool()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
237 if type(module) is GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
238 if self.module >= module.module:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
239 result = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
240 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
241
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
242 def __gt__(self, module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
243 '''x.__gt__(y) <==> x>y'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
244 result = bool()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
245 if type(module) is GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
246 if self.module > module.module:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
247 result = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
248 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
249
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
250 def __hash__(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
251 '''x.__hash__() <==> hash(x)'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
252 module = hash(self.module)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
253 patched = hash(self.patched)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
254 result = module ^ patched
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
255 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
256
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
257 def __le__(self, module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
258 '''x.__le__(y) <==> x<=y'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
259 result = bool()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
260 if type(module) is GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
261 if self.module <= module.module:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
262 result = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
263 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
264
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
265 def __lt__(self, module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
266 '''x.__lt__(y) <==> x<y'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
267 result = bool()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
268 if type(module) is GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
269 if self.module < module.module:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
270 result = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
271 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
272
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
273 def __str__(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
274 '''x.__str__() <==> str(x)'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
275 result = self.getName()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
276 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
277
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
278 def __repr__(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
279 '''x.__repr__ <==> repr(x)'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
280 result = '<pygnulib.GLModule %s %s>' % \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
281 (repr(self.getName()), hex(id(self)))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
282 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
283
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
284 def getName(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
285 '''GLModule.getName() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
286
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
287 Return the name of the module.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
288 pattern = compiler(joinpath('modules', '(.*?)$'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
289 result = pattern.findall(self.module)[0]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
290 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
291
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
292 def isPatched(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
293 '''GLModule.isPatched() -> bool
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
294
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
295 Check whether module was created after applying patch.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
296 return(self.patched)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
297
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
298 def isTests(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
299 '''GLModule.isTests() -> bool
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
300
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
301 Check whether module is a -tests version of module.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
302 result = self.getName().endswith('-tests')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
303 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
304
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
305 def isNonTests(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
306 '''GLModule.isTests() -> bool
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
307
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
308 Check whether module is not a -tests version of module.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
309 result = not(self.isTests())
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
310 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
311
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
312 def getTestsName(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
313 '''Return -tests version of the module name.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
314 result = self.getName()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
315 if not result.endswith('-tests'):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
316 result += '-tests'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
317 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
318
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
319 def getTestsModule(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
320 '''Return -tests version of the module as GLModule.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
321 result = self.modulesystem.find(self.getTestsName())
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
322 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
323
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
324 def getShellFunc(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
325 '''GLModule.getShellFunc() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
326
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
327 Computes the shell function name that will contain the m4 macros for the
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
328 module.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
329 isalnum = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
330 macro_prefix = self.config['macro_prefix']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
331 for char in str(module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
332 if char not in constants.ALPHANUMERIC:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
333 isalnum = False
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
334 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
335 if isalnum:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
336 module = str(self)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
337 else: # if not isalnum
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
338 module = '%s\n' % str(self)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
339 if type(module) is string:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
340 module = module.encode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
341 module = hashlib.md5(module).hexdigest()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
342 result = 'func_%s_gnulib_m4code_%s' % (macro_prefix, module)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
343 if type(result) is bytes:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
344 result = result.decode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
345 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
346
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
347 def getShellVar(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
348 '''GLModule.getShellVar() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
349
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
350 Compute the shell variable name the will be set to true once the m4 macros
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
351 for the module have been executed.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
352 isalnum = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
353 macro_prefix = self.config['macro_prefix']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
354 for char in str(module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
355 if char not in constants.ALPHANUMERIC:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
356 isalnum = False
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
357 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
358 if isalnum:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
359 module = str(self)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
360 else: # if not isalnum
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
361 module = '%s\n' % str(self)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
362 if type(module) is string:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
363 module = module.encode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
364 module = hashlib.md5(module).hexdigest()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
365 result = '%s_gnulib_enabled_%s' % (macro_prefix, module)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
366 if type(result) is bytes:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
367 result = result.decode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
368 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
369
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
370 def getConditionalName(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
371 '''GLModule.getConditionalName() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
372
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
373 Return the automake conditional name.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
374 GLConfig: macro_prefix.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
375 macro_prefix = self.config['macro_prefix']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
376 nonascii = \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
377 [ # Begin to filter non-ascii chars
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
378 char for char in self.getName() if char not in \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
379 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
380 ] # Finish to filter non-ascii chars
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
381 if nonascii:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
382 name = self.getName().encode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
383 name = hashlib.md5(name).hexdigest()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
384 conditional = '%s_GNULIB_ENABLED_%s' % (macro_prefix, name)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
385 else: # if not nonascii
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
386 result = '%s_GNULIB_ENABLED_%s' (macro_prefix, name)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
387 if type(result) is bytes:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
388 result = result.decode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
389 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
390
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
391 def getDescription(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
392 '''GLModule.getDescription() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
393
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
394 Return description of the module.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
395 section = 'Description:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
396 if 'description' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
397 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
398 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
399 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
400 pattern = '^%s[\t ]*(.*?)%s' % (section, self.regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
401 pattern = compiler(pattern, re.S | re.M)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
402 result = pattern.findall(self.content)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
403 if type(result) is list:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
404 if not result:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
405 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
406 else: # if result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
407 result = result[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
408 result = result.strip()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
409 self.cache['description'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
410 return(self.cache['description'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
411
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
412 def getComment(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
413 '''GLModule.getComment() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
414
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
415 Return comment to module.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
416 section = 'Comment:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
417 if 'comment' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
418 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
419 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
420 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
421 pattern = '^%s[\t ]*(.*?)%s' % (section, self.regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
422 pattern = compiler(pattern, re.S | re.M)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
423 result = pattern.findall(self.content)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
424 if type(result) is list:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
425 if not result:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
426 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
427 else: # if result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
428 result = result[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
429 result = result.strip()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
430 self.cache['comment'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
431 return(self.cache['comment'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
432
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
433 def getStatus(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
434 '''GLModule.getStatus() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
435
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
436 Return module status.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
437 section = 'Status:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
438 if 'status' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
439 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
440 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
441 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
442 snippet = self.content.split(section)[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
443 snippet = snippet.replace('\r\n', '\n')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
444 lines = ['%s\n' % line for line in snippet.split('\n')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
445 parts = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
446 for line in lines:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
447 regex = '^(Description|Comment|Status|Notice|Applicability|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
448 regex += 'Files|Depends-on|configure\\.ac-early|configure\\.ac|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
449 regex += 'Makefile\\.am|Include|Link|License|Maintainer):$'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
450 pattern = compiler(regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
451 findflag = pattern.findall(line)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
452 if findflag:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
453 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
454 parts += [line]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
455 result = [part.strip() for part in parts if part.strip()]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
456 self.cache['status'] = list(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
457 return(list(self.cache['status']))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
458
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
459 def getNotice(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
460 '''GLModule.getNotice() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
461
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
462 Return notice to module.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
463 section = 'Notice:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
464 if 'notice' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
465 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
466 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
467 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
468 snippet = self.content.split(section)[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
469 snippet = snippet.replace('\r\n', '\n')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
470 lines = ['%s\n' % line for line in snippet.split('\n')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
471 parts = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
472 for line in lines:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
473 regex = '^(Description|Comment|Status|Notice|Applicability|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
474 regex += 'Files|Depends-on|configure\\.ac-early|configure\\.ac|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
475 regex += 'Makefile\\.am|Include|Link|License|Maintainer):$'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
476 pattern = compiler(regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
477 findflag = pattern.findall(line)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
478 if findflag:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
479 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
480 parts += [line]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
481 result = ''.join(parts)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
482 self.cache['notice'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
483 return(self.cache['notice'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
484
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
485 def getApplicability(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
486 '''GLModule.getApplicability() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
487
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
488 Return applicability of module.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
489 section = 'Applicability:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
490 if 'applicability' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
491 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
492 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
493 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
494 snippet = self.content.split(section)[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
495 snippet = snippet.replace('\r\n', '\n')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
496 lines = ['%s\n' % line for line in snippet.split('\n')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
497 parts = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
498 for line in lines:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
499 regex = '^(Description|Comment|Status|Notice|Applicability|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
500 regex += 'Files|Depends-on|configure\\.ac-early|configure\\.ac|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
501 regex += 'Makefile\\.am|Include|Link|License|Maintainer):$'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
502 pattern = compiler(regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
503 findflag = pattern.findall(line)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
504 if findflag:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
505 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
506 parts += [line]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
507 parts = [part.strip() for part in parts]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
508 result = ''.join(parts)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
509 if not result.strip():
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
510 if self.getName().endswith('-tests'):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
511 result = 'tests'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
512 else: # if not self.getName().endswith('-tests')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
513 result = 'main'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
514 if type(result) is bytes:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
515 result = result.decode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
516 result = result.strip()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
517 self.cache['applicability'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
518 return(self.cache['applicability'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
519
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
520 def getFiles(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
521 '''GLModule.getFiles() -> list
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
522
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
523 Return list of files.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
524 GLConfig: ac_version.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
525 ac_version = self.config['ac_version']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
526 section = 'Files:'
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
527 result = list()
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
528 if 'files' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
529 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
530 result = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
531 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
532 snippet = self.content.split(section)[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
533 snippet = snippet.replace('\r\n', '\n')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
534 lines = ['%s\n' % line for line in snippet.split('\n')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
535 parts = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
536 for line in lines:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
537 regex = '^(Description|Comment|Status|Notice|Applicability|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
538 regex += 'Files|Depends-on|configure\\.ac-early|configure\\.ac|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
539 regex += 'Makefile\\.am|Include|Link|License|Maintainer):$'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
540 pattern = compiler(regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
541 findflag = pattern.findall(line)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
542 if findflag:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
543 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
544 parts += [line]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
545 result = [part.strip() for part in parts if part.strip()]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
546 result += [joinpath('m4', '00gnulib.m4')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
547 result += [joinpath('m4', 'gnulib-common.m4')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
548 self.cache['files'] = list(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
549 return(list(self.cache['files']))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
550
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
551 def getDependencies(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
552 '''GLModule.getDependencies() -> list
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
553
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
554 Return list of dependencies.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
555 GLConfig: localdir.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
556 localdir = self.config['localdir']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
557 result = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
558 section = 'Depends-on:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
559 if 'dependencies' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
560 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
561 depmodules = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
562 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
563 snippet = self.content.split(section)[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
564 snippet = snippet.replace('\r\n', '\n')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
565 lines = ['%s\n' % line for line in snippet.split('\n')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
566 parts = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
567 for line in lines:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
568 regex = '^(Description|Comment|Status|Notice|Applicability|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
569 regex += 'Files|Depends-on|configure\\.ac-early|configure\\.ac|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
570 regex += 'Makefile\\.am|Include|Link|License|Maintainer):$'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
571 pattern = compiler(regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
572 findflag = pattern.findall(line)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
573 if findflag:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
574 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
575 parts += [line]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
576 modules = ''.join(parts)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
577 modules = [line for line in modules.split(
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
578 '\n') if line.strip()]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
579 modules = [
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
580 module for module in modules if not module.startswith('#')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
581 for line in modules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
582 split = [part for part in line.split(' ') if part.strip()]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
583 if len(split) == 1:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
584 module = line.strip()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
585 condition = None
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
586 else: # if len(split) != 1
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
587 module = split[0]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
588 condition = split[1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
589 if type(condition) is bytes:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
590 condition = condition.decode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
591 result += [tuple([self.modulesystem.find(module), condition])]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
592 self.cache['dependencies'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
593 return(list(self.cache['dependencies']))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
594
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
595 def getAutoconfSnippet_Early(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
596 '''GLModule.getAutoconfSnippet_Early() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
597
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
598 Return autoconf-early snippet.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
599 section = 'configure.ac-early:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
600 if 'autoconf-early' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
601 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
602 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
603 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
604 snippet = self.content.split(section)[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
605 snippet = snippet.replace('\r\n', '\n')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
606 lines = ['%s\n' % line for line in snippet.split('\n')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
607 parts = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
608 for line in lines:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
609 regex = '^(Description|Comment|Status|Notice|Applicability|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
610 regex += 'Files|Depends-on|configure\\.ac-early|configure\\.ac|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
611 regex += 'Makefile\\.am|Include|Link|License|Maintainer):$'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
612 pattern = compiler(regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
613 findflag = pattern.findall(line)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
614 if findflag:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
615 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
616 parts += [line]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
617 result = ''.join(parts)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
618 self.cache['autoconf-early'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
619 return(self.cache['autoconf-early'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
620
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
621 def getAutoconfSnippet(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
622 '''GLModule.getAutoconfSnippet() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
623
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
624 Return autoconf snippet.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
625 section = 'configure.ac:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
626 if 'autoconf' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
627 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
628 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
629 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
630 snippet = self.content.split(section)[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
631 snippet = snippet.replace('\r\n', '\n')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
632 lines = ['%s\n' % line for line in snippet.split('\n')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
633 parts = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
634 for line in lines:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
635 regex = '^(Description|Comment|Status|Notice|Applicability|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
636 regex += 'Files|Depends-on|configure\\.ac-early|configure\\.ac|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
637 regex += 'Makefile\\.am|Include|Link|License|Maintainer):$'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
638 pattern = compiler(regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
639 findflag = pattern.findall(line)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
640 if findflag:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
641 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
642 parts += [line]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
643 result = ''.join(parts)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
644 self.cache['autoconf'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
645 return(self.cache['autoconf'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
646
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
647 def getAutomakeSnippet(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
648 '''getAutomakeSnippet() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
649
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
650 Get automake snippet.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
651 GLConfig: auxdir, ac_version.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
652 result = string() # Define stack variable
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
653 conditional = self.getAutomakeSnippet_Conditional()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
654 if conditional.strip():
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
655 result += self.getAutomakeSnippet_Conditional()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
656 else: # if not conditional.strip()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
657 result += '\n'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
658 result += self.getAutomakeSnippet_Unconditional()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
659 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
660
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
661 def getAutomakeSnippet_Conditional(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
662 '''GLModule.getAutomakeSnippet_Conditional() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
663
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
664 Return conditional automake snippet.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
665 section = 'Makefile.am:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
666 if 'makefile-conditional' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
667 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
668 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
669 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
670 snippet = self.content.split(section)[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
671 snippet = snippet.replace('\r\n', '\n')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
672 lines = ['%s\n' % line for line in snippet.split('\n')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
673 parts = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
674 for line in lines:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
675 regex = '^(Description|Comment|Status|Notice|Applicability|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
676 regex += 'Files|Depends-on|configure\\.ac-early|configure\\.ac|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
677 regex += 'Makefile\\.am|Include|Link|License|Maintainer):$'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
678 pattern = compiler(regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
679 findflag = pattern.findall(line)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
680 if findflag:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
681 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
682 parts += [line]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
683 result = ''.join(parts)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
684 self.cache['makefile-conditional'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
685 return(self.cache['makefile-conditional'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
686
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
687 def getAutomakeSnippet_Unconditional(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
688 '''GLModule.getAutomakeSnippet_Unconditional() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
689
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
690 Return unconditional automake snippet.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
691 GLConfig: auxdir, ac_version.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
692 auxdir = self.config['auxdir']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
693 ac_version = self.config['ac_version']
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
694 result = string()
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
695 if 'makefile-unconditional' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
696 if self.isTests():
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
697 files = self.getFiles()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
698 extra_files = filter_filelist(constants.NL, files,
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
699 'tests/', '', 'tests/', '').split(constants.NL)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
700 extra_files = sorted(set(extra_files))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
701 if extra_files:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
702 result += string('EXTRA_DIST += %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
703 ' '.join(extra_files))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
704 result += constants.NL * 2
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
705 else: # if not tests module
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
706 # TODO: unconditional automake snippet for nontests modules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
707 snippet = self.getAutomakeSnippet_Conditional()
19160
b3776437735c gnulib-tool.py: Define and use two new global functions.
Bruno Haible <bruno@clisp.org>
parents: 19150
diff changeset
708 snippet = constants.combine_lines(snippet)
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
709 pattern = compiler(
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
710 '^lib_SOURCES[\t ]*\\+=[\t ]*(.*?)$', re.S | re.M)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
711 mentioned_files = pattern.findall(snippet)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
712 if mentioned_files != list():
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
713 mentioned_files = mentioned_files[-1].split(' ')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
714 mentioned_files = [f.strip() for f in mentioned_files]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
715 mentioned_files = [f for f in mentioned_files if f != '']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
716 mentioned_files = sorted(set(mentioned_files))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
717 all_files = self.getFiles()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
718 lib_files = filter_filelist(constants.NL, all_files,
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
719 'lib/', '', 'lib/', '').split(constants.NL)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
720 extra_files = [
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
721 f for f in lib_files if f not in mentioned_files]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
722 extra_files = sorted(set(extra_files))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
723 if extra_files != [''] and extra_files:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
724 result += string('EXTRA_DIST += %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
725 ' '.join(extra_files))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
726 result += '\n\n'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
727 # Synthesize also an EXTRA_lib_SOURCES augmentation
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
728 if str(self) != 'relocatable-prog-wrapper' and str(self) != 'pt_chown':
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
729 extra_files = filter_filelist(constants.NL, extra_files,
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
730 '', '.c', '', '').split(constants.NL)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
731 extra_files = sorted(set(extra_files))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
732 if extra_files != ['']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
733 result += string('EXTRA_lib_SOURCES += %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
734 ' '.join(extra_files))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
735 result += '\n\n'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
736 # Synthesize an EXTRA_DIST augmentation also for the files in build-aux
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
737 buildaux_files = filter_filelist(constants.NL, all_files,
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
738 'build-aux/', '', 'build-aux/', '').split(constants.NL)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
739 buildaux_files = sorted(set(buildaux_files))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
740 if buildaux_files != ['']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
741 buildaux_files = ''.join(buildaux_files)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
742 buildaux_files = joinpath(
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
743 '$(top_srcdir)', auxdir, buildaux_files)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
744 result += string('EXTRA_DIST += %s' % buildaux_files)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
745 result += '\n\n'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
746 # Synthesize an EXTRA_DIST augmentation also for the files from top/.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
747 top_files = filter_filelist(constants.NL, all_files,
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
748 'top/', '', 'top/', '').split(constants.NL)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
749 top_files = sorted(set(top_files))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
750 if top_files != ['']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
751 top_files = ''.join(top_files)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
752 top_files = joinpath('$(top_srcdir)', top_files)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
753 result += string('EXTRA_DIST += %s' % top_files)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
754 result += '\n\n'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
755 result = constants.nlconvert(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
756 self.cache['makefile-unconditional'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
757 return(self.cache['makefile-unconditional'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
758
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
759 def getInclude(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
760 '''GLModule.getInclude() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
761
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
762 Return include directive.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
763 section = 'Include:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
764 if 'include' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
765 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
766 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
767 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
768 snippet = self.content.split(section)[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
769 snippet = snippet.replace('\r\n', '\n')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
770 lines = ['%s\n' % line for line in snippet.split('\n')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
771 parts = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
772 for line in lines:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
773 regex = '^(Description|Comment|Status|Notice|Applicability|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
774 regex += 'Files|Depends-on|configure\\.ac-early|configure\\.ac|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
775 regex += 'Makefile\\.am|Include|Link|License|Maintainer):$'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
776 pattern = compiler(regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
777 findflag = pattern.findall(line)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
778 if findflag:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
779 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
780 parts += [line]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
781 result = ''.join(parts)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
782 result = result.strip()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
783 pattern = compiler('^(["<].*?[>"])', re.S | re.M)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
784 result = pattern.sub('#include \\1', result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
785 self.cache['include'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
786 return(self.cache['include'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
787
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
788 def getLink(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
789 '''GLModule.getLink() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
790
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
791 Return link directive.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
792 section = 'Link:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
793 if 'link' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
794 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
795 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
796 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
797 snippet = self.content.split(section)[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
798 snippet = snippet.replace('\r\n', '\n')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
799 lines = ['%s\n' % line for line in snippet.split('\n')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
800 parts = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
801 for line in lines:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
802 regex = '^(Description|Comment|Status|Notice|Applicability|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
803 regex += 'Files|Depends-on|configure\\.ac-early|configure\\.ac|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
804 regex += 'Makefile\\.am|Include|Link|License|Maintainer):$'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
805 pattern = compiler(regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
806 findflag = pattern.findall(line)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
807 if findflag:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
808 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
809 parts += [line]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
810 parts = [part.strip() for part in parts if part.strip()]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
811 result = ''.join(parts)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
812 self.cache['link'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
813 return(self.cache['link'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
814
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
815 def getLicense(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
816 '''GLModule.getLicense(self) -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
817
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
818 Get license and warn user if module lacks a license.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
819 license = self.getLicense_Raw()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
820 if not self.isTests():
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
821 if not license:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
822 if self.config['errors']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
823 raise(GLError(18, string(self)))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
824 else: # if not self.config['errors']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
825 sys.stderr.write('gnulib-tool: warning: ')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
826 sys.stderr.write('module %s lacks a license\n' % str(self))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
827 if not license:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
828 license = 'GPL'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
829 return(license)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
830
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
831 def getLicense_Raw(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
832 '''GLModule.getLicense_Raw() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
833
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
834 Return module license.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
835 section = 'License:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
836 if 'license' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
837 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
838 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
839 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
840 pattern = '^%s[\t ]*(.*?)%s' % (section, self.regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
841 pattern = compiler(pattern, re.S | re.M)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
842 result = pattern.findall(self.content)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
843 if type(result) is list:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
844 if not result:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
845 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
846 else: # if result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
847 result = result[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
848 result = result.strip()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
849 self.cache['license'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
850 return(self.cache['license'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
851
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
852 def getMaintainer(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
853 '''GLModule.getMaintainer() -> string
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
854
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
855 Return maintainer directive.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
856 section = 'Maintainer:'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
857 if 'maintainer' not in self.cache:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
858 if section not in self.content:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
859 result = string()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
860 else: # if section in self.content
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
861 snippet = self.content.split(section)[-1]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
862 snippet = snippet.replace('\r\n', '\n')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
863 lines = ['%s\n' % line for line in snippet.split('\n')]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
864 parts = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
865 for line in lines:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
866 regex = '^(Description|Comment|Status|Notice|Applicability|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
867 regex += 'Files|Depends-on|configure\\.ac-early|configure\\.ac|'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
868 regex += 'Makefile\\.am|Include|Link|License|Maintainer):$'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
869 pattern = compiler(regex)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
870 findflag = pattern.findall(line)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
871 if findflag:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
872 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
873 parts += [line]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
874 result = ''.join(parts)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
875 result = result.strip()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
876 self.cache['maintainer'] = result
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
877 return(self.cache['maintainer'])
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
878
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
879
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
880 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
881 # Define GLModuleTable class
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
882 #===============================================================================
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
883 class GLModuleTable(object):
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
884 '''GLModuleTable is used to work with the list of the modules.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
885
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
886 def __init__(self, config, avoids=list()):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
887 '''GLModuleTable.__init__(config, avoids) -> GLModuleTable
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
888
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
889 Create new GLModuleTable instance. If modules are specified, then add
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
890 every module from iterable as unconditional module. If avoids is specified,
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
891 then in transitive_closure every dependency which is in avoids won't be
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
892 included in the final modules list. If testflags iterable is enabled, then
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
893 don't add module which status is in the testflags. If conddeps are enabled,
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
894 then store condition for each dependency if it has a condition.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
895 The only necessary argument is localdir, which is needed just to create
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
896 modulesystem instance to look for dependencies.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
897 self.avoids = list() # Avoids
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
898 self.dependers = dict() # Dependencies
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
899 self.conditionals = dict() # Conditional modules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
900 self.unconditionals = dict() # Unconditional modules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
901 self.base_modules = list() # Base modules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
902 self.main_modules = list() # Main modules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
903 self.tests_modules = list() # Tests modules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
904 self.final_modules = list() # Final modules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
905 if type(config) is not GLConfig:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
906 raise(TypeError('config must be a GLConfig, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
907 type(config).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
908 for avoid in avoids:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
909 if type(avoid) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
910 raise(TypeError('each avoid must be a GLModule instance'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
911 self.avoids += [avoids]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
912 self.config = config
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
913 self.filesystem = GLFileSystem(self.config)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
914 self.modulesystem = GLModuleSystem(self.config)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
915
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
916 def __repr__(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
917 '''x.__repr__() <==> repr(x)'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
918 result = '<pygnulib.GLModuleTable %s>' % hex(id(self))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
919 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
920
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
921 def __getitem__(self, y):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
922 '''x.__getitem__(y) <==> x[y]'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
923 if y in ['base', 'final', 'main', 'tests', 'avoids']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
924 if y == 'base':
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
925 return(self.getBaseModules())
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
926 elif y == 'final':
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
927 return(self.getFinalModules())
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
928 elif y == 'main':
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
929 return(self.getMainModules())
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
930 elif y == 'tests':
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
931 return(self.getTestsModules())
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
932 else: # if y == 'avoids'
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
933 return(self.getAvoids())
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
934 else: # if y is not in list
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
935 raise(KeyError('GLModuleTable does not contain key: %s' % repr(y)))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
936
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
937 def addConditional(self, parent, module, condition):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
938 '''GLModuleTable.addConditional(module, condition)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
939
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
940 Add new conditional dependency from parent to module with condition.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
941 if type(parent) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
942 raise(TypeError('parent must be a GLModule, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
943 type(parent).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
944 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
945 raise(TypeError('module must be a GLModule, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
946 type(module).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
947 if type(condition) is bytes or type(condition) is string \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
948 or condition == True:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
949 if type(condition) is bytes:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
950 condition = condition.decode(ENCS['default'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
951 else: # if condition has not bytes or string type or is not True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
952 raise(TypeError('condition must be a string or True, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
953 type(condition).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
954 if not str(module) in self.unconditionals:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
955 if str(module) not in self.dependers:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
956 self.dependers[module] = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
957 self.dependers[module] += [module]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
958 key = '%s---%s' % (str(parent), str(module))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
959 self.conditionals[key] = condition
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
960
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
961 def addUnconditional(self, module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
962 '''GLModuleTable.addUnconditional(module)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
963
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
964 Add module as unconditional dependency.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
965 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
966 raise(TypeError('module must be a GLModule, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
967 type(module).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
968 if str(module) in self.dependers:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
969 self.dependers.pop(str(module))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
970 self.unconditionals[str(module)] = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
971
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
972 def isConditional(self, module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
973 '''GLModuleTable.isConditional(module) -> bool
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
974
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
975 Check whether module is unconditional.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
976 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
977 raise(TypeError('module must be a GLModule, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
978 type(module).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
979 result = str(module) in self.dependers
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
980 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
981
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
982 def getCondition(self, parent, module):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
983 '''GLModuleTable.getCondition(module) -> string or True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
984
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
985 Return condition from parent to module. Condition can be string or True.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
986 If module is not in the list of conddeps, method returns None.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
987 if type(parent) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
988 raise(TypeError('parent must be a GLModule, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
989 type(parent).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
990 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
991 raise(TypeError('module must be a GLModule, not %s' %
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
992 type(module).__name__))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
993 key = '%s---%s' % (str(parent), str(module))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
994 result = None
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
995 if key in self.conditionals:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
996 result = self.conditionals[key]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
997 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
998
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
999 def transitive_closure(self, modules):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1000 '''GLModuleTable.transitive_closure(modules) -> list
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1001
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1002 Use transitive closure to add module and its dependencies. Add every
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1003 module and its dependencies from modules list, but do not add dependencies
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1004 which contain in avoids list. If any testflag is enabled, then do not add
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1005 dependencies which have the status as this flag. If conddeps are enabled,
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1006 then store condition for each dependency if it has a condition. This method
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1007 is used to update final list of modules. Method returns list of modules.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1008 GLConfig: testflags.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1009 for module in modules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1010 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1011 raise(TypeError('each module must be a GLModule instance'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1012 handledmodules = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1013 inmodules = modules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1014 outmodules = list()
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
1015 if self.config['conddeps']:
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1016 for module in modules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1017 self.addUnconditional(module)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1018 while inmodules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1019 inmodules_this_round = inmodules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1020 inmodules = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1021 for module in inmodules_this_round:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1022 outmodules += [module]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1023 if self.config['conddeps']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1024 automake_snippet = \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1025 module.getAutomakeSnippet_Conditional()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1026 pattern = compiler('^if')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1027 if not pattern.findall(automake_snippet):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1028 self.addUnconditional(module)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1029 conditional = self.isConditional(module)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1030 dependencies = module.getDependencies()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1031 depmodules = [pair[0] for pair in dependencies]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1032 conditions = [pair[1] for pair in dependencies]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1033 if TESTS['tests'] in self.config['testflags']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1034 testsname = module.getTestsName()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1035 if self.modulesystem.exists(testsname):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1036 testsmodule = self.modulesystem.find(testsname)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1037 depmodules += [testsmodule]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1038 conditions += [None]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1039 for depmodule in depmodules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1040 include = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1041 includes = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1042 status = depmodule.getStatus()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1043 for word in status:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1044 if word == 'obsolete':
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1045 if TESTS['obsolete'] in self.config['testflags'] or \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1046 TESTS['all-test'] in self.config['testflags']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1047 includes += [False]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1048 elif word == 'c++-test':
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1049 if TESTS['c++-test'] in self.config['testflags'] or \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1050 TESTS['all-test'] in self.config['testflags']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1051 includes += [False]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1052 elif word == 'longrunning-test':
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1053 if TESTS['longrunning-test'] in self.config['testflags'] or \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1054 TESTS['all-test'] in self.config['testflags']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1055 includes += [False]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1056 elif word == 'privileged-test':
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1057 if TESTS['privileged-test'] in self.config['testflags'] or \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1058 TESTS['all-test'] in self.config['testflags']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1059 includes += [False]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1060 elif word == 'all-test':
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1061 if TESTS['all-test'] in self.config['testflags'] or \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1062 TESTS['all-test'] in self.config['testflags']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1063 includes += [False]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1064 else: # if any other word
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1065 if word.endswith('-tests'):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1066 if TESTS['all-test'] in self.config['testflags']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1067 includes += [False]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1068 include = any(includes)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1069 if include and depmodule not in self.avoids:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1070 inmodules += [depmodule]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1071 if self.config['conddeps']:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1072 index = depmodules.index(depmodule)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1073 condition = conditions[index]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1074 if condition:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1075 self.addConditional(
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1076 module, depmodule, condition)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1077 else: # if condition
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1078 if conditional:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1079 self.addConditional(
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1080 module, depmodule, True)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1081 else: # if not conditional
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1082 self.addUnconditional(module)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1083 listing = list() # Create empty list
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1084 inmodules = sorted(set(inmodules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1085 handledmodules = sorted(set(handledmodules + inmodules_this_round))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1086 inmodules = \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1087 [ # Begin to filter inmodules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1088 module for module in inmodules if module not in handledmodules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1089 ] # Finish to filter inmodules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1090 inmodules = sorted(set(inmodules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1091 modules = sorted(set(outmodules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1092 self.modules = modules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1093 return(list(modules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1094
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1095 def transitive_closure_separately(self, basemodules, finalmodules):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1096 '''GLModuleTable.transitive_closure_separately(*args, **kwargs) -> tuple
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1097
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1098 Determine main module list and tests-related module list separately.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1099 The main module list is the transitive closure of the specified modules,
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1100 ignoring tests modules. Its lib/* sources go into $sourcebase/. If lgpl is
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1101 specified, it will consist only of LGPLed source.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1102 The tests-related module list is the transitive closure of the specified
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1103 modules, including tests modules, minus the main module list excluding
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1104 modules of applicability 'all'. Its lib/* sources (brought in through
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1105 dependencies of *-tests modules) go into $testsbase/. It may contain GPLed
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1106 source, even if lgpl is specified.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1107 Arguments are basemodules and finalmodules, where basemodules argument
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1108 represents modules specified by user and finalmodules represents modules
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1109 list after previous transitive_closure.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1110 Method returns tuple which contains two lists: the list of main modules and
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1111 the list of tests-related modules. Both lists contain dependencies.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1112 GLConfig: testflags.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1113 inctests = False
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1114 main_modules = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1115 tests_modules = list()
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
1116 if TESTS['tests'] in self.config['testflags']:
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1117 self.config['testflags'].pop(TESTS['tests'])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1118 inctests = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1119 for module in basemodules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1120 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1121 raise(TypeError('each module must be a GLModule instance'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1122 for module in finalmodules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1123 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1124 raise(TypeError('each module must be a GLModule instance'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1125 main_modules = self.transitive_closure(basemodules)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1126 tests_modules = \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1127 [m for m in finalmodules if m not in main_modules] + \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1128 [m for m in main_modules if m.getApplicability() != 'main']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1129 tests_modules = sorted(set(tests_modules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1130 if inctests:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1131 testflags = sorted(
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1132 set(self.config['testflags'] + [TESTS['tests']]))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1133 self.config.setTestFlags(testflags)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1134 result = tuple([main_modules, tests_modules])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1135 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1136
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1137 def add_dummy(self, modules):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1138 '''GLModuleTable.add_dummy(modules) -> list
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1139
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1140 Add dummy package to list of modules if dummy package is needed. If not,
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1141 return original list of modules.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1142 GLConfig: auxdir, ac_version.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1143 auxdir = self.config['auxdir']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1144 ac_version = self.config['ac_version']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1145 have_lib_sources = False
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1146 for module in modules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1147 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1148 raise(TypeError('each module must be a GLModule instance'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1149 snippet = module.getAutomakeSnippet()
19160
b3776437735c gnulib-tool.py: Define and use two new global functions.
Bruno Haible <bruno@clisp.org>
parents: 19150
diff changeset
1150 snippet = constants.remove_backslash_newline(snippet)
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1151 pattern = compiler(
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1152 '^lib_SOURCES[\t ]*\\+=[\t ]*(.*?)$', re.S | re.M)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1153 files = pattern.findall(snippet)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1154 if files: # if source files were found
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1155 files = files[-1].split(' ')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1156 for file in files:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1157 if not file.endswith('.h'):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1158 have_lib_sources = True
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1159 break
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1160 if not have_lib_sources:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1161 dummy = self.modulesystem.find('dummy')
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1162 modules = sorted(set(modules + [dummy]))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1163 return(list(modules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1164
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1165 def filelist(self, modules):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1166 '''GLModuleTable.filelist(modules) -> list
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1167
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1168 Determine the final file list for the given list of modules. The list of
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1169 modules must already include dependencies.
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1170 GLConfig: ac_version.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1171 ac_version = self.config['ac_version']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1172 filelist = list()
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1173 for module in modules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1174 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1175 raise(TypeError('each module must be a GLModule instance'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1176 listings = [module.getFiles() for module in modules]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1177 for listing in listings:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1178 for file in listing:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1179 if file not in filelist:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1180 filelist += [file]
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1181 return(filelist)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1182
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1183 def filelist_separately(self, main_modules, tests_modules):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1184 '''GLModuleTable.filelist_separately(**kwargs) -> list
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
1185
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1186 Determine the final file lists. They must be computed separately, because
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1187 files in lib/* go into $sourcebase/ if they are in the main file list but
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1188 into $testsbase/ if they are in the tests-related file list. Furthermore
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1189 lib/dummy.c can be in both.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1190 ac_version = self.config['ac_version']
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1191 main_filelist = self.filelist(main_modules)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1192 tests_filelist = self.filelist(tests_modules)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1193 tests_filelist = \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1194 [ # Begin to sort filelist
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1195 file.replace('lib/', 'tests=lib/', 1) \
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1196 if file.startswith('lib/') else file
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1197 for file in tests_filelist
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1198 ] # Finish to sort filelist
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1199 result = tuple([main_filelist, tests_filelist])
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1200 return(result)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1201
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1202 def getAvoids(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1203 '''GLModuleTable.getAvoids() -> list
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
1204
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1205 Return list of avoids.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1206 return(list(self.avoids))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1207
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1208 def setAvoids(self, modules):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1209 '''GLModuleTable.setAvoids(modules)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1210
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1211 Specify list of avoids.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1212 for module in modules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1213 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1214 raise(TypeError('each module must be a GLModule instance'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1215 self.avoids = sorted(set(modules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1216
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1217 def getBaseModules(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1218 '''GLModuleTable.getBaseModules() -> list
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1219
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1220 Return list of base modules.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1221 return(list(self.base_modules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1222
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1223 def setBaseModules(self, modules):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1224 '''GLModuleTable.setBaseModules(modules)
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
1225
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1226 Specify list of base modules.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1227 for module in modules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1228 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1229 raise(TypeError('each module must be a GLModule instance'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1230 self.base_modules = sorted(set(modules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1231
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1232 def getFinalModules(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1233 '''GLModuleTable.getFinalModules() -> list
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1234
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1235 Return list of final modules.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1236 return(list(self.final_modules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1237
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1238 def setFinalModules(self, modules):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1239 '''GLModuleTable.setFinalModules(modules)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1240
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1241 Specify list of final modules.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1242 for module in modules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1243 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1244 raise(TypeError('each module must be a GLModule instance'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1245 self.final_modules = sorted(set(modules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1246
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1247 def getMainModules(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1248 '''GLModuleTable.getMainModules() -> list
19131
7d58dc0839dd [pygnulib] initial merge (including some small bug fixes)
Dmitry Selyutin <ghostmansd@gmail.com>
parents:
diff changeset
1249
19135
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1250 Return list of main modules.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1251 return(list(self.main_modules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1252
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1253 def setMainModules(self, modules):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1254 '''GLModuleTable.setMainModules(modules)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1255
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1256 Specify list of main modules.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1257 for module in modules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1258 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1259 raise(TypeError('each module must be a GLModule instance'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1260 self.main_modules = sorted(set(modules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1261
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1262 def getTestsModules(self):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1263 '''GLModuleTable.getTestsModules() -> list
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1264
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1265 Return list of tests modules.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1266 return(list(self.tests_modules))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1267
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1268 def setTestsModules(self, modules):
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1269 '''GLModuleTable.setTestsModules(modules)
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1270
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1271 Specify list of tests modules.'''
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1272 for module in modules:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1273 if type(module) is not GLModule:
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1274 raise(TypeError('each module must be a GLModule instance'))
b5117d36849c [pygnulib] autopep8 (fixing indentation, style, etc.)
Dmitry Selyutin <ghostmansd@gmail.com>
parents: 19133
diff changeset
1275 self.tests_modules = sorted(set(modules))