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
This commit is contained in:
194
AppPkg/Applications/Python/PythonReadMe.txt
Normal file
194
AppPkg/Applications/Python/PythonReadMe.txt
Normal file
@@ -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
|
||||
|
||||
# # #
|
Reference in New Issue
Block a user