]> git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.10/Py2710ReadMe.txt
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.10 / Py2710ReadMe.txt
1 EDK II Python
2 ReadMe
3 Version 2.7.10
4 Release 1.00
5 3 Nov. 2015
6
7
8 1. OVERVIEW
9 ===========
10 This document is devoted to general information on building and setup of the
11 Python environment for UEFI, the invocation of the interpreter, and things
12 that make working with Python easier.
13
14 It is assumed that you already have UDK2010 or later, or a current snapshot of
15 the EDK II sources from www.tianocore.org, and that you can successfully build
16 packages within that distribution.
17
18 2. Release Notes
19 ================
20 1) All C extension modules must be statically linked (built in)
21 2) The site and os modules must exist as discrete files in ...\lib\python27.10
22 3) User-specific configurations are not supported.
23 4) Environment variables are not supported.
24
25 3. Getting and Building Python
26 ======================================================
27 3.1 Getting Python
28 ==================
29 This file describes the UEFI port of version 2.7.10 of the CPython distribution.
30 For development ease, a subset of the Python 2.7.10 distribution has been
31 included as part of the AppPkg/Applications/Python/Python-2.7.10 source tree.
32 If this is sufficient, you may skip to section 3.2, Building Python.
33
34 If a full distribution is desired, it can be merged into the Python-2.7.10
35 source tree. Directory AppPkg/Applications/Python/Python-2.7.10 corresponds
36 to the root directory of the CPython 2.7.10 distribution. The full
37 CPython 2.7.10 source code may be downloaded from
38 http://www.python.org/ftp/python/2.7.10/.
39
40 A. Within your EDK II development tree, extract the Python distribution into
41 AppPkg/Applications/Python/Python-2.7.10. This should merge the additional
42 files into the source tree. It will also create the following directories:
43 Demo Doc Grammar Mac Misc
44 PC PCbuild RISCOS Tools
45
46 The greatest change will be within the Python-2.7.10/Lib directory where
47 many more packages and modules will be added. These additional components
48 may not have been ported to EDK II yet.
49
50 3.2 Building Python
51 ===================
52 A. From the AppPkg/Applications/Python/Python-2.7.10 directory, execute the
53 srcprep.bat (srcprep.sh) script to copy the header files from within the
54 PyMod-2.7.10 sub-tree into their corresponding directories within the
55 distribution. This step only needs to be performed prior to the first
56 build of Python, or if one of the header files within the PyMod tree has been
57 modified.
58
59 B. Edit PyMod-2.7.10\Modules\config.c to enable the built-in modules you need.
60 By default, it is configured for the minimally required set of modules.
61 Mandatory Built-in Modules:
62 edk2 errno imp marshal
63
64 Additional built-in modules which are required to use the help()
65 functionality provided by PyDoc, are:
66 _codecs _collections _functools _random
67 _sre _struct _weakref binascii
68 cStringIO gc itertools math
69 operator time
70
71 C. Edit AppPkg/AppPkg.dsc to enable (uncomment) the Python2710.inf line
72 within the [Components] section.
73
74 D. Build AppPkg using the standard "build" command:
75 For example, to build Python for an X64 CPU architecture:
76 build -a X64 -p AppPkg\AppPkg.dsc
77
78 4. Python-related paths and files
79 =================================
80 Python depends upon the existence of several directories and files on the
81 target system.
82
83 \EFI Root of the UEFI system area.
84 |- \Tools Location of the Python.efi executable.
85 |- \Boot UEFI specified Boot directory.
86 |- \StdLib Root of the Standard Libraries sub-tree.
87 |- \etc Configuration files used by libraries.
88 |- \tmp Temporary files created by tmpfile(), etc.
89 |- \lib Root of the libraries tree.
90 |- \python27.10 Directory containing the Python library
91 | modules.
92 |- \lib-dynload Dynamically loadable Python extensions.
93 |- \site-packages Site-specific packages and modules.
94
95 NOTE: The name of the directory containing the Python library modules has
96 changed in order to distinguish it from the library modules for
97 version 2.7.2.
98
99 5. Installing Python
100 ====================
101 These directories, on the target system, are populated from the development
102 system as follows:
103
104 * \Efi\Tools receives a copy of Build/AppPkg/DEBUG_VS2015/X64/Python2710.efi.
105 ^^^^^^^^^^^^^^^^
106 Modify the host path to match your build type and compiler.
107
108 * The \Efi\StdLib\etc directory is populated from the StdLib/Efi/StdLib/etc
109 source directory.
110
111 * Directory \Efi\StdLib\lib\python27.10 is populated with packages and modules
112 from the AppPkg/Applications/Python/Python-2.7.10/Lib directory.
113 The recommended minimum set of modules (.py, .pyc, and/or .pyo):
114 os stat ntpath warnings traceback
115 site types copy_reg linecache genericpath
116
117 * Python C Extension Modules built as dynamically loadable extensions go into
118 the \Efi\StdLib\lib\python.27\lib-dynload directory. This functionality is not
119 yet implemented.
120
121 A script, libprep.bat (libprep.sh), is provided which facilitates the population
122 of the target Lib directory. Execute this script from within the
123 AppPkg/Applications/Python/Python-2.7.10 directory, providing a single argument
124 which is the path to the destination directory. The appropriate contents of the
125 AppPkg/Applications/Python/Python-2.7.10/Lib and
126 AppPkg/Applications/Python/Python-2.7.10/PyMod-2.7.10/Lib directories will be
127 recursively copied into the specified destination directory.
128
129 6. Example: Enabling socket support
130 ===================================
131 1. enable {"_socket", init_socket}, in Efi\config.c
132 2. enable LibraryClasses BsdSocketLib and EfiSocketLib in PythonCore.inf.
133 3. Build Python2710
134 build -a X64 -p AppPkg\AppPkg.dsc
135 6. copy Build\AppPkg\DEBUG_VS2005\X64\Python2710.efi to \Efi\Tools on your
136 target system. Replace "DEBUG_VS2005\X64", in the source path, with
137 values appropriate for your tool chain and processor architecture.
138
139 7. Running Python
140 =================
141 Python must currently be run from an EFI FAT-32 partition, or volume, under
142 the UEFI Shell. At the Shell prompt enter the desired volume name, followed
143 by a colon ':', then press Enter. Python can then be executed by typing its
144 name, followed by any desired options and arguments.
145
146 EXAMPLE:
147 2.0 Shell> fs0:
148 2.0 FS0:\> python2710
149 Python 2.7.10 (default, Oct 13 2015, 16:21:53) [C] on uefi
150 Type "help", "copyright", "credits" or "license" for more information.
151 >>> exit()
152 2.0 FS0:\>
153
154 NOTE:
155 Python, as distributed, sends its interactive prompts to stderr. If
156 STDERR isn't enabled in UEFI Setup so that it's output goes to the
157 console, it may appear that Python hangs on startup. If this happens,
158 one may be able to rectify the condition by typing "exit()" followed
159 by <enter> to exit out of Python. Then, type "exit" at the Shell prompt
160 which should enter Setup where you can use the Boot Maintenance
161 Manager to modify your Console settings.
162
163 NOTE:
164 Some platforms don't include the Setup utility, or don't allow STDERR to
165 be modified. In these cases, Python may be started with the '-#' option
166 which will cause stderr to be the same as stdout and should allow
167 Python to be used interactively on those platforms.
168
169 Depending upon the version of Shell you are using, it may be necessary
170 to escape the '#' character so that the Shell doesn't interpret it as
171 the start of a comment. The escape character is '^'.
172 Example:
173 python -^# -V
174
175 8. Supported C Modules
176 ======================
177 Module Name C File(s)
178 =============== =============================================
179 _ast Python/Python-ast.c
180 _bisect Modules/_bisectmodule.c
181 _codecs Modules/_codecsmodule.c
182 _codecs_cn Modules/cjkcodecs/_codecs_cn.c
183 _codecs_hk Modules/cjkcodecs/_codecs_hk.c
184 _codecs_iso2022 Modules/cjkcodecs/_codecs_iso2022.c
185 _codecs_jp Modules/cjkcodecs/_codecs_jp
186 _codecs_kr Modules/cjkcodecs/_codecs_kr
187 _codecs_tw Modules/cjkcodecs/_codecs_tw
188 _collections Modules/_collectionsmodule.c
189 _csv Modules/_csv.c
190 _functools Modules/_functoolsmodule.c
191 _heapq Modules/_heapqmodule.c
192 _io Modules/_io/_iomodule.c Modules/_io/*
193 _json Modules/_json.c
194 _md5 Modules/md5module.c Modules/md5.c
195 _multibytecodec Modules/cjkcodecs/_multibytecodec.c
196 _random Modules/_randommodule.c
197 _sha Modules/shamodule.c
198 _sha256 Modules/sha256module.c
199 _sha512 Modules/sha512module.c
200 _socket Modules/socketmodule.c
201 _sre Modules/_sre.c
202 _struct Modules/_struct.c
203 _symtable Modules/symtablemodule.c
204 _weakref Modules/_weakref.c
205 array Modules/arraymodule.c
206 binascii Modules/binascii.c
207 cmath Modules/cmathmodule.c
208 cPickle Modules/cPickle.c
209 cStringIO Modules/cStringIO.c
210 datetime Modules/datetimemodule.c
211 edk2 Modules/Efi/edk2module.c
212 errno Modules/errnomodule.c
213 future_builtins Modules/future_builtins.c
214 gc Modules/gcmodule.c
215 imp Python/import.c
216 itertools Modules/itertoolsmodule.c
217 marshal Python/marshal.c
218 math Modules/mathmodule.c Modules/_math.c
219 operator Modules/operator.c
220 parser Modules/parsermodule.c
221 select Modules/selectmodule.c
222 signal Modules/signalmodule.c
223 strop Modules/stropmodule.c
224 time Modules/timemodule.c
225 xxsubtype Modules/xxsubtype.c
226 zipimport Modules/zipimport.c
227 zlib Modules/zlibmodule.c Modules/zlib/*
228
229
230 9. Tested Python Library Modules
231 ================================
232 This is a partial list of the packages and modules of the Python Standard
233 Library that have been tested or used in some manner.
234
235 encodings genericpath.py sha.py
236 importlib getopt.py SimpleHTTPServer.py
237 json hashlib.py site.py
238 pydoc_data heapq.py socket.py
239 xml HTMLParser.py SocketServer.py
240 abc.py inspect.py sre.py
241 argparse.py io.py sre_compile.py
242 ast.py keyword.py sre_constants.py
243 atexit.py linecache.py sre_parse.py
244 BaseHTTPServer.py locale.py stat.py
245 binhex.py md5.py string.py
246 bisect.py modulefinder.py StringIO.py
247 calendar.py ntpath.py struct.py
248 cmd.py numbers.py textwrap.py
249 codecs.py optparse.py token.py
250 collections.py os.py tokenize.py
251 copy.py platform.py traceback.py
252 copy_reg.py posixpath.py types.py
253 csv.py pydoc.py warnings.py
254 dummy_thread.py random.py weakref.py
255 fileinput.py re.py xmllib.py
256 formatter.py repr.py zipfile.py
257 functools.py runpy.py expat
258
259 # # #