diff options
Diffstat (limited to 'meta/recipes-devtools/python/python3')
3 files changed, 1563 insertions, 0 deletions
diff --git a/meta/recipes-devtools/python/python3/create_manifest3.py b/meta/recipes-devtools/python/python3/create_manifest3.py new file mode 100644 index 0000000000..ead27e9fcc --- /dev/null +++ b/meta/recipes-devtools/python/python3/create_manifest3.py | |||
| @@ -0,0 +1,321 @@ | |||
| 1 | # This script is used as a bitbake task to create a new python manifest | ||
| 2 | # $ bitbake python -c create_manifest | ||
| 3 | # | ||
| 4 | # Our goal is to keep python-core as small as posible and add other python | ||
| 5 | # packages only when the user needs them, hence why we split upstream python | ||
| 6 | # into several packages. | ||
| 7 | # | ||
| 8 | # In a very simplistic way what this does is: | ||
| 9 | # Launch python and see specifically what is required for it to run at a minimum | ||
| 10 | # | ||
| 11 | # Go through the python-manifest file and launch a separate task for every single | ||
| 12 | # one of the files on each package, this task will check what was required for that | ||
| 13 | # specific module to run, these modules will be called dependencies. | ||
| 14 | # The output of such task will be a list of the modules or dependencies that were | ||
| 15 | # found for that file. | ||
| 16 | # | ||
| 17 | # Such output will be parsed by this script, we will look for each dependency on the | ||
| 18 | # manifest and if we find that another package already includes it, then we will add | ||
| 19 | # that package as an RDEPENDS to the package we are currently checking; in case we dont | ||
| 20 | # find the current dependency on any other package we will add it to the current package | ||
| 21 | # as part of FILES. | ||
| 22 | # | ||
| 23 | # | ||
| 24 | # This way we will create a new manifest from the data structure that was built during | ||
| 25 | # this process, ont this new manifest each package will contain specifically only | ||
| 26 | # what it needs to run. | ||
| 27 | # | ||
| 28 | # There are some caveats which we try to deal with, such as repeated files on different | ||
| 29 | # packages, packages that include folders, wildcards, and special packages. | ||
| 30 | # Its also important to note that this method only works for python files, and shared | ||
| 31 | # libraries. Static libraries, header files and binaries need to be dealt with manually. | ||
| 32 | # | ||
| 33 | # This script differs from its python2 version mostly on how shared libraries are handled | ||
| 34 | # The manifest file for python3 has an extra field which contains the cached files for | ||
| 35 | # each package. | ||
| 36 | # Tha method to handle cached files does not work when a module includes a folder which | ||
| 37 | # itself contains the pycache folder, gladly this is almost never the case. | ||
| 38 | # | ||
| 39 | # Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29@gmail.com> | ||
| 40 | |||
| 41 | |||
| 42 | import sys | ||
| 43 | import subprocess | ||
| 44 | import json | ||
| 45 | import os | ||
| 46 | |||
| 47 | # Hack to get native python search path (for folders), not fond of it but it works for now | ||
| 48 | pivot='recipe-sysroot-native' | ||
| 49 | for p in sys.path: | ||
| 50 | if pivot in p: | ||
| 51 | nativelibfolder=p[:p.find(pivot)+len(pivot)] | ||
| 52 | |||
| 53 | # Empty dict to hold the whole manifest | ||
| 54 | new_manifest = {} | ||
| 55 | |||
| 56 | # Check for repeated files, folders and wildcards | ||
| 57 | allfiles=[] | ||
| 58 | repeated=[] | ||
| 59 | wildcards=[] | ||
| 60 | |||
| 61 | hasfolders=[] | ||
| 62 | allfolders=[] | ||
| 63 | |||
| 64 | def isFolder(value): | ||
| 65 | if os.path.isdir(value.replace('${libdir}',nativelibfolder+'/usr/lib')) or os.path.isdir(value.replace('${libdir}',nativelibfolder+'/usr/lib64')) or os.path.isdir(value.replace('${libdir}',nativelibfolder+'/usr/lib32')): | ||
| 66 | return True | ||
| 67 | else: | ||
| 68 | return False | ||
| 69 | |||
| 70 | def isCached(item): | ||
| 71 | if '__pycache__' in item: | ||
| 72 | return True | ||
| 73 | else: | ||
| 74 | return False | ||
| 75 | |||
| 76 | # Read existing JSON manifest | ||
| 77 | with open('python3-manifest.json') as manifest: | ||
| 78 | old_manifest=json.load(manifest) | ||
| 79 | |||
| 80 | |||
| 81 | # First pass to get core-package functionality, because we base everything on the fact that core is actually working | ||
| 82 | # Not exactly the same so it should not be a function | ||
| 83 | print ('Getting dependencies for core package:') | ||
| 84 | |||
| 85 | # Special call to check for core package | ||
| 86 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package']).decode('utf8') | ||
| 87 | for item in output.split(): | ||
| 88 | # We append it so it doesnt hurt what we currently have: | ||
| 89 | if isCached(item): | ||
| 90 | if item not in old_manifest['core']['cached']: | ||
| 91 | # We use the same data structure since its the one which will be used to check | ||
| 92 | # dependencies for other packages | ||
| 93 | old_manifest['core']['cached'].append(item) | ||
| 94 | else: | ||
| 95 | if item not in old_manifest['core']['files']: | ||
| 96 | # We use the same data structure since its the one which will be used to check | ||
| 97 | # dependencies for other packages | ||
| 98 | old_manifest['core']['files'].append(item) | ||
| 99 | |||
| 100 | for value in old_manifest['core']['files']: | ||
| 101 | # Ignore folders, since we don't import those, difficult to handle multilib | ||
| 102 | if isFolder(value): | ||
| 103 | # Pass it directly | ||
| 104 | if isCached(value): | ||
| 105 | if value not in old_manifest['core']['cached']: | ||
| 106 | old_manifest['core']['cached'].append(value) | ||
| 107 | else: | ||
| 108 | if value not in old_manifest['core']['files']: | ||
| 109 | old_manifest['core']['files'].append(value) | ||
| 110 | continue | ||
| 111 | # Ignore binaries, since we don't import those, assume it was added correctly (manually) | ||
| 112 | if '${bindir}' in value: | ||
| 113 | # Pass it directly | ||
| 114 | if value not in old_manifest['core']['files']: | ||
| 115 | old_manifest['core']['files'].append(value) | ||
| 116 | continue | ||
| 117 | # Ignore empty values | ||
| 118 | if value == '': | ||
| 119 | continue | ||
| 120 | if '${includedir}' in value: | ||
| 121 | if value not in old_manifest['core']['files']: | ||
| 122 | old_manifest['core']['files'].append(value) | ||
| 123 | continue | ||
| 124 | # Get module name , shouldnt be affected by libdir/bindir | ||
| 125 | value = os.path.splitext(os.path.basename(os.path.normpath(value)))[0] | ||
| 126 | |||
| 127 | |||
| 128 | # Launch separate task for each module for deterministic behavior | ||
| 129 | # Each module will only import what is necessary for it to work in specific | ||
| 130 | print ('Getting dependencies for module: %s' % value) | ||
| 131 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % value]).decode('utf8') | ||
| 132 | print (output) | ||
| 133 | for item in output.split(): | ||
| 134 | # We append it so it doesnt hurt what we currently have: | ||
| 135 | if isCached(item): | ||
| 136 | if item not in old_manifest['core']['cached']: | ||
| 137 | # We use the same data structure since its the one which will be used to check | ||
| 138 | # dependencies for other packages | ||
| 139 | old_manifest['core']['cached'].append(item) | ||
| 140 | else: | ||
| 141 | if item not in old_manifest['core']['files']: | ||
| 142 | # We use the same data structure since its the one which will be used to check | ||
| 143 | # dependencies for other packages | ||
| 144 | old_manifest['core']['files'].append(item) | ||
| 145 | |||
| 146 | |||
| 147 | # We check which packages include folders | ||
| 148 | for key in old_manifest: | ||
| 149 | for value in old_manifest[key]['files']: | ||
| 150 | # Ignore folders, since we don't import those, difficult to handle multilib | ||
| 151 | if isFolder(value): | ||
| 152 | print ('%s is a folder' % value) | ||
| 153 | if key not in hasfolders: | ||
| 154 | hasfolders.append(key) | ||
| 155 | if value not in allfolders: | ||
| 156 | allfolders.append(value) | ||
| 157 | |||
| 158 | for key in old_manifest: | ||
| 159 | # Use an empty dict as data structure to hold data for each package and fill it up | ||
| 160 | new_manifest[key]={} | ||
| 161 | new_manifest[key]['files']=[] | ||
| 162 | |||
| 163 | new_manifest[key]['rdepends']=[] | ||
| 164 | # All packages should depend on core | ||
| 165 | if key != 'core': | ||
| 166 | new_manifest[key]['rdepends'].append('core') | ||
| 167 | new_manifest[key]['cached']=[] | ||
| 168 | else: | ||
| 169 | new_manifest[key]['cached']=old_manifest[key]['cached'] | ||
| 170 | new_manifest[key]['summary']=old_manifest[key]['summary'] | ||
| 171 | |||
| 172 | # Handle special cases, we assume that when they were manually added | ||
| 173 | # to the manifest we knew what we were doing. | ||
| 174 | print ('Handling package %s' % key) | ||
| 175 | special_packages=['misc', 'modules', 'dev'] | ||
| 176 | if key in special_packages or 'staticdev' in key: | ||
| 177 | print('Passing %s package directly' % key) | ||
| 178 | new_manifest[key]=old_manifest[key] | ||
| 179 | continue | ||
| 180 | |||
| 181 | for value in old_manifest[key]['files']: | ||
| 182 | # We already handled core on the first pass | ||
| 183 | if key == 'core': | ||
| 184 | new_manifest[key]['files'].append(value) | ||
| 185 | continue | ||
| 186 | # Ignore folders, since we don't import those, difficult to handle multilib | ||
| 187 | if isFolder(value): | ||
| 188 | # Pass folders directly | ||
| 189 | new_manifest[key]['files'].append(value) | ||
| 190 | # Ignore binaries, since we don't import those | ||
| 191 | if '${bindir}' in value: | ||
| 192 | # Pass it directly to the new manifest data structure | ||
| 193 | if value not in new_manifest[key]['files']: | ||
| 194 | new_manifest[key]['files'].append(value) | ||
| 195 | continue | ||
| 196 | # Ignore empty values | ||
| 197 | if value == '': | ||
| 198 | continue | ||
| 199 | if '${includedir}' in value: | ||
| 200 | if value not in new_manifest[key]['files']: | ||
| 201 | new_manifest[key]['files'].append(value) | ||
| 202 | continue | ||
| 203 | # Get module name , shouldnt be affected by libdir/bindir | ||
| 204 | value = os.path.splitext(os.path.basename(os.path.normpath(value)))[0] | ||
| 205 | |||
| 206 | # Launch separate task for each module for deterministic behavior | ||
| 207 | # Each module will only import what is necessary for it to work in specific | ||
| 208 | print ('Getting dependencies for module: %s' % value) | ||
| 209 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % value]).decode('utf8') | ||
| 210 | # We can print dependencies for debugging purposes | ||
| 211 | print (output) | ||
| 212 | # Output will have all dependencies | ||
| 213 | for item in output.split(): | ||
| 214 | |||
| 215 | # Warning: This first part is ugly | ||
| 216 | # One of the dependencies that was found, could be inside of one of the folders included by another package | ||
| 217 | # We need to check if this happens so we can add the package containing the folder as an rdependency | ||
| 218 | # e.g. Folder encodings contained in codecs | ||
| 219 | # This would be solved if no packages included any folders | ||
| 220 | |||
| 221 | # This can be done in two ways: | ||
| 222 | # 1 - We assume that if we take out the filename from the path we would get | ||
| 223 | # the folder string, then we would check if folder string is in the list of folders | ||
| 224 | # This would not work if a package contains a folder which contains another folder | ||
| 225 | # e.g. path/folder1/folder2/filename folder_string= path/folder1/folder2 | ||
| 226 | # folder_string would not match any value contained in the list of folders | ||
| 227 | # | ||
| 228 | # 2 - We do it the other way around, checking if the folder is contained in the path | ||
| 229 | # e.g. path/folder1/folder2/filename folder_string= path/folder1/folder2 | ||
| 230 | # is folder_string inside path/folder1/folder2/filename?, | ||
| 231 | # Yes, it works, but we waste a couple of milliseconds. | ||
| 232 | |||
| 233 | inFolders=False | ||
| 234 | for folder in allfolders: | ||
| 235 | if folder in item: | ||
| 236 | inFolders = True # Did we find a folder? | ||
| 237 | folderFound = False # Second flag to break inner for | ||
| 238 | # Loop only through packages which contain folders | ||
| 239 | for keyfolder in hasfolders: | ||
| 240 | if (folderFound == False): | ||
| 241 | #print('Checking folder %s on package %s' % (item,keyfolder)) | ||
| 242 | for file_folder in old_manifest[keyfolder]['files'] or file_folder in old_manifest[keyfolder]['cached']: | ||
| 243 | if file_folder==folder: | ||
| 244 | print ('%s found in %s' % (folder, keyfolder)) | ||
| 245 | folderFound = True | ||
| 246 | if keyfolder not in new_manifest[key]['rdepends'] and keyfolder != key: | ||
| 247 | new_manifest[key]['rdepends'].append(keyfolder) | ||
| 248 | |||
| 249 | else: | ||
| 250 | break | ||
| 251 | |||
| 252 | # A folder was found so we're done with this item, we can go on | ||
| 253 | if inFolders: | ||
| 254 | continue | ||
| 255 | |||
| 256 | # We might already have it on the dictionary since it could depend on a (previously checked) module | ||
| 257 | if item not in new_manifest[key]['files'] and item not in new_manifest[key]['cached']: | ||
| 258 | # Handle core as a special package, we already did it so we pass it to NEW data structure directly | ||
| 259 | if key=='core': | ||
| 260 | print('Adding %s to %s FILES' % (item, key)) | ||
| 261 | if item.endswith('*'): | ||
| 262 | wildcards.append(item) | ||
| 263 | if isCached(item): | ||
| 264 | new_manifest[key]['cached'].append(item) | ||
| 265 | else: | ||
| 266 | new_manifest[key]['files'].append(item) | ||
| 267 | |||
| 268 | # Check for repeated files | ||
| 269 | if item not in allfiles: | ||
| 270 | allfiles.append(item) | ||
| 271 | else: | ||
| 272 | repeated.append(item) | ||
| 273 | |||
| 274 | else: | ||
| 275 | |||
| 276 | # Check if this dependency is already contained on another package, so we add it | ||
| 277 | # as an RDEPENDS, or if its not, it means it should be contained on the current | ||
| 278 | # package, so we should add it to FILES | ||
| 279 | for newkey in old_manifest: | ||
| 280 | # Debug | ||
| 281 | #print('Checking %s ' % item + ' in %s' % newkey) | ||
| 282 | if item in old_manifest[newkey]['files'] or item in old_manifest[newkey]['cached']: | ||
| 283 | # Since were nesting, we need to check its not the same key | ||
| 284 | if(newkey!=key): | ||
| 285 | if newkey not in new_manifest[key]['rdepends']: | ||
| 286 | # Add it to the new manifest data struct | ||
| 287 | # Debug | ||
| 288 | print('Adding %s to %s RDEPENDS, because it contains %s' % (newkey, key, item)) | ||
| 289 | new_manifest[key]['rdepends'].append(newkey) | ||
| 290 | break | ||
| 291 | else: | ||
| 292 | # Debug | ||
| 293 | print('Adding %s to %s FILES' % (item, key)) | ||
| 294 | # Since it wasnt found on another package, its not an RDEP, so add it to FILES for this package | ||
| 295 | if isCached(item): | ||
| 296 | new_manifest[key]['cached'].append(item) | ||
| 297 | else: | ||
| 298 | new_manifest[key]['files'].append(item) | ||
| 299 | if item.endswith('*'): | ||
| 300 | wildcards.append(item) | ||
| 301 | if item not in allfiles: | ||
| 302 | allfiles.append(item) | ||
| 303 | else: | ||
| 304 | repeated.append(item) | ||
| 305 | |||
| 306 | print ('The following files are repeated (contained in more than one package), please check which package should get it:') | ||
| 307 | print (repeated) | ||
| 308 | print('The following files contain wildcards, please check they are necessary') | ||
| 309 | print(wildcards) | ||
| 310 | print('The following files contain folders, please check they are necessary') | ||
| 311 | print(hasfolders) | ||
| 312 | |||
| 313 | # Sort it just so it looks nicer | ||
| 314 | for key in new_manifest: | ||
| 315 | new_manifest[key]['files'].sort() | ||
| 316 | new_manifest[key]['cached'].sort() | ||
| 317 | new_manifest[key]['rdepends'].sort() | ||
| 318 | |||
| 319 | # Create the manifest from the data structure that was built | ||
| 320 | with open('python3-manifest.json.new','w') as outfile: | ||
| 321 | json.dump(new_manifest,outfile,sort_keys=True, indent=4) | ||
diff --git a/meta/recipes-devtools/python/python3/get_module_deps3.py b/meta/recipes-devtools/python/python3/get_module_deps3.py new file mode 100644 index 0000000000..fd12baad84 --- /dev/null +++ b/meta/recipes-devtools/python/python3/get_module_deps3.py | |||
| @@ -0,0 +1,146 @@ | |||
| 1 | # This script is launched on separate task for each python module | ||
| 2 | # It checks for dependencies for that specific module and prints | ||
| 3 | # them out, the output of this execution will have all dependencies | ||
| 4 | # for a specific module, which will be parsed an dealt on create_manifest.py | ||
| 5 | # | ||
| 6 | # Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29@gmail.com> | ||
| 7 | |||
| 8 | # We can get a log per module, for all the dependencies that were found, but its messy. | ||
| 9 | debug=False | ||
| 10 | |||
| 11 | import sys | ||
| 12 | |||
| 13 | # We can get a list of the modules which are currently required to run python | ||
| 14 | # so we run python-core and get its modules, we then import what we need | ||
| 15 | # and check what modules are currently running, if we substract them from the | ||
| 16 | # modules we had initially, we get the dependencies for the module we imported. | ||
| 17 | |||
| 18 | # We use importlib to achieve this, so we also need to know what modules importlib needs | ||
| 19 | import importlib | ||
| 20 | |||
| 21 | core_deps=set(sys.modules) | ||
| 22 | |||
| 23 | def fix_path(dep_path): | ||
| 24 | import os | ||
| 25 | # We DONT want the path on our HOST system | ||
| 26 | pivot='recipe-sysroot-native' | ||
| 27 | dep_path=dep_path[dep_path.find(pivot)+len(pivot):] | ||
| 28 | |||
| 29 | if '/usr/bin' in dep_path: | ||
| 30 | dep_path = dep_path.replace('/usr/bin''${bindir}') | ||
| 31 | |||
| 32 | # Handle multilib, is there a better way? | ||
| 33 | if '/usr/lib32' in dep_path: | ||
| 34 | dep_path = dep_path.replace('/usr/lib32','${libdir}') | ||
| 35 | if '/usr/lib64' in dep_path: | ||
| 36 | dep_path = dep_path.replace('/usr/lib64','${libdir}') | ||
| 37 | if '/usr/lib' in dep_path: | ||
| 38 | dep_path = dep_path.replace('/usr/lib','${libdir}') | ||
| 39 | if '/usr/include' in dep_path: | ||
| 40 | dep_path = dep_path.replace('/usr/include','${includedir}') | ||
| 41 | if '__init__.' in dep_path: | ||
| 42 | dep_path = os.path.split(dep_path)[0] | ||
| 43 | return dep_path | ||
| 44 | |||
| 45 | |||
| 46 | # Module to import was passed as an argument | ||
| 47 | current_module = str(sys.argv[1]).rstrip() | ||
| 48 | if(debug==True): | ||
| 49 | log = open('log_%s' % current_module,'w') | ||
| 50 | log.write('Module %s generated the following dependencies:\n' % current_module) | ||
| 51 | try: | ||
| 52 | importlib.import_module('%s' % current_module) | ||
| 53 | except ImportError as e: | ||
| 54 | if (debug==True): | ||
| 55 | log.write('Module was not found') | ||
| 56 | pass | ||
| 57 | |||
| 58 | |||
| 59 | # Get current module dependencies, dif will contain a list of specific deps for this module | ||
| 60 | module_deps=set(sys.modules) | ||
| 61 | |||
| 62 | # We handle the core package (1st pass on create_manifest.py) as a special case | ||
| 63 | if current_module == 'python-core-package': | ||
| 64 | dif = core_deps | ||
| 65 | else: | ||
| 66 | # We know this is not the core package, so there must be a difference. | ||
| 67 | dif = module_deps-core_deps | ||
| 68 | |||
| 69 | |||
| 70 | # Check where each dependency came from | ||
| 71 | for item in dif: | ||
| 72 | dep_path='' | ||
| 73 | try: | ||
| 74 | if (debug==True): | ||
| 75 | log.write('Calling: sys.modules[' + '%s' % item + '].__file__\n') | ||
| 76 | dep_path = sys.modules['%s' % item].__file__ | ||
| 77 | except AttributeError as e: | ||
| 78 | # Deals with thread (builtin module) not having __file__ attribute | ||
| 79 | if debug==True: | ||
| 80 | log.write(item + ' ') | ||
| 81 | log.write(str(e)) | ||
| 82 | log.write('\n') | ||
| 83 | pass | ||
| 84 | except NameError as e: | ||
| 85 | # Deals with NameError: name 'dep_path' is not defined | ||
| 86 | # because module is not found (wasn't compiled?), e.g. bddsm | ||
| 87 | if (debug==True): | ||
| 88 | log.write(item+' ') | ||
| 89 | log.write(str(e)) | ||
| 90 | pass | ||
| 91 | |||
| 92 | # Site-customize is a special case since we (OpenEmbedded) put it there manually | ||
| 93 | if 'sitecustomize' in dep_path: | ||
| 94 | dep_path = '${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py' | ||
| 95 | # Prints out result, which is what will be used by create_manifest | ||
| 96 | print (dep_path) | ||
| 97 | continue | ||
| 98 | |||
| 99 | dep_path = fix_path(dep_path) | ||
| 100 | |||
| 101 | import sysconfig | ||
| 102 | soabi=sysconfig.get_config_var('SOABI') | ||
| 103 | # Check if its a shared library and deconstruct it | ||
| 104 | if soabi in dep_path: | ||
| 105 | if (debug==True): | ||
| 106 | log.write('Shared library found in %s' % dep_path) | ||
| 107 | dep_path = dep_path.replace(soabi,'*') | ||
| 108 | print (dep_path) | ||
| 109 | continue | ||
| 110 | |||
| 111 | if (debug==True): | ||
| 112 | log.write(dep_path+'\n') | ||
| 113 | # Prints out result, which is what will be used by create_manifest | ||
| 114 | print (dep_path) | ||
| 115 | |||
| 116 | |||
| 117 | import imp | ||
| 118 | cpython_tag = imp.get_tag() | ||
| 119 | cached='' | ||
| 120 | # Theres no naive way to find *.pyc files on python3 | ||
| 121 | try: | ||
| 122 | if (debug==True): | ||
| 123 | log.write('Calling: sys.modules[' + '%s' % item + '].__cached__\n') | ||
| 124 | cached = sys.modules['%s' % item].__cached__ | ||
| 125 | except AttributeError as e: | ||
| 126 | # Deals with thread (builtin module) not having __cached__ attribute | ||
| 127 | if debug==True: | ||
| 128 | log.write(item + ' ') | ||
| 129 | log.write(str(e)) | ||
| 130 | log.write('\n') | ||
| 131 | pass | ||
| 132 | except NameError as e: | ||
| 133 | # Deals with NameError: name 'cached' is not defined | ||
| 134 | if (debug==True): | ||
| 135 | log.write(item+' ') | ||
| 136 | log.write(str(e)) | ||
| 137 | pass | ||
| 138 | if cached is not None: | ||
| 139 | if (debug==True): | ||
| 140 | log.write(cached) | ||
| 141 | cached = fix_path(cached) | ||
| 142 | cached = cached.replace(cpython_tag,'*') | ||
| 143 | print (cached) | ||
| 144 | |||
| 145 | if debug==True: | ||
| 146 | log.close() | ||
diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json new file mode 100644 index 0000000000..2d4c2ceb9f --- /dev/null +++ b/meta/recipes-devtools/python/python3/python3-manifest.json | |||
| @@ -0,0 +1,1096 @@ | |||
| 1 | { | ||
| 2 | "2to3": { | ||
| 3 | "cached": [], | ||
| 4 | "files": [ | ||
| 5 | "${bindir}/2to3-*", | ||
| 6 | "${libdir}/python3.5/lib2to3" | ||
| 7 | ], | ||
| 8 | "rdepends": [ | ||
| 9 | "core" | ||
| 10 | ], | ||
| 11 | "summary": "Python automated Python 2 to 3 code translator" | ||
| 12 | }, | ||
| 13 | "asyncio": { | ||
| 14 | "cached": [], | ||
| 15 | "files": [ | ||
| 16 | "${libdir}/python3.5/asyncio", | ||
| 17 | "${libdir}/python3.5/concurrent", | ||
| 18 | "${libdir}/python3.5/concurrent/futures" | ||
| 19 | ], | ||
| 20 | "rdepends": [ | ||
| 21 | "compression", | ||
| 22 | "core", | ||
| 23 | "crypt", | ||
| 24 | "io", | ||
| 25 | "logging", | ||
| 26 | "math", | ||
| 27 | "multiprocessing", | ||
| 28 | "netclient", | ||
| 29 | "pickle", | ||
| 30 | "shell", | ||
| 31 | "stringold", | ||
| 32 | "threading", | ||
| 33 | "unixadmin" | ||
| 34 | ], | ||
| 35 | "summary": "Python Asynchronous I/" | ||
| 36 | }, | ||
| 37 | "audio": { | ||
| 38 | "cached": [ | ||
| 39 | "${libdir}/python3.5/__pycache__/chunk.*.pyc", | ||
| 40 | "${libdir}/python3.5/__pycache__/sndhdr.*.pyc", | ||
| 41 | "${libdir}/python3.5/__pycache__/sunau.*.pyc", | ||
| 42 | "${libdir}/python3.5/__pycache__/wave.*.pyc" | ||
| 43 | ], | ||
| 44 | "files": [ | ||
| 45 | "${libdir}/python3.5/chunk.py", | ||
| 46 | "${libdir}/python3.5/lib-dynload/audioop.*.so", | ||
| 47 | "${libdir}/python3.5/lib-dynload/ossaudiodev.*.so", | ||
| 48 | "${libdir}/python3.5/sndhdr.py", | ||
| 49 | "${libdir}/python3.5/sunau.py", | ||
| 50 | "${libdir}/python3.5/wave.py" | ||
| 51 | ], | ||
| 52 | "rdepends": [ | ||
| 53 | "core" | ||
| 54 | ], | ||
| 55 | "summary": "Python Audio Handling" | ||
| 56 | }, | ||
| 57 | "codecs": { | ||
| 58 | "cached": [ | ||
| 59 | "${libdir}/python3.5/__pycache__/stringprep.*.pyc", | ||
| 60 | "${libdir}/python3.5/__pycache__/xdrlib.*.pyc" | ||
| 61 | ], | ||
| 62 | "files": [ | ||
| 63 | "${libdir}/python3.5/lib-dynload/_multibytecodec.*.so", | ||
| 64 | "${libdir}/python3.5/lib-dynload/unicodedata.*.so", | ||
| 65 | "${libdir}/python3.5/stringprep.py", | ||
| 66 | "${libdir}/python3.5/xdrlib.py" | ||
| 67 | ], | ||
| 68 | "rdepends": [ | ||
| 69 | "core" | ||
| 70 | ], | ||
| 71 | "summary": "Python codec" | ||
| 72 | }, | ||
| 73 | "compile": { | ||
| 74 | "cached": [ | ||
| 75 | "${libdir}/python3.5/__pycache__/compileall.*.pyc", | ||
| 76 | "${libdir}/python3.5/__pycache__/py_compile.*.pyc" | ||
| 77 | ], | ||
| 78 | "files": [ | ||
| 79 | "${libdir}/python3.5/compileall.py", | ||
| 80 | "${libdir}/python3.5/py_compile.py" | ||
| 81 | ], | ||
| 82 | "rdepends": [ | ||
| 83 | "asyncio", | ||
| 84 | "compression", | ||
| 85 | "core", | ||
| 86 | "crypt", | ||
| 87 | "io", | ||
| 88 | "logging", | ||
| 89 | "math", | ||
| 90 | "multiprocessing", | ||
| 91 | "pickle", | ||
| 92 | "shell", | ||
| 93 | "stringold", | ||
| 94 | "threading", | ||
| 95 | "unixadmin" | ||
| 96 | ], | ||
| 97 | "summary": "Python bytecode compilation support" | ||
| 98 | }, | ||
| 99 | "compression": { | ||
| 100 | "cached": [ | ||
| 101 | "${libdir}/python3.5/__pycache__/_compression.*.pyc", | ||
| 102 | "${libdir}/python3.5/__pycache__/bz2.*.pyc", | ||
| 103 | "${libdir}/python3.5/__pycache__/gzip.*.pyc", | ||
| 104 | "${libdir}/python3.5/__pycache__/lzma.*.pyc", | ||
| 105 | "${libdir}/python3.5/__pycache__/tarfile.*.pyc", | ||
| 106 | "${libdir}/python3.5/__pycache__/zipfile.*.pyc" | ||
| 107 | ], | ||
| 108 | "files": [ | ||
| 109 | "${libdir}/python3.5/_compression.py", | ||
| 110 | "${libdir}/python3.5/bz2.py", | ||
| 111 | "${libdir}/python3.5/gzip.py", | ||
| 112 | "${libdir}/python3.5/lib-dynload/_bz2.*.so", | ||
| 113 | "${libdir}/python3.5/lib-dynload/_lzma.*.so", | ||
| 114 | "${libdir}/python3.5/lib-dynload/zlib.*.so", | ||
| 115 | "${libdir}/python3.5/lzma.py", | ||
| 116 | "${libdir}/python3.5/tarfile.py", | ||
| 117 | "${libdir}/python3.5/zipfile.py" | ||
| 118 | ], | ||
| 119 | "rdepends": [ | ||
| 120 | "core", | ||
| 121 | "shell", | ||
| 122 | "unixadmin" | ||
| 123 | ], | ||
| 124 | "summary": "Python high-level compression support" | ||
| 125 | }, | ||
| 126 | "core": { | ||
| 127 | "cached": [ | ||
| 128 | "${libdir}/python3.5/__pycache__/__future__.*.pyc", | ||
| 129 | "${libdir}/python3.5/__pycache__/_bootlocale.*.pyc", | ||
| 130 | "${libdir}/python3.5/__pycache__/_collections_abc.*.pyc", | ||
| 131 | "${libdir}/python3.5/__pycache__/_sitebuiltins.*.pyc", | ||
| 132 | "${libdir}/python3.5/__pycache__/_sysconfigdata.*.pyc", | ||
| 133 | "${libdir}/python3.5/__pycache__/_weakrefset.*.pyc", | ||
| 134 | "${libdir}/python3.5/__pycache__/abc.*.pyc", | ||
| 135 | "${libdir}/python3.5/__pycache__/argparse.*.pyc", | ||
| 136 | "${libdir}/python3.5/__pycache__/ast.*.pyc", | ||
| 137 | "${libdir}/python3.5/__pycache__/bisect.*.pyc", | ||
| 138 | "${libdir}/python3.5/__pycache__/code.*.pyc", | ||
| 139 | "${libdir}/python3.5/__pycache__/codecs.*.pyc", | ||
| 140 | "${libdir}/python3.5/__pycache__/codeop.*.pyc", | ||
| 141 | "${libdir}/python3.5/__pycache__/configparser.*.pyc", | ||
| 142 | "${libdir}/python3.5/__pycache__/contextlib.*.pyc", | ||
| 143 | "${libdir}/python3.5/__pycache__/copy.*.pyc", | ||
| 144 | "${libdir}/python3.5/__pycache__/copyreg.*.pyc", | ||
| 145 | "${libdir}/python3.5/__pycache__/csv.*.pyc", | ||
| 146 | "${libdir}/python3.5/__pycache__/dis.*.pyc", | ||
| 147 | "${libdir}/python3.5/__pycache__/enum.*.pyc", | ||
| 148 | "${libdir}/python3.5/__pycache__/functools.*.pyc", | ||
| 149 | "${libdir}/python3.5/__pycache__/genericpath.*.pyc", | ||
| 150 | "${libdir}/python3.5/__pycache__/getopt.*.pyc", | ||
| 151 | "${libdir}/python3.5/__pycache__/gettext.*.pyc", | ||
| 152 | "${libdir}/python3.5/__pycache__/heapq.*.pyc", | ||
| 153 | "${libdir}/python3.5/__pycache__/imp.*.pyc", | ||
| 154 | "${libdir}/python3.5/__pycache__/inspect.*.pyc", | ||
| 155 | "${libdir}/python3.5/__pycache__/io.*.pyc", | ||
| 156 | "${libdir}/python3.5/__pycache__/keyword.*.pyc", | ||
| 157 | "${libdir}/python3.5/__pycache__/linecache.*.pyc", | ||
| 158 | "${libdir}/python3.5/__pycache__/locale.*.pyc", | ||
| 159 | "${libdir}/python3.5/__pycache__/opcode.*.pyc", | ||
| 160 | "${libdir}/python3.5/__pycache__/operator.*.pyc", | ||
| 161 | "${libdir}/python3.5/__pycache__/optparse.*.pyc", | ||
| 162 | "${libdir}/python3.5/__pycache__/os.*.pyc", | ||
| 163 | "${libdir}/python3.5/__pycache__/platform.*.pyc", | ||
| 164 | "${libdir}/python3.5/__pycache__/posixpath.*.pyc", | ||
| 165 | "${libdir}/python3.5/__pycache__/re.*.pyc", | ||
| 166 | "${libdir}/python3.5/__pycache__/reprlib.*.pyc", | ||
| 167 | "${libdir}/python3.5/__pycache__/rlcompleter.*.pyc", | ||
| 168 | "${libdir}/python3.5/__pycache__/selectors.*.pyc", | ||
| 169 | "${libdir}/python3.5/__pycache__/signal.*.pyc", | ||
| 170 | "${libdir}/python3.5/__pycache__/site.*.pyc", | ||
| 171 | "${libdir}/python3.5/__pycache__/sre_compile.*.pyc", | ||
| 172 | "${libdir}/python3.5/__pycache__/sre_constants.*.pyc", | ||
| 173 | "${libdir}/python3.5/__pycache__/sre_parse.*.pyc", | ||
| 174 | "${libdir}/python3.5/__pycache__/stat.*.pyc", | ||
| 175 | "${libdir}/python3.5/__pycache__/struct.*.pyc", | ||
| 176 | "${libdir}/python3.5/__pycache__/subprocess.*.pyc", | ||
| 177 | "${libdir}/python3.5/__pycache__/symbol.*.pyc", | ||
| 178 | "${libdir}/python3.5/__pycache__/sysconfig.*.pyc", | ||
| 179 | "${libdir}/python3.5/__pycache__/textwrap.*.pyc", | ||
| 180 | "${libdir}/python3.5/__pycache__/threading.*.pyc", | ||
| 181 | "${libdir}/python3.5/__pycache__/token.*.pyc", | ||
| 182 | "${libdir}/python3.5/__pycache__/tokenize.*.pyc", | ||
| 183 | "${libdir}/python3.5/__pycache__/traceback.*.pyc", | ||
| 184 | "${libdir}/python3.5/__pycache__/types.*.pyc", | ||
| 185 | "${libdir}/python3.5/__pycache__/warnings.*.pyc", | ||
| 186 | "${libdir}/python3.5/__pycache__/weakref.*.pyc", | ||
| 187 | "${libdir}/python3.5/collections/__pycache__", | ||
| 188 | "${libdir}/python3.5/collections/__pycache__/abc.*.pyc", | ||
| 189 | "${libdir}/python3.5/encodings/__pycache__", | ||
| 190 | "${libdir}/python3.5/encodings/__pycache__/aliases.*.pyc", | ||
| 191 | "${libdir}/python3.5/encodings/__pycache__/latin_1.*.pyc", | ||
| 192 | "${libdir}/python3.5/encodings/__pycache__/utf_8.*.pyc", | ||
| 193 | "${libdir}/python3.5/importlib/__pycache__", | ||
| 194 | "${libdir}/python3.5/importlib/__pycache__/abc.*.pyc", | ||
| 195 | "${libdir}/python3.5/importlib/__pycache__/machinery.*.pyc", | ||
| 196 | "${libdir}/python3.5/importlib/__pycache__/util.*.pyc" | ||
| 197 | ], | ||
| 198 | "files": [ | ||
| 199 | "${bindir}/python*[!-config]", | ||
| 200 | "${includedir}/python${PYTHON_BINABI}/pyconfig*.h", | ||
| 201 | "${libdir}/python${PYTHON_MAJMIN}/_collections_abc.py", | ||
| 202 | "${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.py", | ||
| 203 | "${libdir}/python${PYTHON_MAJMIN}/collections", | ||
| 204 | "${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py", | ||
| 205 | "${libdir}/python3.5/UserDict.py", | ||
| 206 | "${libdir}/python3.5/UserList.py", | ||
| 207 | "${libdir}/python3.5/UserString.py", | ||
| 208 | "${libdir}/python3.5/__future__.py", | ||
| 209 | "${libdir}/python3.5/_abcoll.py", | ||
| 210 | "${libdir}/python3.5/_bootlocale.py", | ||
| 211 | "${libdir}/python3.5/_collections_abc.py", | ||
| 212 | "${libdir}/python3.5/_sitebuiltins.py", | ||
| 213 | "${libdir}/python3.5/_sysconfigdata.py", | ||
| 214 | "${libdir}/python3.5/_weakrefset.py", | ||
| 215 | "${libdir}/python3.5/abc.py", | ||
| 216 | "${libdir}/python3.5/argparse.py", | ||
| 217 | "${libdir}/python3.5/ast.py", | ||
| 218 | "${libdir}/python3.5/bisect.py", | ||
| 219 | "${libdir}/python3.5/code.py", | ||
| 220 | "${libdir}/python3.5/codecs.py", | ||
| 221 | "${libdir}/python3.5/codeop.py", | ||
| 222 | "${libdir}/python3.5/collections", | ||
| 223 | "${libdir}/python3.5/collections/abc.py", | ||
| 224 | "${libdir}/python3.5/configparser.py", | ||
| 225 | "${libdir}/python3.5/contextlib.py", | ||
| 226 | "${libdir}/python3.5/copy.py", | ||
| 227 | "${libdir}/python3.5/copyreg.py", | ||
| 228 | "${libdir}/python3.5/csv.py", | ||
| 229 | "${libdir}/python3.5/dis.py", | ||
| 230 | "${libdir}/python3.5/encodings", | ||
| 231 | "${libdir}/python3.5/encodings/aliases.py", | ||
| 232 | "${libdir}/python3.5/encodings/latin_1.py", | ||
| 233 | "${libdir}/python3.5/encodings/utf_8.py", | ||
| 234 | "${libdir}/python3.5/enum.py", | ||
| 235 | "${libdir}/python3.5/functools.py", | ||
| 236 | "${libdir}/python3.5/genericpath.py", | ||
| 237 | "${libdir}/python3.5/getopt.py", | ||
| 238 | "${libdir}/python3.5/gettext.py", | ||
| 239 | "${libdir}/python3.5/heapq.py", | ||
| 240 | "${libdir}/python3.5/imp.py", | ||
| 241 | "${libdir}/python3.5/importlib", | ||
| 242 | "${libdir}/python3.5/importlib/_bootstrap.py", | ||
| 243 | "${libdir}/python3.5/importlib/_bootstrap_external.py", | ||
| 244 | "${libdir}/python3.5/importlib/abc.py", | ||
| 245 | "${libdir}/python3.5/importlib/machinery.py", | ||
| 246 | "${libdir}/python3.5/importlib/util.py", | ||
| 247 | "${libdir}/python3.5/inspect.py", | ||
| 248 | "${libdir}/python3.5/io.py", | ||
| 249 | "${libdir}/python3.5/keyword.py", | ||
| 250 | "${libdir}/python3.5/lib-dynload/__pycache__/_struct.*.so", | ||
| 251 | "${libdir}/python3.5/lib-dynload/__pycache__/binascii.*.so", | ||
| 252 | "${libdir}/python3.5/lib-dynload/__pycache__/time.*.so", | ||
| 253 | "${libdir}/python3.5/lib-dynload/__pycache__/xreadlines.*.so", | ||
| 254 | "${libdir}/python3.5/lib-dynload/_bisect.*.so", | ||
| 255 | "${libdir}/python3.5/lib-dynload/_csv.*.so", | ||
| 256 | "${libdir}/python3.5/lib-dynload/_heapq.*.so", | ||
| 257 | "${libdir}/python3.5/lib-dynload/_opcode.*.so", | ||
| 258 | "${libdir}/python3.5/lib-dynload/_posixsubprocess.*.so", | ||
| 259 | "${libdir}/python3.5/lib-dynload/_struct.*.so", | ||
| 260 | "${libdir}/python3.5/lib-dynload/array.*.so", | ||
| 261 | "${libdir}/python3.5/lib-dynload/binascii.*.so", | ||
| 262 | "${libdir}/python3.5/lib-dynload/math.*.so", | ||
| 263 | "${libdir}/python3.5/lib-dynload/parser.*.so", | ||
| 264 | "${libdir}/python3.5/lib-dynload/readline.*.so", | ||
| 265 | "${libdir}/python3.5/lib-dynload/select.*.so", | ||
| 266 | "${libdir}/python3.5/lib-dynload/time.*.so", | ||
| 267 | "${libdir}/python3.5/lib-dynload/xreadlines.*.so", | ||
| 268 | "${libdir}/python3.5/linecache.py", | ||
| 269 | "${libdir}/python3.5/locale.py", | ||
| 270 | "${libdir}/python3.5/new.py", | ||
| 271 | "${libdir}/python3.5/opcode.py", | ||
| 272 | "${libdir}/python3.5/operator.py", | ||
| 273 | "${libdir}/python3.5/optparse.py", | ||
| 274 | "${libdir}/python3.5/os.py", | ||
| 275 | "${libdir}/python3.5/platform.py", | ||
| 276 | "${libdir}/python3.5/posixpath.py", | ||
| 277 | "${libdir}/python3.5/re.py", | ||
| 278 | "${libdir}/python3.5/reprlib.py", | ||
| 279 | "${libdir}/python3.5/rlcompleter.py", | ||
| 280 | "${libdir}/python3.5/selectors.py", | ||
| 281 | "${libdir}/python3.5/signal.py", | ||
| 282 | "${libdir}/python3.5/site.py", | ||
| 283 | "${libdir}/python3.5/sre_compile.py", | ||
| 284 | "${libdir}/python3.5/sre_constants.py", | ||
| 285 | "${libdir}/python3.5/sre_parse.py", | ||
| 286 | "${libdir}/python3.5/stat.py", | ||
| 287 | "${libdir}/python3.5/struct.py", | ||
| 288 | "${libdir}/python3.5/subprocess.py", | ||
| 289 | "${libdir}/python3.5/symbol.py", | ||
| 290 | "${libdir}/python3.5/sysconfig.py", | ||
| 291 | "${libdir}/python3.5/textwrap.py", | ||
| 292 | "${libdir}/python3.5/threading.py", | ||
| 293 | "${libdir}/python3.5/token.py", | ||
| 294 | "${libdir}/python3.5/tokenize.py", | ||
| 295 | "${libdir}/python3.5/traceback.py", | ||
| 296 | "${libdir}/python3.5/types.py", | ||
| 297 | "${libdir}/python3.5/warnings.py", | ||
| 298 | "${libdir}/python3.5/weakref.py" | ||
| 299 | ], | ||
| 300 | "rdepends": [], | ||
| 301 | "summary": "Python interpreter and core modules" | ||
| 302 | }, | ||
| 303 | "crypt": { | ||
| 304 | "cached": [ | ||
| 305 | "${libdir}/python3.5/__pycache__/crypt.*.pyc", | ||
| 306 | "${libdir}/python3.5/__pycache__/hashlib.*.pyc" | ||
| 307 | ], | ||
| 308 | "files": [ | ||
| 309 | "${libdir}/python3.5/crypt.py", | ||
| 310 | "${libdir}/python3.5/hashlib.py", | ||
| 311 | "${libdir}/python3.5/lib-dynload/_crypt.*.so", | ||
| 312 | "${libdir}/python3.5/lib-dynload/_hashlib.*.so", | ||
| 313 | "${libdir}/python3.5/lib-dynload/_sha256.*.so", | ||
| 314 | "${libdir}/python3.5/lib-dynload/_sha512.*.so" | ||
| 315 | ], | ||
| 316 | "rdepends": [ | ||
| 317 | "core", | ||
| 318 | "math", | ||
| 319 | "stringold" | ||
| 320 | ], | ||
| 321 | "summary": "Python basic cryptographic and hashing support" | ||
| 322 | }, | ||
| 323 | "ctypes": { | ||
| 324 | "cached": [], | ||
| 325 | "files": [ | ||
| 326 | "${libdir}/python3.5/ctypes", | ||
| 327 | "${libdir}/python3.5/lib-dynload/_ctypes.*.so", | ||
| 328 | "${libdir}/python3.5/lib-dynload/_ctypes_test.*.so" | ||
| 329 | ], | ||
| 330 | "rdepends": [ | ||
| 331 | "core" | ||
| 332 | ], | ||
| 333 | "summary": "Python C types support" | ||
| 334 | }, | ||
| 335 | "curses": { | ||
| 336 | "cached": [], | ||
| 337 | "files": [ | ||
| 338 | "${libdir}/python3.5/curses", | ||
| 339 | "${libdir}/python3.5/lib-dynload/_curses.*.so", | ||
| 340 | "${libdir}/python3.5/lib-dynload/_curses_panel.*.so" | ||
| 341 | ], | ||
| 342 | "rdepends": [ | ||
| 343 | "core" | ||
| 344 | ], | ||
| 345 | "summary": "Python curses support" | ||
| 346 | }, | ||
| 347 | "datetime": { | ||
| 348 | "cached": [ | ||
| 349 | "${libdir}/python3.5/__pycache__/_strptime.*.pyc", | ||
| 350 | "${libdir}/python3.5/__pycache__/calendar.*.pyc", | ||
| 351 | "${libdir}/python3.5/__pycache__/datetime.*.pyc" | ||
| 352 | ], | ||
| 353 | "files": [ | ||
| 354 | "${libdir}/python3.5/_strptime.py", | ||
| 355 | "${libdir}/python3.5/calendar.py", | ||
| 356 | "${libdir}/python3.5/datetime.py", | ||
| 357 | "${libdir}/python3.5/lib-dynload/_datetime.*.so" | ||
| 358 | ], | ||
| 359 | "rdepends": [ | ||
| 360 | "core" | ||
| 361 | ], | ||
| 362 | "summary": "Python calendar and time support" | ||
| 363 | }, | ||
| 364 | "db": { | ||
| 365 | "cached": [], | ||
| 366 | "files": [ | ||
| 367 | "${libdir}/python3.5/dbm" | ||
| 368 | ], | ||
| 369 | "rdepends": [ | ||
| 370 | "core" | ||
| 371 | ], | ||
| 372 | "summary": "Python file-based database support" | ||
| 373 | }, | ||
| 374 | "debugger": { | ||
| 375 | "cached": [ | ||
| 376 | "${libdir}/python3.5/__pycache__/bdb.*.pyc", | ||
| 377 | "${libdir}/python3.5/__pycache__/pdb.*.pyc" | ||
| 378 | ], | ||
| 379 | "files": [ | ||
| 380 | "${libdir}/python3.5/bdb.py", | ||
| 381 | "${libdir}/python3.5/pdb.py" | ||
| 382 | ], | ||
| 383 | "rdepends": [ | ||
| 384 | "core", | ||
| 385 | "pprint", | ||
| 386 | "shell", | ||
| 387 | "stringold" | ||
| 388 | ], | ||
| 389 | "summary": "Python debugger" | ||
| 390 | }, | ||
| 391 | "dev": { | ||
| 392 | "cached": [], | ||
| 393 | "files": [ | ||
| 394 | "${base_libdir}/*.a", | ||
| 395 | "${base_libdir}/*.o", | ||
| 396 | "${bindir}/python*-config", | ||
| 397 | "${datadir}/aclocal", | ||
| 398 | "${datadir}/pkgconfig", | ||
| 399 | "${includedir}", | ||
| 400 | "${libdir}/*.a", | ||
| 401 | "${libdir}/*.la", | ||
| 402 | "${libdir}/*.o", | ||
| 403 | "${libdir}/lib*${SOLIBSDEV}", | ||
| 404 | "${libdir}/pkgconfig", | ||
| 405 | "${libdir}/python3.5/config*/Makefile", | ||
| 406 | "${libdir}/python3.5/config*/Makefile/__pycache__" | ||
| 407 | ], | ||
| 408 | "rdepends": [ | ||
| 409 | "core" | ||
| 410 | ], | ||
| 411 | "summary": "Python development package" | ||
| 412 | }, | ||
| 413 | "difflib": { | ||
| 414 | "cached": [ | ||
| 415 | "${libdir}/python3.5/__pycache__/difflib.*.pyc" | ||
| 416 | ], | ||
| 417 | "files": [ | ||
| 418 | "${libdir}/python3.5/difflib.py" | ||
| 419 | ], | ||
| 420 | "rdepends": [ | ||
| 421 | "core" | ||
| 422 | ], | ||
| 423 | "summary": "Python helpers for computing deltas between objects" | ||
| 424 | }, | ||
| 425 | "distutils": { | ||
| 426 | "cached": [], | ||
| 427 | "files": [ | ||
| 428 | "${libdir}/python3.5/distutils" | ||
| 429 | ], | ||
| 430 | "rdepends": [ | ||
| 431 | "core" | ||
| 432 | ], | ||
| 433 | "summary": "Python Distribution Utilities" | ||
| 434 | }, | ||
| 435 | "distutils-staticdev": { | ||
| 436 | "cached": [ | ||
| 437 | "${libdir}/python3.5/config/__pycache__/lib*.a" | ||
| 438 | ], | ||
| 439 | "files": [ | ||
| 440 | "${libdir}/python3.5/config/lib*.a" | ||
| 441 | ], | ||
| 442 | "rdepends": [ | ||
| 443 | "distutils" | ||
| 444 | ], | ||
| 445 | "summary": "Python distribution utilities (static libraries)" | ||
| 446 | }, | ||
| 447 | "doctest": { | ||
| 448 | "cached": [ | ||
| 449 | "${libdir}/python3.5/__pycache__/doctest.*.pyc" | ||
| 450 | ], | ||
| 451 | "files": [ | ||
| 452 | "${libdir}/python3.5/doctest.py" | ||
| 453 | ], | ||
| 454 | "rdepends": [ | ||
| 455 | "core", | ||
| 456 | "debugger", | ||
| 457 | "difflib", | ||
| 458 | "logging", | ||
| 459 | "pprint", | ||
| 460 | "shell", | ||
| 461 | "stringold", | ||
| 462 | "unittest" | ||
| 463 | ], | ||
| 464 | "summary": "Python framework for running examples in docstrings" | ||
| 465 | }, | ||
| 466 | "email": { | ||
| 467 | "cached": [ | ||
| 468 | "${libdir}/python3.5/__pycache__/imaplib.*.pyc" | ||
| 469 | ], | ||
| 470 | "files": [ | ||
| 471 | "${libdir}/python3.5/email", | ||
| 472 | "${libdir}/python3.5/imaplib.py" | ||
| 473 | ], | ||
| 474 | "rdepends": [ | ||
| 475 | "core", | ||
| 476 | "crypt", | ||
| 477 | "datetime", | ||
| 478 | "io", | ||
| 479 | "math", | ||
| 480 | "netclient" | ||
| 481 | ], | ||
| 482 | "summary": "Python email support" | ||
| 483 | }, | ||
| 484 | "fcntl": { | ||
| 485 | "cached": [], | ||
| 486 | "files": [ | ||
| 487 | "${libdir}/python3.5/lib-dynload/fcntl.*.so" | ||
| 488 | ], | ||
| 489 | "rdepends": [ | ||
| 490 | "core" | ||
| 491 | ], | ||
| 492 | "summary": "Python's fcntl interface" | ||
| 493 | }, | ||
| 494 | "html": { | ||
| 495 | "cached": [ | ||
| 496 | "${libdir}/python3.5/__pycache__/formatter.*.pyc" | ||
| 497 | ], | ||
| 498 | "files": [ | ||
| 499 | "${libdir}/python3.5/formatter.py", | ||
| 500 | "${libdir}/python3.5/html" | ||
| 501 | ], | ||
| 502 | "rdepends": [ | ||
| 503 | "core" | ||
| 504 | ], | ||
| 505 | "summary": "Python HTML processing support" | ||
| 506 | }, | ||
| 507 | "idle": { | ||
| 508 | "cached": [], | ||
| 509 | "files": [ | ||
| 510 | "${bindir}/idle*", | ||
| 511 | "${libdir}/python3.5/idlelib" | ||
| 512 | ], | ||
| 513 | "rdepends": [ | ||
| 514 | "core" | ||
| 515 | ], | ||
| 516 | "summary": "Python Integrated Development Environment" | ||
| 517 | }, | ||
| 518 | "image": { | ||
| 519 | "cached": [ | ||
| 520 | "${libdir}/python3.5/__pycache__/colorsys.*.pyc", | ||
| 521 | "${libdir}/python3.5/__pycache__/imghdr.*.pyc" | ||
| 522 | ], | ||
| 523 | "files": [ | ||
| 524 | "${libdir}/python3.5/colorsys.py", | ||
| 525 | "${libdir}/python3.5/imghdr.py" | ||
| 526 | ], | ||
| 527 | "rdepends": [ | ||
| 528 | "core" | ||
| 529 | ], | ||
| 530 | "summary": "Python graphical image handling" | ||
| 531 | }, | ||
| 532 | "io": { | ||
| 533 | "cached": [ | ||
| 534 | "${libdir}/python3.5/__pycache__/_pyio.*.pyc", | ||
| 535 | "${libdir}/python3.5/__pycache__/ipaddress.*.pyc", | ||
| 536 | "${libdir}/python3.5/__pycache__/pipes.*.pyc", | ||
| 537 | "${libdir}/python3.5/__pycache__/socket.*.pyc", | ||
| 538 | "${libdir}/python3.5/__pycache__/ssl.*.pyc", | ||
| 539 | "${libdir}/python3.5/__pycache__/tempfile.*.pyc" | ||
| 540 | ], | ||
| 541 | "files": [ | ||
| 542 | "${libdir}/python3.5/_pyio.py", | ||
| 543 | "${libdir}/python3.5/ipaddress.py", | ||
| 544 | "${libdir}/python3.5/lib-dynload/_socket.*.so", | ||
| 545 | "${libdir}/python3.5/lib-dynload/_ssl.*.so", | ||
| 546 | "${libdir}/python3.5/lib-dynload/termios.*.so", | ||
| 547 | "${libdir}/python3.5/pipes.py", | ||
| 548 | "${libdir}/python3.5/socket.py", | ||
| 549 | "${libdir}/python3.5/ssl.py", | ||
| 550 | "${libdir}/python3.5/tempfile.py" | ||
| 551 | ], | ||
| 552 | "rdepends": [ | ||
| 553 | "compression", | ||
| 554 | "core", | ||
| 555 | "crypt", | ||
| 556 | "math", | ||
| 557 | "netclient", | ||
| 558 | "shell", | ||
| 559 | "unixadmin" | ||
| 560 | ], | ||
| 561 | "summary": "Python low-level I/O" | ||
| 562 | }, | ||
| 563 | "json": { | ||
| 564 | "cached": [], | ||
| 565 | "files": [ | ||
| 566 | "${libdir}/python3.5/json", | ||
| 567 | "${libdir}/python3.5/lib-dynload/_json.*.so" | ||
| 568 | ], | ||
| 569 | "rdepends": [ | ||
| 570 | "core" | ||
| 571 | ], | ||
| 572 | "summary": "Python JSON support" | ||
| 573 | }, | ||
| 574 | "logging": { | ||
| 575 | "cached": [], | ||
| 576 | "files": [ | ||
| 577 | "${libdir}/python3.5/logging" | ||
| 578 | ], | ||
| 579 | "rdepends": [ | ||
| 580 | "core", | ||
| 581 | "stringold" | ||
| 582 | ], | ||
| 583 | "summary": "Python logging support" | ||
| 584 | }, | ||
| 585 | "mailbox": { | ||
| 586 | "cached": [ | ||
| 587 | "${libdir}/python3.5/__pycache__/mailbox.*.pyc" | ||
| 588 | ], | ||
| 589 | "files": [ | ||
| 590 | "${libdir}/python3.5/mailbox.py" | ||
| 591 | ], | ||
| 592 | "rdepends": [ | ||
| 593 | "core", | ||
| 594 | "crypt", | ||
| 595 | "datetime", | ||
| 596 | "email", | ||
| 597 | "fcntl", | ||
| 598 | "io", | ||
| 599 | "math", | ||
| 600 | "mime", | ||
| 601 | "netclient", | ||
| 602 | "stringold" | ||
| 603 | ], | ||
| 604 | "summary": "Python mailbox format support" | ||
| 605 | }, | ||
| 606 | "math": { | ||
| 607 | "cached": [ | ||
| 608 | "${libdir}/python3.5/__pycache__/random.*.pyc" | ||
| 609 | ], | ||
| 610 | "files": [ | ||
| 611 | "${libdir}/python3.5/lib-dynload/_random.*.so", | ||
| 612 | "${libdir}/python3.5/lib-dynload/cmath.*.so", | ||
| 613 | "${libdir}/python3.5/random.py" | ||
| 614 | ], | ||
| 615 | "rdepends": [ | ||
| 616 | "core", | ||
| 617 | "crypt" | ||
| 618 | ], | ||
| 619 | "summary": "Python math support" | ||
| 620 | }, | ||
| 621 | "mime": { | ||
| 622 | "cached": [ | ||
| 623 | "${libdir}/python3.5/__pycache__/quopri.*.pyc", | ||
| 624 | "${libdir}/python3.5/__pycache__/uu.*.pyc" | ||
| 625 | ], | ||
| 626 | "files": [ | ||
| 627 | "${libdir}/python3.5/quopri.py", | ||
| 628 | "${libdir}/python3.5/uu.py" | ||
| 629 | ], | ||
| 630 | "rdepends": [ | ||
| 631 | "core" | ||
| 632 | ], | ||
| 633 | "summary": "Python MIME handling APIs" | ||
| 634 | }, | ||
| 635 | "mmap": { | ||
| 636 | "cached": [], | ||
| 637 | "files": [ | ||
| 638 | "${libdir}/python3.5/lib-dynload/mmap.*.so" | ||
| 639 | ], | ||
| 640 | "rdepends": [ | ||
| 641 | "core" | ||
| 642 | ], | ||
| 643 | "summary": "Python memory-mapped file support" | ||
| 644 | }, | ||
| 645 | "modules": { | ||
| 646 | "cached": [], | ||
| 647 | "files": [], | ||
| 648 | "rdepends": [ | ||
| 649 | "2to3", | ||
| 650 | "asyncio", | ||
| 651 | "audio", | ||
| 652 | "codecs", | ||
| 653 | "compile", | ||
| 654 | "compression", | ||
| 655 | "core", | ||
| 656 | "crypt", | ||
| 657 | "ctypes", | ||
| 658 | "curses", | ||
| 659 | "datetime", | ||
| 660 | "db", | ||
| 661 | "debugger", | ||
| 662 | "difflib", | ||
| 663 | "distutils", | ||
| 664 | "doctest", | ||
| 665 | "email", | ||
| 666 | "fcntl", | ||
| 667 | "html", | ||
| 668 | "idle", | ||
| 669 | "image", | ||
| 670 | "io", | ||
| 671 | "json", | ||
| 672 | "logging", | ||
| 673 | "mailbox", | ||
| 674 | "math", | ||
| 675 | "mime", | ||
| 676 | "mmap", | ||
| 677 | "multiprocessing", | ||
| 678 | "netclient", | ||
| 679 | "netserver", | ||
| 680 | "numbers", | ||
| 681 | "pickle", | ||
| 682 | "pkgutil", | ||
| 683 | "pprint", | ||
| 684 | "profile", | ||
| 685 | "pydoc", | ||
| 686 | "resource", | ||
| 687 | "shell", | ||
| 688 | "smtpd", | ||
| 689 | "sqlite3", | ||
| 690 | "stringold", | ||
| 691 | "syslog", | ||
| 692 | "terminal", | ||
| 693 | "threading", | ||
| 694 | "tkinter", | ||
| 695 | "typing", | ||
| 696 | "unittest", | ||
| 697 | "unixadmin", | ||
| 698 | "xml", | ||
| 699 | "xmlrpc" | ||
| 700 | ], | ||
| 701 | "summary": "All Python modules" | ||
| 702 | }, | ||
| 703 | "multiprocessing": { | ||
| 704 | "cached": [], | ||
| 705 | "files": [ | ||
| 706 | "${libdir}/python3.5/lib-dynload/_multiprocessing.*.so", | ||
| 707 | "${libdir}/python3.5/multiprocessing" | ||
| 708 | ], | ||
| 709 | "rdepends": [ | ||
| 710 | "core" | ||
| 711 | ], | ||
| 712 | "summary": "Python multiprocessing support" | ||
| 713 | }, | ||
| 714 | "netclient": { | ||
| 715 | "cached": [ | ||
| 716 | "${libdir}/python3.5/__pycache__/base64.*.pyc", | ||
| 717 | "${libdir}/python3.5/__pycache__/ftplib.*.pyc", | ||
| 718 | "${libdir}/python3.5/__pycache__/hmac.*.pyc", | ||
| 719 | "${libdir}/python3.5/__pycache__/mimetypes.*.pyc", | ||
| 720 | "${libdir}/python3.5/__pycache__/nntplib.*.pyc", | ||
| 721 | "${libdir}/python3.5/__pycache__/poplib.*.pyc", | ||
| 722 | "${libdir}/python3.5/__pycache__/smtplib.*.pyc", | ||
| 723 | "${libdir}/python3.5/__pycache__/telnetlib.*.pyc", | ||
| 724 | "${libdir}/python3.5/__pycache__/uuid.*.pyc" | ||
| 725 | ], | ||
| 726 | "files": [ | ||
| 727 | "${libdir}/python3.5/base64.py", | ||
| 728 | "${libdir}/python3.5/ftplib.py", | ||
| 729 | "${libdir}/python3.5/hmac.py", | ||
| 730 | "${libdir}/python3.5/mimetypes.py", | ||
| 731 | "${libdir}/python3.5/nntplib.py", | ||
| 732 | "${libdir}/python3.5/poplib.py", | ||
| 733 | "${libdir}/python3.5/smtplib.py", | ||
| 734 | "${libdir}/python3.5/telnetlib.py", | ||
| 735 | "${libdir}/python3.5/urllib", | ||
| 736 | "${libdir}/python3.5/urllib/__pycache__", | ||
| 737 | "${libdir}/python3.5/uuid.py" | ||
| 738 | ], | ||
| 739 | "rdepends": [ | ||
| 740 | "compression", | ||
| 741 | "core", | ||
| 742 | "crypt", | ||
| 743 | "ctypes", | ||
| 744 | "datetime", | ||
| 745 | "email", | ||
| 746 | "io", | ||
| 747 | "math", | ||
| 748 | "mime", | ||
| 749 | "shell", | ||
| 750 | "stringold", | ||
| 751 | "unixadmin" | ||
| 752 | ], | ||
| 753 | "summary": "Python Internet Protocol clients" | ||
| 754 | }, | ||
| 755 | "netserver": { | ||
| 756 | "cached": [ | ||
| 757 | "${libdir}/python3.5/__pycache__/cgi.*.pyc", | ||
| 758 | "${libdir}/python3.5/__pycache__/socketserver.*.pyc" | ||
| 759 | ], | ||
| 760 | "files": [ | ||
| 761 | "${libdir}/python3.5/cgi.py", | ||
| 762 | "${libdir}/python3.5/socketserver.py" | ||
| 763 | ], | ||
| 764 | "rdepends": [ | ||
| 765 | "compression", | ||
| 766 | "core", | ||
| 767 | "crypt", | ||
| 768 | "datetime", | ||
| 769 | "email", | ||
| 770 | "html", | ||
| 771 | "io", | ||
| 772 | "math", | ||
| 773 | "mime", | ||
| 774 | "netclient", | ||
| 775 | "shell", | ||
| 776 | "stringold", | ||
| 777 | "unixadmin" | ||
| 778 | ], | ||
| 779 | "summary": "Python Internet Protocol servers" | ||
| 780 | }, | ||
| 781 | "numbers": { | ||
| 782 | "cached": [ | ||
| 783 | "${libdir}/python3.5/__pycache__/decimal.*.pyc", | ||
| 784 | "${libdir}/python3.5/__pycache__/fractions.*.pyc", | ||
| 785 | "${libdir}/python3.5/__pycache__/numbers.*.pyc" | ||
| 786 | ], | ||
| 787 | "files": [ | ||
| 788 | "${libdir}/python3.5/decimal.py", | ||
| 789 | "${libdir}/python3.5/fractions.py", | ||
| 790 | "${libdir}/python3.5/lib-dynload/_decimal.*.so", | ||
| 791 | "${libdir}/python3.5/numbers.py" | ||
| 792 | ], | ||
| 793 | "rdepends": [ | ||
| 794 | "core" | ||
| 795 | ], | ||
| 796 | "summary": "Python number APIs" | ||
| 797 | }, | ||
| 798 | "pickle": { | ||
| 799 | "cached": [ | ||
| 800 | "${libdir}/python3.5/__pycache__/_compat_pickle.*.pyc", | ||
| 801 | "${libdir}/python3.5/__pycache__/pickle.*.pyc", | ||
| 802 | "${libdir}/python3.5/__pycache__/pickletools.*.pyc", | ||
| 803 | "${libdir}/python3.5/__pycache__/shelve.*.pyc" | ||
| 804 | ], | ||
| 805 | "files": [ | ||
| 806 | "${libdir}/python3.5/_compat_pickle.py", | ||
| 807 | "${libdir}/python3.5/lib-dynload/_pickle.*.so", | ||
| 808 | "${libdir}/python3.5/pickle.py", | ||
| 809 | "${libdir}/python3.5/pickletools.py", | ||
| 810 | "${libdir}/python3.5/shelve.py" | ||
| 811 | ], | ||
| 812 | "rdepends": [ | ||
| 813 | "core" | ||
| 814 | ], | ||
| 815 | "summary": "Python serialisation/persistence support" | ||
| 816 | }, | ||
| 817 | "pkgutil": { | ||
| 818 | "cached": [ | ||
| 819 | "${libdir}/python3.5/__pycache__/pkgutil.*.pyc" | ||
| 820 | ], | ||
| 821 | "files": [ | ||
| 822 | "${libdir}/python3.5/pkgutil.py" | ||
| 823 | ], | ||
| 824 | "rdepends": [ | ||
| 825 | "core" | ||
| 826 | ], | ||
| 827 | "summary": "Python package extension utility support" | ||
| 828 | }, | ||
| 829 | "pprint": { | ||
| 830 | "cached": [ | ||
| 831 | "${libdir}/python3.5/__pycache__/pprint.*.pyc" | ||
| 832 | ], | ||
| 833 | "files": [ | ||
| 834 | "${libdir}/python3.5/pprint.py" | ||
| 835 | ], | ||
| 836 | "rdepends": [ | ||
| 837 | "core" | ||
| 838 | ], | ||
| 839 | "summary": "Python pretty-print support" | ||
| 840 | }, | ||
| 841 | "profile": { | ||
| 842 | "cached": [ | ||
| 843 | "${libdir}/python3.5/__pycache__/cProfile.*.pyc", | ||
| 844 | "${libdir}/python3.5/__pycache__/profile.*.pyc", | ||
| 845 | "${libdir}/python3.5/__pycache__/pstats.*.pyc" | ||
| 846 | ], | ||
| 847 | "files": [ | ||
| 848 | "${libdir}/python3.5/cProfile.py", | ||
| 849 | "${libdir}/python3.5/lib-dynload/_lsprof.*.so", | ||
| 850 | "${libdir}/python3.5/profile.py", | ||
| 851 | "${libdir}/python3.5/pstats.py" | ||
| 852 | ], | ||
| 853 | "rdepends": [ | ||
| 854 | "core" | ||
| 855 | ], | ||
| 856 | "summary": "Python basic performance profiling support" | ||
| 857 | }, | ||
| 858 | "pydoc": { | ||
| 859 | "cached": [ | ||
| 860 | "${libdir}/python3.5/__pycache__/pydoc.*.pyc" | ||
| 861 | ], | ||
| 862 | "files": [ | ||
| 863 | "${bindir}/pydoc*", | ||
| 864 | "${libdir}/python3.5/pydoc.py", | ||
| 865 | "${libdir}/python3.5/pydoc_data" | ||
| 866 | ], | ||
| 867 | "rdepends": [ | ||
| 868 | "core", | ||
| 869 | "netclient", | ||
| 870 | "pkgutil" | ||
| 871 | ], | ||
| 872 | "summary": "Python interactive help support" | ||
| 873 | }, | ||
| 874 | "resource": { | ||
| 875 | "cached": [], | ||
| 876 | "files": [ | ||
| 877 | "${libdir}/python3.5/lib-dynload/resource.*.so" | ||
| 878 | ], | ||
| 879 | "rdepends": [ | ||
| 880 | "core" | ||
| 881 | ], | ||
| 882 | "summary": "Python resource control interface" | ||
| 883 | }, | ||
| 884 | "shell": { | ||
| 885 | "cached": [ | ||
| 886 | "${libdir}/python3.5/__pycache__/cmd.*.pyc", | ||
| 887 | "${libdir}/python3.5/__pycache__/fnmatch.*.pyc", | ||
| 888 | "${libdir}/python3.5/__pycache__/glob.*.pyc", | ||
| 889 | "${libdir}/python3.5/__pycache__/shlex.*.pyc", | ||
| 890 | "${libdir}/python3.5/__pycache__/shutil.*.pyc" | ||
| 891 | ], | ||
| 892 | "files": [ | ||
| 893 | "${libdir}/python3.5/cmd.py", | ||
| 894 | "${libdir}/python3.5/fnmatch.py", | ||
| 895 | "${libdir}/python3.5/glob.py", | ||
| 896 | "${libdir}/python3.5/shlex.py", | ||
| 897 | "${libdir}/python3.5/shutil.py" | ||
| 898 | ], | ||
| 899 | "rdepends": [ | ||
| 900 | "compression", | ||
| 901 | "core", | ||
| 902 | "stringold", | ||
| 903 | "unixadmin" | ||
| 904 | ], | ||
| 905 | "summary": "Python shell-like functionality" | ||
| 906 | }, | ||
| 907 | "smtpd": { | ||
| 908 | "cached": [ | ||
| 909 | "${libdir}/python3.5/__pycache__/asynchat.*.pyc", | ||
| 910 | "${libdir}/python3.5/__pycache__/asyncore.*.pyc", | ||
| 911 | "${libdir}/python3.5/__pycache__/smtpd.*.pyc" | ||
| 912 | ], | ||
| 913 | "files": [ | ||
| 914 | "${bindir}/smtpd.py", | ||
| 915 | "${libdir}/python3.5/asynchat.py", | ||
| 916 | "${libdir}/python3.5/asyncore.py", | ||
| 917 | "${libdir}/python3.5/smtpd.py" | ||
| 918 | ], | ||
| 919 | "rdepends": [ | ||
| 920 | "core", | ||
| 921 | "crypt", | ||
| 922 | "datetime", | ||
| 923 | "email", | ||
| 924 | "io", | ||
| 925 | "math", | ||
| 926 | "mime", | ||
| 927 | "netclient", | ||
| 928 | "stringold" | ||
| 929 | ], | ||
| 930 | "summary": "Python Simple Mail Transport Daemon" | ||
| 931 | }, | ||
| 932 | "sqlite3": { | ||
| 933 | "cached": [], | ||
| 934 | "files": [ | ||
| 935 | "${libdir}/python3.5/lib-dynload/_sqlite3.*.so" | ||
| 936 | ], | ||
| 937 | "rdepends": [ | ||
| 938 | "core" | ||
| 939 | ], | ||
| 940 | "summary": "Python Sqlite3 database support" | ||
| 941 | }, | ||
| 942 | "sqlite3-tests": { | ||
| 943 | "cached": [], | ||
| 944 | "files": [ | ||
| 945 | "${libdir}/python3.5/sqlite3/test" | ||
| 946 | ], | ||
| 947 | "rdepends": [ | ||
| 948 | "core", | ||
| 949 | "tests" | ||
| 950 | ], | ||
| 951 | "summary": "Python Sqlite3 database support tests" | ||
| 952 | }, | ||
| 953 | "stringold": { | ||
| 954 | "cached": [ | ||
| 955 | "${libdir}/python3.5/__pycache__/string.*.pyc" | ||
| 956 | ], | ||
| 957 | "files": [ | ||
| 958 | "${libdir}/python3.5/string.py" | ||
| 959 | ], | ||
| 960 | "rdepends": [ | ||
| 961 | "core" | ||
| 962 | ], | ||
| 963 | "summary": "Python string APIs [deprecated]" | ||
| 964 | }, | ||
| 965 | "syslog": { | ||
| 966 | "cached": [], | ||
| 967 | "files": [ | ||
| 968 | "${libdir}/python3.5/lib-dynload/syslog.*.so" | ||
| 969 | ], | ||
| 970 | "rdepends": [ | ||
| 971 | "core" | ||
| 972 | ], | ||
| 973 | "summary": "Python syslog interface" | ||
| 974 | }, | ||
| 975 | "terminal": { | ||
| 976 | "cached": [ | ||
| 977 | "${libdir}/python3.5/__pycache__/pty.*.pyc", | ||
| 978 | "${libdir}/python3.5/__pycache__/tty.*.pyc" | ||
| 979 | ], | ||
| 980 | "files": [ | ||
| 981 | "${libdir}/python3.5/pty.py", | ||
| 982 | "${libdir}/python3.5/tty.py" | ||
| 983 | ], | ||
| 984 | "rdepends": [ | ||
| 985 | "core", | ||
| 986 | "io" | ||
| 987 | ], | ||
| 988 | "summary": "Python terminal controlling support" | ||
| 989 | }, | ||
| 990 | "tests": { | ||
| 991 | "cached": [], | ||
| 992 | "files": [ | ||
| 993 | "${libdir}/python3.5/test" | ||
| 994 | ], | ||
| 995 | "rdepends": [ | ||
| 996 | "core" | ||
| 997 | ], | ||
| 998 | "summary": "Python tests" | ||
| 999 | }, | ||
| 1000 | "threading": { | ||
| 1001 | "cached": [ | ||
| 1002 | "${libdir}/python3.5/__pycache__/_dummy_thread.*.pyc", | ||
| 1003 | "${libdir}/python3.5/__pycache__/_threading_local.*.pyc", | ||
| 1004 | "${libdir}/python3.5/__pycache__/dummy_threading.*.pyc", | ||
| 1005 | "${libdir}/python3.5/__pycache__/queue.*.pyc" | ||
| 1006 | ], | ||
| 1007 | "files": [ | ||
| 1008 | "${libdir}/python3.5/_dummy_thread.py", | ||
| 1009 | "${libdir}/python3.5/_threading_local.py", | ||
| 1010 | "${libdir}/python3.5/dummy_threading.py", | ||
| 1011 | "${libdir}/python3.5/queue.py" | ||
| 1012 | ], | ||
| 1013 | "rdepends": [ | ||
| 1014 | "core" | ||
| 1015 | ], | ||
| 1016 | "summary": "Python threading & synchronization support" | ||
| 1017 | }, | ||
| 1018 | "tkinter": { | ||
| 1019 | "cached": [], | ||
| 1020 | "files": [ | ||
| 1021 | "${libdir}/python3.5/tkinter" | ||
| 1022 | ], | ||
| 1023 | "rdepends": [ | ||
| 1024 | "core" | ||
| 1025 | ], | ||
| 1026 | "summary": "Python Tcl/Tk bindings" | ||
| 1027 | }, | ||
| 1028 | "typing": { | ||
| 1029 | "cached": [ | ||
| 1030 | "${libdir}/python3.5/__pycache__/typing.*.pyc" | ||
| 1031 | ], | ||
| 1032 | "files": [ | ||
| 1033 | "${libdir}/python3.5/typing.py" | ||
| 1034 | ], | ||
| 1035 | "rdepends": [ | ||
| 1036 | "core" | ||
| 1037 | ], | ||
| 1038 | "summary": "Python typing support" | ||
| 1039 | }, | ||
| 1040 | "unittest": { | ||
| 1041 | "cached": [], | ||
| 1042 | "files": [ | ||
| 1043 | "${libdir}/python3.5/unittest", | ||
| 1044 | "${libdir}/python3.5/unittest/", | ||
| 1045 | "${libdir}/python3.5/unittest/__pycache__" | ||
| 1046 | ], | ||
| 1047 | "rdepends": [ | ||
| 1048 | "core", | ||
| 1049 | "difflib", | ||
| 1050 | "logging", | ||
| 1051 | "pprint", | ||
| 1052 | "shell", | ||
| 1053 | "stringold" | ||
| 1054 | ], | ||
| 1055 | "summary": "Python unit testing framework" | ||
| 1056 | }, | ||
| 1057 | "unixadmin": { | ||
| 1058 | "cached": [ | ||
| 1059 | "${libdir}/python3.5/__pycache__/getpass.*.pyc" | ||
| 1060 | ], | ||
| 1061 | "files": [ | ||
| 1062 | "${libdir}/python3.5/getpass.py", | ||
| 1063 | "${libdir}/python3.5/lib-dynload/grp.*.so", | ||
| 1064 | "${libdir}/python3.5/lib-dynload/nis.*.so" | ||
| 1065 | ], | ||
| 1066 | "rdepends": [ | ||
| 1067 | "core", | ||
| 1068 | "io" | ||
| 1069 | ], | ||
| 1070 | "summary": "Python Unix administration support" | ||
| 1071 | }, | ||
| 1072 | "xml": { | ||
| 1073 | "cached": [], | ||
| 1074 | "files": [ | ||
| 1075 | "${libdir}/python3.5/lib-dynload/_elementtree.*.so", | ||
| 1076 | "${libdir}/python3.5/lib-dynload/pyexpat.*.so", | ||
| 1077 | "${libdir}/python3.5/xml" | ||
| 1078 | ], | ||
| 1079 | "rdepends": [ | ||
| 1080 | "core" | ||
| 1081 | ], | ||
| 1082 | "summary": "Python basic XML support" | ||
| 1083 | }, | ||
| 1084 | "xmlrpc": { | ||
| 1085 | "cached": [], | ||
| 1086 | "files": [ | ||
| 1087 | "${libdir}/python3.5/xmlrpc", | ||
| 1088 | "${libdir}/python3.5/xmlrpc/__pycache__" | ||
| 1089 | ], | ||
| 1090 | "rdepends": [ | ||
| 1091 | "core", | ||
| 1092 | "xml" | ||
| 1093 | ], | ||
| 1094 | "summary": "Python XML-RPC support" | ||
| 1095 | } | ||
| 1096 | } | ||
