summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/python/python-2.7-manifest.inc
diff options
context:
space:
mode:
authorAlejandro Hernandez <alejandro.hernandez@linux.intel.com>2017-06-20 14:11:44 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-01-20 22:31:56 +0000
commit8d94b9db221d1def42f091b991903faa2d1651ce (patch)
tree9d32da2801fe835cc451c9b69040e01691b87906 /meta/recipes-devtools/python/python-2.7-manifest.inc
parente153efde9754a650e555f46cba09680baabd7d7e (diff)
downloadpoky-8d94b9db221d1def42f091b991903faa2d1651ce.tar.gz
python: Restructure python packaging and replace it with autopackaging
The reason we have a manifest file for python is that our goal is to keep python-core as small as posible and add other python packages only when the user needs them, hence why we split upstream python into several packages. Although our manifest file has several issues: - Its unorganized and hard to read and understand it for an average human being. - When a new package needs to be added, the user actually has to modify the script that creates the manifest, then call the script to create a new manifest, and then submit a patch for both the script and the manifest, so its a little convoluted. - Git complains every single time a patch is submitted to the manifest, since it violates some of its guidelines. - It changes or may change with every release of python, its impossible to know if the required files for a certain package have changed (it could have more or less dependencies), the only way of doing so would be to install and test them all one by one on separate individual images, and even then we wouldnt know if they require less dependencies, we would just know if an extra dependency is required since it would complain, lets face it, this isnt feasible. - The same thing happens for new packages, if someone wants to add a new package, its dependencies need to be checked manually one by one. This patch fixes those issues, while adding some additional features. Features/Fixes: - A new manifest format is used (JSON), easy to read and understand. This file is parsed by the python recipe and python packages read from here are passed directly to bitbake during parsing time. - It provides an automatic manifest creation task (explained below), which automagically checks for every package dependencies and adds them to the new manifest, hence we will have on each package exactly what that package needs to be run, providing finer granularity. - Dependencies are also checked automagically for new packages (explained below). - Fixes the manifest in the following ways: * python-core should be base and all packages should depend on it, fixes lang, string, codecs, etc. * Fixes packages with repeated files (e.g. bssdb and db, or netclient and mime, and many others). - Sitecustomize was fixed since encoding was deprecated. - The JSON manifest file invalidates bitbake's cache, so if it changes the python package will be rebuilt. - It creates a solution for users that want precompiled bytecode files (*.pyc) INCLUDE_PYCS = "1" can be set by the user on their local.conf to include such files, some argument they get faster boot time, even when the files would be created on their first run?, but they also sometimes give a magic number error and take up space, so we leave it to the user to decide if they want them or not. - Fixes python-core dependencies, e.g. When python is run on an image, it TRIES to import everything it needs, but it doesnt necessarily fails when it doesnt find something, so even if we didnt know, we had errors like (trimmed on purpose): # trying /usr/lib/python2.7/_locale.so # trying /usr/lib/python2.7/lib-dynload/_locale.so # trying /usr/lib/python2.7/_sysconfigdata.so while it didnt complain about _locale it should have imported it, after creating a new manifest with the automated script we get: # trying /usr/lib/python2.7/lib-dynload/_locale.so dlopen("/usr/lib/python2.7/lib-dynload/_locale.so", 2); import _locale # dynamically loaded from /usr/lib/python2.7/lib-dynload/_locale.so How to use (after a new release of python, or maybe before every OE release): - A new task called create_manifest was added to the python package, which may be invoked via: $ bitbake python -c create_manifest This task runs a script on native python on our HOST system, and since the python and python-native packages come from the same source, we can use it to know the dependencies of each module as if we were doing it on an image, this script is called create_manifest.py and in a very simplistic way it does the following: 1. Reads the JSON manifest file and creates a dictionary data structure with all of our python packages, their FILES, RDEPENDS and SUMMARY. 2. Loops through all of them and runs every module listed on them asynchronously, determining every dependency that they have. 3. These module dependencies are then handled, to be able to know which packages contain those files and which should RDEPEND on one another. 4. The data structure that comes out of this, is then used to create a new manifest file which is automatically copied onto the user's python directory replacing the old one. Create_manifest script features: - Handles modules which dont exist anymore (new release for example). - Handles modules that are builtin. - Deals with modules which were not compiled (e.g. bsddb or ossaudiodev) - Deals with packages which include folders. - Deals with packages which include FILES with a wildcard. - The manifest can be constructed on a multilib environment as well. - This method works for both python modules and shared libraries used by python. How to add a new package: - If a user wants to add a new package all that has to be done is modify the python2-manifest.json file, and add the required file(s) to the FILES list, the script should handle all the rest. Real example: We want to add a web browser package, including the file webbrowser.py which at the moment is on python-misc. "webbrowser": { "files": ["${libdir}/python2.7/lib-dynload/webbrowser.py"], "rdepends": [], "summary": "Python Web Browser support"} Run bitbake python -c create_manifest and the resulting manifest should be completed after a few seconds, showing something like: "webbrowser": { "files": ["${libdir}/python2.7/webbrowser.py"], "rdepends": ["core","fcntl","io","pickle","shell","subprocess"], "summary": "Python Web Browser support"} Known errors/issues: - Some special packages are handled differently: core, misc, modules,dev, staticdev. All these should be handled manually, because they either include binaries, static libraries, include files, etc. (something that we cant import). Specifically static libraries are not not supported by this method and have to be handled by the user. - The change should be transparent to the user, other than the fact that now we CANT build python-foo (it was pretty dumb anyway, since what building python-foo actually did was building the whole python package anyway), but doing IMAGE_INSTALL_append = " python-foo" would create an image with the requested package with no issues. [YOCTO #11510] [YOCTO #11694] [YOCTO #11695] (From OE-Core rev: 6959e2e4dba5bbfa6ffd49c44e738cc1c38bc280) Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/python/python-2.7-manifest.inc')
-rw-r--r--meta/recipes-devtools/python/python-2.7-manifest.inc840
1 files changed, 0 insertions, 840 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
7PROVIDES+=" \
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
79PACKAGES=" \
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
152SUMMARY_${PN}-2to3="Python automated Python 2 to 3 code translator"
153RDEPENDS_${PN}-2to3="${PN}-core"
154FILES_${PN}-2to3=" \
155 ${bindir}/2to3 \
156 ${libdir}/python2.7/lib2to3 \
157"
158
159SUMMARY_${PN}-argparse="Python command line argument parser"
160RDEPENDS_${PN}-argparse="${PN}-core ${PN}-codecs ${PN}-textutils"
161FILES_${PN}-argparse=" \
162 ${libdir}/python2.7/argparse.* \
163"
164
165SUMMARY_${PN}-audio="Python Audio Handling"
166RDEPENDS_${PN}-audio="${PN}-core"
167FILES_${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
179SUMMARY_${PN}-bsddb="Python bindings for the Berkeley Database"
180RDEPENDS_${PN}-bsddb="${PN}-core"
181FILES_${PN}-bsddb=" \
182 ${libdir}/python2.7/bsddb \
183 ${libdir}/python2.7/lib-dynload/_bsddb.so \
184"
185
186SUMMARY_${PN}-codecs="Python codecs, encodings & i18n support"
187RDEPENDS_${PN}-codecs="${PN}-core ${PN}-lang"
188FILES_${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
201SUMMARY_${PN}-compile="Python bytecode compilation support"
202RDEPENDS_${PN}-compile="${PN}-core"
203FILES_${PN}-compile=" \
204 ${libdir}/python2.7/py_compile.* \
205 ${libdir}/python2.7/compileall.* \
206"
207
208SUMMARY_${PN}-compiler="Python compiler support"
209RDEPENDS_${PN}-compiler="${PN}-core"
210FILES_${PN}-compiler=" \
211 ${libdir}/python2.7/compiler \
212"
213
214SUMMARY_${PN}-compression="Python high-level compression support"
215RDEPENDS_${PN}-compression="${PN}-core ${PN}-zlib"
216FILES_${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
223SUMMARY_${PN}-contextlib="Python utilities for with-statementcontexts."
224RDEPENDS_${PN}-contextlib="${PN}-core"
225FILES_${PN}-contextlib=" \
226 ${libdir}/python${PYTHON_MAJMIN}/contextlib.* \
227"
228
229SUMMARY_${PN}-core="Python interpreter and core modules"
230RDEPENDS_${PN}-core="${PN}-lang ${PN}-re"
231FILES_${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
266SUMMARY_${PN}-crypt="Python basic cryptographic and hashing support"
267RDEPENDS_${PN}-crypt="${PN}-core"
268FILES_${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
278SUMMARY_${PN}-ctypes="Python C types support"
279RDEPENDS_${PN}-ctypes="${PN}-core"
280FILES_${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
286SUMMARY_${PN}-curses="Python curses support"
287RDEPENDS_${PN}-curses="${PN}-core"
288FILES_${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
294SUMMARY_${PN}-datetime="Python calendar and time support"
295RDEPENDS_${PN}-datetime="${PN}-core ${PN}-codecs"
296FILES_${PN}-datetime=" \
297 ${libdir}/python2.7/_strptime.* \
298 ${libdir}/python2.7/calendar.* \
299 ${libdir}/python2.7/lib-dynload/datetime.so \
300"
301
302SUMMARY_${PN}-db="Python file-based database support"
303RDEPENDS_${PN}-db="${PN}-core"
304FILES_${PN}-db=" \
305 ${libdir}/python2.7/anydbm.* \
306 ${libdir}/python2.7/dumbdbm.* \
307 ${libdir}/python2.7/whichdb.* \
308"
309
310SUMMARY_${PN}-debugger="Python debugger"
311RDEPENDS_${PN}-debugger="${PN}-core ${PN}-io ${PN}-lang ${PN}-re ${PN}-stringold ${PN}-shell ${PN}-pprint"
312FILES_${PN}-debugger=" \
313 ${libdir}/python2.7/bdb.* \
314 ${libdir}/python2.7/pdb.* \
315"
316
317SUMMARY_${PN}-dev="Python development package"
318RDEPENDS_${PN}-dev="${PN}-core"
319FILES_${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
333SUMMARY_${PN}-difflib="Python helpers for computing deltas between objects"
334RDEPENDS_${PN}-difflib="${PN}-lang ${PN}-re"
335FILES_${PN}-difflib=" \
336 ${libdir}/python2.7/difflib.* \
337"
338
339SUMMARY_${PN}-distutils="Python Distribution Utilities"
340RDEPENDS_${PN}-distutils="${PN}-core ${PN}-email"
341FILES_${PN}-distutils=" \
342 ${libdir}/python2.7/config \
343 ${libdir}/python2.7/distutils \
344"
345
346SUMMARY_${PN}-distutils-staticdev="Python distribution utilities (static libraries)"
347RDEPENDS_${PN}-distutils-staticdev="${PN}-distutils"
348FILES_${PN}-distutils-staticdev=" \
349 ${libdir}/python2.7/config/lib*.a \
350"
351
352SUMMARY_${PN}-doctest="Python framework for running examples in docstrings"
353RDEPENDS_${PN}-doctest="${PN}-core ${PN}-lang ${PN}-io ${PN}-re ${PN}-unittest ${PN}-debugger ${PN}-difflib"
354FILES_${PN}-doctest=" \
355 ${libdir}/python2.7/doctest.* \
356"
357
358SUMMARY_${PN}-email="Python email support"
359RDEPENDS_${PN}-email="${PN}-core ${PN}-io ${PN}-re ${PN}-mime ${PN}-audio ${PN}-image ${PN}-netclient"
360FILES_${PN}-email=" \
361 ${libdir}/python2.7/imaplib.* \
362 ${libdir}/python2.7/email \
363"
364
365SUMMARY_${PN}-fcntl="Python's fcntl interface"
366RDEPENDS_${PN}-fcntl="${PN}-core"
367FILES_${PN}-fcntl=" \
368 ${libdir}/python2.7/lib-dynload/fcntl.so \
369"
370
371SUMMARY_${PN}-gdbm="Python GNU database support"
372RDEPENDS_${PN}-gdbm="${PN}-core"
373FILES_${PN}-gdbm=" \
374 ${libdir}/python2.7/lib-dynload/gdbm.so \
375"
376
377SUMMARY_${PN}-hotshot="Python hotshot performance profiler"
378RDEPENDS_${PN}-hotshot="${PN}-core"
379FILES_${PN}-hotshot=" \
380 ${libdir}/python2.7/hotshot \
381 ${libdir}/python2.7/lib-dynload/_hotshot.so \
382"
383
384SUMMARY_${PN}-html="Python HTML processing support"
385RDEPENDS_${PN}-html="${PN}-core"
386FILES_${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
395SUMMARY_${PN}-idle="Python Integrated Development Environment"
396RDEPENDS_${PN}-idle="${PN}-core ${PN}-tkinter"
397FILES_${PN}-idle=" \
398 ${bindir}/idle \
399 ${libdir}/python2.7/idlelib \
400"
401
402SUMMARY_${PN}-image="Python graphical image handling"
403RDEPENDS_${PN}-image="${PN}-core"
404FILES_${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
411SUMMARY_${PN}-importlib="Python import implementation library"
412RDEPENDS_${PN}-importlib="${PN}-core"
413FILES_${PN}-importlib=" \
414 ${libdir}/python2.7/importlib \
415"
416
417SUMMARY_${PN}-io="Python low-level I/O"
418RDEPENDS_${PN}-io="${PN}-core ${PN}-math ${PN}-textutils ${PN}-netclient ${PN}-contextlib"
419FILES_${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
435SUMMARY_${PN}-json="Python JSON support"
436RDEPENDS_${PN}-json="${PN}-core ${PN}-math ${PN}-re ${PN}-codecs"
437FILES_${PN}-json=" \
438 ${libdir}/python2.7/json \
439 ${libdir}/python2.7/lib-dynload/_json.so \
440"
441
442SUMMARY_${PN}-lang="Python low-level language support"
443RDEPENDS_${PN}-lang="${PN}-core"
444FILES_${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
473SUMMARY_${PN}-logging="Python logging support"
474RDEPENDS_${PN}-logging="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-stringold"
475FILES_${PN}-logging=" \
476 ${libdir}/python2.7/logging \
477"
478
479SUMMARY_${PN}-mailbox="Python mailbox format support"
480RDEPENDS_${PN}-mailbox="${PN}-core ${PN}-mime"
481FILES_${PN}-mailbox=" \
482 ${libdir}/python2.7/mailbox.* \
483"
484
485SUMMARY_${PN}-math="Python math support"
486RDEPENDS_${PN}-math="${PN}-core ${PN}-crypt"
487FILES_${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
495SUMMARY_${PN}-mime="Python MIME handling APIs"
496RDEPENDS_${PN}-mime="${PN}-core ${PN}-io"
497FILES_${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
505SUMMARY_${PN}-mmap="Python memory-mapped file support"
506RDEPENDS_${PN}-mmap="${PN}-core ${PN}-io"
507FILES_${PN}-mmap=" \
508 ${libdir}/python2.7/lib-dynload/mmap.so \
509"
510
511SUMMARY_${PN}-multiprocessing="Python multiprocessing support"
512RDEPENDS_${PN}-multiprocessing="${PN}-core ${PN}-io ${PN}-lang ${PN}-pickle ${PN}-threading ${PN}-ctypes ${PN}-mmap"
513FILES_${PN}-multiprocessing=" \
514 ${libdir}/python2.7/lib-dynload/_multiprocessing.so \
515 ${libdir}/python2.7/multiprocessing \
516"
517
518SUMMARY_${PN}-netclient="Python Internet Protocol clients"
519RDEPENDS_${PN}-netclient="${PN}-core ${PN}-crypt ${PN}-datetime ${PN}-io ${PN}-lang ${PN}-logging ${PN}-mime"
520FILES_${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
541SUMMARY_${PN}-netserver="Python Internet Protocol servers"
542RDEPENDS_${PN}-netserver="${PN}-core ${PN}-netclient ${PN}-shell ${PN}-threading"
543FILES_${PN}-netserver=" \
544 ${libdir}/python2.7/cgi.* \
545 ${libdir}/python2.7/*HTTPServer.* \
546 ${libdir}/python2.7/SocketServer.* \
547"
548
549SUMMARY_${PN}-numbers="Python number APIs"
550RDEPENDS_${PN}-numbers="${PN}-core ${PN}-lang ${PN}-re"
551FILES_${PN}-numbers=" \
552 ${libdir}/python2.7/decimal.* \
553 ${libdir}/python2.7/fractions.* \
554 ${libdir}/python2.7/numbers.* \
555"
556
557SUMMARY_${PN}-pickle="Python serialisation/persistence support"
558RDEPENDS_${PN}-pickle="${PN}-core ${PN}-codecs ${PN}-io ${PN}-re"
559FILES_${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
566SUMMARY_${PN}-pkgutil="Python package extension utility support"
567RDEPENDS_${PN}-pkgutil="${PN}-core"
568FILES_${PN}-pkgutil=" \
569 ${libdir}/python2.7/pkgutil.* \
570"
571
572SUMMARY_${PN}-plistlib="Generate and parse Mac OS X .plist files"
573RDEPENDS_${PN}-plistlib="${PN}-core ${PN}-datetime ${PN}-io"
574FILES_${PN}-plistlib=" \
575 ${libdir}/python2.7/plistlib.* \
576"
577
578SUMMARY_${PN}-pprint="Python pretty-print support"
579RDEPENDS_${PN}-pprint="${PN}-core ${PN}-io"
580FILES_${PN}-pprint=" \
581 ${libdir}/python2.7/pprint.* \
582"
583
584SUMMARY_${PN}-profile="Python basic performance profiling support"
585RDEPENDS_${PN}-profile="${PN}-core ${PN}-textutils"
586FILES_${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
593SUMMARY_${PN}-pydoc="Python interactive help support"
594RDEPENDS_${PN}-pydoc="${PN}-core ${PN}-lang ${PN}-stringold ${PN}-re"
595FILES_${PN}-pydoc=" \
596 ${bindir}/pydoc \
597 ${libdir}/python2.7/pydoc.* \
598 ${libdir}/python2.7/pydoc_data \
599"
600
601SUMMARY_${PN}-re="Python Regular Expression APIs"
602RDEPENDS_${PN}-re="${PN}-core"
603FILES_${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
611SUMMARY_${PN}-readline="Python readline support"
612RDEPENDS_${PN}-readline="${PN}-core"
613FILES_${PN}-readline=" \
614 ${libdir}/python2.7/lib-dynload/readline.so \
615 ${libdir}/python2.7/rlcompleter.* \
616"
617
618SUMMARY_${PN}-resource="Python resource control interface"
619RDEPENDS_${PN}-resource="${PN}-core"
620FILES_${PN}-resource=" \
621 ${libdir}/python2.7/lib-dynload/resource.so \
622"
623
624SUMMARY_${PN}-robotparser="Python robots.txt parser"
625RDEPENDS_${PN}-robotparser="${PN}-core ${PN}-netclient"
626FILES_${PN}-robotparser=" \
627 ${libdir}/python2.7/robotparser.* \
628"
629
630SUMMARY_${PN}-runpy="Python script for locating/executing scripts in module namespace"
631RDEPENDS_${PN}-runpy="${PN}-core ${PN}-pkgutil"
632FILES_${PN}-runpy=" \
633 ${libdir}/python2.7/runpy.* \
634"
635
636SUMMARY_${PN}-shell="Python shell-like functionality"
637RDEPENDS_${PN}-shell="${PN}-core ${PN}-re"
638FILES_${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
649SUMMARY_${PN}-smtpd="Python Simple Mail Transport Daemon"
650RDEPENDS_${PN}-smtpd="${PN}-core ${PN}-netserver ${PN}-email ${PN}-mime"
651FILES_${PN}-smtpd=" \
652 ${bindir}/smtpd.* \
653 ${libdir}/python2.7/smtpd.* \
654"
655
656SUMMARY_${PN}-sqlite3="Python Sqlite3 database support"
657RDEPENDS_${PN}-sqlite3="${PN}-core ${PN}-datetime ${PN}-lang ${PN}-crypt ${PN}-io ${PN}-threading ${PN}-zlib"
658FILES_${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
665SUMMARY_${PN}-sqlite3-tests="Python Sqlite3 database support tests"
666RDEPENDS_${PN}-sqlite3-tests="${PN}-core ${PN}-sqlite3"
667FILES_${PN}-sqlite3-tests=" \
668 ${libdir}/python2.7/sqlite3/test \
669"
670
671SUMMARY_${PN}-stringold="Python string APIs [deprecated]"
672RDEPENDS_${PN}-stringold="${PN}-core ${PN}-re"
673FILES_${PN}-stringold=" \
674 ${libdir}/python2.7/lib-dynload/strop.so \
675 ${libdir}/python2.7/string.* \
676 ${libdir}/python2.7/stringold.* \
677"
678
679SUMMARY_${PN}-subprocess="Python subprocess support"
680RDEPENDS_${PN}-subprocess="${PN}-core ${PN}-io ${PN}-re ${PN}-fcntl ${PN}-pickle"
681FILES_${PN}-subprocess=" \
682 ${libdir}/python2.7/subprocess.* \
683"
684
685SUMMARY_${PN}-syslog="Python syslog interface"
686RDEPENDS_${PN}-syslog="${PN}-core"
687FILES_${PN}-syslog=" \
688 ${libdir}/python2.7/lib-dynload/syslog.so \
689"
690
691SUMMARY_${PN}-terminal="Python terminal controlling support"
692RDEPENDS_${PN}-terminal="${PN}-core ${PN}-io"
693FILES_${PN}-terminal=" \
694 ${libdir}/python2.7/pty.* \
695 ${libdir}/python2.7/tty.* \
696"
697
698SUMMARY_${PN}-tests="Python tests"
699RDEPENDS_${PN}-tests="${PN}-core ${PN}-modules"
700FILES_${PN}-tests=" \
701 ${libdir}/python2.7/test \
702"
703
704SUMMARY_${PN}-textutils="Python option parsing, text wrapping and CSV support"
705RDEPENDS_${PN}-textutils="${PN}-core ${PN}-io ${PN}-re ${PN}-stringold"
706FILES_${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
713SUMMARY_${PN}-threading="Python threading & synchronization support"
714RDEPENDS_${PN}-threading="${PN}-core ${PN}-lang"
715FILES_${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
724SUMMARY_${PN}-tkinter="Python Tcl/Tk bindings"
725RDEPENDS_${PN}-tkinter="${PN}-core"
726FILES_${PN}-tkinter=" \
727 ${libdir}/python2.7/lib-dynload/_tkinter.so \
728 ${libdir}/python2.7/lib-tk \
729"
730
731SUMMARY_${PN}-unittest="Python unit testing framework"
732RDEPENDS_${PN}-unittest="${PN}-core ${PN}-stringold ${PN}-lang ${PN}-io ${PN}-difflib ${PN}-pprint ${PN}-shell"
733FILES_${PN}-unittest=" \
734 ${libdir}/python2.7/unittest/ \
735"
736
737SUMMARY_${PN}-unixadmin="Python Unix administration support"
738RDEPENDS_${PN}-unixadmin="${PN}-core"
739FILES_${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
746SUMMARY_${PN}-xml="Python basic XML support"
747RDEPENDS_${PN}-xml="${PN}-core ${PN}-re"
748FILES_${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
755SUMMARY_${PN}-xmlrpc="Python XML-RPC support"
756RDEPENDS_${PN}-xmlrpc="${PN}-core ${PN}-xml ${PN}-netserver ${PN}-lang"
757FILES_${PN}-xmlrpc=" \
758 ${libdir}/python2.7/xmlrpclib.* \
759 ${libdir}/python2.7/SimpleXMLRPCServer.* \
760 ${libdir}/python2.7/DocXMLRPCServer.* \
761"
762
763SUMMARY_${PN}-zlib="Python zlib compression support"
764RDEPENDS_${PN}-zlib="${PN}-core"
765FILES_${PN}-zlib=" \
766 ${libdir}/python2.7/lib-dynload/zlib.so \
767"
768
769SUMMARY_${PN}-modules="All Python modules"
770RDEPENDS_${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"
838ALLOW_EMPTY_${PN}-modules = "1"
839
840