diff options
-rw-r--r-- | meta/recipes-devtools/python/python-2.7-manifest.inc | 840 | ||||
-rw-r--r-- | meta/recipes-devtools/python/python-native-2.7-manifest.inc | 9 | ||||
-rw-r--r-- | meta/recipes-devtools/python/python-native_2.7.13.bb | 24 | ||||
-rw-r--r-- | meta/recipes-devtools/python/python/create_manifest2.py | 277 | ||||
-rw-r--r-- | meta/recipes-devtools/python/python/get_module_deps2.py | 112 | ||||
-rw-r--r-- | meta/recipes-devtools/python/python/python2-manifest.json | 1032 | ||||
-rw-r--r-- | meta/recipes-devtools/python/python/sitecustomize.py | 8 | ||||
-rw-r--r-- | meta/recipes-devtools/python/python_2.7.13.bb | 88 | ||||
-rwxr-xr-x | scripts/contrib/python/generate-manifest-2.7.py | 426 |
9 files changed, 1528 insertions, 1288 deletions
diff --git a/meta/recipes-devtools/python/python-2.7-manifest.inc b/meta/recipes-devtools/python/python-2.7-manifest.inc deleted file mode 100644 index 7c3fc1b73a..0000000000 --- a/meta/recipes-devtools/python/python-2.7-manifest.inc +++ /dev/null | |||
@@ -1,840 +0,0 @@ | |||
1 | |||
2 | # WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. | ||
3 | # Generator: './scripts/contrib/python/generate-manifest-2.7.py' Version 20110222.2 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de> | ||
4 | |||
5 | |||
6 | |||
7 | PROVIDES+=" \ | ||
8 | ${PN}-2to3 \ | ||
9 | ${PN}-argparse \ | ||
10 | ${PN}-audio \ | ||
11 | ${PN}-bsddb \ | ||
12 | ${PN}-codecs \ | ||
13 | ${PN}-compile \ | ||
14 | ${PN}-compiler \ | ||
15 | ${PN}-compression \ | ||
16 | ${PN}-contextlib \ | ||
17 | ${PN}-core \ | ||
18 | ${PN}-crypt \ | ||
19 | ${PN}-ctypes \ | ||
20 | ${PN}-curses \ | ||
21 | ${PN}-datetime \ | ||
22 | ${PN}-db \ | ||
23 | ${PN}-debugger \ | ||
24 | ${PN}-dev \ | ||
25 | ${PN}-difflib \ | ||
26 | ${PN}-distutils \ | ||
27 | ${PN}-distutils-staticdev \ | ||
28 | ${PN}-doctest \ | ||
29 | ${PN}-email \ | ||
30 | ${PN}-fcntl \ | ||
31 | ${PN}-gdbm \ | ||
32 | ${PN}-hotshot \ | ||
33 | ${PN}-html \ | ||
34 | ${PN}-idle \ | ||
35 | ${PN}-image \ | ||
36 | ${PN}-importlib \ | ||
37 | ${PN}-io \ | ||
38 | ${PN}-json \ | ||
39 | ${PN}-lang \ | ||
40 | ${PN}-logging \ | ||
41 | ${PN}-mailbox \ | ||
42 | ${PN}-math \ | ||
43 | ${PN}-mime \ | ||
44 | ${PN}-mmap \ | ||
45 | ${PN}-multiprocessing \ | ||
46 | ${PN}-netclient \ | ||
47 | ${PN}-netserver \ | ||
48 | ${PN}-numbers \ | ||
49 | ${PN}-pickle \ | ||
50 | ${PN}-pkgutil \ | ||
51 | ${PN}-plistlib \ | ||
52 | ${PN}-pprint \ | ||
53 | ${PN}-profile \ | ||
54 | ${PN}-pydoc \ | ||
55 | ${PN}-re \ | ||
56 | ${PN}-readline \ | ||
57 | ${PN}-resource \ | ||
58 | ${PN}-robotparser \ | ||
59 | ${PN}-runpy \ | ||
60 | ${PN}-shell \ | ||
61 | ${PN}-smtpd \ | ||
62 | ${PN}-sqlite3 \ | ||
63 | ${PN}-sqlite3-tests \ | ||
64 | ${PN}-stringold \ | ||
65 | ${PN}-subprocess \ | ||
66 | ${PN}-syslog \ | ||
67 | ${PN}-terminal \ | ||
68 | ${PN}-tests \ | ||
69 | ${PN}-textutils \ | ||
70 | ${PN}-threading \ | ||
71 | ${PN}-tkinter \ | ||
72 | ${PN}-unittest \ | ||
73 | ${PN}-unixadmin \ | ||
74 | ${PN}-xml \ | ||
75 | ${PN}-xmlrpc \ | ||
76 | ${PN}-zlib \ | ||
77 | " | ||
78 | |||
79 | PACKAGES=" \ | ||
80 | ${PN}-dbg \ | ||
81 | ${PN}-2to3 \ | ||
82 | ${PN}-argparse \ | ||
83 | ${PN}-audio \ | ||
84 | ${PN}-bsddb \ | ||
85 | ${PN}-codecs \ | ||
86 | ${PN}-compile \ | ||
87 | ${PN}-compiler \ | ||
88 | ${PN}-compression \ | ||
89 | ${PN}-contextlib \ | ||
90 | ${PN}-core \ | ||
91 | ${PN}-crypt \ | ||
92 | ${PN}-ctypes \ | ||
93 | ${PN}-curses \ | ||
94 | ${PN}-datetime \ | ||
95 | ${PN}-db \ | ||
96 | ${PN}-debugger \ | ||
97 | ${PN}-dev \ | ||
98 | ${PN}-difflib \ | ||
99 | ${PN}-distutils-staticdev ${PN}-distutils \ | ||
100 | ${PN}-doctest \ | ||
101 | ${PN}-email \ | ||
102 | ${PN}-fcntl \ | ||
103 | ${PN}-gdbm \ | ||
104 | ${PN}-hotshot \ | ||
105 | ${PN}-html \ | ||
106 | ${PN}-idle \ | ||
107 | ${PN}-image \ | ||
108 | ${PN}-importlib \ | ||
109 | ${PN}-io \ | ||
110 | ${PN}-json \ | ||
111 | ${PN}-lang \ | ||
112 | ${PN}-logging \ | ||
113 | ${PN}-mailbox \ | ||
114 | ${PN}-math \ | ||
115 | ${PN}-mime \ | ||
116 | ${PN}-mmap \ | ||
117 | ${PN}-multiprocessing \ | ||
118 | ${PN}-netclient \ | ||
119 | ${PN}-netserver \ | ||
120 | ${PN}-numbers \ | ||
121 | ${PN}-pickle \ | ||
122 | ${PN}-pkgutil \ | ||
123 | ${PN}-plistlib \ | ||
124 | ${PN}-pprint \ | ||
125 | ${PN}-profile \ | ||
126 | ${PN}-pydoc \ | ||
127 | ${PN}-re \ | ||
128 | ${PN}-readline \ | ||
129 | ${PN}-resource \ | ||
130 | ${PN}-robotparser \ | ||
131 | ${PN}-runpy \ | ||
132 | ${PN}-shell \ | ||
133 | ${PN}-smtpd \ | ||
134 | ${PN}-sqlite3 \ | ||
135 | ${PN}-sqlite3-tests \ | ||
136 | ${PN}-stringold \ | ||
137 | ${PN}-subprocess \ | ||
138 | ${PN}-syslog \ | ||
139 | ${PN}-terminal \ | ||
140 | ${PN}-tests \ | ||
141 | ${PN}-textutils \ | ||
142 | ${PN}-threading \ | ||
143 | ${PN}-tkinter \ | ||
144 | ${PN}-unittest \ | ||
145 | ${PN}-unixadmin \ | ||
146 | ${PN}-xml \ | ||
147 | ${PN}-xmlrpc \ | ||
148 | ${PN}-zlib \ | ||
149 | ${PN}-modules\ | ||
150 | " | ||
151 | |||
152 | SUMMARY_${PN}-2to3="Python automated Python 2 to 3 code translator" | ||
153 | RDEPENDS_${PN}-2to3="${PN}-core" | ||
154 | FILES_${PN}-2to3=" \ | ||
155 | ${bindir}/2to3 \ | ||
156 | ${libdir}/python2.7/lib2to3 \ | ||
157 | " | ||
158 | |||
159 | SUMMARY_${PN}-argparse="Python command line argument parser" | ||
160 | RDEPENDS_${PN}-argparse="${PN}-core ${PN}-codecs ${PN}-textutils" | ||
161 | FILES_${PN}-argparse=" \ | ||
162 | ${libdir}/python2.7/argparse.* \ | ||
163 | " | ||
164 | |||
165 | SUMMARY_${PN}-audio="Python Audio Handling" | ||
166 | RDEPENDS_${PN}-audio="${PN}-core" | ||
167 | FILES_${PN}-audio=" \ | ||
168 | ${libdir}/python2.7/wave.* \ | ||
169 | ${libdir}/python2.7/chunk.* \ | ||
170 | ${libdir}/python2.7/sndhdr.* \ | ||
171 | ${libdir}/python2.7/lib-dynload/ossaudiodev.so \ | ||
172 | ${libdir}/python2.7/lib-dynload/audioop.so \ | ||
173 | ${libdir}/python2.7/audiodev.* \ | ||
174 | ${libdir}/python2.7/sunaudio.* \ | ||
175 | ${libdir}/python2.7/sunau.* \ | ||
176 | ${libdir}/python2.7/toaiff.* \ | ||
177 | " | ||
178 | |||
179 | SUMMARY_${PN}-bsddb="Python bindings for the Berkeley Database" | ||
180 | RDEPENDS_${PN}-bsddb="${PN}-core" | ||
181 | FILES_${PN}-bsddb=" \ | ||
182 | ${libdir}/python2.7/bsddb \ | ||
183 | ${libdir}/python2.7/lib-dynload/_bsddb.so \ | ||
184 | " | ||
185 | |||
186 | SUMMARY_${PN}-codecs="Python codecs, encodings & i18n support" | ||
187 | RDEPENDS_${PN}-codecs="${PN}-core ${PN}-lang" | ||
188 | FILES_${PN}-codecs=" \ | ||
189 | ${libdir}/python2.7/codecs.* \ | ||
190 | ${libdir}/python2.7/encodings \ | ||
191 | ${libdir}/python2.7/gettext.* \ | ||
192 | ${libdir}/python2.7/locale.* \ | ||
193 | ${libdir}/python2.7/lib-dynload/_locale.so \ | ||
194 | ${libdir}/python2.7/lib-dynload/_codecs* \ | ||
195 | ${libdir}/python2.7/lib-dynload/_multibytecodec.so \ | ||
196 | ${libdir}/python2.7/lib-dynload/unicodedata.so \ | ||
197 | ${libdir}/python2.7/stringprep.* \ | ||
198 | ${libdir}/python2.7/xdrlib.* \ | ||
199 | " | ||
200 | |||
201 | SUMMARY_${PN}-compile="Python bytecode compilation support" | ||
202 | RDEPENDS_${PN}-compile="${PN}-core" | ||
203 | FILES_${PN}-compile=" \ | ||
204 | ${libdir}/python2.7/py_compile.* \ | ||
205 | ${libdir}/python2.7/compileall.* \ | ||
206 | " | ||
207 | |||
208 | SUMMARY_${PN}-compiler="Python compiler support" | ||
209 | RDEPENDS_${PN}-compiler="${PN}-core" | ||
210 | FILES_${PN}-compiler=" \ | ||
211 | ${libdir}/python2.7/compiler \ | ||
212 | " | ||
213 | |||
214 | SUMMARY_${PN}-compression="Python high-level compression support" | ||
215 | RDEPENDS_${PN}-compression="${PN}-core ${PN}-zlib" | ||
216 | FILES_${PN}-compression=" \ | ||
217 | ${libdir}/python2.7/gzip.* \ | ||
218 | ${libdir}/python2.7/zipfile.* \ | ||
219 | ${libdir}/python2.7/tarfile.* \ | ||
220 | ${libdir}/python2.7/lib-dynload/bz2.so \ | ||
221 | " | ||
222 | |||
223 | SUMMARY_${PN}-contextlib="Python utilities for with-statementcontexts." | ||
224 | RDEPENDS_${PN}-contextlib="${PN}-core" | ||
225 | FILES_${PN}-contextlib=" \ | ||
226 | ${libdir}/python${PYTHON_MAJMIN}/contextlib.* \ | ||
227 | " | ||
228 | |||
229 | SUMMARY_${PN}-core="Python interpreter and core modules" | ||
230 | RDEPENDS_${PN}-core="${PN}-lang ${PN}-re" | ||
231 | FILES_${PN}-core=" \ | ||
232 | ${libdir}/python2.7/__future__.* \ | ||
233 | ${libdir}/python2.7/_abcoll.* \ | ||
234 | ${libdir}/python2.7/abc.* \ | ||
235 | ${libdir}/python2.7/ast.* \ | ||
236 | ${libdir}/python2.7/copy.* \ | ||
237 | ${libdir}/python2.7/copy_reg.* \ | ||
238 | ${libdir}/python2.7/ConfigParser.* \ | ||
239 | ${libdir}/python2.7/genericpath.* \ | ||
240 | ${libdir}/python2.7/getopt.* \ | ||
241 | ${libdir}/python2.7/linecache.* \ | ||
242 | ${libdir}/python2.7/new.* \ | ||
243 | ${libdir}/python2.7/os.* \ | ||
244 | ${libdir}/python2.7/posixpath.* \ | ||
245 | ${libdir}/python2.7/struct.* \ | ||
246 | ${libdir}/python2.7/warnings.* \ | ||
247 | ${libdir}/python2.7/site.* \ | ||
248 | ${libdir}/python2.7/stat.* \ | ||
249 | ${libdir}/python2.7/UserDict.* \ | ||
250 | ${libdir}/python2.7/UserList.* \ | ||
251 | ${libdir}/python2.7/UserString.* \ | ||
252 | ${libdir}/python2.7/lib-dynload/binascii.so \ | ||
253 | ${libdir}/python2.7/lib-dynload/_struct.so \ | ||
254 | ${libdir}/python2.7/lib-dynload/time.so \ | ||
255 | ${libdir}/python2.7/lib-dynload/xreadlines.so \ | ||
256 | ${libdir}/python2.7/types.* \ | ||
257 | ${libdir}/python2.7/platform.* \ | ||
258 | ${bindir}/python* \ | ||
259 | ${libdir}/python2.7/_weakrefset.* \ | ||
260 | ${libdir}/python2.7/sysconfig.* \ | ||
261 | ${libdir}/python2.7/_sysconfigdata.* \ | ||
262 | ${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h \ | ||
263 | ${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py \ | ||
264 | " | ||
265 | |||
266 | SUMMARY_${PN}-crypt="Python basic cryptographic and hashing support" | ||
267 | RDEPENDS_${PN}-crypt="${PN}-core" | ||
268 | FILES_${PN}-crypt=" \ | ||
269 | ${libdir}/python2.7/hashlib.* \ | ||
270 | ${libdir}/python2.7/md5.* \ | ||
271 | ${libdir}/python2.7/sha.* \ | ||
272 | ${libdir}/python2.7/lib-dynload/crypt.so \ | ||
273 | ${libdir}/python2.7/lib-dynload/_hashlib.so \ | ||
274 | ${libdir}/python2.7/lib-dynload/_sha256.so \ | ||
275 | ${libdir}/python2.7/lib-dynload/_sha512.so \ | ||
276 | " | ||
277 | |||
278 | SUMMARY_${PN}-ctypes="Python C types support" | ||
279 | RDEPENDS_${PN}-ctypes="${PN}-core" | ||
280 | FILES_${PN}-ctypes=" \ | ||
281 | ${libdir}/python2.7/ctypes \ | ||
282 | ${libdir}/python2.7/lib-dynload/_ctypes.so \ | ||
283 | ${libdir}/python2.7/lib-dynload/_ctypes_test.so \ | ||
284 | " | ||
285 | |||
286 | SUMMARY_${PN}-curses="Python curses support" | ||
287 | RDEPENDS_${PN}-curses="${PN}-core" | ||
288 | FILES_${PN}-curses=" \ | ||
289 | ${libdir}/python2.7/curses \ | ||
290 | ${libdir}/python2.7/lib-dynload/_curses.so \ | ||
291 | ${libdir}/python2.7/lib-dynload/_curses_panel.so \ | ||
292 | " | ||
293 | |||
294 | SUMMARY_${PN}-datetime="Python calendar and time support" | ||
295 | RDEPENDS_${PN}-datetime="${PN}-core ${PN}-codecs" | ||
296 | FILES_${PN}-datetime=" \ | ||
297 | ${libdir}/python2.7/_strptime.* \ | ||
298 | ${libdir}/python2.7/calendar.* \ | ||
299 | ${libdir}/python2.7/lib-dynload/datetime.so \ | ||
300 | " | ||
301 | |||
302 | SUMMARY_${PN}-db="Python file-based database support" | ||
303 | RDEPENDS_${PN}-db="${PN}-core" | ||
304 | FILES_${PN}-db=" \ | ||
305 | ${libdir}/python2.7/anydbm.* \ | ||
306 | ${libdir}/python2.7/dumbdbm.* \ | ||
307 | ${libdir}/python2.7/whichdb.* \ | ||
308 | " | ||
309 | |||
310 | SUMMARY_${PN}-debugger="Python debugger" | ||
311 | RDEPENDS_${PN}-debugger="${PN}-core ${PN}-io ${PN}-lang ${PN}-re ${PN}-stringold ${PN}-shell ${PN}-pprint" | ||
312 | FILES_${PN}-debugger=" \ | ||
313 | ${libdir}/python2.7/bdb.* \ | ||
314 | ${libdir}/python2.7/pdb.* \ | ||
315 | " | ||
316 | |||
317 | SUMMARY_${PN}-dev="Python development package" | ||
318 | RDEPENDS_${PN}-dev="${PN}-core" | ||
319 | FILES_${PN}-dev=" \ | ||
320 | ${includedir} \ | ||
321 | ${libdir}/lib*${SOLIBSDEV} \ | ||
322 | ${libdir}/*.la \ | ||
323 | ${libdir}/*.a \ | ||
324 | ${libdir}/*.o \ | ||
325 | ${libdir}/pkgconfig \ | ||
326 | ${base_libdir}/*.a \ | ||
327 | ${base_libdir}/*.o \ | ||
328 | ${datadir}/aclocal \ | ||
329 | ${datadir}/pkgconfig \ | ||
330 | ${libdir}/python2.7/config/Makefile \ | ||
331 | " | ||
332 | |||
333 | SUMMARY_${PN}-difflib="Python helpers for computing deltas between objects" | ||
334 | RDEPENDS_${PN}-difflib="${PN}-lang ${PN}-re" | ||
335 | FILES_${PN}-difflib=" \ | ||
336 | ${libdir}/python2.7/difflib.* \ | ||
337 | " | ||
338 | |||
339 | SUMMARY_${PN}-distutils="Python Distribution Utilities" | ||
340 | RDEPENDS_${PN}-distutils="${PN}-core ${PN}-email" | ||
341 | FILES_${PN}-distutils=" \ | ||
342 | ${libdir}/python2.7/config \ | ||
343 | ${libdir}/python2.7/distutils \ | ||
344 | " | ||
345 | |||
346 | SUMMARY_${PN}-distutils-staticdev="Python distribution utilities (static libraries)" | ||
347 | RDEPENDS_${PN}-distutils-staticdev="${PN}-distutils" | ||
348 | FILES_${PN}-distutils-staticdev=" \ | ||
349 | ${libdir}/python2.7/config/lib*.a \ | ||
350 | " | ||
351 | |||
352 | SUMMARY_${PN}-doctest="Python framework for running examples in docstrings" | ||
353 | RDEPENDS_${PN}-doctest="${PN}-core ${PN}-lang ${PN}-io ${PN}-re ${PN}-unittest ${PN}-debugger ${PN}-difflib" | ||
354 | FILES_${PN}-doctest=" \ | ||
355 | ${libdir}/python2.7/doctest.* \ | ||
356 | " | ||
357 | |||
358 | SUMMARY_${PN}-email="Python email support" | ||
359 | RDEPENDS_${PN}-email="${PN}-core ${PN}-io ${PN}-re ${PN}-mime ${PN}-audio ${PN}-image ${PN}-netclient" | ||
360 | FILES_${PN}-email=" \ | ||
361 | ${libdir}/python2.7/imaplib.* \ | ||
362 | ${libdir}/python2.7/email \ | ||
363 | " | ||
364 | |||
365 | SUMMARY_${PN}-fcntl="Python's fcntl interface" | ||
366 | RDEPENDS_${PN}-fcntl="${PN}-core" | ||
367 | FILES_${PN}-fcntl=" \ | ||
368 | ${libdir}/python2.7/lib-dynload/fcntl.so \ | ||
369 | " | ||
370 | |||
371 | SUMMARY_${PN}-gdbm="Python GNU database support" | ||
372 | RDEPENDS_${PN}-gdbm="${PN}-core" | ||
373 | FILES_${PN}-gdbm=" \ | ||
374 | ${libdir}/python2.7/lib-dynload/gdbm.so \ | ||
375 | " | ||
376 | |||
377 | SUMMARY_${PN}-hotshot="Python hotshot performance profiler" | ||
378 | RDEPENDS_${PN}-hotshot="${PN}-core" | ||
379 | FILES_${PN}-hotshot=" \ | ||
380 | ${libdir}/python2.7/hotshot \ | ||
381 | ${libdir}/python2.7/lib-dynload/_hotshot.so \ | ||
382 | " | ||
383 | |||
384 | SUMMARY_${PN}-html="Python HTML processing support" | ||
385 | RDEPENDS_${PN}-html="${PN}-core" | ||
386 | FILES_${PN}-html=" \ | ||
387 | ${libdir}/python2.7/formatter.* \ | ||
388 | ${libdir}/python2.7/htmlentitydefs.* \ | ||
389 | ${libdir}/python2.7/htmllib.* \ | ||
390 | ${libdir}/python2.7/markupbase.* \ | ||
391 | ${libdir}/python2.7/sgmllib.* \ | ||
392 | ${libdir}/python2.7/HTMLParser.* \ | ||
393 | " | ||
394 | |||
395 | SUMMARY_${PN}-idle="Python Integrated Development Environment" | ||
396 | RDEPENDS_${PN}-idle="${PN}-core ${PN}-tkinter" | ||
397 | FILES_${PN}-idle=" \ | ||
398 | ${bindir}/idle \ | ||
399 | ${libdir}/python2.7/idlelib \ | ||
400 | " | ||
401 | |||
402 | SUMMARY_${PN}-image="Python graphical image handling" | ||
403 | RDEPENDS_${PN}-image="${PN}-core" | ||
404 | FILES_${PN}-image=" \ | ||
405 | ${libdir}/python2.7/colorsys.* \ | ||
406 | ${libdir}/python2.7/imghdr.* \ | ||
407 | ${libdir}/python2.7/lib-dynload/imageop.so \ | ||
408 | ${libdir}/python2.7/lib-dynload/rgbimg.so \ | ||
409 | " | ||
410 | |||
411 | SUMMARY_${PN}-importlib="Python import implementation library" | ||
412 | RDEPENDS_${PN}-importlib="${PN}-core" | ||
413 | FILES_${PN}-importlib=" \ | ||
414 | ${libdir}/python2.7/importlib \ | ||
415 | " | ||
416 | |||
417 | SUMMARY_${PN}-io="Python low-level I/O" | ||
418 | RDEPENDS_${PN}-io="${PN}-core ${PN}-math ${PN}-textutils ${PN}-netclient ${PN}-contextlib" | ||
419 | FILES_${PN}-io=" \ | ||
420 | ${libdir}/python2.7/lib-dynload/_socket.so \ | ||
421 | ${libdir}/python2.7/lib-dynload/_io.so \ | ||
422 | ${libdir}/python2.7/lib-dynload/_ssl.so \ | ||
423 | ${libdir}/python2.7/lib-dynload/select.so \ | ||
424 | ${libdir}/python2.7/lib-dynload/termios.so \ | ||
425 | ${libdir}/python2.7/lib-dynload/cStringIO.so \ | ||
426 | ${libdir}/python2.7/pipes.* \ | ||
427 | ${libdir}/python2.7/socket.* \ | ||
428 | ${libdir}/python2.7/ssl.* \ | ||
429 | ${libdir}/python2.7/tempfile.* \ | ||
430 | ${libdir}/python2.7/StringIO.* \ | ||
431 | ${libdir}/python2.7/io.* \ | ||
432 | ${libdir}/python2.7/_pyio.* \ | ||
433 | " | ||
434 | |||
435 | SUMMARY_${PN}-json="Python JSON support" | ||
436 | RDEPENDS_${PN}-json="${PN}-core ${PN}-math ${PN}-re ${PN}-codecs" | ||
437 | FILES_${PN}-json=" \ | ||
438 | ${libdir}/python2.7/json \ | ||
439 | ${libdir}/python2.7/lib-dynload/_json.so \ | ||
440 | " | ||
441 | |||
442 | SUMMARY_${PN}-lang="Python low-level language support" | ||
443 | RDEPENDS_${PN}-lang="${PN}-core" | ||
444 | FILES_${PN}-lang=" \ | ||
445 | ${libdir}/python2.7/lib-dynload/_bisect.so \ | ||
446 | ${libdir}/python2.7/lib-dynload/_collections.so \ | ||
447 | ${libdir}/python2.7/lib-dynload/_heapq.so \ | ||
448 | ${libdir}/python2.7/lib-dynload/_weakref.so \ | ||
449 | ${libdir}/python2.7/lib-dynload/_functools.so \ | ||
450 | ${libdir}/python2.7/lib-dynload/array.so \ | ||
451 | ${libdir}/python2.7/lib-dynload/itertools.so \ | ||
452 | ${libdir}/python2.7/lib-dynload/operator.so \ | ||
453 | ${libdir}/python2.7/lib-dynload/parser.so \ | ||
454 | ${libdir}/python2.7/atexit.* \ | ||
455 | ${libdir}/python2.7/bisect.* \ | ||
456 | ${libdir}/python2.7/code.* \ | ||
457 | ${libdir}/python2.7/codeop.* \ | ||
458 | ${libdir}/python2.7/collections.* \ | ||
459 | ${libdir}/python2.7/dis.* \ | ||
460 | ${libdir}/python2.7/functools.* \ | ||
461 | ${libdir}/python2.7/heapq.* \ | ||
462 | ${libdir}/python2.7/inspect.* \ | ||
463 | ${libdir}/python2.7/keyword.* \ | ||
464 | ${libdir}/python2.7/opcode.* \ | ||
465 | ${libdir}/python2.7/symbol.* \ | ||
466 | ${libdir}/python2.7/repr.* \ | ||
467 | ${libdir}/python2.7/token.* \ | ||
468 | ${libdir}/python2.7/tokenize.* \ | ||
469 | ${libdir}/python2.7/traceback.* \ | ||
470 | ${libdir}/python2.7/weakref.* \ | ||
471 | " | ||
472 | |||
473 | SUMMARY_${PN}-logging="Python logging support" | ||
474 | RDEPENDS_${PN}-logging="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-stringold" | ||
475 | FILES_${PN}-logging=" \ | ||
476 | ${libdir}/python2.7/logging \ | ||
477 | " | ||
478 | |||
479 | SUMMARY_${PN}-mailbox="Python mailbox format support" | ||
480 | RDEPENDS_${PN}-mailbox="${PN}-core ${PN}-mime" | ||
481 | FILES_${PN}-mailbox=" \ | ||
482 | ${libdir}/python2.7/mailbox.* \ | ||
483 | " | ||
484 | |||
485 | SUMMARY_${PN}-math="Python math support" | ||
486 | RDEPENDS_${PN}-math="${PN}-core ${PN}-crypt" | ||
487 | FILES_${PN}-math=" \ | ||
488 | ${libdir}/python2.7/lib-dynload/cmath.so \ | ||
489 | ${libdir}/python2.7/lib-dynload/math.so \ | ||
490 | ${libdir}/python2.7/lib-dynload/_random.so \ | ||
491 | ${libdir}/python2.7/random.* \ | ||
492 | ${libdir}/python2.7/sets.* \ | ||
493 | " | ||
494 | |||
495 | SUMMARY_${PN}-mime="Python MIME handling APIs" | ||
496 | RDEPENDS_${PN}-mime="${PN}-core ${PN}-io" | ||
497 | FILES_${PN}-mime=" \ | ||
498 | ${libdir}/python2.7/mimetools.* \ | ||
499 | ${libdir}/python2.7/uu.* \ | ||
500 | ${libdir}/python2.7/quopri.* \ | ||
501 | ${libdir}/python2.7/rfc822.* \ | ||
502 | ${libdir}/python2.7/MimeWriter.* \ | ||
503 | " | ||
504 | |||
505 | SUMMARY_${PN}-mmap="Python memory-mapped file support" | ||
506 | RDEPENDS_${PN}-mmap="${PN}-core ${PN}-io" | ||
507 | FILES_${PN}-mmap=" \ | ||
508 | ${libdir}/python2.7/lib-dynload/mmap.so \ | ||
509 | " | ||
510 | |||
511 | SUMMARY_${PN}-multiprocessing="Python multiprocessing support" | ||
512 | RDEPENDS_${PN}-multiprocessing="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-threading ${PN}-ctypes ${PN}-mmap" | ||
513 | FILES_${PN}-multiprocessing=" \ | ||
514 | ${libdir}/python2.7/lib-dynload/_multiprocessing.so \ | ||
515 | ${libdir}/python2.7/multiprocessing \ | ||
516 | " | ||
517 | |||
518 | SUMMARY_${PN}-netclient="Python Internet Protocol clients" | ||
519 | RDEPENDS_${PN}-netclient="${PN}-core ${PN}-crypt ${PN}-datetime ${PN}-io ${PN}-lang ${PN}-logging ${PN}-mime" | ||
520 | FILES_${PN}-netclient=" \ | ||
521 | ${libdir}/python2.7/*Cookie*.* \ | ||
522 | ${libdir}/python2.7/base64.* \ | ||
523 | ${libdir}/python2.7/cookielib.* \ | ||
524 | ${libdir}/python2.7/ftplib.* \ | ||
525 | ${libdir}/python2.7/gopherlib.* \ | ||
526 | ${libdir}/python2.7/hmac.* \ | ||
527 | ${libdir}/python2.7/httplib.* \ | ||
528 | ${libdir}/python2.7/mimetypes.* \ | ||
529 | ${libdir}/python2.7/nntplib.* \ | ||
530 | ${libdir}/python2.7/poplib.* \ | ||
531 | ${libdir}/python2.7/smtplib.* \ | ||
532 | ${libdir}/python2.7/telnetlib.* \ | ||
533 | ${libdir}/python2.7/urllib.* \ | ||
534 | ${libdir}/python2.7/urllib2.* \ | ||
535 | ${libdir}/python2.7/urlparse.* \ | ||
536 | ${libdir}/python2.7/uuid.* \ | ||
537 | ${libdir}/python2.7/rfc822.* \ | ||
538 | ${libdir}/python2.7/mimetools.* \ | ||
539 | " | ||
540 | |||
541 | SUMMARY_${PN}-netserver="Python Internet Protocol servers" | ||
542 | RDEPENDS_${PN}-netserver="${PN}-core ${PN}-netclient ${PN}-shell ${PN}-threading" | ||
543 | FILES_${PN}-netserver=" \ | ||
544 | ${libdir}/python2.7/cgi.* \ | ||
545 | ${libdir}/python2.7/*HTTPServer.* \ | ||
546 | ${libdir}/python2.7/SocketServer.* \ | ||
547 | " | ||
548 | |||
549 | SUMMARY_${PN}-numbers="Python number APIs" | ||
550 | RDEPENDS_${PN}-numbers="${PN}-core ${PN}-lang ${PN}-re" | ||
551 | FILES_${PN}-numbers=" \ | ||
552 | ${libdir}/python2.7/decimal.* \ | ||
553 | ${libdir}/python2.7/fractions.* \ | ||
554 | ${libdir}/python2.7/numbers.* \ | ||
555 | " | ||
556 | |||
557 | SUMMARY_${PN}-pickle="Python serialisation/persistence support" | ||
558 | RDEPENDS_${PN}-pickle="${PN}-core ${PN}-codecs ${PN}-io ${PN}-re" | ||
559 | FILES_${PN}-pickle=" \ | ||
560 | ${libdir}/python2.7/pickle.* \ | ||
561 | ${libdir}/python2.7/shelve.* \ | ||
562 | ${libdir}/python2.7/lib-dynload/cPickle.so \ | ||
563 | ${libdir}/python2.7/pickletools.* \ | ||
564 | " | ||
565 | |||
566 | SUMMARY_${PN}-pkgutil="Python package extension utility support" | ||
567 | RDEPENDS_${PN}-pkgutil="${PN}-core" | ||
568 | FILES_${PN}-pkgutil=" \ | ||
569 | ${libdir}/python2.7/pkgutil.* \ | ||
570 | " | ||
571 | |||
572 | SUMMARY_${PN}-plistlib="Generate and parse Mac OS X .plist files" | ||
573 | RDEPENDS_${PN}-plistlib="${PN}-core ${PN}-datetime ${PN}-io" | ||
574 | FILES_${PN}-plistlib=" \ | ||
575 | ${libdir}/python2.7/plistlib.* \ | ||
576 | " | ||
577 | |||
578 | SUMMARY_${PN}-pprint="Python pretty-print support" | ||
579 | RDEPENDS_${PN}-pprint="${PN}-core ${PN}-io" | ||
580 | FILES_${PN}-pprint=" \ | ||
581 | ${libdir}/python2.7/pprint.* \ | ||
582 | " | ||
583 | |||
584 | SUMMARY_${PN}-profile="Python basic performance profiling support" | ||
585 | RDEPENDS_${PN}-profile="${PN}-core ${PN}-textutils" | ||
586 | FILES_${PN}-profile=" \ | ||
587 | ${libdir}/python2.7/profile.* \ | ||
588 | ${libdir}/python2.7/pstats.* \ | ||
589 | ${libdir}/python2.7/cProfile.* \ | ||
590 | ${libdir}/python2.7/lib-dynload/_lsprof.so \ | ||
591 | " | ||
592 | |||
593 | SUMMARY_${PN}-pydoc="Python interactive help support" | ||
594 | RDEPENDS_${PN}-pydoc="${PN}-core ${PN}-lang ${PN}-stringold ${PN}-re" | ||
595 | FILES_${PN}-pydoc=" \ | ||
596 | ${bindir}/pydoc \ | ||
597 | ${libdir}/python2.7/pydoc.* \ | ||
598 | ${libdir}/python2.7/pydoc_data \ | ||
599 | " | ||
600 | |||
601 | SUMMARY_${PN}-re="Python Regular Expression APIs" | ||
602 | RDEPENDS_${PN}-re="${PN}-core" | ||
603 | FILES_${PN}-re=" \ | ||
604 | ${libdir}/python2.7/re.* \ | ||
605 | ${libdir}/python2.7/sre.* \ | ||
606 | ${libdir}/python2.7/sre_compile.* \ | ||
607 | ${libdir}/python2.7/sre_constants* \ | ||
608 | ${libdir}/python2.7/sre_parse.* \ | ||
609 | " | ||
610 | |||
611 | SUMMARY_${PN}-readline="Python readline support" | ||
612 | RDEPENDS_${PN}-readline="${PN}-core" | ||
613 | FILES_${PN}-readline=" \ | ||
614 | ${libdir}/python2.7/lib-dynload/readline.so \ | ||
615 | ${libdir}/python2.7/rlcompleter.* \ | ||
616 | " | ||
617 | |||
618 | SUMMARY_${PN}-resource="Python resource control interface" | ||
619 | RDEPENDS_${PN}-resource="${PN}-core" | ||
620 | FILES_${PN}-resource=" \ | ||
621 | ${libdir}/python2.7/lib-dynload/resource.so \ | ||
622 | " | ||
623 | |||
624 | SUMMARY_${PN}-robotparser="Python robots.txt parser" | ||
625 | RDEPENDS_${PN}-robotparser="${PN}-core ${PN}-netclient" | ||
626 | FILES_${PN}-robotparser=" \ | ||
627 | ${libdir}/python2.7/robotparser.* \ | ||
628 | " | ||
629 | |||
630 | SUMMARY_${PN}-runpy="Python script for locating/executing scripts in module namespace" | ||
631 | RDEPENDS_${PN}-runpy="${PN}-core ${PN}-pkgutil" | ||
632 | FILES_${PN}-runpy=" \ | ||
633 | ${libdir}/python2.7/runpy.* \ | ||
634 | " | ||
635 | |||
636 | SUMMARY_${PN}-shell="Python shell-like functionality" | ||
637 | RDEPENDS_${PN}-shell="${PN}-core ${PN}-re" | ||
638 | FILES_${PN}-shell=" \ | ||
639 | ${libdir}/python2.7/cmd.* \ | ||
640 | ${libdir}/python2.7/commands.* \ | ||
641 | ${libdir}/python2.7/dircache.* \ | ||
642 | ${libdir}/python2.7/fnmatch.* \ | ||
643 | ${libdir}/python2.7/glob.* \ | ||
644 | ${libdir}/python2.7/popen2.* \ | ||
645 | ${libdir}/python2.7/shlex.* \ | ||
646 | ${libdir}/python2.7/shutil.* \ | ||
647 | " | ||
648 | |||
649 | SUMMARY_${PN}-smtpd="Python Simple Mail Transport Daemon" | ||
650 | RDEPENDS_${PN}-smtpd="${PN}-core ${PN}-netserver ${PN}-email ${PN}-mime" | ||
651 | FILES_${PN}-smtpd=" \ | ||
652 | ${bindir}/smtpd.* \ | ||
653 | ${libdir}/python2.7/smtpd.* \ | ||
654 | " | ||
655 | |||
656 | SUMMARY_${PN}-sqlite3="Python Sqlite3 database support" | ||
657 | RDEPENDS_${PN}-sqlite3="${PN}-core ${PN}-datetime ${PN}-lang ${PN}-crypt ${PN}-io ${PN}-threading ${PN}-zlib" | ||
658 | FILES_${PN}-sqlite3=" \ | ||
659 | ${libdir}/python2.7/lib-dynload/_sqlite3.so \ | ||
660 | ${libdir}/python2.7/sqlite3/dbapi2.* \ | ||
661 | ${libdir}/python2.7/sqlite3/__init__.* \ | ||
662 | ${libdir}/python2.7/sqlite3/dump.* \ | ||
663 | " | ||
664 | |||
665 | SUMMARY_${PN}-sqlite3-tests="Python Sqlite3 database support tests" | ||
666 | RDEPENDS_${PN}-sqlite3-tests="${PN}-core ${PN}-sqlite3" | ||
667 | FILES_${PN}-sqlite3-tests=" \ | ||
668 | ${libdir}/python2.7/sqlite3/test \ | ||
669 | " | ||
670 | |||
671 | SUMMARY_${PN}-stringold="Python string APIs [deprecated]" | ||
672 | RDEPENDS_${PN}-stringold="${PN}-core ${PN}-re" | ||
673 | FILES_${PN}-stringold=" \ | ||
674 | ${libdir}/python2.7/lib-dynload/strop.so \ | ||
675 | ${libdir}/python2.7/string.* \ | ||
676 | ${libdir}/python2.7/stringold.* \ | ||
677 | " | ||
678 | |||
679 | SUMMARY_${PN}-subprocess="Python subprocess support" | ||
680 | RDEPENDS_${PN}-subprocess="${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle" | ||
681 | FILES_${PN}-subprocess=" \ | ||
682 | ${libdir}/python2.7/subprocess.* \ | ||
683 | " | ||
684 | |||
685 | SUMMARY_${PN}-syslog="Python syslog interface" | ||
686 | RDEPENDS_${PN}-syslog="${PN}-core" | ||
687 | FILES_${PN}-syslog=" \ | ||
688 | ${libdir}/python2.7/lib-dynload/syslog.so \ | ||
689 | " | ||
690 | |||
691 | SUMMARY_${PN}-terminal="Python terminal controlling support" | ||
692 | RDEPENDS_${PN}-terminal="${PN}-core ${PN}-io" | ||
693 | FILES_${PN}-terminal=" \ | ||
694 | ${libdir}/python2.7/pty.* \ | ||
695 | ${libdir}/python2.7/tty.* \ | ||
696 | " | ||
697 | |||
698 | SUMMARY_${PN}-tests="Python tests" | ||
699 | RDEPENDS_${PN}-tests="${PN}-core ${PN}-modules" | ||
700 | FILES_${PN}-tests=" \ | ||
701 | ${libdir}/python2.7/test \ | ||
702 | " | ||
703 | |||
704 | SUMMARY_${PN}-textutils="Python option parsing, text wrapping and CSV support" | ||
705 | RDEPENDS_${PN}-textutils="${PN}-core ${PN}-io ${PN}-re ${PN}-stringold" | ||
706 | FILES_${PN}-textutils=" \ | ||
707 | ${libdir}/python2.7/lib-dynload/_csv.so \ | ||
708 | ${libdir}/python2.7/csv.* \ | ||
709 | ${libdir}/python2.7/optparse.* \ | ||
710 | ${libdir}/python2.7/textwrap.* \ | ||
711 | " | ||
712 | |||
713 | SUMMARY_${PN}-threading="Python threading & synchronization support" | ||
714 | RDEPENDS_${PN}-threading="${PN}-core ${PN}-lang" | ||
715 | FILES_${PN}-threading=" \ | ||
716 | ${libdir}/python2.7/_threading_local.* \ | ||
717 | ${libdir}/python2.7/dummy_thread.* \ | ||
718 | ${libdir}/python2.7/dummy_threading.* \ | ||
719 | ${libdir}/python2.7/mutex.* \ | ||
720 | ${libdir}/python2.7/threading.* \ | ||
721 | ${libdir}/python2.7/Queue.* \ | ||
722 | " | ||
723 | |||
724 | SUMMARY_${PN}-tkinter="Python Tcl/Tk bindings" | ||
725 | RDEPENDS_${PN}-tkinter="${PN}-core" | ||
726 | FILES_${PN}-tkinter=" \ | ||
727 | ${libdir}/python2.7/lib-dynload/_tkinter.so \ | ||
728 | ${libdir}/python2.7/lib-tk \ | ||
729 | " | ||
730 | |||
731 | SUMMARY_${PN}-unittest="Python unit testing framework" | ||
732 | RDEPENDS_${PN}-unittest="${PN}-core ${PN}-stringold ${PN}-lang ${PN}-io ${PN}-difflib ${PN}-pprint ${PN}-shell" | ||
733 | FILES_${PN}-unittest=" \ | ||
734 | ${libdir}/python2.7/unittest/ \ | ||
735 | " | ||
736 | |||
737 | SUMMARY_${PN}-unixadmin="Python Unix administration support" | ||
738 | RDEPENDS_${PN}-unixadmin="${PN}-core" | ||
739 | FILES_${PN}-unixadmin=" \ | ||
740 | ${libdir}/python2.7/lib-dynload/nis.so \ | ||
741 | ${libdir}/python2.7/lib-dynload/grp.so \ | ||
742 | ${libdir}/python2.7/lib-dynload/pwd.so \ | ||
743 | ${libdir}/python2.7/getpass.* \ | ||
744 | " | ||
745 | |||
746 | SUMMARY_${PN}-xml="Python basic XML support" | ||
747 | RDEPENDS_${PN}-xml="${PN}-core ${PN}-re" | ||
748 | FILES_${PN}-xml=" \ | ||
749 | ${libdir}/python2.7/lib-dynload/_elementtree.so \ | ||
750 | ${libdir}/python2.7/lib-dynload/pyexpat.so \ | ||
751 | ${libdir}/python2.7/xml \ | ||
752 | ${libdir}/python2.7/xmllib.* \ | ||
753 | " | ||
754 | |||
755 | SUMMARY_${PN}-xmlrpc="Python XML-RPC support" | ||
756 | RDEPENDS_${PN}-xmlrpc="${PN}-core ${PN}-xml ${PN}-netserver ${PN}-lang" | ||
757 | FILES_${PN}-xmlrpc=" \ | ||
758 | ${libdir}/python2.7/xmlrpclib.* \ | ||
759 | ${libdir}/python2.7/SimpleXMLRPCServer.* \ | ||
760 | ${libdir}/python2.7/DocXMLRPCServer.* \ | ||
761 | " | ||
762 | |||
763 | SUMMARY_${PN}-zlib="Python zlib compression support" | ||
764 | RDEPENDS_${PN}-zlib="${PN}-core" | ||
765 | FILES_${PN}-zlib=" \ | ||
766 | ${libdir}/python2.7/lib-dynload/zlib.so \ | ||
767 | " | ||
768 | |||
769 | SUMMARY_${PN}-modules="All Python modules" | ||
770 | RDEPENDS_${PN}-modules=" \ | ||
771 | ${PN}-2to3 \ | ||
772 | ${PN}-argparse \ | ||
773 | ${PN}-audio \ | ||
774 | ${PN}-bsddb \ | ||
775 | ${PN}-codecs \ | ||
776 | ${PN}-compile \ | ||
777 | ${PN}-compiler \ | ||
778 | ${PN}-compression \ | ||
779 | ${PN}-contextlib \ | ||
780 | ${PN}-core \ | ||
781 | ${PN}-crypt \ | ||
782 | ${PN}-ctypes \ | ||
783 | ${PN}-curses \ | ||
784 | ${PN}-datetime \ | ||
785 | ${PN}-db \ | ||
786 | ${PN}-debugger \ | ||
787 | ${PN}-difflib \ | ||
788 | ${PN}-distutils \ | ||
789 | ${PN}-doctest \ | ||
790 | ${PN}-email \ | ||
791 | ${PN}-fcntl \ | ||
792 | ${PN}-gdbm \ | ||
793 | ${PN}-hotshot \ | ||
794 | ${PN}-html \ | ||
795 | ${PN}-idle \ | ||
796 | ${PN}-image \ | ||
797 | ${PN}-importlib \ | ||
798 | ${PN}-io \ | ||
799 | ${PN}-json \ | ||
800 | ${PN}-lang \ | ||
801 | ${PN}-logging \ | ||
802 | ${PN}-mailbox \ | ||
803 | ${PN}-math \ | ||
804 | ${PN}-mime \ | ||
805 | ${PN}-mmap \ | ||
806 | ${PN}-multiprocessing \ | ||
807 | ${PN}-netclient \ | ||
808 | ${PN}-netserver \ | ||
809 | ${PN}-numbers \ | ||
810 | ${PN}-pickle \ | ||
811 | ${PN}-pkgutil \ | ||
812 | ${PN}-plistlib \ | ||
813 | ${PN}-pprint \ | ||
814 | ${PN}-profile \ | ||
815 | ${PN}-pydoc \ | ||
816 | ${PN}-re \ | ||
817 | ${PN}-readline \ | ||
818 | ${PN}-resource \ | ||
819 | ${PN}-robotparser \ | ||
820 | ${PN}-runpy \ | ||
821 | ${PN}-shell \ | ||
822 | ${PN}-smtpd \ | ||
823 | ${PN}-sqlite3 \ | ||
824 | ${PN}-sqlite3-tests \ | ||
825 | ${PN}-stringold \ | ||
826 | ${PN}-subprocess \ | ||
827 | ${PN}-syslog \ | ||
828 | ${PN}-terminal \ | ||
829 | ${PN}-textutils \ | ||
830 | ${PN}-threading \ | ||
831 | ${PN}-tkinter \ | ||
832 | ${PN}-unittest \ | ||
833 | ${PN}-unixadmin \ | ||
834 | ${PN}-xml \ | ||
835 | ${PN}-xmlrpc \ | ||
836 | ${PN}-zlib \ | ||
837 | " | ||
838 | ALLOW_EMPTY_${PN}-modules = "1" | ||
839 | |||
840 | |||
diff --git a/meta/recipes-devtools/python/python-native-2.7-manifest.inc b/meta/recipes-devtools/python/python-native-2.7-manifest.inc deleted file mode 100644 index b05aae0f18..0000000000 --- a/meta/recipes-devtools/python/python-native-2.7-manifest.inc +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | |||
2 | # WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. | ||
3 | # Generator: '../scripts/contrib/python/generate-manifest-2.7.py --native' Version 20110222.2 (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de> | ||
4 | |||
5 | |||
6 | |||
7 | RPROVIDES += "python-modules-native python-2to3-native python-argparse-native python-audio-native python-bsddb-native python-codecs-native python-compile-native python-compiler-native python-compression-native python-contextlib-native python-core-native python-crypt-native python-ctypes-native python-curses-native python-datetime-native python-db-native python-debugger-native python-dev-native python-difflib-native python-distutils-native python-distutils-staticdev-native python-doctest-native python-email-native python-fcntl-native python-gdbm-native python-hotshot-native python-html-native python-idle-native python-image-native python-importlib-native python-io-native python-json-native python-lang-native python-logging-native python-mailbox-native python-math-native python-mime-native python-mmap-native python-multiprocessing-native python-netclient-native python-netserver-native python-numbers-native python-pickle-native python-pkgutil-native python-plistlib-native python-pprint-native python-profile-native python-pydoc-native python-re-native python-readline-native python-resource-native python-robotparser-native python-shell-native python-smtpd-native python-sqlite3-native python-sqlite3-tests-native python-stringold-native python-subprocess-native python-syslog-native python-terminal-native python-tests-native python-textutils-native python-threading-native python-tkinter-native python-unittest-native python-unixadmin-native python-xml-native python-xmlrpc-native python-zlib-native" | ||
8 | |||
9 | |||
diff --git a/meta/recipes-devtools/python/python-native_2.7.13.bb b/meta/recipes-devtools/python/python-native_2.7.13.bb index 7edf153489..2b74003c79 100644 --- a/meta/recipes-devtools/python/python-native_2.7.13.bb +++ b/meta/recipes-devtools/python/python-native_2.7.13.bb | |||
@@ -1,5 +1,4 @@ | |||
1 | require python.inc | 1 | require python.inc |
2 | |||
3 | EXTRANATIVEPATH += "bzip2-native" | 2 | EXTRANATIVEPATH += "bzip2-native" |
4 | DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native expat-native" | 3 | DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native expat-native" |
5 | PR = "${INC_PR}.1" | 4 | PR = "${INC_PR}.1" |
@@ -25,8 +24,6 @@ FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:" | |||
25 | 24 | ||
26 | inherit native | 25 | inherit native |
27 | 26 | ||
28 | require python-native-${PYTHON_MAJMIN}-manifest.inc | ||
29 | |||
30 | EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --with-system-expat=${STAGING_DIR_HOST}" | 27 | EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --with-system-expat=${STAGING_DIR_HOST}" |
31 | 28 | ||
32 | EXTRA_OEMAKE = '\ | 29 | EXTRA_OEMAKE = '\ |
@@ -59,3 +56,24 @@ do_install() { | |||
59 | # installed in the native sysroot, so disable user site support. | 56 | # installed in the native sysroot, so disable user site support. |
60 | sed -i -e 's,^\(ENABLE_USER_SITE = \).*,\1False,' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py | 57 | sed -i -e 's,^\(ENABLE_USER_SITE = \).*,\1False,' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py |
61 | } | 58 | } |
59 | |||
60 | python(){ | ||
61 | |||
62 | # Read JSON manifest | ||
63 | import json | ||
64 | pythondir = d.getVar('THISDIR',True) | ||
65 | with open(pythondir+'/python/python2-manifest.json') as manifest_file: | ||
66 | python_manifest=json.load(manifest_file) | ||
67 | |||
68 | rprovides = d.getVar('RPROVIDES').split() | ||
69 | |||
70 | # Hardcoded since it cant be python-native-foo, should be python-foo-native | ||
71 | pn = 'python' | ||
72 | |||
73 | for key in python_manifest: | ||
74 | pypackage = pn + '-' + key + '-native' | ||
75 | if pypackage not in rprovides: | ||
76 | rprovides.append(pypackage) | ||
77 | |||
78 | d.setVar('RPROVIDES', ' '.join(rprovides)) | ||
79 | } | ||
diff --git a/meta/recipes-devtools/python/python/create_manifest2.py b/meta/recipes-devtools/python/python/create_manifest2.py new file mode 100644 index 0000000000..bd64ec3ee7 --- /dev/null +++ b/meta/recipes-devtools/python/python/create_manifest2.py | |||
@@ -0,0 +1,277 @@ | |||
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 | # Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29@gmail.com> | ||
34 | |||
35 | |||
36 | import sys | ||
37 | import subprocess | ||
38 | import json | ||
39 | import os | ||
40 | |||
41 | # Hack to get native python search path (for folders), not fond of it but it works for now | ||
42 | pivot='recipe-sysroot-native' | ||
43 | for p in sys.path: | ||
44 | if pivot in p: | ||
45 | nativelibfolder=p[:p.find(pivot)+len(pivot)] | ||
46 | |||
47 | # Empty dict to hold the whole manifest | ||
48 | new_manifest = {} | ||
49 | |||
50 | # Check for repeated files, folders and wildcards | ||
51 | allfiles=[] | ||
52 | repeated=[] | ||
53 | wildcards=[] | ||
54 | |||
55 | hasfolders=[] | ||
56 | allfolders=[] | ||
57 | |||
58 | def isFolder(value): | ||
59 | 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')): | ||
60 | return True | ||
61 | else: | ||
62 | return False | ||
63 | |||
64 | # Read existing JSON manifest | ||
65 | with open('python2-manifest.json') as manifest: | ||
66 | old_manifest=json.load(manifest) | ||
67 | |||
68 | |||
69 | # First pass to get core-package functionality, because we base everything on the fact that core is actually working | ||
70 | # Not exactly the same so it should not be a function | ||
71 | print ("Getting dependencies for core package:") | ||
72 | |||
73 | # Special call to check for core package | ||
74 | output = subprocess.check_output([sys.executable, 'get_module_deps2.py', 'python-core-package']) | ||
75 | for item in output.split(): | ||
76 | # We append it so it doesnt hurt what we currently have: | ||
77 | if item not in old_manifest['core']['files']: | ||
78 | # We use the same data structure since its the one which will be used to check | ||
79 | # dependencies for other packages | ||
80 | old_manifest['core']['files'].append(item) | ||
81 | |||
82 | for value in old_manifest['core']['files']: | ||
83 | # Ignore folders, since we don't import those, difficult to handle multilib | ||
84 | if isFolder(value): | ||
85 | # Pass it directly | ||
86 | if value not in old_manifest['core']['files']: | ||
87 | old_manifest['core']['files'].append(value) | ||
88 | # Ignore binaries, since we don't import those, assume it was added correctly (manually) | ||
89 | if '${bindir}' in value: | ||
90 | # Pass it directly | ||
91 | if value not in old_manifest['core']['files']: | ||
92 | old_manifest['core']['files'].append(value) | ||
93 | continue | ||
94 | # Ignore empty values | ||
95 | if value == '': | ||
96 | continue | ||
97 | if '${includedir}' in value: | ||
98 | if value not in old_manifest['core']['files']: | ||
99 | old_manifest['core']['files'].append(value) | ||
100 | continue | ||
101 | # Get module name , shouldnt be affected by libdir/bindir | ||
102 | value = os.path.splitext(os.path.basename(os.path.normpath(value)))[0] | ||
103 | |||
104 | |||
105 | # Launch separate task for each module for deterministic behavior | ||
106 | # Each module will only import what is necessary for it to work in specific | ||
107 | print ('Getting dependencies for module: %s' % value) | ||
108 | output = subprocess.check_output([sys.executable, 'get_module_deps2.py', '%s' % value]) | ||
109 | for item in output.split(): | ||
110 | # We append it so it doesnt hurt what we currently have: | ||
111 | if item not in old_manifest['core']['files']: | ||
112 | old_manifest['core']['files'].append(item) | ||
113 | |||
114 | # We check which packages include folders | ||
115 | for key in old_manifest: | ||
116 | for value in old_manifest[key]['files']: | ||
117 | # Ignore folders, since we don't import those, difficult to handle multilib | ||
118 | if isFolder(value): | ||
119 | print ('%s is a folder' % value) | ||
120 | if key not in hasfolders: | ||
121 | hasfolders.append(key) | ||
122 | if value not in allfolders: | ||
123 | allfolders.append(value) | ||
124 | |||
125 | for key in old_manifest: | ||
126 | # Use an empty dict as data structure to hold data for each package and fill it up | ||
127 | new_manifest[key]={} | ||
128 | new_manifest[key]['files']=[] | ||
129 | new_manifest[key]['rdepends']=[] | ||
130 | # All packages should depend on core | ||
131 | if key != 'core': | ||
132 | new_manifest[key]['rdepends'].append('core') | ||
133 | new_manifest[key]['summary']=old_manifest[key]['summary'] | ||
134 | |||
135 | # Handle special cases, we assume that when they were manually added | ||
136 | # to the manifest we knew what we were doing. | ||
137 | print ('Handling package %s' % key) | ||
138 | special_packages=['misc', 'modules', 'dev'] | ||
139 | if key in special_packages or 'staticdev' in key: | ||
140 | print('Passing %s package directly' % key) | ||
141 | new_manifest[key]=old_manifest[key] | ||
142 | continue | ||
143 | |||
144 | for value in old_manifest[key]['files']: | ||
145 | # We already handled core on the first pass | ||
146 | if key == 'core': | ||
147 | new_manifest[key]['files'].append(value) | ||
148 | continue | ||
149 | # Ignore folders, since we don't import those, difficult to handle multilib | ||
150 | if isFolder(value): | ||
151 | # Pass folders directly | ||
152 | new_manifest[key]['files'].append(value) | ||
153 | # Ignore binaries, since we don't import those | ||
154 | if '${bindir}' in value: | ||
155 | # Pass it directly to the new manifest data structure | ||
156 | if value not in new_manifest[key]['files']: | ||
157 | new_manifest[key]['files'].append(value) | ||
158 | continue | ||
159 | # Ignore empty values | ||
160 | if value == '': | ||
161 | continue | ||
162 | if '${includedir}' in value: | ||
163 | if value not in new_manifest[key]['files']: | ||
164 | new_manifest[key]['files'].append(value) | ||
165 | continue | ||
166 | # Get module name , shouldnt be affected by libdir/bindir | ||
167 | value = os.path.splitext(os.path.basename(os.path.normpath(value)))[0] | ||
168 | |||
169 | # Launch separate task for each module for deterministic behavior | ||
170 | # Each module will only import what is necessary for it to work in specific | ||
171 | print ('Getting dependencies for module: %s' % value) | ||
172 | output = subprocess.check_output([sys.executable, 'get_module_deps2.py', '%s' % value]) | ||
173 | |||
174 | # We can print dependencies for debugging purposes | ||
175 | #print (output) | ||
176 | # Output will have all dependencies | ||
177 | for item in output.split(): | ||
178 | |||
179 | # Warning: This first part is ugly | ||
180 | # One of the dependencies that was found, could be inside of one of the folders included by another package | ||
181 | # We need to check if this happens so we can add the package containing the folder as an RDEPENDS | ||
182 | # e.g. Folder encodings contained in codecs | ||
183 | # This would be solved if no packages included any folders | ||
184 | |||
185 | # This can be done in two ways: | ||
186 | # 1 - We assume that if we take out the filename from the path we would get | ||
187 | # the folder string, then we would check if folder string is in the list of folders | ||
188 | # This would not work if a package contains a folder which contains another folder | ||
189 | # e.g. path/folder1/folder2/filename folder_string= path/folder1/folder2 | ||
190 | # folder_string would not match any value contained in the list of folders | ||
191 | # | ||
192 | # 2 - We do it the other way around, checking if the folder is contained in the path | ||
193 | # e.g. path/folder1/folder2/filename folder_string= path/folder1/folder2 | ||
194 | # is folder_string inside path/folder1/folder2/filename?, | ||
195 | # Yes, it works, but we waste a couple of milliseconds. | ||
196 | |||
197 | inFolders=False | ||
198 | for folder in allfolders: | ||
199 | if folder in item: | ||
200 | inFolders = True # Did we find a folder? | ||
201 | folderFound = False # Second flag to break inner for | ||
202 | # Loop only through packages which contain folders | ||
203 | for keyfolder in hasfolders: | ||
204 | if (folderFound == False): | ||
205 | #print("Checking folder %s on package %s" % (item,keyfolder)) | ||
206 | for file_folder in old_manifest[keyfolder]['files']: | ||
207 | if file_folder==folder: | ||
208 | print ('%s found in %s' % (folder, keyfolder)) | ||
209 | folderFound = True | ||
210 | if keyfolder not in new_manifest[key]['rdepends'] and keyfolder != key: | ||
211 | new_manifest[key]['rdepends'].append(keyfolder) | ||
212 | else: | ||
213 | break | ||
214 | |||
215 | # A folder was found so we're done with this item, we can go on | ||
216 | if inFolders: | ||
217 | continue | ||
218 | |||
219 | # We might already have it on the dictionary since it could depend on a (previously checked) module | ||
220 | if item not in new_manifest[key]['files']: | ||
221 | # Handle core as a special package, we already did it so we pass it to NEW data structure directly | ||
222 | if key=='core': | ||
223 | print('Adding %s to %s FILES' % (item, key)) | ||
224 | if item.endswith('*'): | ||
225 | wildcards.append(item) | ||
226 | new_manifest[key]['files'].append(item) | ||
227 | |||
228 | # Check for repeated files | ||
229 | if item not in allfiles: | ||
230 | allfiles.append(item) | ||
231 | else: | ||
232 | repeated.append(item) | ||
233 | |||
234 | else: | ||
235 | |||
236 | # Check if this dependency is already contained on another package, so we add it | ||
237 | # as an RDEPENDS, or if its not, it means it should be contained on the current | ||
238 | # package, so we should add it to FILES | ||
239 | for newkey in old_manifest: | ||
240 | # Debug | ||
241 | #print("Checking %s " % item + " in %s" % newkey) | ||
242 | if item in old_manifest[newkey]['files']: | ||
243 | # Since were nesting, we need to check its not the same key | ||
244 | if(newkey!=key): | ||
245 | if newkey not in new_manifest[key]['rdepends']: | ||
246 | # Add it to the new manifest data struct | ||
247 | # Debug | ||
248 | print('Adding %s to %s RDEPENDS, because it contains %s' % (newkey, key, item)) | ||
249 | new_manifest[key]['rdepends'].append(newkey) | ||
250 | break | ||
251 | else: | ||
252 | # Debug | ||
253 | print('Adding %s to %s FILES' % (item, key)) | ||
254 | # Since it wasnt found on another package, its not an RDEP, so add it to FILES for this package | ||
255 | new_manifest[key]['files'].append(item) | ||
256 | if item.endswith('*'): | ||
257 | wildcards.append(item) | ||
258 | if item not in allfiles: | ||
259 | allfiles.append(item) | ||
260 | else: | ||
261 | repeated.append(item) | ||
262 | |||
263 | print ('The following files are repeated (contained in more than one package), please check which package should get it:') | ||
264 | print (repeated) | ||
265 | print('The following files contain wildcards, please check they are necessary') | ||
266 | print(wildcards) | ||
267 | print('The following files contain folders, please check they are necessary') | ||
268 | print(hasfolders) | ||
269 | |||
270 | # Sort it just so it looks nice | ||
271 | for key in new_manifest: | ||
272 | new_manifest[key]['files'].sort() | ||
273 | new_manifest[key]['rdepends'].sort() | ||
274 | |||
275 | # Create the manifest from the data structure that was built | ||
276 | with open('python2-manifest.json.new','w') as outfile: | ||
277 | json.dump(new_manifest,outfile,sort_keys=True, indent=4) | ||
diff --git a/meta/recipes-devtools/python/python/get_module_deps2.py b/meta/recipes-devtools/python/python/get_module_deps2.py new file mode 100644 index 0000000000..73e7c6f6dc --- /dev/null +++ b/meta/recipes-devtools/python/python/get_module_deps2.py | |||
@@ -0,0 +1,112 @@ | |||
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 | |||
9 | # We can get a log per module, for all the dependencies that were found, but its messy. | ||
10 | debug=False | ||
11 | |||
12 | import sys | ||
13 | |||
14 | # We can get a list of the modules which are currently required to run python | ||
15 | # so we run python-core and get its modules, we then import what we need | ||
16 | # and check what modules are currently running, if we substract them from the | ||
17 | # modules we had initially, we get the dependencies for the module we imported. | ||
18 | |||
19 | # We use importlib to achieve this, so we also need to know what modules importlib needs | ||
20 | import importlib | ||
21 | |||
22 | core_deps=set(sys.modules) | ||
23 | |||
24 | def fix_path(dep_path): | ||
25 | import os | ||
26 | # We DONT want the path on our HOST system | ||
27 | pivot='recipe-sysroot-native' | ||
28 | dep_path=dep_path[dep_path.find(pivot)+len(pivot):] | ||
29 | |||
30 | if '/usr/bin' in dep_path: | ||
31 | dep_path = dep_path.replace('/usr/bin''${bindir}') | ||
32 | |||
33 | # Handle multilib, is there a better way? | ||
34 | if '/usr/lib32' in dep_path: | ||
35 | dep_path = dep_path.replace('/usr/lib32','${libdir}') | ||
36 | if '/usr/lib64' in dep_path: | ||
37 | dep_path = dep_path.replace('/usr/lib64','${libdir}') | ||
38 | if '/usr/lib' in dep_path: | ||
39 | dep_path = dep_path.replace('/usr/lib','${libdir}') | ||
40 | if '/usr/include' in dep_path: | ||
41 | dep_path = dep_path.replace('/usr/include','${includedir}') | ||
42 | if '__init__.' in dep_path: | ||
43 | dep_path = os.path.split(dep_path)[0] | ||
44 | |||
45 | # If a *.pyc file was imported, we replace it with *.py (since we deal with PYCs on create_manifest) | ||
46 | if '.pyc' in dep_path: | ||
47 | dep_path = dep_path.replace('.pyc','.py') | ||
48 | |||
49 | return dep_path | ||
50 | |||
51 | # Module to import was passed as an argument | ||
52 | current_module = str(sys.argv[1]).rstrip() | ||
53 | if(debug==True): | ||
54 | log = open('log_%s' % current_module,'w') | ||
55 | log.write('Module %s generated the following dependencies:\n' % current_module) | ||
56 | try: | ||
57 | importlib.import_module('%s' % current_module) | ||
58 | except ImportError as e: | ||
59 | if (debug==True): | ||
60 | log.write('Module was not found') | ||
61 | pass | ||
62 | |||
63 | |||
64 | # Get current module dependencies, dif will contain a list of specific deps for this module | ||
65 | module_deps=set(sys.modules) | ||
66 | |||
67 | # We handle the core package (1st pass on create_manifest.py) as a special case | ||
68 | if current_module == 'python-core-package': | ||
69 | dif = core_deps | ||
70 | else: | ||
71 | dif = module_deps-core_deps | ||
72 | |||
73 | |||
74 | # Check where each dependency came from | ||
75 | for item in dif: | ||
76 | dep_path='' | ||
77 | try: | ||
78 | if (debug==True): | ||
79 | log.write('Calling: sys.modules[' + '%s' % item + '].__file__\n') | ||
80 | dep_path = sys.modules['%s' % item].__file__ | ||
81 | except AttributeError as e: | ||
82 | # Deals with thread (builtin module) not having __file__ attribute | ||
83 | if debug==True: | ||
84 | log.write(item + ' ') | ||
85 | log.write(str(e)) | ||
86 | log.write('\n') | ||
87 | pass | ||
88 | except NameError as e: | ||
89 | # Deals with NameError: name 'dep_path' is not defined | ||
90 | # because module is not found (wasn't compiled?), e.g. bddsm | ||
91 | if (debug==True): | ||
92 | log.write(item+' ') | ||
93 | log.write(str(e)) | ||
94 | pass | ||
95 | |||
96 | # Site-customize is a special case since we (OpenEmbedded) put it there manually | ||
97 | if 'sitecustomize' in dep_path: | ||
98 | dep_path = '${libdir}/python2.7/sitecustomize.py' | ||
99 | # Prints out result, which is what will be used by create_manifest | ||
100 | print (dep_path) | ||
101 | continue | ||
102 | |||
103 | dep_path = fix_path(dep_path) | ||
104 | |||
105 | if (debug==True): | ||
106 | log.write(dep_path+'\n') | ||
107 | |||
108 | # Prints out result, which is what will be used by create_manifest | ||
109 | print (dep_path) | ||
110 | |||
111 | if debug==True: | ||
112 | log.close() | ||
diff --git a/meta/recipes-devtools/python/python/python2-manifest.json b/meta/recipes-devtools/python/python/python2-manifest.json new file mode 100644 index 0000000000..8ebc715fc1 --- /dev/null +++ b/meta/recipes-devtools/python/python/python2-manifest.json | |||
@@ -0,0 +1,1032 @@ | |||
1 | { | ||
2 | "2to3": { | ||
3 | "files": [ | ||
4 | "${bindir}/2to3", | ||
5 | "${libdir}/python2.7/lib2to3" | ||
6 | ], | ||
7 | "rdepends": [ | ||
8 | "core" | ||
9 | ], | ||
10 | "summary": "Python automated Python 2 to 3 code translator" | ||
11 | }, | ||
12 | "argparse": { | ||
13 | "files": [ | ||
14 | "${libdir}/python2.7/argparse.py" | ||
15 | ], | ||
16 | "rdepends": [ | ||
17 | "codecs", | ||
18 | "core", | ||
19 | "lang", | ||
20 | "textutils" | ||
21 | ], | ||
22 | "summary": "Python command line argument parser" | ||
23 | }, | ||
24 | "audio": { | ||
25 | "files": [ | ||
26 | "${libdir}/python2.7/audiodev.py", | ||
27 | "${libdir}/python2.7/chunk.py", | ||
28 | "${libdir}/python2.7/lib-dynload/audioop.so", | ||
29 | "${libdir}/python2.7/lib-dynload/ossaudiodev.so", | ||
30 | "${libdir}/python2.7/sndhdr.py", | ||
31 | "${libdir}/python2.7/sunau.py", | ||
32 | "${libdir}/python2.7/sunaudio.py", | ||
33 | "${libdir}/python2.7/toaiff.py", | ||
34 | "${libdir}/python2.7/wave.py" | ||
35 | ], | ||
36 | "rdepends": [ | ||
37 | "core", | ||
38 | "crypt", | ||
39 | "fcntl", | ||
40 | "io", | ||
41 | "math" | ||
42 | ], | ||
43 | "summary": "Python Audio Handling" | ||
44 | }, | ||
45 | "bsddb": { | ||
46 | "files": [ | ||
47 | "${libdir}/python2.7/bsddb", | ||
48 | "${libdir}/python2.7/lib-dynload/_bsddb.so" | ||
49 | ], | ||
50 | "rdepends": [ | ||
51 | "core" | ||
52 | ], | ||
53 | "summary": "Python bindings for the Berkeley Database" | ||
54 | }, | ||
55 | "codecs": { | ||
56 | "files": [ | ||
57 | "${libdir}/python2.7/gettext.py", | ||
58 | "${libdir}/python2.7/lib-dynload/_codecs_cn.so", | ||
59 | "${libdir}/python2.7/lib-dynload/_codecs_hk.so", | ||
60 | "${libdir}/python2.7/lib-dynload/_codecs_iso2022.so", | ||
61 | "${libdir}/python2.7/lib-dynload/_codecs_jp.so", | ||
62 | "${libdir}/python2.7/lib-dynload/_codecs_kr.so", | ||
63 | "${libdir}/python2.7/lib-dynload/_codecs_tw.so", | ||
64 | "${libdir}/python2.7/lib-dynload/_multibytecodec.so", | ||
65 | "${libdir}/python2.7/lib-dynload/unicodedata.so", | ||
66 | "${libdir}/python2.7/locale.py", | ||
67 | "${libdir}/python2.7/stringprep.py", | ||
68 | "${libdir}/python2.7/xdrlib.py" | ||
69 | ], | ||
70 | "rdepends": [ | ||
71 | "core", | ||
72 | "io", | ||
73 | "lang" | ||
74 | ], | ||
75 | "summary": "Python codec" | ||
76 | }, | ||
77 | "compile": { | ||
78 | "files": [ | ||
79 | "${libdir}/python2.7/compileall.py", | ||
80 | "${libdir}/python2.7/py_compile.py" | ||
81 | ], | ||
82 | "rdepends": [ | ||
83 | "core" | ||
84 | ], | ||
85 | "summary": "Python bytecode compilation support" | ||
86 | }, | ||
87 | "compiler": { | ||
88 | "files": [ | ||
89 | "${libdir}/python2.7/compiler" | ||
90 | ], | ||
91 | "rdepends": [ | ||
92 | "core", | ||
93 | "io", | ||
94 | "lang" | ||
95 | ], | ||
96 | "summary": "Python compiler support" | ||
97 | }, | ||
98 | "compression": { | ||
99 | "files": [ | ||
100 | "${libdir}/python2.7/gzip.py", | ||
101 | "${libdir}/python2.7/lib-dynload/bz2.so", | ||
102 | "${libdir}/python2.7/tarfile.py", | ||
103 | "${libdir}/python2.7/zipfile.py" | ||
104 | ], | ||
105 | "rdepends": [ | ||
106 | "core", | ||
107 | "io", | ||
108 | "shell", | ||
109 | "unixadmin", | ||
110 | "zlib" | ||
111 | ], | ||
112 | "summary": "Python high-level compression support" | ||
113 | }, | ||
114 | "contextlib": { | ||
115 | "files": [ | ||
116 | "${libdir}/python2.7/contextlib.py" | ||
117 | ], | ||
118 | "rdepends": [ | ||
119 | "core", | ||
120 | "lang" | ||
121 | ], | ||
122 | "summary": "Python utilities for with-statementcontexts." | ||
123 | }, | ||
124 | "core": { | ||
125 | "files": [ | ||
126 | "${bindir}/python*", | ||
127 | "${includedir}/python2.7/pyconfig*.h", | ||
128 | "${libdir}/python2.7/ConfigParser.py", | ||
129 | "${libdir}/python2.7/UserDict.py", | ||
130 | "${libdir}/python2.7/UserList.py", | ||
131 | "${libdir}/python2.7/UserString.py", | ||
132 | "${libdir}/python2.7/__future__.py", | ||
133 | "${libdir}/python2.7/_abcoll.py", | ||
134 | "${libdir}/python2.7/_sysconfigdata.py", | ||
135 | "${libdir}/python2.7/_weakrefset.py", | ||
136 | "${libdir}/python2.7/abc.py", | ||
137 | "${libdir}/python2.7/ast.py", | ||
138 | "${libdir}/python2.7/atexit.py", | ||
139 | "${libdir}/python2.7/codecs.py", | ||
140 | "${libdir}/python2.7/collections.py", | ||
141 | "${libdir}/python2.7/copy.py", | ||
142 | "${libdir}/python2.7/copy_reg.py", | ||
143 | "${libdir}/python2.7/encodings", | ||
144 | "${libdir}/python2.7/encodings/aliases.py", | ||
145 | "${libdir}/python2.7/encodings/utf_8.py", | ||
146 | "${libdir}/python2.7/genericpath.py", | ||
147 | "${libdir}/python2.7/getopt.py", | ||
148 | "${libdir}/python2.7/heapq.py", | ||
149 | "${libdir}/python2.7/importlib", | ||
150 | "${libdir}/python2.7/keyword.py", | ||
151 | "${libdir}/python2.7/lib-dynload/_collections.so", | ||
152 | "${libdir}/python2.7/lib-dynload/_heapq.so", | ||
153 | "${libdir}/python2.7/lib-dynload/_locale.so", | ||
154 | "${libdir}/python2.7/lib-dynload/_struct.so", | ||
155 | "${libdir}/python2.7/lib-dynload/binascii.so", | ||
156 | "${libdir}/python2.7/lib-dynload/itertools.so", | ||
157 | "${libdir}/python2.7/lib-dynload/operator.so", | ||
158 | "${libdir}/python2.7/lib-dynload/readline.so", | ||
159 | "${libdir}/python2.7/lib-dynload/strop.so", | ||
160 | "${libdir}/python2.7/lib-dynload/time.so", | ||
161 | "${libdir}/python2.7/lib-dynload/xreadlines.so", | ||
162 | "${libdir}/python2.7/linecache.py", | ||
163 | "${libdir}/python2.7/new.py", | ||
164 | "${libdir}/python2.7/os.py", | ||
165 | "${libdir}/python2.7/platform.py", | ||
166 | "${libdir}/python2.7/posixpath.py", | ||
167 | "${libdir}/python2.7/re.py", | ||
168 | "${libdir}/python2.7/rlcompleter.py", | ||
169 | "${libdir}/python2.7/site.py", | ||
170 | "${libdir}/python2.7/sitecustomize.py", | ||
171 | "${libdir}/python2.7/sre_compile.py", | ||
172 | "${libdir}/python2.7/sre_constants.py", | ||
173 | "${libdir}/python2.7/sre_parse.py", | ||
174 | "${libdir}/python2.7/stat.py", | ||
175 | "${libdir}/python2.7/string.py", | ||
176 | "${libdir}/python2.7/struct.py", | ||
177 | "${libdir}/python2.7/sysconfig.py", | ||
178 | "${libdir}/python2.7/traceback.py", | ||
179 | "${libdir}/python2.7/types.py", | ||
180 | "${libdir}/python2.7/warnings.py", | ||
181 | "${libdir}/python2.7/weakref.py" | ||
182 | ], | ||
183 | "rdepends": [], | ||
184 | "summary": "Python interpreter and core modules" | ||
185 | }, | ||
186 | "crypt": { | ||
187 | "files": [ | ||
188 | "${libdir}/python2.7/hashlib.py", | ||
189 | "${libdir}/python2.7/lib-dynload/_hashlib.so", | ||
190 | "${libdir}/python2.7/lib-dynload/crypt.so", | ||
191 | "${libdir}/python2.7/md5.py", | ||
192 | "${libdir}/python2.7/sha.py" | ||
193 | ], | ||
194 | "rdepends": [ | ||
195 | "core" | ||
196 | ], | ||
197 | "summary": "Python basic cryptographic and hashing support" | ||
198 | }, | ||
199 | "ctypes": { | ||
200 | "files": [ | ||
201 | "${libdir}/python2.7/ctypes", | ||
202 | "${libdir}/python2.7/lib-dynload/_ctypes.so", | ||
203 | "${libdir}/python2.7/lib-dynload/_ctypes_test.so" | ||
204 | ], | ||
205 | "rdepends": [ | ||
206 | "core" | ||
207 | ], | ||
208 | "summary": "Python C types support" | ||
209 | }, | ||
210 | "curses": { | ||
211 | "files": [ | ||
212 | "${libdir}/python2.7/curses", | ||
213 | "${libdir}/python2.7/lib-dynload/_curses.so", | ||
214 | "${libdir}/python2.7/lib-dynload/_curses_panel.so" | ||
215 | ], | ||
216 | "rdepends": [ | ||
217 | "core" | ||
218 | ], | ||
219 | "summary": "Python curses support" | ||
220 | }, | ||
221 | "datetime": { | ||
222 | "files": [ | ||
223 | "${libdir}/python2.7/_strptime.py", | ||
224 | "${libdir}/python2.7/calendar.py", | ||
225 | "${libdir}/python2.7/lib-dynload/datetime.so" | ||
226 | ], | ||
227 | "rdepends": [ | ||
228 | "codecs", | ||
229 | "core", | ||
230 | "lang" | ||
231 | ], | ||
232 | "summary": "Python calendar and time support" | ||
233 | }, | ||
234 | "db": { | ||
235 | "files": [ | ||
236 | "${libdir}/python2.7/anydbm.py", | ||
237 | "${libdir}/python2.7/dbhash.py", | ||
238 | "${libdir}/python2.7/dumbdbm.py", | ||
239 | "${libdir}/python2.7/lib-dynload/dbm.so", | ||
240 | "${libdir}/python2.7/whichdb.py" | ||
241 | ], | ||
242 | "rdepends": [ | ||
243 | "bsddb", | ||
244 | "core", | ||
245 | "gdbm" | ||
246 | ], | ||
247 | "summary": "Python file-based database support" | ||
248 | }, | ||
249 | "debugger": { | ||
250 | "files": [ | ||
251 | "${libdir}/python2.7/bdb.py", | ||
252 | "${libdir}/python2.7/pdb.py" | ||
253 | ], | ||
254 | "rdepends": [ | ||
255 | "core", | ||
256 | "io", | ||
257 | "lang", | ||
258 | "pprint", | ||
259 | "shell" | ||
260 | ], | ||
261 | "summary": "Python debugger" | ||
262 | }, | ||
263 | "dev": { | ||
264 | "files": [ | ||
265 | "${base_libdir}/*.a", | ||
266 | "${base_libdir}/*.o", | ||
267 | "${datadir}/aclocal", | ||
268 | "${datadir}/pkgconfig", | ||
269 | "${includedir}", | ||
270 | "${libdir}/*.a", | ||
271 | "${libdir}/*.la", | ||
272 | "${libdir}/*.o", | ||
273 | "${libdir}/lib*${SOLIBSDEV}", | ||
274 | "${libdir}/pkgconfig", | ||
275 | "${libdir}/python2.7/config/Makefile" | ||
276 | ], | ||
277 | "rdepends": [ | ||
278 | "core" | ||
279 | ], | ||
280 | "summary": "Python development package" | ||
281 | }, | ||
282 | "difflib": { | ||
283 | "files": [ | ||
284 | "${libdir}/python2.7/difflib.py" | ||
285 | ], | ||
286 | "rdepends": [ | ||
287 | "core", | ||
288 | "lang" | ||
289 | ], | ||
290 | "summary": "Python helpers for computing deltas between objects" | ||
291 | }, | ||
292 | "distutils": { | ||
293 | "files": [ | ||
294 | "${libdir}/python2.7/config", | ||
295 | "${libdir}/python2.7/distutils" | ||
296 | ], | ||
297 | "rdepends": [ | ||
298 | "core" | ||
299 | ], | ||
300 | "summary": "Python Distribution Utilities" | ||
301 | }, | ||
302 | "distutils-staticdev": { | ||
303 | "files": [ | ||
304 | "${libdir}/python2.7/config/lib*.a" | ||
305 | ], | ||
306 | "rdepends": [ | ||
307 | "distutils" | ||
308 | ], | ||
309 | "summary": "Python distribution utilities (static libraries)" | ||
310 | }, | ||
311 | "doctest": { | ||
312 | "files": [ | ||
313 | "${libdir}/python2.7/doctest.py" | ||
314 | ], | ||
315 | "rdepends": [ | ||
316 | "core", | ||
317 | "crypt", | ||
318 | "debugger", | ||
319 | "difflib", | ||
320 | "fcntl", | ||
321 | "io", | ||
322 | "lang", | ||
323 | "math", | ||
324 | "pprint", | ||
325 | "shell", | ||
326 | "unittest" | ||
327 | ], | ||
328 | "summary": "Python framework for running examples in docstrings" | ||
329 | }, | ||
330 | "email": { | ||
331 | "files": [ | ||
332 | "${libdir}/python2.7/email", | ||
333 | "${libdir}/python2.7/imaplib.py" | ||
334 | ], | ||
335 | "rdepends": [ | ||
336 | "contextlib", | ||
337 | "core", | ||
338 | "crypt", | ||
339 | "fcntl", | ||
340 | "io", | ||
341 | "lang", | ||
342 | "math", | ||
343 | "netclient", | ||
344 | "pickle", | ||
345 | "subprocess", | ||
346 | "textutils" | ||
347 | ], | ||
348 | "summary": "Python email support" | ||
349 | }, | ||
350 | "fcntl": { | ||
351 | "files": [ | ||
352 | "${libdir}/python2.7/lib-dynload/fcntl.so" | ||
353 | ], | ||
354 | "rdepends": [ | ||
355 | "core" | ||
356 | ], | ||
357 | "summary": "Python's fcntl interface" | ||
358 | }, | ||
359 | "gdbm": { | ||
360 | "files": [ | ||
361 | "${libdir}/python2.7/lib-dynload/gdbm.so" | ||
362 | ], | ||
363 | "rdepends": [ | ||
364 | "core" | ||
365 | ], | ||
366 | "summary": "Python GNU database support" | ||
367 | }, | ||
368 | "hotshot": { | ||
369 | "files": [ | ||
370 | "${libdir}/python2.7/hotshot", | ||
371 | "${libdir}/python2.7/lib-dynload/_hotshot.so" | ||
372 | ], | ||
373 | "rdepends": [ | ||
374 | "core" | ||
375 | ], | ||
376 | "summary": "Python hotshot performance profiler" | ||
377 | }, | ||
378 | "html": { | ||
379 | "files": [ | ||
380 | "${libdir}/python2.7/HTMLParser.py", | ||
381 | "${libdir}/python2.7/formatter.py", | ||
382 | "${libdir}/python2.7/htmlentitydefs.py", | ||
383 | "${libdir}/python2.7/htmllib.py", | ||
384 | "${libdir}/python2.7/markupbase.py", | ||
385 | "${libdir}/python2.7/sgmllib.py" | ||
386 | ], | ||
387 | "rdepends": [ | ||
388 | "core" | ||
389 | ], | ||
390 | "summary": "Python HTML processing support" | ||
391 | }, | ||
392 | "idle": { | ||
393 | "files": [ | ||
394 | "${bindir}/idle", | ||
395 | "${libdir}/python2.7/idlelib" | ||
396 | ], | ||
397 | "rdepends": [ | ||
398 | "core" | ||
399 | ], | ||
400 | "summary": "Python Integrated Development Environment" | ||
401 | }, | ||
402 | "image": { | ||
403 | "files": [ | ||
404 | "${libdir}/python2.7/colorsys.py", | ||
405 | "${libdir}/python2.7/imghdr.py" | ||
406 | ], | ||
407 | "rdepends": [ | ||
408 | "core" | ||
409 | ], | ||
410 | "summary": "Python graphical image handling" | ||
411 | }, | ||
412 | "io": { | ||
413 | "files": [ | ||
414 | "${libdir}/python2.7/StringIO.py", | ||
415 | "${libdir}/python2.7/_pyio.py", | ||
416 | "${libdir}/python2.7/io.py", | ||
417 | "${libdir}/python2.7/lib-dynload/_io.so", | ||
418 | "${libdir}/python2.7/lib-dynload/_socket.so", | ||
419 | "${libdir}/python2.7/lib-dynload/_ssl.so", | ||
420 | "${libdir}/python2.7/lib-dynload/cStringIO.so", | ||
421 | "${libdir}/python2.7/lib-dynload/select.so", | ||
422 | "${libdir}/python2.7/lib-dynload/termios.so", | ||
423 | "${libdir}/python2.7/pipes.py", | ||
424 | "${libdir}/python2.7/socket.py", | ||
425 | "${libdir}/python2.7/ssl.py", | ||
426 | "${libdir}/python2.7/tempfile.py" | ||
427 | ], | ||
428 | "rdepends": [ | ||
429 | "contextlib", | ||
430 | "core", | ||
431 | "crypt", | ||
432 | "fcntl", | ||
433 | "lang", | ||
434 | "math", | ||
435 | "netclient", | ||
436 | "textutils" | ||
437 | ], | ||
438 | "summary": "Python low-level I/O" | ||
439 | }, | ||
440 | "json": { | ||
441 | "files": [ | ||
442 | "${libdir}/python2.7/json", | ||
443 | "${libdir}/python2.7/lib-dynload/_json.so" | ||
444 | ], | ||
445 | "rdepends": [ | ||
446 | "core" | ||
447 | ], | ||
448 | "summary": "Python JSON support" | ||
449 | }, | ||
450 | "lang": { | ||
451 | "files": [ | ||
452 | "${libdir}/python2.7/bisect.py", | ||
453 | "${libdir}/python2.7/code.py", | ||
454 | "${libdir}/python2.7/codeop.py", | ||
455 | "${libdir}/python2.7/dis.py", | ||
456 | "${libdir}/python2.7/functools.py", | ||
457 | "${libdir}/python2.7/inspect.py", | ||
458 | "${libdir}/python2.7/lib-dynload/_bisect.so", | ||
459 | "${libdir}/python2.7/lib-dynload/_functools.so", | ||
460 | "${libdir}/python2.7/lib-dynload/array.so", | ||
461 | "${libdir}/python2.7/lib-dynload/parser.so", | ||
462 | "${libdir}/python2.7/opcode.py", | ||
463 | "${libdir}/python2.7/repr.py", | ||
464 | "${libdir}/python2.7/symbol.py", | ||
465 | "${libdir}/python2.7/token.py", | ||
466 | "${libdir}/python2.7/tokenize.py" | ||
467 | ], | ||
468 | "rdepends": [ | ||
469 | "core" | ||
470 | ], | ||
471 | "summary": "Python low-level language support" | ||
472 | }, | ||
473 | "logging": { | ||
474 | "files": [ | ||
475 | "${libdir}/python2.7/logging" | ||
476 | ], | ||
477 | "rdepends": [ | ||
478 | "core", | ||
479 | "io", | ||
480 | "threading" | ||
481 | ], | ||
482 | "summary": "Python logging support" | ||
483 | }, | ||
484 | "mailbox": { | ||
485 | "files": [ | ||
486 | "${libdir}/python2.7/mailbox.py" | ||
487 | ], | ||
488 | "rdepends": [ | ||
489 | "codecs", | ||
490 | "contextlib", | ||
491 | "core", | ||
492 | "crypt", | ||
493 | "datetime", | ||
494 | "email", | ||
495 | "fcntl", | ||
496 | "io", | ||
497 | "lang", | ||
498 | "math", | ||
499 | "mime", | ||
500 | "netclient", | ||
501 | "textutils" | ||
502 | ], | ||
503 | "summary": "Python mailbox format support" | ||
504 | }, | ||
505 | "math": { | ||
506 | "files": [ | ||
507 | "${libdir}/python2.7/lib-dynload/_random.so", | ||
508 | "${libdir}/python2.7/lib-dynload/cmath.so", | ||
509 | "${libdir}/python2.7/lib-dynload/math.so", | ||
510 | "${libdir}/python2.7/random.py", | ||
511 | "${libdir}/python2.7/sets.py" | ||
512 | ], | ||
513 | "rdepends": [ | ||
514 | "core", | ||
515 | "crypt" | ||
516 | ], | ||
517 | "summary": "Python math support" | ||
518 | }, | ||
519 | "mime": { | ||
520 | "files": [ | ||
521 | "${libdir}/python2.7/MimeWriter.py", | ||
522 | "${libdir}/python2.7/mimetools.py", | ||
523 | "${libdir}/python2.7/mimetypes.py", | ||
524 | "${libdir}/python2.7/quopri.py", | ||
525 | "${libdir}/python2.7/rfc822.py", | ||
526 | "${libdir}/python2.7/uu.py" | ||
527 | ], | ||
528 | "rdepends": [ | ||
529 | "contextlib", | ||
530 | "core", | ||
531 | "crypt", | ||
532 | "fcntl", | ||
533 | "io", | ||
534 | "lang", | ||
535 | "math", | ||
536 | "netclient", | ||
537 | "textutils" | ||
538 | ], | ||
539 | "summary": "Python MIME handling APIs" | ||
540 | }, | ||
541 | "mmap": { | ||
542 | "files": [ | ||
543 | "${libdir}/python2.7/lib-dynload/mmap.so" | ||
544 | ], | ||
545 | "rdepends": [ | ||
546 | "core" | ||
547 | ], | ||
548 | "summary": "Python memory-mapped file support" | ||
549 | }, | ||
550 | "modules": { | ||
551 | "files": [], | ||
552 | "rdepends": [ | ||
553 | "2to3", | ||
554 | "argparse", | ||
555 | "audio", | ||
556 | "bsddb", | ||
557 | "codecs", | ||
558 | "compile", | ||
559 | "compiler", | ||
560 | "compression", | ||
561 | "contextlib", | ||
562 | "core", | ||
563 | "crypt", | ||
564 | "ctypes", | ||
565 | "curses", | ||
566 | "datetime", | ||
567 | "db", | ||
568 | "debugger", | ||
569 | "difflib", | ||
570 | "distutils", | ||
571 | "doctest", | ||
572 | "email", | ||
573 | "fcntl", | ||
574 | "gdbm", | ||
575 | "hotshot", | ||
576 | "html", | ||
577 | "idle", | ||
578 | "image", | ||
579 | "io", | ||
580 | "json", | ||
581 | "lang", | ||
582 | "logging", | ||
583 | "mailbox", | ||
584 | "math", | ||
585 | "mime", | ||
586 | "mmap", | ||
587 | "multiprocessing", | ||
588 | "netclient", | ||
589 | "netserver", | ||
590 | "numbers", | ||
591 | "pickle", | ||
592 | "pkgutil", | ||
593 | "plistlib", | ||
594 | "pprint", | ||
595 | "profile", | ||
596 | "pydoc", | ||
597 | "re", | ||
598 | "resource", | ||
599 | "robotparser", | ||
600 | "shell", | ||
601 | "smtpd", | ||
602 | "sqlite3", | ||
603 | "sqlite3", | ||
604 | "stringold", | ||
605 | "subprocess", | ||
606 | "syslog", | ||
607 | "terminal", | ||
608 | "textutils", | ||
609 | "threading", | ||
610 | "tkinter", | ||
611 | "unittest", | ||
612 | "unixadmin", | ||
613 | "xml", | ||
614 | "xmlrpc", | ||
615 | "zlib" | ||
616 | ], | ||
617 | "summary": "All Python modules" | ||
618 | }, | ||
619 | "multiprocessing": { | ||
620 | "files": [ | ||
621 | "${libdir}/python2.7/lib-dynload/_multiprocessing.so", | ||
622 | "${libdir}/python2.7/multiprocessing" | ||
623 | ], | ||
624 | "rdepends": [ | ||
625 | "core", | ||
626 | "fcntl", | ||
627 | "io", | ||
628 | "pickle", | ||
629 | "subprocess", | ||
630 | "threading" | ||
631 | ], | ||
632 | "summary": "Python multiprocessing support" | ||
633 | }, | ||
634 | "netclient": { | ||
635 | "files": [ | ||
636 | "${libdir}/python2.7/Cookie.py", | ||
637 | "${libdir}/python2.7/_LWPCookieJar.py", | ||
638 | "${libdir}/python2.7/_MozillaCookieJar.py", | ||
639 | "${libdir}/python2.7/base64.py", | ||
640 | "${libdir}/python2.7/cookielib.py", | ||
641 | "${libdir}/python2.7/ftplib.py", | ||
642 | "${libdir}/python2.7/hmac.py", | ||
643 | "${libdir}/python2.7/httplib.py", | ||
644 | "${libdir}/python2.7/nntplib.py", | ||
645 | "${libdir}/python2.7/poplib.py", | ||
646 | "${libdir}/python2.7/smtplib.py", | ||
647 | "${libdir}/python2.7/telnetlib.py", | ||
648 | "${libdir}/python2.7/urllib.py", | ||
649 | "${libdir}/python2.7/urllib2.py", | ||
650 | "${libdir}/python2.7/urlparse.py", | ||
651 | "${libdir}/python2.7/uuid.py" | ||
652 | ], | ||
653 | "rdepends": [ | ||
654 | "codecs", | ||
655 | "contextlib", | ||
656 | "core", | ||
657 | "crypt", | ||
658 | "ctypes", | ||
659 | "datetime", | ||
660 | "email", | ||
661 | "fcntl", | ||
662 | "io", | ||
663 | "lang", | ||
664 | "math", | ||
665 | "mime", | ||
666 | "pickle", | ||
667 | "subprocess", | ||
668 | "textutils", | ||
669 | "threading" | ||
670 | ], | ||
671 | "summary": "Python Internet Protocol clients" | ||
672 | }, | ||
673 | "netserver": { | ||
674 | "files": [ | ||
675 | "${libdir}/python2.7/BaseHTTPServer.py", | ||
676 | "${libdir}/python2.7/CGIHTTPServer.py", | ||
677 | "${libdir}/python2.7/SimpleHTTPServer.py", | ||
678 | "${libdir}/python2.7/SocketServer.py", | ||
679 | "${libdir}/python2.7/cgi.py" | ||
680 | ], | ||
681 | "rdepends": [ | ||
682 | "contextlib", | ||
683 | "core", | ||
684 | "crypt", | ||
685 | "fcntl", | ||
686 | "io", | ||
687 | "lang", | ||
688 | "math", | ||
689 | "mime", | ||
690 | "netclient", | ||
691 | "shell", | ||
692 | "textutils", | ||
693 | "threading", | ||
694 | "unixadmin" | ||
695 | ], | ||
696 | "summary": "Python Internet Protocol servers" | ||
697 | }, | ||
698 | "numbers": { | ||
699 | "files": [ | ||
700 | "${libdir}/python2.7/decimal.py", | ||
701 | "${libdir}/python2.7/fractions.py", | ||
702 | "${libdir}/python2.7/numbers.py" | ||
703 | ], | ||
704 | "rdepends": [ | ||
705 | "codecs", | ||
706 | "core", | ||
707 | "lang", | ||
708 | "math", | ||
709 | "threading" | ||
710 | ], | ||
711 | "summary": "Python number APIs" | ||
712 | }, | ||
713 | "pickle": { | ||
714 | "files": [ | ||
715 | "${libdir}/python2.7/lib-dynload/cPickle.so", | ||
716 | "${libdir}/python2.7/pickle.py", | ||
717 | "${libdir}/python2.7/pickletools.py", | ||
718 | "${libdir}/python2.7/shelve.py" | ||
719 | ], | ||
720 | "rdepends": [ | ||
721 | "core", | ||
722 | "io" | ||
723 | ], | ||
724 | "summary": "Python serialisation/persistence support" | ||
725 | }, | ||
726 | "pkgutil": { | ||
727 | "files": [ | ||
728 | "${libdir}/python2.7/pkgutil.py" | ||
729 | ], | ||
730 | "rdepends": [ | ||
731 | "core" | ||
732 | ], | ||
733 | "summary": "Python package extension utility support" | ||
734 | }, | ||
735 | "plistlib": { | ||
736 | "files": [ | ||
737 | "${libdir}/python2.7/plistlib.py" | ||
738 | ], | ||
739 | "rdepends": [ | ||
740 | "core", | ||
741 | "datetime", | ||
742 | "io" | ||
743 | ], | ||
744 | "summary": "Generate and parse Mac OS X .plist files" | ||
745 | }, | ||
746 | "pprint": { | ||
747 | "files": [ | ||
748 | "${libdir}/python2.7/pprint.py" | ||
749 | ], | ||
750 | "rdepends": [ | ||
751 | "core", | ||
752 | "io" | ||
753 | ], | ||
754 | "summary": "Python pretty-print support" | ||
755 | }, | ||
756 | "profile": { | ||
757 | "files": [ | ||
758 | "${libdir}/python2.7/cProfile.py", | ||
759 | "${libdir}/python2.7/lib-dynload/_lsprof.so", | ||
760 | "${libdir}/python2.7/profile.py", | ||
761 | "${libdir}/python2.7/pstats.py" | ||
762 | ], | ||
763 | "rdepends": [ | ||
764 | "codecs", | ||
765 | "core", | ||
766 | "lang", | ||
767 | "resource", | ||
768 | "textutils" | ||
769 | ], | ||
770 | "summary": "Python basic performance profiling support" | ||
771 | }, | ||
772 | "pydoc": { | ||
773 | "files": [ | ||
774 | "${bindir}/pydoc", | ||
775 | "${libdir}/python2.7/pydoc.py", | ||
776 | "${libdir}/python2.7/pydoc_data" | ||
777 | ], | ||
778 | "rdepends": [ | ||
779 | "codecs", | ||
780 | "core", | ||
781 | "lang", | ||
782 | "pkgutil" | ||
783 | ], | ||
784 | "summary": "Python interactive help support" | ||
785 | }, | ||
786 | "re": { | ||
787 | "files": [ | ||
788 | "${libdir}/python2.7/sre.py" | ||
789 | ], | ||
790 | "rdepends": [ | ||
791 | "core" | ||
792 | ], | ||
793 | "summary": "Python Regular Expression APIs" | ||
794 | }, | ||
795 | "resource": { | ||
796 | "files": [ | ||
797 | "${libdir}/python2.7/lib-dynload/resource.so" | ||
798 | ], | ||
799 | "rdepends": [ | ||
800 | "core" | ||
801 | ], | ||
802 | "summary": "Python resource control interface" | ||
803 | }, | ||
804 | "robotparser": { | ||
805 | "files": [ | ||
806 | "${libdir}/python2.7/robotparser.py" | ||
807 | ], | ||
808 | "rdepends": [ | ||
809 | "contextlib", | ||
810 | "core", | ||
811 | "io", | ||
812 | "lang", | ||
813 | "netclient", | ||
814 | "textutils" | ||
815 | ], | ||
816 | "summary": "Python robots.txt parser" | ||
817 | }, | ||
818 | "shell": { | ||
819 | "files": [ | ||
820 | "${libdir}/python2.7/cmd.py", | ||
821 | "${libdir}/python2.7/commands.py", | ||
822 | "${libdir}/python2.7/dircache.py", | ||
823 | "${libdir}/python2.7/fnmatch.py", | ||
824 | "${libdir}/python2.7/glob.py", | ||
825 | "${libdir}/python2.7/popen2.py", | ||
826 | "${libdir}/python2.7/shlex.py", | ||
827 | "${libdir}/python2.7/shutil.py" | ||
828 | ], | ||
829 | "rdepends": [ | ||
830 | "core", | ||
831 | "io", | ||
832 | "unixadmin" | ||
833 | ], | ||
834 | "summary": "Python shell-like functionality" | ||
835 | }, | ||
836 | "smtpd": { | ||
837 | "files": [ | ||
838 | "${bindir}/smtpd.py", | ||
839 | "${libdir}/python2.7/asynchat.py", | ||
840 | "${libdir}/python2.7/asyncore.py", | ||
841 | "${libdir}/python2.7/smtpd.py" | ||
842 | ], | ||
843 | "rdepends": [ | ||
844 | "core", | ||
845 | "fcntl", | ||
846 | "io", | ||
847 | "lang" | ||
848 | ], | ||
849 | "summary": "Python Simple Mail Transport Daemon" | ||
850 | }, | ||
851 | "sqlite3": { | ||
852 | "files": [ | ||
853 | "${libdir}/python2.7/lib-dynload/_sqlite3.so" | ||
854 | ], | ||
855 | "rdepends": [ | ||
856 | "core" | ||
857 | ], | ||
858 | "summary": "Python Sqlite3 database support" | ||
859 | }, | ||
860 | "sqlite3-tests": { | ||
861 | "files": [ | ||
862 | "${libdir}/python2.7/sqlite3/test" | ||
863 | ], | ||
864 | "rdepends": [ | ||
865 | "core", | ||
866 | "tests" | ||
867 | ], | ||
868 | "summary": "Python Sqlite3 database support tests" | ||
869 | }, | ||
870 | "stringold": { | ||
871 | "files": [ | ||
872 | "${libdir}/python2.7/stringold.py" | ||
873 | ], | ||
874 | "rdepends": [ | ||
875 | "core" | ||
876 | ], | ||
877 | "summary": "Python string APIs [deprecated]" | ||
878 | }, | ||
879 | "subprocess": { | ||
880 | "files": [ | ||
881 | "${libdir}/python2.7/subprocess.py" | ||
882 | ], | ||
883 | "rdepends": [ | ||
884 | "core", | ||
885 | "fcntl", | ||
886 | "io", | ||
887 | "pickle" | ||
888 | ], | ||
889 | "summary": "Python subprocess support" | ||
890 | }, | ||
891 | "syslog": { | ||
892 | "files": [ | ||
893 | "${libdir}/python2.7/lib-dynload/syslog.so" | ||
894 | ], | ||
895 | "rdepends": [ | ||
896 | "core" | ||
897 | ], | ||
898 | "summary": "Python syslog interface" | ||
899 | }, | ||
900 | "terminal": { | ||
901 | "files": [ | ||
902 | "${libdir}/python2.7/pty.py", | ||
903 | "${libdir}/python2.7/tty.py" | ||
904 | ], | ||
905 | "rdepends": [ | ||
906 | "core", | ||
907 | "io" | ||
908 | ], | ||
909 | "summary": "Python terminal controlling support" | ||
910 | }, | ||
911 | "tests": { | ||
912 | "files": [ | ||
913 | "${libdir}/python2.7/test" | ||
914 | ], | ||
915 | "rdepends": [ | ||
916 | "core" | ||
917 | ], | ||
918 | "summary": "Python tests" | ||
919 | }, | ||
920 | "textutils": { | ||
921 | "files": [ | ||
922 | "${libdir}/python2.7/csv.py", | ||
923 | "${libdir}/python2.7/lib-dynload/_csv.so", | ||
924 | "${libdir}/python2.7/optparse.py", | ||
925 | "${libdir}/python2.7/textwrap.py" | ||
926 | ], | ||
927 | "rdepends": [ | ||
928 | "codecs", | ||
929 | "core", | ||
930 | "io", | ||
931 | "lang" | ||
932 | ], | ||
933 | "summary": "Python option parsin" | ||
934 | }, | ||
935 | "threading": { | ||
936 | "files": [ | ||
937 | "${libdir}/python2.7/Queue.py", | ||
938 | "${libdir}/python2.7/_threading_local.py", | ||
939 | "${libdir}/python2.7/dummy_thread.py", | ||
940 | "${libdir}/python2.7/dummy_threading.py", | ||
941 | "${libdir}/python2.7/mutex.py", | ||
942 | "${libdir}/python2.7/threading.py" | ||
943 | ], | ||
944 | "rdepends": [ | ||
945 | "core" | ||
946 | ], | ||
947 | "summary": "Python threading & synchronization support" | ||
948 | }, | ||
949 | "tkinter": { | ||
950 | "files": [ | ||
951 | "${libdir}/python2.7/lib-tk" | ||
952 | ], | ||
953 | "rdepends": [ | ||
954 | "core" | ||
955 | ], | ||
956 | "summary": "Python Tcl/Tk bindings" | ||
957 | }, | ||
958 | "unittest": { | ||
959 | "files": [ | ||
960 | "${libdir}/python2.7/unittest" | ||
961 | ], | ||
962 | "rdepends": [ | ||
963 | "core", | ||
964 | "difflib", | ||
965 | "io", | ||
966 | "lang", | ||
967 | "pprint", | ||
968 | "shell" | ||
969 | ], | ||
970 | "summary": "Python unit testing framework" | ||
971 | }, | ||
972 | "unixadmin": { | ||
973 | "files": [ | ||
974 | "${libdir}/python2.7/getpass.py", | ||
975 | "${libdir}/python2.7/lib-dynload/grp.so", | ||
976 | "${libdir}/python2.7/lib-dynload/nis.so" | ||
977 | ], | ||
978 | "rdepends": [ | ||
979 | "core", | ||
980 | "io" | ||
981 | ], | ||
982 | "summary": "Python Unix administration support" | ||
983 | }, | ||
984 | "xml": { | ||
985 | "files": [ | ||
986 | "${libdir}/python2.7/lib-dynload/_elementtree.so", | ||
987 | "${libdir}/python2.7/lib-dynload/pyexpat.so", | ||
988 | "${libdir}/python2.7/xml" | ||
989 | ], | ||
990 | "rdepends": [ | ||
991 | "core" | ||
992 | ], | ||
993 | "summary": "Python basic XML support" | ||
994 | }, | ||
995 | "xmlrpc": { | ||
996 | "files": [ | ||
997 | "${libdir}/python2.7/DocXMLRPCServer.py", | ||
998 | "${libdir}/python2.7/SimpleXMLRPCServer.py" | ||
999 | ], | ||
1000 | "rdepends": [ | ||
1001 | "codecs", | ||
1002 | "compression", | ||
1003 | "contextlib", | ||
1004 | "core", | ||
1005 | "crypt", | ||
1006 | "datetime", | ||
1007 | "fcntl", | ||
1008 | "io", | ||
1009 | "lang", | ||
1010 | "math", | ||
1011 | "mime", | ||
1012 | "netclient", | ||
1013 | "netserver", | ||
1014 | "pkgutil", | ||
1015 | "pydoc", | ||
1016 | "textutils", | ||
1017 | "threading", | ||
1018 | "xml", | ||
1019 | "zlib" | ||
1020 | ], | ||
1021 | "summary": "Python XML-RPC support" | ||
1022 | }, | ||
1023 | "zlib": { | ||
1024 | "files": [ | ||
1025 | "${libdir}/python2.7/lib-dynload/zlib.so" | ||
1026 | ], | ||
1027 | "rdepends": [ | ||
1028 | "core" | ||
1029 | ], | ||
1030 | "summary": "Python zlib compression support" | ||
1031 | } | ||
1032 | } \ No newline at end of file | ||
diff --git a/meta/recipes-devtools/python/python/sitecustomize.py b/meta/recipes-devtools/python/python/sitecustomize.py index 273901898a..4c8b5e2ba3 100644 --- a/meta/recipes-devtools/python/python/sitecustomize.py +++ b/meta/recipes-devtools/python/python/sitecustomize.py | |||
@@ -27,19 +27,11 @@ def __enableReadlineSupport(): | |||
27 | except IOError: | 27 | except IOError: |
28 | pass | 28 | pass |
29 | 29 | ||
30 | def __enableDefaultEncoding(): | ||
31 | import sys | ||
32 | try: | ||
33 | sys.setdefaultencoding( "utf8" ) | ||
34 | except LookupError: | ||
35 | pass | ||
36 | |||
37 | import sys | 30 | import sys |
38 | try: | 31 | try: |
39 | import rlcompleter, readline | 32 | import rlcompleter, readline |
40 | except ImportError: | 33 | except ImportError: |
41 | pass | 34 | pass |
42 | else: | 35 | else: |
43 | __enableDefaultEncoding() | ||
44 | __registerExitHandler() | 36 | __registerExitHandler() |
45 | __enableReadlineSupport() | 37 | __enableReadlineSupport() |
diff --git a/meta/recipes-devtools/python/python_2.7.13.bb b/meta/recipes-devtools/python/python_2.7.13.bb index 754c029097..dbafb955f9 100644 --- a/meta/recipes-devtools/python/python_2.7.13.bb +++ b/meta/recipes-devtools/python/python_2.7.13.bb | |||
@@ -1,5 +1,7 @@ | |||
1 | require python.inc | 1 | require python.inc |
2 | |||
2 | DEPENDS = "python-native libffi bzip2 gdbm openssl readline sqlite3 zlib" | 3 | DEPENDS = "python-native libffi bzip2 gdbm openssl readline sqlite3 zlib" |
4 | |||
3 | PR = "${INC_PR}" | 5 | PR = "${INC_PR}" |
4 | 6 | ||
5 | DISTRO_SRC_URI ?= "file://sitecustomize.py" | 7 | DISTRO_SRC_URI ?= "file://sitecustomize.py" |
@@ -145,11 +147,9 @@ py_package_preprocess () { | |||
145 | python -m py_compile ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py | 147 | python -m py_compile ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py |
146 | } | 148 | } |
147 | 149 | ||
148 | require python-${PYTHON_MAJMIN}-manifest.inc | ||
149 | 150 | ||
150 | # manual dependency additions | 151 | # manual dependency additions |
151 | RPROVIDES_${PN}-core = "${PN}" | 152 | RPROVIDES_${PN}-core = "${PN}" |
152 | RRECOMMENDS_${PN}-core = "${PN}-readline" | ||
153 | RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python-modules" | 153 | RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python-modules" |
154 | RRECOMMENDS_${PN}-crypt = "openssl" | 154 | RRECOMMENDS_${PN}-crypt = "openssl" |
155 | 155 | ||
@@ -193,3 +193,87 @@ FILES_${PN}-man = "${datadir}/man" | |||
193 | RDEPENDS_${PN}-modules_remove = "${@bb.utils.contains('PACKAGECONFIG', 'bdb', '', '${PN}-bsddb', d)}" | 193 | RDEPENDS_${PN}-modules_remove = "${@bb.utils.contains('PACKAGECONFIG', 'bdb', '', '${PN}-bsddb', d)}" |
194 | 194 | ||
195 | BBCLASSEXTEND = "nativesdk" | 195 | BBCLASSEXTEND = "nativesdk" |
196 | |||
197 | RPROVIDES_${PN} += "${PN}-modules" | ||
198 | |||
199 | # We want bytecode precompiled .py files (.pyc's) by default | ||
200 | # but the user may set it on their own conf | ||
201 | |||
202 | INCLUDE_PYCS ?= "1" | ||
203 | |||
204 | python(){ | ||
205 | |||
206 | pythondir = d.getVar('THISDIR',True) | ||
207 | |||
208 | # Read JSON manifest | ||
209 | import json | ||
210 | with open(pythondir+'/python/python2-manifest.json') as manifest_file: | ||
211 | python_manifest=json.load(manifest_file) | ||
212 | |||
213 | include_pycs = d.getVar('INCLUDE_PYCS') | ||
214 | |||
215 | packages = d.getVar('PACKAGES').split() | ||
216 | pn = d.getVar('PN') | ||
217 | |||
218 | |||
219 | newpackages=[] | ||
220 | |||
221 | for key in python_manifest: | ||
222 | pypackage= pn + '-' + key | ||
223 | |||
224 | if pypackage not in packages: | ||
225 | # We need to prepend, otherwise python-misc gets everything | ||
226 | # so we use a new variable | ||
227 | newpackages.append(pypackage) | ||
228 | |||
229 | # "Build" python's manifest FILES, RDEPENDS and SUMMARY | ||
230 | d.setVar('FILES_' + pypackage, '') | ||
231 | for value in python_manifest[key]['files']: | ||
232 | d.appendVar('FILES_' + pypackage, ' ' + value) | ||
233 | if include_pycs == '1': | ||
234 | if value.endswith('.py'): | ||
235 | d.appendVar('FILES_' + pypackage, ' ' + value + 'c') | ||
236 | |||
237 | d.setVar('RDEPENDS_' + pypackage, '') | ||
238 | for value in python_manifest[key]['rdepends']: | ||
239 | # Make it work with or without $PN | ||
240 | if '${PN}' in value: | ||
241 | value=value.split('-')[1] | ||
242 | d.appendVar('RDEPENDS_' + pypackage, ' ' + pn + '-' + value) | ||
243 | d.setVar('SUMMARY_' + pypackage, python_manifest[key]['summary']) | ||
244 | |||
245 | # We need to ensure staticdev packages match for files first so we sort in reverse | ||
246 | newpackages.sort(reverse=True) | ||
247 | # Prepending so to avoid python-misc getting everything | ||
248 | packages = newpackages + packages | ||
249 | d.setVar('PACKAGES', ' '.join(packages)) | ||
250 | d.setVar('ALLOW_EMPTY_${PN}-modules', '1') | ||
251 | } | ||
252 | |||
253 | do_split_packages[file-checksums] += "${THISDIR}/python/python2-manifest.json:True" | ||
254 | |||
255 | # Files needed to create a new manifest | ||
256 | SRC_URI += "file://create_manifest2.py file://get_module_deps2.py file://python2-manifest.json" | ||
257 | |||
258 | do_create_manifest() { | ||
259 | |||
260 | # This task should be run with every new release of Python. | ||
261 | # We must ensure that PACKAGECONFIG enables everything when creating | ||
262 | # a new manifest, this is to base our new manifest on a complete | ||
263 | # native python build, containing all dependencies, otherwise the task | ||
264 | # wont be able to find the required files. | ||
265 | # e.g. BerkeleyDB is an optional build dependency so it may or may not | ||
266 | # be present, we must ensure it is. | ||
267 | |||
268 | cd ${WORKDIR} | ||
269 | # This needs to be executed by python-native and NOT by HOST's python | ||
270 | nativepython create_manifest2.py | ||
271 | cp python2-manifest.json.new ${THISDIR}/python/python2-manifest.json | ||
272 | } | ||
273 | |||
274 | # bitbake python -c create_manifest | ||
275 | addtask do_create_manifest | ||
276 | |||
277 | # Make sure we have native python ready when we create a new manifest | ||
278 | do_create_manifest[depends] += "python:do_prepare_recipe_sysroot" | ||
279 | do_create_manifest[depends] += "python:do_patch" | ||
diff --git a/scripts/contrib/python/generate-manifest-2.7.py b/scripts/contrib/python/generate-manifest-2.7.py deleted file mode 100755 index ee7540399f..0000000000 --- a/scripts/contrib/python/generate-manifest-2.7.py +++ /dev/null | |||
@@ -1,426 +0,0 @@ | |||
1 | #!/usr/bin/env python | ||
2 | |||
3 | # generate Python Manifest for the OpenEmbedded build system | ||
4 | # (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de> | ||
5 | # (C) 2007 Jeremy Laine | ||
6 | # licensed under MIT, see COPYING.MIT | ||
7 | # | ||
8 | # June 22, 2011 -- Mark Hatle <mark.hatle@windriver.com> | ||
9 | # * Updated to no longer generate special -dbg package, instead use the | ||
10 | # single system -dbg | ||
11 | # * Update version with ".1" to indicate this change | ||
12 | # | ||
13 | # February 26, 2017 -- Ming Liu <peter.x.liu@external.atlascopco.com> | ||
14 | # * Updated to support generating manifest for native python | ||
15 | |||
16 | import os | ||
17 | import sys | ||
18 | import time | ||
19 | import argparse | ||
20 | |||
21 | VERSION = "2.7.2" | ||
22 | |||
23 | __author__ = "Michael 'Mickey' Lauer <mlauer@vanille-media.de>" | ||
24 | __version__ = "20110222.2" | ||
25 | |||
26 | class MakefileMaker: | ||
27 | |||
28 | def __init__( self, outfile, isNative ): | ||
29 | """initialize""" | ||
30 | self.packages = {} | ||
31 | self.excluded_pkgs = [] | ||
32 | self.targetPrefix = "${libdir}/python%s/" % VERSION[:3] | ||
33 | self.isNative = isNative | ||
34 | self.output = outfile | ||
35 | self.out( """ | ||
36 | # WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. | ||
37 | # Generator: '%s%s' Version %s (C) 2002-2010 Michael 'Mickey' Lauer <mlauer@vanille-media.de> | ||
38 | """ % ( sys.argv[0], ' --native' if isNative else '', __version__ ) ) | ||
39 | |||
40 | # | ||
41 | # helper functions | ||
42 | # | ||
43 | |||
44 | def out( self, data ): | ||
45 | """print a line to the output file""" | ||
46 | self.output.write( "%s\n" % data ) | ||
47 | |||
48 | def setPrefix( self, targetPrefix ): | ||
49 | """set a file prefix for addPackage files""" | ||
50 | self.targetPrefix = targetPrefix | ||
51 | |||
52 | def doProlog( self ): | ||
53 | self.out( """ """ ) | ||
54 | self.out( "" ) | ||
55 | |||
56 | def addPackage( self, name, description, dependencies, filenames, mod_exclude = False ): | ||
57 | """add a package to the Makefile""" | ||
58 | if type( filenames ) == type( "" ): | ||
59 | filenames = filenames.split() | ||
60 | fullFilenames = [] | ||
61 | for filename in filenames: | ||
62 | if filename[0] != "$": | ||
63 | fullFilenames.append( "%s%s" % ( self.targetPrefix, filename ) ) | ||
64 | else: | ||
65 | fullFilenames.append( filename ) | ||
66 | if mod_exclude: | ||
67 | self.excluded_pkgs.append( name ) | ||
68 | self.packages[name] = description, dependencies, fullFilenames | ||
69 | |||
70 | def doBody( self ): | ||
71 | """generate body of Makefile""" | ||
72 | |||
73 | global VERSION | ||
74 | |||
75 | # | ||
76 | # generate rprovides line for native | ||
77 | # | ||
78 | |||
79 | if self.isNative: | ||
80 | pkglist = [] | ||
81 | for name in ['${PN}-modules'] + sorted(self.packages): | ||
82 | pkglist.append('%s-native' % name.replace('${PN}', 'python')) | ||
83 | |||
84 | self.out('RPROVIDES += "%s"' % " ".join(pkglist)) | ||
85 | return | ||
86 | |||
87 | # | ||
88 | # generate provides line | ||
89 | # | ||
90 | |||
91 | provideLine = 'PROVIDES+=" \\\n' | ||
92 | for name in sorted(self.packages): | ||
93 | provideLine += " %s \\\n" % name | ||
94 | provideLine += '"' | ||
95 | |||
96 | self.out( provideLine ) | ||
97 | self.out( "" ) | ||
98 | |||
99 | # | ||
100 | # generate package line | ||
101 | # | ||
102 | |||
103 | packageLine = 'PACKAGES=" \\\n' | ||
104 | packageLine += ' ${PN}-dbg \\\n' | ||
105 | for name in sorted(self.packages): | ||
106 | if name.startswith("${PN}-distutils"): | ||
107 | if name == "${PN}-distutils": | ||
108 | packageLine += " %s-staticdev %s \\\n" % (name, name) | ||
109 | elif name != '${PN}-dbg': | ||
110 | packageLine += " %s \\\n" % name | ||
111 | packageLine += ' ${PN}-modules\\\n"' | ||
112 | |||
113 | self.out( packageLine ) | ||
114 | self.out( "" ) | ||
115 | |||
116 | # | ||
117 | # generate package variables | ||
118 | # | ||
119 | |||
120 | for name, data in sorted(self.packages.items()): | ||
121 | desc, deps, files = data | ||
122 | |||
123 | # | ||
124 | # write out the description, revision and dependencies | ||
125 | # | ||
126 | self.out( 'SUMMARY_%s="%s"' % ( name, desc ) ) | ||
127 | self.out( 'RDEPENDS_%s="%s"' % ( name, deps ) ) | ||
128 | |||
129 | line = 'FILES_%s=" \\\n' % name | ||
130 | |||
131 | # | ||
132 | # check which directories to make in the temporary directory | ||
133 | # | ||
134 | |||
135 | dirset = {} # if python had a set-datatype this would be sufficient. for now, we're using a dict instead. | ||
136 | for target in files: | ||
137 | dirset[os.path.dirname( target )] = True | ||
138 | |||
139 | # | ||
140 | # generate which files to copy for the target (-dfR because whole directories are also allowed) | ||
141 | # | ||
142 | |||
143 | for target in files: | ||
144 | line += " %s \\\n" % target | ||
145 | |||
146 | line += '"' | ||
147 | self.out( line ) | ||
148 | self.out( "" ) | ||
149 | |||
150 | self.out( 'SUMMARY_${PN}-modules="All Python modules"' ) | ||
151 | line = 'RDEPENDS_${PN}-modules=" \\\n' | ||
152 | |||
153 | for name, data in sorted(self.packages.items()): | ||
154 | if name not in ['${PN}-dev', '${PN}-distutils-staticdev'] and name not in self.excluded_pkgs: | ||
155 | line += " %s \\\n" % name | ||
156 | |||
157 | line += '"' | ||
158 | self.out( line ) | ||
159 | self.out( 'ALLOW_EMPTY_${PN}-modules = "1"' ) | ||
160 | |||
161 | def doEpilog( self ): | ||
162 | self.out( """""" ) | ||
163 | self.out( "" ) | ||
164 | |||
165 | def make( self ): | ||
166 | self.doProlog() | ||
167 | self.doBody() | ||
168 | self.doEpilog() | ||
169 | |||
170 | if __name__ == "__main__": | ||
171 | parser = argparse.ArgumentParser( description='generate python manifest' ) | ||
172 | parser.add_argument( '-n', '--native', help='generate manifest for native python', action='store_true' ) | ||
173 | parser.add_argument( 'outfile', metavar='OUTPUT_FILE', nargs='?', default='', help='Output file (defaults to stdout)' ) | ||
174 | args = parser.parse_args() | ||
175 | |||
176 | if args.outfile: | ||
177 | try: | ||
178 | os.unlink( args.outfile ) | ||
179 | except Exception: | ||
180 | sys.exc_clear() | ||
181 | outfile = open( args.outfile, "w" ) | ||
182 | else: | ||
183 | outfile = sys.stdout | ||
184 | |||
185 | m = MakefileMaker( outfile, args.native ) | ||
186 | |||
187 | # Add packages here. Only specify dlopen-style library dependencies here, no ldd-style dependencies! | ||
188 | # Parameters: revision, name, description, dependencies, filenames | ||
189 | # | ||
190 | |||
191 | m.addPackage( "${PN}-core", "Python interpreter and core modules", "${PN}-lang ${PN}-re", | ||
192 | "__future__.* _abcoll.* abc.* ast.* copy.* copy_reg.* ConfigParser.* " + | ||
193 | "genericpath.* getopt.* linecache.* new.* " + | ||
194 | "os.* posixpath.* struct.* " + | ||
195 | "warnings.* site.* stat.* " + | ||
196 | "UserDict.* UserList.* UserString.* " + | ||
197 | "lib-dynload/binascii.so lib-dynload/_struct.so lib-dynload/time.so " + | ||
198 | "lib-dynload/xreadlines.so types.* platform.* ${bindir}/python* " + | ||
199 | "_weakrefset.* sysconfig.* _sysconfigdata.* " + | ||
200 | "${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h " + | ||
201 | "${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py ") | ||
202 | |||
203 | m.addPackage( "${PN}-dev", "Python development package", "${PN}-core", | ||
204 | "${includedir} " + | ||
205 | "${libdir}/lib*${SOLIBSDEV} " + | ||
206 | "${libdir}/*.la " + | ||
207 | "${libdir}/*.a " + | ||
208 | "${libdir}/*.o " + | ||
209 | "${libdir}/pkgconfig " + | ||
210 | "${base_libdir}/*.a " + | ||
211 | "${base_libdir}/*.o " + | ||
212 | "${datadir}/aclocal " + | ||
213 | "${datadir}/pkgconfig " + | ||
214 | "config/Makefile ") | ||
215 | |||
216 | m.addPackage( "${PN}-2to3", "Python automated Python 2 to 3 code translator", "${PN}-core", | ||
217 | "${bindir}/2to3 lib2to3" ) # package | ||
218 | |||
219 | m.addPackage( "${PN}-idle", "Python Integrated Development Environment", "${PN}-core ${PN}-tkinter", | ||
220 | "${bindir}/idle idlelib" ) # package | ||
221 | |||
222 | m.addPackage( "${PN}-pydoc", "Python interactive help support", "${PN}-core ${PN}-lang ${PN}-stringold ${PN}-re", | ||
223 | "${bindir}/pydoc pydoc.* pydoc_data" ) | ||
224 | |||
225 | m.addPackage( "${PN}-smtpd", "Python Simple Mail Transport Daemon", "${PN}-core ${PN}-netserver ${PN}-email ${PN}-mime", | ||
226 | "${bindir}/smtpd.* smtpd.*" ) | ||
227 | |||
228 | m.addPackage( "${PN}-audio", "Python Audio Handling", "${PN}-core", | ||
229 | "wave.* chunk.* sndhdr.* lib-dynload/ossaudiodev.so lib-dynload/audioop.so audiodev.* sunaudio.* sunau.* toaiff.*" ) | ||
230 | |||
231 | m.addPackage( "${PN}-bsddb", "Python bindings for the Berkeley Database", "${PN}-core", | ||
232 | "bsddb lib-dynload/_bsddb.so" ) # package | ||
233 | |||
234 | m.addPackage( "${PN}-codecs", "Python codecs, encodings & i18n support", "${PN}-core ${PN}-lang", | ||
235 | "codecs.* encodings gettext.* locale.* lib-dynload/_locale.so lib-dynload/_codecs* lib-dynload/_multibytecodec.so lib-dynload/unicodedata.so stringprep.* xdrlib.*" ) | ||
236 | |||
237 | m.addPackage( "${PN}-compile", "Python bytecode compilation support", "${PN}-core", | ||
238 | "py_compile.* compileall.*" ) | ||
239 | |||
240 | m.addPackage( "${PN}-compiler", "Python compiler support", "${PN}-core", | ||
241 | "compiler" ) # package | ||
242 | |||
243 | m.addPackage( "${PN}-compression", "Python high-level compression support", "${PN}-core ${PN}-zlib", | ||
244 | "gzip.* zipfile.* tarfile.* lib-dynload/bz2.so" ) | ||
245 | |||
246 | m.addPackage( "${PN}-crypt", "Python basic cryptographic and hashing support", "${PN}-core", | ||
247 | "hashlib.* md5.* sha.* lib-dynload/crypt.so lib-dynload/_hashlib.so lib-dynload/_sha256.so lib-dynload/_sha512.so" ) | ||
248 | |||
249 | m.addPackage( "${PN}-textutils", "Python option parsing, text wrapping and CSV support", "${PN}-core ${PN}-io ${PN}-re ${PN}-stringold", | ||
250 | "lib-dynload/_csv.so csv.* optparse.* textwrap.*" ) | ||
251 | |||
252 | m.addPackage( "${PN}-curses", "Python curses support", "${PN}-core", | ||
253 | "curses lib-dynload/_curses.so lib-dynload/_curses_panel.so" ) # directory + low level module | ||
254 | |||
255 | m.addPackage( "${PN}-ctypes", "Python C types support", "${PN}-core", | ||
256 | "ctypes lib-dynload/_ctypes.so lib-dynload/_ctypes_test.so" ) # directory + low level module | ||
257 | |||
258 | m.addPackage( "${PN}-datetime", "Python calendar and time support", "${PN}-core ${PN}-codecs", | ||
259 | "_strptime.* calendar.* lib-dynload/datetime.so" ) | ||
260 | |||
261 | m.addPackage( "${PN}-db", "Python file-based database support", "${PN}-core", | ||
262 | "anydbm.* dumbdbm.* whichdb.* " ) | ||
263 | |||
264 | m.addPackage( "${PN}-debugger", "Python debugger", "${PN}-core ${PN}-io ${PN}-lang ${PN}-re ${PN}-stringold ${PN}-shell ${PN}-pprint", | ||
265 | "bdb.* pdb.*" ) | ||
266 | |||
267 | m.addPackage( "${PN}-difflib", "Python helpers for computing deltas between objects", "${PN}-lang ${PN}-re", | ||
268 | "difflib.*" ) | ||
269 | |||
270 | m.addPackage( "${PN}-distutils-staticdev", "Python distribution utilities (static libraries)", "${PN}-distutils", | ||
271 | "config/lib*.a" ) # package | ||
272 | |||
273 | m.addPackage( "${PN}-distutils", "Python Distribution Utilities", "${PN}-core ${PN}-email", | ||
274 | "config distutils" ) # package | ||
275 | |||
276 | m.addPackage( "${PN}-doctest", "Python framework for running examples in docstrings", "${PN}-core ${PN}-lang ${PN}-io ${PN}-re ${PN}-unittest ${PN}-debugger ${PN}-difflib", | ||
277 | "doctest.*" ) | ||
278 | |||
279 | m.addPackage( "${PN}-email", "Python email support", "${PN}-core ${PN}-io ${PN}-re ${PN}-mime ${PN}-audio ${PN}-image ${PN}-netclient", | ||
280 | "imaplib.* email" ) # package | ||
281 | |||
282 | m.addPackage( "${PN}-fcntl", "Python's fcntl interface", "${PN}-core", | ||
283 | "lib-dynload/fcntl.so" ) | ||
284 | |||
285 | m.addPackage( "${PN}-hotshot", "Python hotshot performance profiler", "${PN}-core", | ||
286 | "hotshot lib-dynload/_hotshot.so" ) | ||
287 | |||
288 | m.addPackage( "${PN}-html", "Python HTML processing support", "${PN}-core", | ||
289 | "formatter.* htmlentitydefs.* htmllib.* markupbase.* sgmllib.* HTMLParser.* " ) | ||
290 | |||
291 | m.addPackage( "${PN}-importlib", "Python import implementation library", "${PN}-core", | ||
292 | "importlib" ) | ||
293 | |||
294 | m.addPackage( "${PN}-gdbm", "Python GNU database support", "${PN}-core", | ||
295 | "lib-dynload/gdbm.so" ) | ||
296 | |||
297 | m.addPackage( "${PN}-image", "Python graphical image handling", "${PN}-core", | ||
298 | "colorsys.* imghdr.* lib-dynload/imageop.so lib-dynload/rgbimg.so" ) | ||
299 | |||
300 | m.addPackage( "${PN}-io", "Python low-level I/O", "${PN}-core ${PN}-math ${PN}-textutils ${PN}-netclient ${PN}-contextlib", | ||
301 | "lib-dynload/_socket.so lib-dynload/_io.so lib-dynload/_ssl.so lib-dynload/select.so lib-dynload/termios.so lib-dynload/cStringIO.so " + | ||
302 | "pipes.* socket.* ssl.* tempfile.* StringIO.* io.* _pyio.*" ) | ||
303 | |||
304 | m.addPackage( "${PN}-json", "Python JSON support", "${PN}-core ${PN}-math ${PN}-re ${PN}-codecs", | ||
305 | "json lib-dynload/_json.so" ) # package | ||
306 | |||
307 | m.addPackage( "${PN}-lang", "Python low-level language support", "${PN}-core", | ||
308 | "lib-dynload/_bisect.so lib-dynload/_collections.so lib-dynload/_heapq.so lib-dynload/_weakref.so lib-dynload/_functools.so " + | ||
309 | "lib-dynload/array.so lib-dynload/itertools.so lib-dynload/operator.so lib-dynload/parser.so " + | ||
310 | "atexit.* bisect.* code.* codeop.* collections.* dis.* functools.* heapq.* inspect.* keyword.* opcode.* symbol.* repr.* token.* " + | ||
311 | "tokenize.* traceback.* weakref.*" ) | ||
312 | |||
313 | m.addPackage( "${PN}-logging", "Python logging support", "${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-stringold", | ||
314 | "logging" ) # package | ||
315 | |||
316 | m.addPackage( "${PN}-mailbox", "Python mailbox format support", "${PN}-core ${PN}-mime", | ||
317 | "mailbox.*" ) | ||
318 | |||
319 | m.addPackage( "${PN}-math", "Python math support", "${PN}-core ${PN}-crypt", | ||
320 | "lib-dynload/cmath.so lib-dynload/math.so lib-dynload/_random.so random.* sets.*" ) | ||
321 | |||
322 | m.addPackage( "${PN}-mime", "Python MIME handling APIs", "${PN}-core ${PN}-io", | ||
323 | "mimetools.* uu.* quopri.* rfc822.* MimeWriter.*" ) | ||
324 | |||
325 | m.addPackage( "${PN}-mmap", "Python memory-mapped file support", "${PN}-core ${PN}-io", | ||
326 | "lib-dynload/mmap.so " ) | ||
327 | |||
328 | m.addPackage( "${PN}-multiprocessing", "Python multiprocessing support", "${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-threading ${PN}-ctypes ${PN}-mmap", | ||
329 | "lib-dynload/_multiprocessing.so multiprocessing" ) # package | ||
330 | |||
331 | m.addPackage( "${PN}-netclient", "Python Internet Protocol clients", "${PN}-core ${PN}-crypt ${PN}-datetime ${PN}-io ${PN}-lang ${PN}-logging ${PN}-mime", | ||
332 | "*Cookie*.* " + | ||
333 | "base64.* cookielib.* ftplib.* gopherlib.* hmac.* httplib.* mimetypes.* nntplib.* poplib.* smtplib.* telnetlib.* urllib.* urllib2.* urlparse.* uuid.* rfc822.* mimetools.*" ) | ||
334 | |||
335 | m.addPackage( "${PN}-netserver", "Python Internet Protocol servers", "${PN}-core ${PN}-netclient ${PN}-shell ${PN}-threading", | ||
336 | "cgi.* *HTTPServer.* SocketServer.*" ) | ||
337 | |||
338 | m.addPackage( "${PN}-numbers", "Python number APIs", "${PN}-core ${PN}-lang ${PN}-re", | ||
339 | "decimal.* fractions.* numbers.*" ) | ||
340 | |||
341 | m.addPackage( "${PN}-pickle", "Python serialisation/persistence support", "${PN}-core ${PN}-codecs ${PN}-io ${PN}-re", | ||
342 | "pickle.* shelve.* lib-dynload/cPickle.so pickletools.*" ) | ||
343 | |||
344 | m.addPackage( "${PN}-pkgutil", "Python package extension utility support", "${PN}-core", | ||
345 | "pkgutil.*") | ||
346 | |||
347 | m.addPackage( "${PN}-plistlib", "Generate and parse Mac OS X .plist files", "${PN}-core ${PN}-datetime ${PN}-io", | ||
348 | "plistlib.*") | ||
349 | |||
350 | m.addPackage( "${PN}-pprint", "Python pretty-print support", "${PN}-core ${PN}-io", | ||
351 | "pprint.*" ) | ||
352 | |||
353 | m.addPackage( "${PN}-profile", "Python basic performance profiling support", "${PN}-core ${PN}-textutils", | ||
354 | "profile.* pstats.* cProfile.* lib-dynload/_lsprof.so" ) | ||
355 | |||
356 | m.addPackage( "${PN}-re", "Python Regular Expression APIs", "${PN}-core", | ||
357 | "re.* sre.* sre_compile.* sre_constants* sre_parse.*" ) # _sre is builtin | ||
358 | |||
359 | m.addPackage( "${PN}-readline", "Python readline support", "${PN}-core", | ||
360 | "lib-dynload/readline.so rlcompleter.*" ) | ||
361 | |||
362 | m.addPackage( "${PN}-resource", "Python resource control interface", "${PN}-core", | ||
363 | "lib-dynload/resource.so" ) | ||
364 | |||
365 | m.addPackage( "${PN}-shell", "Python shell-like functionality", "${PN}-core ${PN}-re", | ||
366 | "cmd.* commands.* dircache.* fnmatch.* glob.* popen2.* shlex.* shutil.*" ) | ||
367 | |||
368 | m.addPackage( "${PN}-robotparser", "Python robots.txt parser", "${PN}-core ${PN}-netclient", | ||
369 | "robotparser.*") | ||
370 | |||
371 | m.addPackage( "${PN}-runpy", "Python script for locating/executing scripts in module namespace", "${PN}-core ${PN}-pkgutil", | ||
372 | "runpy.*") | ||
373 | |||
374 | m.addPackage( "${PN}-subprocess", "Python subprocess support", "${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle", | ||
375 | "subprocess.*" ) | ||
376 | |||
377 | m.addPackage( "${PN}-sqlite3", "Python Sqlite3 database support", "${PN}-core ${PN}-datetime ${PN}-lang ${PN}-crypt ${PN}-io ${PN}-threading ${PN}-zlib", | ||
378 | "lib-dynload/_sqlite3.so sqlite3/dbapi2.* sqlite3/__init__.* sqlite3/dump.*" ) | ||
379 | |||
380 | m.addPackage( "${PN}-sqlite3-tests", "Python Sqlite3 database support tests", "${PN}-core ${PN}-sqlite3", | ||
381 | "sqlite3/test" ) | ||
382 | |||
383 | m.addPackage( "${PN}-stringold", "Python string APIs [deprecated]", "${PN}-core ${PN}-re", | ||
384 | "lib-dynload/strop.so string.* stringold.*" ) | ||
385 | |||
386 | m.addPackage( "${PN}-syslog", "Python syslog interface", "${PN}-core", | ||
387 | "lib-dynload/syslog.so" ) | ||
388 | |||
389 | m.addPackage( "${PN}-terminal", "Python terminal controlling support", "${PN}-core ${PN}-io", | ||
390 | "pty.* tty.*" ) | ||
391 | |||
392 | m.addPackage( "${PN}-tests", "Python tests", "${PN}-core ${PN}-modules", | ||
393 | "test", True ) # package | ||
394 | |||
395 | m.addPackage( "${PN}-threading", "Python threading & synchronization support", "${PN}-core ${PN}-lang", | ||
396 | "_threading_local.* dummy_thread.* dummy_threading.* mutex.* threading.* Queue.*" ) | ||
397 | |||
398 | m.addPackage( "${PN}-tkinter", "Python Tcl/Tk bindings", "${PN}-core", | ||
399 | "lib-dynload/_tkinter.so lib-tk" ) # package | ||
400 | |||
401 | m.addPackage( "${PN}-unittest", "Python unit testing framework", "${PN}-core ${PN}-stringold ${PN}-lang ${PN}-io ${PN}-difflib ${PN}-pprint ${PN}-shell", | ||
402 | "unittest/" ) | ||
403 | |||
404 | m.addPackage( "${PN}-unixadmin", "Python Unix administration support", "${PN}-core", | ||
405 | "lib-dynload/nis.so lib-dynload/grp.so lib-dynload/pwd.so getpass.*" ) | ||
406 | |||
407 | m.addPackage( "${PN}-xml", "Python basic XML support", "${PN}-core ${PN}-re", | ||
408 | "lib-dynload/_elementtree.so lib-dynload/pyexpat.so xml xmllib.*" ) # package | ||
409 | |||
410 | m.addPackage( "${PN}-xmlrpc", "Python XML-RPC support", "${PN}-core ${PN}-xml ${PN}-netserver ${PN}-lang", | ||
411 | "xmlrpclib.* SimpleXMLRPCServer.* DocXMLRPCServer.*" ) | ||
412 | |||
413 | m.addPackage( "${PN}-zlib", "Python zlib compression support", "${PN}-core", | ||
414 | "lib-dynload/zlib.so" ) | ||
415 | |||
416 | m.addPackage( "${PN}-mailbox", "Python mailbox format support", "${PN}-core ${PN}-mime", | ||
417 | "mailbox.*" ) | ||
418 | |||
419 | m.addPackage( "${PN}-argparse", "Python command line argument parser", "${PN}-core ${PN}-codecs ${PN}-textutils", | ||
420 | "argparse.*" ) | ||
421 | |||
422 | m.addPackage( "${PN}-contextlib", "Python utilities for with-statement" + | ||
423 | "contexts.", "${PN}-core", | ||
424 | "${libdir}/python${PYTHON_MAJMIN}/contextlib.*" ) | ||
425 | |||
426 | m.make() | ||