From d78fab6b4e9be83b781212f6a9f3fde0c092e81d Mon Sep 17 00:00:00 2001 From: darylm503 Date: Sat, 24 Mar 2012 01:19:06 +0000 Subject: EADK (StdLib, AppPkg, StdLibPrivateInternalFiles): Python Beta Release. Clean up and clearly differentiate required and optional items in configuration files. Enable the system command and synchronize configuration options between all CPU architectures. Replace the UEFI_ENV macro with UEFI_C_SOURCE to align with Linux and Posix conventions. Update copyrights and versions and make minor cosmetic enhancements to files. Fix compiler-specific build errors. Add Python-specific ReadMe file. Signed-off-by: darylm503 Reviewed-by: geekboy15a Reviewed-by: jljusten Reviewed-by: leegrosenbaum git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13119 6f19259b-4bc3-4df7-8a09-765794883524 --- AppPkg/Applications/Python/PythonReadMe.txt | 194 ++++++++++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 AppPkg/Applications/Python/PythonReadMe.txt (limited to 'AppPkg/Applications/Python/PythonReadMe.txt') diff --git a/AppPkg/Applications/Python/PythonReadMe.txt b/AppPkg/Applications/Python/PythonReadMe.txt new file mode 100644 index 0000000000..d16a9a2be6 --- /dev/null +++ b/AppPkg/Applications/Python/PythonReadMe.txt @@ -0,0 +1,194 @@ + EDK II Python + ReadMe + Beta Release + 23 Mar. 2012 + + +1. OVERVIEW +=========== +This document is devoted to general information on building and setup of the +Python environment for UEFI 2.3, the invocation of the interpreter, and things +that make working with Python easier. + +It is assumed that you already have either UDK2010 or a current snapshot of +the EDK II sources from www.tianocore.org, and that you can successfully build +packages within that distribution. + +2. Release Notes +================ + 1) There is no input line editing. Backspace, ^C, etc. do not work. + 2) All C extension modules must be statically linked (built in) + 3) The site and os modules must exist as discrete files in ...\lib\python.27 + +3. Getting and Building the latest version of Python +====================================================== + 3.1 Getting Python + ================== + Currently only version 2.7.2 of the CPython distribution is supported. The + source code can be downloaded from http://www.python.org/download/source/. + + A. Within your EDK II development tree, extract the Python distribution into + AppPkg/Applications/Python. This should create the + AppPkg/Applications/Python/Python-2.7.2 directory. + + B. Copy the files from PyMod-2.7.2 into the corresponding directories within + the Python-2.7.2 tree. This will overwrite existing files with files + modified for UEFI usage. + + 3.2 Building Python + =================== + A. Edit Efi/config.c to enable the built-in modules you need. + Mandatory Built-in Modules: + edk2 errno imp marshal + + Additional built-in modules which are required to use the help() + functionality provided by PyDoc, are: + _codecs _collections _functools _random + _sre _struct _weakref binascii + cStringIO gc itertools math + operator time + + B. Edit AppPkg/AppPkg.dsc to enable (uncomment) the PythonCore.inf line + within the [Components] section. + + C. Build AppPkg, which includes Python, using the standard "build" command: + For example, to build Python for an X64 CPU architecture: + build -a X64 -p AppPkg\AppPkg.dsc + +4. Python-related paths and files +================================= +Python depends upon the existence of several directories and files on the +target system. + + \EFI Root of the UEFI system area. + |- \Tools Location of the Python.efi executable. + |- \Boot UEFI specified Boot directory. + |- \StdLib Root of the Standard Libraries sub-tree. + |- \etc Configuration files used by libraries. + |- \tmp Temporary files created by tmpfile(), etc. + |- \lib Root of the libraries tree. + |- \python.27 Directory containing the Python library modules. + |- \lib-dynload Dynamically loadable Python extensions. + |- \site-packages Site-specific packages and modules. + + +5. Installing Python +==================== +These directories, on the target system, are populated from the development +system as follows: + + * \Efi\Tools receives a copy of Build/AppPkg/DEBUG_VS2005/X64/Python.efi. + ^^^^^ ^^^^^^ + Modify the host path to match the your build type and compiler. + + * The \Efi\StdLib\etc directory is populated from the StdLib/Efi/StdLib/etc + source directory. + + * Directory \Efi\StdLib\lib\python.27 is populated with packages and modules + from the AppPkg/Applications/Python/Python-2.7.2/Lib directory. + The recommended minimum set of modules (.py, .pyc, and/or .pyo): + os stat ntpath warnings traceback + site types copy_reg linecache genericpath + + * Python C Extension Modules built as dynamically loadable extensions go into + the \Efi\StdLib\lib\python.27\lib-dynload directory. + + +6. Example: Enabling socket support +=================================== + 1. enable {"_socket", init_socket}, in Efi\config.c + 2. enable Python-2.7.2/Modules/socketmodule.c in PythonCore.inf. + 3. copy socket.py over to /Efi/StdLib/lib/python.27 on your target system. + 4. Make sure dependent modules are present(.py) or built in(.c): + functools, types, os, sys, warnings, cStringIO, StringIO, errno + + 5. build -a X64 -p AppPkg\AppPkg.dsc + 6. copy Build\AppPkg\DEBUG_VS2005\X64\Python.efi to \Efi\Tools on your target system. + ^^^^ Modify as needed + + +7. Supported C Modules +====================== + Module Name C File(s) + =============== ============================================= + _ast Python/Python-ast.c + _bisect Modules/_bisectmodule.c + _codecs Modules/_codecsmodule.c + _codecs_cn Modules/cjkcodecs/_codecs_cn.c + _codecs_hk Modules/cjkcodecs/_codecs_hk.c + _codecs_iso2022 Modules/cjkcodecs/_codecs_iso2022.c + _codecs_jp Modules/cjkcodecs/_codecs_jp + _codecs_kr Modules/cjkcodecs/_codecs_kr + _codecs_tw Modules/cjkcodecs/_codecs_tw + _collections Modules/_collectionsmodule.c + _csv Modules/_csv.c + _functools Modules/_functoolsmodule.c + _heapq Modules/_heapqmodule.c + _io Modules/_io/_iomodule.c Modules/_io/* + _json Modules/_json.c + _md5 Modules/md5module.c Modules/md5.c + _multibytecodec Modules/cjkcodecs/_multibytecodec.c + _random Modules/_randommodule.c + _sha Modules/shamodule.c + _sha256 Modules/sha256module.c + _sha512 Modules/sha512module.c + _socket Modules/socketmodule.c + _sre Modules/_sre.c + _struct Modules/_struct.c + _symtable Modules/symtablemodule.c + _weakref Modules/_weakref.c + array Modules/arraymodule.c + binascii Modules/binascii.c + cmath Modules/cmathmodule.c + cPickle Modules/cPickle.c + cStringIO Modules/cStringIO.c + datetime Modules/datetimemodule.c + edk2 Modules/Efi/edk2module.c + errno Modules/errnomodule.c + future_builtins Modules/future_builtins.c + gc Modules/gcmodule.c + imp Python/import.c + itertools Modules/itertoolsmodule.c + marshal Python/marshal.c + math Modules/mathmodule.c Modules/_math.c + operator Modules/operator.c + parser Modules/parsermodule.c + select Modules/selectmodule.c + signal Modules/signalmodule.c + strop Modules/stropmodule.c + time Modules/timemodule.c + xxsubtype Modules/xxsubtype.c + zipimport Modules/zipimport.c + zlib Modules/zlibmodule.c Modules/zlib/* + + +8. Tested Python Library Modules +================================ +This is a partial list of the packages and modules of the Python Standard +Library that have been tested or used in some manner. + + encodings genericpath.py sha.py + importlib getopt.py SimpleHTTPServer.py + json hashlib.py site.py + pydoc_data heapq.py socket.py + xml HTMLParser.py SocketServer.py + abc.py inspect.py sre.py + argparse.py io.py sre_compile.py + ast.py keyword.py sre_constants.py + atexit.py linecache.py sre_parse.py + BaseHTTPServer.py locale.py stat.py + binhex.py md5.py string.py + bisect.py modulefinder.py StringIO.py + calendar.py ntpath.py struct.py + cmd.py numbers.py textwrap.py + codecs.py optparse.py token.py + collections.py os.py tokenize.py + copy.py platform.py traceback.py + copy_reg.py posixpath.py types.py + csv.py pydoc.py warnings.py + dummy_thread.py random.py weakref.py + fileinput.py re.py xmllib.py + formatter.py repr.py zipfile.py + functools.py runpy.py + +# # # -- cgit v1.2.3