Ard,

I am sorry if the recent Python 2.7.10 patches caused you difficulties.

The structure of this patch set is a result of my lack of experience with GIT.  
I expect this to improve with time now that I am
learning more of the limitations of GIT.
So that I may learn, what would you have considered a good structure for these 
patches?

My initial patches included a description of the changes at the beginning of 
each message.  I was informed that this prevented
applying the patches for review.  So, when I resent the patches using git 
format-patch and git send-email those comments were
removed.  I have since learned that they can be added back and will be ignored 
by git am.

The original comment from Patch 3/4 was:

  The edk2module.c file has been significantly modified between the Python 2.7.2
  and 2.7.10 versions.  Luckily, the majority of these changes are cosmetic and
  consist of renaming objects from "posix_*" to "edk2_*" and removing segments 
of
  code that are not relevant to the UEFI environment.
 
Rest assured that I will resume inclusion of file-by-file descriptions of the 
changes in subsequent patches.

Sincerely,
Daryl McDaniel

-----Original Message-----
From: edk2-devel [mailto:[email protected]] On Behalf Of Ard 
Biesheuvel
Sent: Monday, November 09, 2015 8:26 AM
To: Carsey, Jaben <[email protected]>
Cc: [email protected]; Bjorge, Erik C <[email protected]>; Daryl 
McDaniel <[email protected]>
Subject: Re: [edk2] [PATCH 4/4] AppPkg/Python-2.7.10: AppPkg.dsc, pyconfig.h, 
PyMod-2.7.10 (resend)

On 9 November 2015 at 17:09, Carsey, Jaben <[email protected]> wrote:
> Reviewed-by: Jaben Carsey <[email protected]>
>
>> -----Original Message-----
>> From: edk2-devel [mailto:[email protected]] On Behalf Of
>> Daryl McDaniel
>> Sent: Saturday, November 07, 2015 11:46 AM
>> To: [email protected]; Carsey, Jaben <[email protected]>;
>> Bjorge, Erik C <[email protected]>
>> Subject: [edk2] [PATCH 4/4] AppPkg/Python-2.7.10: AppPkg.dsc, pyconfig.h,
>> PyMod-2.7.10 (resend)
>> Importance: High
>>
>> Resent using git send-email.  Maybe this will be easier to use.
>>

As a stakeholder in Tianocore whose understanding of AppPkg and its
dependence on Python may be limited, is it too much to ask to actually
*describe* what these patches change? I am not contesting that these
patches are useful, it is just that they are structured very poorly,
and contain no description whatsoever what the nature of the changes
is.

Thanks,
Ard.


>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Daryl McDaniel <[email protected]>
>> ---
>>  AppPkg/AppPkg.dsc                                  |   5 +-
>>  .../Python/Python-2.7.10/Ia32/pyconfig.h           |  93 ++++++++----
>>  .../Python-2.7.10/PyMod-2.7.10/Lib/ntpath.py       |  30 +++-
>>  .../Python/Python-2.7.10/PyMod-2.7.10/Lib/os.py    |  35 ++++-
>>  .../Python/Python-2.7.10/PyMod-2.7.10/Lib/pydoc.py |  17 +++
>>  .../Python/Python-2.7.10/PyMod-2.7.10/Lib/site.py  | 165 
>> ++++++---------------
>>  .../Python-2.7.10/PyMod-2.7.10/Modules/_sre.c      | 150 ++++++++++---------
>>  .../Python-2.7.10/PyMod-2.7.10/Modules/addrinfo.h  | 101 +++++++------
>>  .../PyMod-2.7.10/Modules/errnomodule.c             |  57 ++++++-
>>  .../PyMod-2.7.10/Modules/expat/expat_external.h    |   4 +-
>>  .../Python-2.7.10/PyMod-2.7.10/Modules/getpath.c   | 143 +++++-------------
>>  .../Python-2.7.10/PyMod-2.7.10/Modules/main.c      |  61 ++++----
>>  .../PyMod-2.7.10/Modules/selectmodule.c            |  43 ++++--
>>  .../PyMod-2.7.10/Modules/zlib/gzguts.h             |  10 +-
>>  .../PyMod-2.7.10/Modules/zlib/zutil.h              |  11 +-
>>  .../PyMod-2.7.10/Objects/longobject.c              |  14 +-
>>  .../PyMod-2.7.10/Objects/stringlib/localeutil.h    |  17 ++-
>>  .../PyMod-2.7.10/Python/getcopyright.c             |  24 ++-
>>  .../Python-2.7.10/PyMod-2.7.10/Python/marshal.c    |  21 ++-
>>  .../Python-2.7.10/PyMod-2.7.10/Python/random.c     |  32 +++-
>>  .../Python/Python-2.7.10/X64/pyconfig.h            |  63 ++++++--
>>  21 files changed, 640 insertions(+), 456 deletions(-)
>>
>> diff --git a/AppPkg/AppPkg.dsc b/AppPkg/AppPkg.dsc
>> index 6db32a1..58bc84e 100644
>> --- a/AppPkg/AppPkg.dsc
>> +++ b/AppPkg/AppPkg.dsc
>> @@ -126,9 +126,12 @@
>>        gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80400040
>>    }
>>
>> -#### Un-comment the following line to build Python.
>> +#### Un-comment the following line to build Python 2.7.2.
>>  #  AppPkg/Applications/Python/PythonCore.inf
>>
>> +#### Un-comment the following line to build Python 2.7.10.
>> +# AppPkg/Applications/Python/Python-2.7.10/Python2710.inf
>> +
>>  #### Un-comment the following line to build Lua.
>>  #  AppPkg/Applications/Lua/Lua.inf
>>
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/Ia32/pyconfig.h
>> b/AppPkg/Applications/Python/Python-2.7.10/Ia32/pyconfig.h
>> index 99b3422..00cfd54 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/Ia32/pyconfig.h
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/Ia32/pyconfig.h
>> @@ -1,6 +1,7 @@
>>  /** @file
>>      Manually generated Python Configuration file for EDK II.
>>
>> +    Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>>      Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
>>      This program and the accompanying materials are licensed and made
>> available under
>>      the terms and conditions of the BSD License that accompanies this
>> distribution.
>> @@ -67,6 +68,9 @@
>>  /* Define to 1 if you have the 'alarm' function. */
>>  #undef HAVE_ALARM
>>
>> +/* Define to 1 if you have the <alloca.h> header file. */
>> +#undef HAVE_ALLOCA_H
>> +
>>  /* Define this if your time.h defines altzone. */
>>  #undef HAVE_ALTZONE
>>
>> @@ -109,6 +113,9 @@
>>  /* define to 1 if your sem_getvalue is broken. */
>>  #define HAVE_BROKEN_SEM_GETVALUE      1
>>
>> +/* Define if 'unsetenv' does not return an int. */
>> +#undef HAVE_BROKEN_UNSETENV
>> +
>>  /* Define this if you have the type _Bool. */
>>  #define HAVE_C99_BOOL                 1
>>
>> @@ -170,10 +177,10 @@
>>  /* Define to 1 if you have the device macros. */
>>  #undef HAVE_DEVICE_MACROS
>>
>> -/* Define if we have /dev/ptc. */
>> +/* Define to 1 if you have the /dev/ptc device file. */
>>  #undef HAVE_DEV_PTC
>>
>> -/* Define if we have /dev/ptmx. */
>> +/* Define to 1 if you have the /dev/ptmx device file. */
>>  #undef HAVE_DEV_PTMX
>>
>>  /* Define to 1 if you have the <direct.h> header file. */
>> @@ -274,11 +281,11 @@
>>  #undef HAVE_GAMMA
>>
>>  /* Define if we can use gcc inline assembler to get and set x87 control word
>> -*/
>> +   */
>>  #if defined(__GNUC__)
>>    #define HAVE_GCC_ASM_FOR_X87  1
>>  #else
>> -  #undef HAVE_GCC_ASM_FOR_X87
>> +#undef HAVE_GCC_ASM_FOR_X87
>>  #endif
>>
>>  /* Define if you have the getaddrinfo function. */
>> @@ -290,6 +297,9 @@
>>  /* Define this if you have flockfile(), getc_unlocked(), and funlockfile() 
>> */
>>  #undef HAVE_GETC_UNLOCKED
>>
>> +/* Define to 1 if you have the 'getentropy' function. */
>> +#undef HAVE_GETENTROPY
>> +
>>  /* Define to 1 if you have the 'getgroups' function. */
>>  #undef HAVE_GETGROUPS
>>
>> @@ -383,6 +393,12 @@
>>  /* Define to 1 if you have the 'initgroups' function. */
>>  #undef HAVE_INITGROUPS
>>
>> +/* Define if your compiler provides int32_t. */
>> +#undef HAVE_INT32_T
>> +
>> +/* Define if your compiler provides int64_t. */
>> +#undef HAVE_INT64_T
>> +
>>  /* Define to 1 if you have the <inttypes.h> header file. */
>>  #define HAVE_INTTYPES_H   1
>>
>> @@ -479,6 +495,9 @@
>>  /* Define to 1 if you have the 'mktime' function. */
>>  #define HAVE_MKTIME     1
>>
>> +/* Define to 1 if you have the 'mmap' function. */
>> +#undef HAVE_MMAP
>> +
>>  /* Define to 1 if you have the 'mremap' function. */
>>  #undef HAVE_MREMAP
>>
>> @@ -524,6 +543,9 @@
>>  /* Define if you have GNU PTH threads. */
>>  #undef HAVE_PTH
>>
>> +/* Define to 1 if you have the 'pthread_atfork' function. */
>> +#undef HAVE_PTHREAD_ATFORK
>> +
>>  /* Defined for Solaris 2.6 bug in pthread header. */
>>  #undef HAVE_PTHREAD_DESTRUCTOR
>>
>> @@ -542,6 +564,9 @@
>>  /* Define to 1 if you have the 'putenv' function. */
>>  #undef HAVE_PUTENV
>>
>> +/* Define if the libcrypto has RAND_egd */
>> +#undef HAVE_RAND_EGD
>> +
>>  /* Define to 1 if you have the 'readlink' function. */
>>  #undef HAVE_READLINK
>>
>> @@ -679,22 +704,22 @@
>>  #define HAVE_STDARG_PROTOTYPES          1
>>
>>  /* Define to 1 if you have the <stdint.h> header file. */
>> -#define HAVE_STDINT_H                   1
>> +#define HAVE_STDINT_H   1
>>
>>  /* Define to 1 if you have the <stdlib.h> header file. */
>> -#define HAVE_STDLIB_H                   1
>> +#define HAVE_STDLIB_H   1
>>
>>  /* Define to 1 if you have the 'strdup' function. */
>> -#define HAVE_STRDUP                     1
>> +#define HAVE_STRDUP     1
>>
>>  /* Define to 1 if you have the 'strftime' function. */
>> -#define HAVE_STRFTIME                   1
>> +#define HAVE_STRFTIME   1
>>
>>  /* Define to 1 if you have the <strings.h> header file. */
>>  #undef HAVE_STRINGS_H
>>
>>  /* Define to 1 if you have the <string.h> header file. */
>> -#define HAVE_STRING_H                   1
>> +#define HAVE_STRING_H   1
>>
>>  /* Define to 1 if you have the <stropts.h> header file. */
>>  #undef HAVE_STROPTS_H
>> @@ -717,6 +742,12 @@
>>  /* Define to 1 if 'st_rdev' is a member of 'struct stat'. */
>>  #undef HAVE_STRUCT_STAT_ST_RDEV
>>
>> +/* Define to 1 if 'st_dev' is a member of 'struct stat'. */
>> +#undef HAVE_STRUCT_STAT_ST_DEV
>> +
>> +/* Define to 1 if 'st_ino' is a member of 'struct stat'. */
>> +#undef HAVE_STRUCT_STAT_ST_INO
>> +
>>  /* Define to 1 if 'tm_zone' is a member of 'struct tm'. */
>>  #undef HAVE_STRUCT_TM_TM_ZONE
>>
>> @@ -769,13 +800,13 @@
>>  #undef HAVE_SYS_NDIR_H
>>
>>  /* Define to 1 if you have the <sys/param.h> header file. */
>> -#define HAVE_SYS_PARAM_H                1
>> +#define HAVE_SYS_PARAM_H    1
>>
>>  /* Define to 1 if you have the <sys/poll.h> header file. */
>>  #define HAVE_SYS_POLL_H                 1
>>
>>  /* Define to 1 if you have the <sys/resource.h> header file. */
>> -#define HAVE_SYS_RESOURCE_H             1
>> +#define HAVE_SYS_RESOURCE_H   1
>>
>>  /* Define to 1 if you have the <sys/select.h> header file. */
>>  #define HAVE_SYS_SELECT_H               1
>> @@ -787,7 +818,7 @@
>>  #undef HAVE_SYS_STATVFS_H
>>
>>  /* Define to 1 if you have the <sys/stat.h> header file. */
>> -#define HAVE_SYS_STAT_H                 1
>> +#define HAVE_SYS_STAT_H   1
>>
>>  /* Define to 1 if you have the <sys/termio.h> header file. */
>>  #undef HAVE_SYS_TERMIO_H
>> @@ -796,10 +827,10 @@
>>  #undef HAVE_SYS_TIMES_H
>>
>>  /* Define to 1 if you have the <sys/time.h> header file. */
>> -#define HAVE_SYS_TIME_H                 1
>> +#define HAVE_SYS_TIME_H     1
>>
>>  /* Define to 1 if you have the <sys/types.h> header file. */
>> -#define HAVE_SYS_TYPES_H                1
>> +#define HAVE_SYS_TYPES_H    1
>>
>>  /* Define to 1 if you have the <sys/un.h> header file. */
>>  #undef HAVE_SYS_UN_H
>> @@ -820,7 +851,7 @@
>>  #undef HAVE_TCSETPGRP
>>
>>  /* Define to 1 if you have the 'tempnam' function. */
>> -#define HAVE_TEMPNAM                    1
>> +#define HAVE_TEMPNAM      1
>>
>>  /* Define to 1 if you have the <termios.h> header file. */
>>  #undef HAVE_TERMIOS_H
>> @@ -841,10 +872,10 @@
>>  #undef HAVE_TIMES
>>
>>  /* Define to 1 if you have the 'tmpfile' function. */
>> -#define HAVE_TMPFILE                    1
>> +#define HAVE_TMPFILE    1
>>
>>  /* Define to 1 if you have the 'tmpnam' function. */
>> -#define HAVE_TMPNAM                     1
>> +#define HAVE_TMPNAM     1
>>
>>  /* Define to 1 if you have the 'tmpnam_r' function. */
>>  #undef HAVE_TMPNAM_R
>> @@ -863,8 +894,14 @@
>>  /* Define this if you have tcl and TCL_UTF_MAX==6 */
>>  #undef HAVE_UCS4_TCL
>>
>> +/* Define if your compiler provides uint32_t. */
>> +#undef HAVE_UINT32_T
>> +
>> +/* Define if your compiler provides uint64_t. */
>> +#undef HAVE_UINT64_T
>> +
>>  /* Define to 1 if the system has the type 'uintptr_t'. */
>> -#define HAVE_UINTPTR_T                  1
>> +#define HAVE_UINTPTR_T    1
>>
>>  /* Define to 1 if you have the 'uname' function. */
>>  #undef HAVE_UNAME
>> @@ -932,22 +969,22 @@
>>  #undef MVWDELCH_IS_EXPRESSION
>>
>>  /* Define to the address where bug reports for this package should be sent.
>> */
>> -#define PACKAGE_BUGREPORT   "[email protected]"
>> +#define PACKAGE_BUGREPORT   "[email protected]"
>>
>>  /* Define to the full name of this package. */
>> -#define PACKAGE_NAME    "EDK II Python Package"
>> +#define PACKAGE_NAME    "EDK II Python 2.7.10 Package"
>>
>>  /* Define to the full name and version of this package. */
>> -#define PACKAGE_STRING  "EDK II Python Package V0.8"
>> +#define PACKAGE_STRING  "EDK II Python 2.7.10 Package V0.1"
>>
>>  /* Define to the one symbol short name of this package. */
>>  #define PACKAGE_TARNAME   "EADK_Python"
>>
>>  /* Define to the home page for this package. */
>> -#define PACKAGE_URL   "http://edk2.tianocore.org/toolkit/python";
>> +#define PACKAGE_URL   "http://edk2.tianocore.org/";
>>
>>  /* Define to the version of this package. */
>> -#define PACKAGE_VERSION  "V0.8"
>> +#define PACKAGE_VERSION  "V0.1"
>>
>>  /* Define if POSIX semaphores aren't enabled on your system */
>>  #define POSIX_SEMAPHORES_NOT_ENABLED    1
>> @@ -1043,7 +1080,7 @@
>>  #define SIZEOF__BOOL      1
>>
>>  /* Define to 1 if you have the ANSI C header files. */
>> -#define STDC_HEADERS      1
>> +#define STDC_HEADERS    1
>>
>>  /* Define if you can safely include both <sys/select.h> and <sys/time.h>
>>     (which you can't on SCO ODT 3.0). */
>> @@ -1156,13 +1193,14 @@
>>  /* This must be defined on some systems to enable large file support. */
>>  #undef _LARGEFILE_SOURCE
>>
>> +/* This must be defined on AIX systems to enable large file support. */
>> +#undef _LARGE_FILES
>> +
>>  /* Define to 1 if on MINIX. */
>>  #undef _MINIX
>>
>>  /* Define on NetBSD to activate all library features */
>> -#ifndef _NETBSD_SOURCE
>> -  #define _NETBSD_SOURCE  1
>> -#endif
>> +#define _NETBSD_SOURCE  1
>>
>>  /* Define _OSF_SOURCE to get the makedev macro. */
>>  #undef _OSF_SOURCE
>> @@ -1260,3 +1298,4 @@
>>  //#undef volatile
>>
>>  #endif /*Py_PYCONFIG_H*/
>> +
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Lib/ntpath.py b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Lib/ntpath.py
>> index 58951b9..d1ffb77 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-2.7.10/Lib/ntpath.py
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Lib/ntpath.py
>> @@ -1,5 +1,18 @@
>> -# Module 'ntpath' -- common operations on WinNT/Win95 pathnames
>> -"""Common pathname manipulations, WindowsNT/95 version.
>> +
>> +# Module 'ntpath' -- common operations on WinNT/Win95 and UEFI
>> pathnames.
>> +#
>> +# Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>> +# Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
>> +# This program and the accompanying materials are licensed and made
>> available under
>> +# the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +# The full text of the license may be found at
>> +# http://opensource.org/licenses/bsd-license.
>> +#
>> +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>> +
>> +
>> +"""Common pathname manipulations, WindowsNT/95 and UEFI version.
>>
>>  Instead of importing this module directly, import os and refer to this
>>  module as os.path.
>> @@ -93,6 +106,9 @@ def join(path, *paths):
>>  # Split a path in a drive specification (a drive letter followed by a
>>  # colon) and the path specification.
>>  # It is always true that drivespec + pathspec == p
>> +# NOTE: for UEFI (and even Windows) you can have multiple characters to
>> the left
>> +# of the ':' for the device or drive spec.  This is reflected in the 
>> modifications
>> +# to splitdrive() and splitunc().
>>  def splitdrive(p):
>>      """Split a pathname into drive/UNC sharepoint and relative path 
>> specifiers.
>>      Returns a 2-tuple (drive_or_unc, path); either part may be empty.
>> @@ -130,8 +146,10 @@ def splitdrive(p):
>>              if index2 == -1:
>>                  index2 = len(p)
>>              return p[:index2], p[index2:]
>> -        if normp[1] == ':':
>> -            return p[:2], p[2:]
>> +        index = p.find(':')
>> +        if index != -1:
>> +            index = index + 1
>> +            return p[:index], p[index:]
>>      return '', p
>>
>>  # Parse UNC paths
>> @@ -143,8 +161,8 @@ def splitunc(p):
>>      using backslashes).  unc+rest is always the input path.
>>      Paths containing drive letters never have an UNC part.
>>      """
>> -    if p[1:2] == ':':
>> -        return '', p # Drive letter present
>> +    if ':' in p:
>> +        return '', p # Drive letter or device name present
>>      firstTwo = p[0:2]
>>      if firstTwo == '//' or firstTwo == '\\\\':
>>          # is a UNC path:
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Lib/os.py b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Lib/os.py
>> index cfea71b..55180ff 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-2.7.10/Lib/os.py
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-2.7.10/Lib/os.py
>> @@ -1,9 +1,22 @@
>> -r"""OS routines for NT or Posix depending on what system we're on.
>> +
>> +# Module 'os' -- OS routines for NT, Posix, or UEFI depending on what system
>> we're on.
>> +#
>> +# Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>> +# Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
>> +# This program and the accompanying materials are licensed and made
>> available under
>> +# the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +# The full text of the license may be found at
>> +# http://opensource.org/licenses/bsd-license.
>> +#
>> +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>> +
>> +r"""OS routines for NT, Posix, or UEFI depending on what system we're on.
>>
>>  This exports:
>> -  - all functions from posix, nt, os2, or ce, e.g. unlink, stat, etc.
>> -  - os.path is one of the modules posixpath, or ntpath
>> -  - os.name is 'posix', 'nt', 'os2', 'ce' or 'riscos'
>> +  - all functions from edk2, posix, nt, os2, or ce, e.g. unlink, stat, etc.
>> +  - os.path is one of the modules uefipath, posixpath, or ntpath
>> +  - os.name is 'edk2', 'posix', 'nt', 'os2', 'ce' or 'riscos'
>>    - os.curdir is a string representing the current directory ('.' or ':')
>>    - os.pardir is a string representing the parent directory ('..' or '::')
>>    - os.sep is the (or a most common) pathname separator ('/' or ':' or '\\')
>> @@ -113,6 +126,20 @@ elif 'riscos' in _names:
>>      __all__.extend(_get_exports_list(riscos))
>>      del riscos
>>
>> +elif 'edk2' in _names:
>> +    name = 'edk2'
>> +    linesep = '\n'
>> +    from edk2 import *
>> +    try:
>> +        from edk2 import _exit
>> +    except ImportError:
>> +        pass
>> +    import ntpath as path
>> +
>> +    import edk2
>> +    __all__.extend(_get_exports_list(edk2))
>> +    del edk2
>> +
>>  else:
>>      raise ImportError, 'no os specific module found'
>>
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Lib/pydoc.py b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Lib/pydoc.py
>> index d7396f0..96d6f8d 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-2.7.10/Lib/pydoc.py
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Lib/pydoc.py
>> @@ -1,5 +1,18 @@
>>  #!/usr/bin/env python
>>  # -*- coding: latin-1 -*-
>> +
>> +# Module 'pydoc' -- Generate Python documentation in HTML or text for
>> interactive use.
>> +#
>> +# Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>> +# Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
>> +# This program and the accompanying materials are licensed and made
>> available under
>> +# the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +# The full text of the license may be found at
>> +# http://opensource.org/licenses/bsd-license.
>> +#
>> +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>> +
>>  """Generate Python documentation in HTML or text for interactive use.
>>
>>  In the Python interpreter, do "from pydoc import help" to provide online
>> @@ -1385,12 +1398,16 @@ def getpager():
>>      if 'PAGER' in os.environ:
>>          if sys.platform == 'win32': # pipes completely broken in Windows
>>              return lambda text: tempfilepager(plain(text), 
>> os.environ['PAGER'])
>> +        elif sys.platform == 'uefi':
>> +            return lambda text: tempfilepager(plain(text), 
>> os.environ['PAGER'])
>>          elif os.environ.get('TERM') in ('dumb', 'emacs'):
>>              return lambda text: pipepager(plain(text), os.environ['PAGER'])
>>          else:
>>              return lambda text: pipepager(text, os.environ['PAGER'])
>>      if os.environ.get('TERM') in ('dumb', 'emacs'):
>>          return plainpager
>> +    if sys.platform == 'uefi':
>> +        return plainpager
>>      if sys.platform == 'win32' or sys.platform.startswith('os2'):
>>          return lambda text: tempfilepager(plain(text), 'more <')
>>      if hasattr(os, 'system') and os.system('(less) 2>/dev/null') == 0:
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Lib/site.py b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Lib/site.py
>> index 4a09f3c..04dffea 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-2.7.10/Lib/site.py
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-2.7.10/Lib/site.py
>> @@ -4,18 +4,18 @@
>>  * This module is automatically imported during initialization. *
>>
>> ************************************************************
>> ****
>>
>> +This is a UEFI-specific version of site.py.
>> +
>>  In earlier versions of Python (up to 1.5a3), scripts or modules that
>>  needed to use site-specific modules would place ``import site''
>>  somewhere near the top of their code.  Because of the automatic
>>  import, this is no longer necessary (but code that does it still
>>  works).
>>
>> -This will append site-specific paths to the module search path.  On
>> -Unix (including Mac OSX), it starts with sys.prefix and
>> +This will append site-specific paths to the module search path.  It starts 
>> with
>> sys.prefix and
>>  sys.exec_prefix (if different) and appends
>>  lib/python<version>/site-packages as well as lib/site-python.
>> -On other platforms (such as Windows), it tries each of the
>> -prefixes directly, as well as with lib/site-packages appended.  The
>> +The
>>  resulting directories, if they exist, are appended to sys.path, and
>>  also inspected for path configuration files.
>>
>> @@ -27,7 +27,7 @@ sys.path more than once.  Blank lines and lines
>> beginning with
>>  '#' are skipped. Lines starting with 'import' are executed.
>>
>>  For example, suppose sys.prefix and sys.exec_prefix are set to
>> -/usr/local and there is a directory /usr/local/lib/python2.5/site-packages
>> +/Efi/StdLib and there is a directory 
>> /Efi/StdLib/lib/python27.10/site-packages
>>  with three subdirectories, foo, bar and spam, and two path
>>  configuration files, foo.pth and bar.pth.  Assume foo.pth contains the
>>  following:
>> @@ -44,8 +44,8 @@ and bar.pth contains:
>>
>>  Then the following directories are added to sys.path, in this order:
>>
>> -  /usr/local/lib/python2.5/site-packages/bar
>> -  /usr/local/lib/python2.5/site-packages/foo
>> +  /Efi/StdLib/lib/python27.10/site-packages/bar
>> +  /Efi/StdLib/lib/python27.10/site-packages/foo
>>
>>  Note that bletch is omitted because it doesn't exist; bar precedes foo
>>  because bar.pth comes alphabetically before foo.pth; and spam is
>> @@ -56,6 +56,15 @@ named sitecustomize, which can perform arbitrary
>> additional
>>  site-specific customizations.  If this import fails with an
>>  ImportError exception, it is silently ignored.
>>
>> +Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>> +Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
>> +This program and the accompanying materials are licensed and made
>> available under
>> +the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +The full text of the license may be found at
>> +http://opensource.org/licenses/bsd-license.
>> +
>> +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
>> +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS
>> OR IMPLIED.
>>  """
>>
>>  import sys
>> @@ -67,7 +76,7 @@ import traceback
>>  PREFIXES = [sys.prefix, sys.exec_prefix]
>>  # Enable per user site-packages directory
>>  # set it to False to disable the feature or True to force the feature
>> -ENABLE_USER_SITE = None
>> +ENABLE_USER_SITE = False
>>
>>  # for distutils.commands.install
>>  # These values are initialized by the getuserbase() and 
>> getusersitepackages()
>> @@ -246,12 +255,6 @@ def getusersitepackages():
>>      from sysconfig import get_path
>>      import os
>>
>> -    if sys.platform == 'darwin':
>> -        from sysconfig import get_config_var
>> -        if get_config_var('PYTHONFRAMEWORK'):
>> -            USER_SITE = get_path('purelib', 'osx_framework_user')
>> -            return USER_SITE
>> -
>>      USER_SITE = get_path('purelib', '%s_user' % os.name)
>>      return USER_SITE
>>
>> @@ -261,11 +264,11 @@ def addusersitepackages(known_paths):
>>      Each user has its own python directory with site-packages in the
>>      home directory.
>>      """
>> -    # get the per user site-package path
>> -    # this call will also make sure USER_BASE and USER_SITE are set
>> -    user_site = getusersitepackages()
>> -
>>      if ENABLE_USER_SITE and os.path.isdir(user_site):
>> +        # get the per user site-package path
>> +        # this call will also make sure USER_BASE and USER_SITE are set
>> +        user_site = getusersitepackages()
>> +
>>          addsitedir(user_site, known_paths)
>>      return known_paths
>>
>> @@ -285,25 +288,16 @@ def getsitepackages():
>>              continue
>>          seen.add(prefix)
>>
>> -        if sys.platform in ('os2emx', 'riscos'):
>> -            sitepackages.append(os.path.join(prefix, "Lib", 
>> "site-packages"))
>> -        elif os.sep == '/':
>> -            sitepackages.append(os.path.join(prefix, "lib",
>> -                                        "python" + sys.version[:3],
>> -                                        "site-packages"))
>> -            sitepackages.append(os.path.join(prefix, "lib", "site-python"))
>> +        ix = sys.version.find(' ')
>> +        if ix != -1:
>> +            micro = sys.version[4:ix]
>>          else:
>> -            sitepackages.append(prefix)
>> -            sitepackages.append(os.path.join(prefix, "lib", 
>> "site-packages"))
>> -        if sys.platform == "darwin":
>> -            # for framework builds *only* we add the standard Apple
>> -            # locations.
>> -            from sysconfig import get_config_var
>> -            framework = get_config_var("PYTHONFRAMEWORK")
>> -            if framework:
>> -                sitepackages.append(
>> -                        os.path.join("/Library", framework,
>> -                            sys.version[:3], "site-packages"))
>> +            micro = '0'
>> +
>> +        sitepackages.append(os.path.join(prefix, "lib",
>> +                                    "python" + sys.version[0] + 
>> sys.version[2] + '.' + micro,
>> +                                    "site-packages"))
>> +        sitepackages.append(os.path.join(prefix, "lib", "site-python"))
>>      return sitepackages
>>
>>  def addsitepackages(known_paths):
>> @@ -315,20 +309,20 @@ def addsitepackages(known_paths):
>>      return known_paths
>>
>>  def setBEGINLIBPATH():
>> -    """The OS/2 EMX port has optional extension modules that do double duty
>> -    as DLLs (and must use the .DLL file extension) for other extensions.
>> +    """The UEFI port has optional extension modules that do double duty
>> +    as DLLs (even though they have .efi file extensions) for other 
>> extensions.
>>      The library search path needs to be amended so these will be found
>>      during module import.  Use BEGINLIBPATH so that these are at the start
>>      of the library search path.
>>
>>      """
>>      dllpath = os.path.join(sys.prefix, "Lib", "lib-dynload")
>> -    libpath = os.environ['BEGINLIBPATH'].split(';')
>> +    libpath = os.environ['BEGINLIBPATH'].split(os.path.pathsep)
>>      if libpath[-1]:
>>          libpath.append(dllpath)
>>      else:
>>          libpath[-1] = dllpath
>> -    os.environ['BEGINLIBPATH'] = ';'.join(libpath)
>> +    os.environ['BEGINLIBPATH'] = os.path.pathsep.join(libpath)
>>
>>
>>  def setquit():
>> @@ -338,12 +332,7 @@ def setquit():
>>      The repr of each object contains a hint at how it works.
>>
>>      """
>> -    if os.sep == ':':
>> -        eof = 'Cmd-Q'
>> -    elif os.sep == '\\':
>> -        eof = 'Ctrl-Z plus Return'
>> -    else:
>> -        eof = 'Ctrl-D (i.e. EOF)'
>> +    eof = 'Ctrl-D (i.e. EOF)'
>>
>>      class Quitter(object):
>>          def __init__(self, name):
>> @@ -426,12 +415,7 @@ class _Printer(object):
>>  def setcopyright():
>>      """Set 'copyright' and 'credits' in __builtin__"""
>>      __builtin__.copyright = _Printer("copyright", sys.copyright)
>> -    if sys.platform[:4] == 'java':
>> -        __builtin__.credits = _Printer(
>> -            "credits",
>> -            "Jython is maintained by the Jython developers 
>> (www.jython.org).")
>> -    else:
>> -        __builtin__.credits = _Printer("credits", """\
>> +    __builtin__.credits = _Printer("credits", """\
>>      Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of
>> thousands
>>      for supporting Python development.  See www.python.org for more
>> information.""")
>>      here = os.path.dirname(os.__file__)
>> @@ -457,21 +441,6 @@ class _Helper(object):
>>  def sethelper():
>>      __builtin__.help = _Helper()
>>
>> -def aliasmbcs():
>> -    """On Windows, some default encodings are not provided by Python,
>> -    while they are always available as "mbcs" in each locale. Make
>> -    them usable by aliasing to "mbcs" in such a case."""
>> -    if sys.platform == 'win32':
>> -        import locale, codecs
>> -        enc = locale.getdefaultlocale()[1]
>> -        if enc.startswith('cp'):            # "cp***" ?
>> -            try:
>> -                codecs.lookup(enc)
>> -            except LookupError:
>> -                import encodings
>> -                encodings._cache[enc] = encodings._unknown
>> -                encodings.aliases.aliases[enc] = 'mbcs'
>> -
>>  def setencoding():
>>      """Set the string encoding used by the Unicode implementation.  The
>>      default is 'ascii', but if you're willing to experiment, you can
>> @@ -529,16 +498,11 @@ def main():
>>          ENABLE_USER_SITE = check_enableusersite()
>>      known_paths = addusersitepackages(known_paths)
>>      known_paths = addsitepackages(known_paths)
>> -    if sys.platform == 'os2emx':
>> -        setBEGINLIBPATH()
>>      setquit()
>>      setcopyright()
>>      sethelper()
>> -    aliasmbcs()
>>      setencoding()
>>      execsitecustomize()
>> -    if ENABLE_USER_SITE:
>> -        execusercustomize()
>>      # Remove sys.setdefaultencoding() so that users cannot change the
>>      # encoding after initialization.  The test for presence is needed when
>>      # this module is run as a script, because this code is executed twice.
>> @@ -549,52 +513,19 @@ main()
>>
>>  def _script():
>>      help = """\
>> -    %s [--user-base] [--user-site]
>> -
>> -    Without arguments print some useful information
>> -    With arguments print the value of USER_BASE and/or USER_SITE separated
>> -    by '%s'.
>> -
>> -    Exit codes with --user-base or --user-site:
>> -      0 - user site directory is enabled
>> -      1 - user site directory is disabled by user
>> -      2 - uses site directory is disabled by super user
>> -          or for security reasons
>> -     >2 - unknown error
>> +    %s
>> +
>> +    Path elements are normally separated by '%s'.
>>      """
>> -    args = sys.argv[1:]
>> -    if not args:
>> -        print "sys.path = ["
>> -        for dir in sys.path:
>> -            print "    %r," % (dir,)
>> -        print "]"
>> -        print "USER_BASE: %r (%s)" % (USER_BASE,
>> -            "exists" if os.path.isdir(USER_BASE) else "doesn't exist")
>> -        print "USER_SITE: %r (%s)" % (USER_SITE,
>> -            "exists" if os.path.isdir(USER_SITE) else "doesn't exist")
>> -        print "ENABLE_USER_SITE: %r" %  ENABLE_USER_SITE
>> -        sys.exit(0)
>> -
>> -    buffer = []
>> -    if '--user-base' in args:
>> -        buffer.append(USER_BASE)
>> -    if '--user-site' in args:
>> -        buffer.append(USER_SITE)
>> -
>> -    if buffer:
>> -        print os.pathsep.join(buffer)
>> -        if ENABLE_USER_SITE:
>> -            sys.exit(0)
>> -        elif ENABLE_USER_SITE is False:
>> -            sys.exit(1)
>> -        elif ENABLE_USER_SITE is None:
>> -            sys.exit(2)
>> -        else:
>> -            sys.exit(3)
>> -    else:
>> -        import textwrap
>> -        print textwrap.dedent(help % (sys.argv[0], os.pathsep))
>> -        sys.exit(10)
>> +
>> +    print "sys.path = ["
>> +    for dir in sys.path:
>> +        print "    %r," % (dir,)
>> +    print "]"
>> +
>> +    import textwrap
>> +    print textwrap.dedent(help % (sys.argv[0], os.pathsep))
>> +    sys.exit(0)
>>
>>  if __name__ == '__main__':
>>      _script()
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/_sre.c b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Modules/_sre.c
>> index ec98182..81d6a88 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/_sre.c
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/_sre.c
>> @@ -2,6 +2,16 @@
>>   * Secret Labs' Regular Expression Engine
>>   *
>>   * regular expression matching engine
>> +
>> +  Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>> +  Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
>> +  This program and the accompanying materials are licensed and made
>> available under
>> +  the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +  The full text of the license may be found at
>> +  http://opensource.org/licenses/bsd-license.
>> +
>> +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>>   *
>>   * partial history:
>>   * 1999-10-24 fl  created (based on existing template matcher code)
>> @@ -34,6 +44,10 @@
>>   * other compatibility work.
>>   */
>>
>> +/* Get rid of these macros to prevent collisions between EFI and Python in
>> this file. */
>> +#undef  RETURN_ERROR
>> +#undef  RETURN_SUCCESS
>> +
>>  #ifndef SRE_RECURSIVE
>>
>>  static char copyright[] =
>> @@ -84,7 +98,7 @@ static char copyright[] =
>>  /* -------------------------------------------------------------------- */
>>
>>  #if defined(_MSC_VER)
>> -#pragma optimize("agtw", on) /* doesn't seem to make much difference... */
>> +#pragma optimize("gt", on) /* doesn't seem to make much difference... */
>>  #pragma warning(disable: 4710) /* who cares if functions are not inlined ;-)
>> */
>>  /* fastest possible local call under MSVC */
>>  #define LOCAL(type) static __inline type __fastcall
>> @@ -2147,8 +2161,8 @@ pattern_findall(PatternObject* self, PyObject*
>> args, PyObject* kw)
>>  #endif
>>          }
>>
>> - if (PyErr_Occurred())
>> -     goto error;
>> +  if (PyErr_Occurred())
>> +      goto error;
>>
>>          if (status <= 0) {
>>              if (status == 0)
>> @@ -2284,8 +2298,8 @@ pattern_split(PatternObject* self, PyObject* args,
>> PyObject* kw)
>>  #endif
>>          }
>>
>> - if (PyErr_Occurred())
>> -     goto error;
>> +  if (PyErr_Occurred())
>> +      goto error;
>>
>>          if (status <= 0) {
>>              if (status == 0)
>> @@ -2381,10 +2395,10 @@ pattern_subx(PatternObject* self, PyObject*
>> ptemplate, PyObject* string,
>>          b = bint;
>>          if (ptr) {
>>              if (b == 1) {
>> -       literal = sre_literal_template((unsigned char *)ptr, n);
>> +        literal = sre_literal_template((unsigned char *)ptr, n);
>>              } else {
>>  #if defined(HAVE_UNICODE)
>> -       literal = sre_uliteral_template((Py_UNICODE *)ptr, n);
>> +        literal = sre_uliteral_template((Py_UNICODE *)ptr, n);
>>  #endif
>>              }
>>          } else {
>> @@ -2436,8 +2450,8 @@ pattern_subx(PatternObject* self, PyObject*
>> ptemplate, PyObject* string,
>>  #endif
>>          }
>>
>> - if (PyErr_Occurred())
>> -     goto error;
>> +  if (PyErr_Occurred())
>> +      goto error;
>>
>>          if (status <= 0) {
>>              if (status == 0)
>> @@ -2655,20 +2669,20 @@ PyDoc_STRVAR(pattern_doc, "Compiled regular
>> expression objects");
>>
>>  static PyMethodDef pattern_methods[] = {
>>      {"match", (PyCFunction) pattern_match,
>> METH_VARARGS|METH_KEYWORDS,
>> - pattern_match_doc},
>> +  pattern_match_doc},
>>      {"search", (PyCFunction) pattern_search,
>> METH_VARARGS|METH_KEYWORDS,
>> - pattern_search_doc},
>> +  pattern_search_doc},
>>      {"sub", (PyCFunction) pattern_sub, METH_VARARGS|METH_KEYWORDS,
>> - pattern_sub_doc},
>> +  pattern_sub_doc},
>>      {"subn", (PyCFunction) pattern_subn, METH_VARARGS|METH_KEYWORDS,
>> - pattern_subn_doc},
>> +  pattern_subn_doc},
>>      {"split", (PyCFunction) pattern_split, METH_VARARGS|METH_KEYWORDS,
>> - pattern_split_doc},
>> +  pattern_split_doc},
>>      {"findall", (PyCFunction) pattern_findall,
>> METH_VARARGS|METH_KEYWORDS,
>> - pattern_findall_doc},
>> +  pattern_findall_doc},
>>  #if PY_VERSION_HEX >= 0x02020000
>>      {"finditer", (PyCFunction) pattern_finditer, METH_VARARGS,
>> - pattern_finditer_doc},
>> +  pattern_finditer_doc},
>>  #endif
>>      {"scanner", (PyCFunction) pattern_scanner, METH_VARARGS},
>>      {"__copy__", (PyCFunction) pattern_copy, METH_NOARGS},
>> @@ -2692,28 +2706,28 @@ statichere PyTypeObject Pattern_Type = {
>>      (destructor)pattern_dealloc, /*tp_dealloc*/
>>      0,                                  /* tp_print */
>>      0,                                  /* tp_getattrn */
>> -    0,         /* tp_setattr */
>> -    0,         /* tp_compare */
>> -    0,         /* tp_repr */
>> -    0,         /* tp_as_number */
>> -    0,         /* tp_as_sequence */
>> -    0,         /* tp_as_mapping */
>> -    0,         /* tp_hash */
>> -    0,         /* tp_call */
>> -    0,         /* tp_str */
>> -    0,         /* tp_getattro */
>> -    0,         /* tp_setattro */
>> -    0,         /* tp_as_buffer */
>> -    Py_TPFLAGS_DEFAULT,            /* tp_flags */
>> -    pattern_doc,     /* tp_doc */
>> -    0,         /* tp_traverse */
>> -    0,         /* tp_clear */
>> -    0,         /* tp_richcompare */
>> -    offsetof(PatternObject, weakreflist),  /* tp_weaklistoffset */
>> -    0,         /* tp_iter */
>> -    0,         /* tp_iternext */
>> -    pattern_methods,     /* tp_methods */
>> -    pattern_members,     /* tp_members */
>> +    0,          /* tp_setattr */
>> +    0,          /* tp_compare */
>> +    0,          /* tp_repr */
>> +    0,          /* tp_as_number */
>> +    0,          /* tp_as_sequence */
>> +    0,          /* tp_as_mapping */
>> +    0,          /* tp_hash */
>> +    0,          /* tp_call */
>> +    0,          /* tp_str */
>> +    0,          /* tp_getattro */
>> +    0,          /* tp_setattro */
>> +    0,          /* tp_as_buffer */
>> +    Py_TPFLAGS_DEFAULT,           /* tp_flags */
>> +    pattern_doc,      /* tp_doc */
>> +    0,          /* tp_traverse */
>> +    0,          /* tp_clear */
>> +    0,          /* tp_richcompare */
>> +    offsetof(PatternObject, weakreflist), /* tp_weaklistoffset */
>> +    0,          /* tp_iter */
>> +    0,          /* tp_iternext */
>> +    pattern_methods,      /* tp_methods */
>> +    pattern_members,      /* tp_members */
>>  };
>>
>>  static int _validate(PatternObject *self); /* Forward */
>> @@ -3756,9 +3770,9 @@ static PyTypeObject Match_Type = {
>>      0,                          /* tp_weaklistoffset */
>>      0,                          /* tp_iter */
>>      0,                          /* tp_iternext */
>> -    match_methods,   /* tp_methods */
>> -    match_members,   /* tp_members */
>> -    match_getset,            /* tp_getset */
>> +    match_methods,    /* tp_methods */
>> +    match_members,    /* tp_members */
>> +    match_getset,           /* tp_getset */
>>  };
>>
>>  static PyObject*
>> @@ -3909,7 +3923,7 @@ static PyMethodDef scanner_methods[] = {
>>
>>  #define SCAN_OFF(x) offsetof(ScannerObject, x)
>>  static PyMemberDef scanner_members[] = {
>> -    {"pattern",  T_OBJECT, SCAN_OFF(pattern),  READONLY},
>> +    {"pattern", T_OBJECT, SCAN_OFF(pattern),  READONLY},
>>      {NULL}  /* Sentinel */
>>  };
>>
>> @@ -3918,31 +3932,31 @@ statichere PyTypeObject Scanner_Type = {
>>      0, "_" SRE_MODULE ".SRE_Scanner",
>>      sizeof(ScannerObject), 0,
>>      (destructor)scanner_dealloc, /*tp_dealloc*/
>> -    0,       /* tp_print */
>> -    0,       /* tp_getattr */
>> -    0,       /* tp_setattr */
>> -    0,       /* tp_reserved */
>> -    0,       /* tp_repr */
>> -    0,       /* tp_as_number */
>> -    0,       /* tp_as_sequence */
>> -    0,       /* tp_as_mapping */
>> -    0,       /* tp_hash */
>> -    0,       /* tp_call */
>> -    0,       /* tp_str */
>> -    0,       /* tp_getattro */
>> -    0,       /* tp_setattro */
>> -    0,       /* tp_as_buffer */
>> -    Py_TPFLAGS_DEFAULT,    /* tp_flags */
>> -    0,       /* tp_doc */
>> -    0,       /* tp_traverse */
>> -    0,       /* tp_clear */
>> -    0,       /* tp_richcompare */
>> -    0,       /* tp_weaklistoffset */
>> -    0,       /* tp_iter */
>> -    0,       /* tp_iternext */
>> -    scanner_methods,   /* tp_methods */
>> -    scanner_members,   /* tp_members */
>> -    0,       /* tp_getset */
>> +    0,        /* tp_print */
>> +    0,        /* tp_getattr */
>> +    0,        /* tp_setattr */
>> +    0,        /* tp_reserved */
>> +    0,        /* tp_repr */
>> +    0,        /* tp_as_number */
>> +    0,        /* tp_as_sequence */
>> +    0,        /* tp_as_mapping */
>> +    0,        /* tp_hash */
>> +    0,        /* tp_call */
>> +    0,        /* tp_str */
>> +    0,        /* tp_getattro */
>> +    0,        /* tp_setattro */
>> +    0,        /* tp_as_buffer */
>> +    Py_TPFLAGS_DEFAULT,   /* tp_flags */
>> +    0,        /* tp_doc */
>> +    0,        /* tp_traverse */
>> +    0,        /* tp_clear */
>> +    0,        /* tp_richcompare */
>> +    0,        /* tp_weaklistoffset */
>> +    0,        /* tp_iter */
>> +    0,        /* tp_iternext */
>> +    scanner_methods,    /* tp_methods */
>> +    scanner_members,    /* tp_members */
>> +    0,        /* tp_getset */
>>  };
>>
>>  static PyObject*
>> @@ -4000,7 +4014,7 @@ PyMODINIT_FUNC init_sre(void)
>>
>>      m = Py_InitModule("_" SRE_MODULE, _functions);
>>      if (m == NULL)
>> -     return;
>> +      return;
>>      d = PyModule_GetDict(m);
>>
>>      x = PyInt_FromLong(SRE_MAGIC);
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/addrinfo.h b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Modules/addrinfo.h
>> index 670b173..9f5a614 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/addrinfo.h
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/addrinfo.h
>> @@ -1,4 +1,13 @@
>> -/*
>> +/** @file
>> +  Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
>> +  This program and the accompanying materials are licensed and made
>> available under
>> +  the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +  The full text of the license may be found at
>> +  http://opensource.org/licenses/bsd-license.
>> +
>> +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>> +
>>   * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
>>   * All rights reserved.
>>   *
>> @@ -25,7 +34,7 @@
>>   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
>> ANY WAY
>>   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
>> OF
>>   * SUCH DAMAGE.
>> - */
>> +**/
>>
>>  #ifndef HAVE_GETADDRINFO
>>
>> @@ -123,49 +132,51 @@
>>
>>  #endif /* !HAVE_GETNAMEINFO */
>>
>> -#ifndef HAVE_ADDRINFO
>> -struct addrinfo {
>> -    int         ai_flags;       /* AI_PASSIVE, AI_CANONNAME */
>> -    int         ai_family;      /* PF_xxx */
>> -    int         ai_socktype;    /* SOCK_xxx */
>> -    int         ai_protocol;    /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
>> -    size_t      ai_addrlen;     /* length of ai_addr */
>> -    char        *ai_canonname;  /* canonical name for hostname */
>> -    struct sockaddr *ai_addr;           /* binary address */
>> -    struct addrinfo *ai_next;           /* next structure in linked list */
>> -};
>> -#endif /* !HAVE_ADDRINFO */
>> -
>> -#ifndef HAVE_SOCKADDR_STORAGE
>> -/*
>> - * RFC 2553: protocol-independent placeholder for socket addresses
>> - */
>> -#define _SS_MAXSIZE     128
>> -#ifdef HAVE_LONG_LONG
>> -#define _SS_ALIGNSIZE   (sizeof(PY_LONG_LONG))
>> -#else
>> -#define _SS_ALIGNSIZE   (sizeof(double))
>> -#endif /* HAVE_LONG_LONG */
>> -#define _SS_PAD1SIZE    (_SS_ALIGNSIZE - sizeof(u_char) * 2)
>> -#define _SS_PAD2SIZE    (_SS_MAXSIZE - sizeof(u_char) * 2 - \
>> -                _SS_PAD1SIZE - _SS_ALIGNSIZE)
>> -
>> -struct sockaddr_storage {
>> -#ifdef HAVE_SOCKADDR_SA_LEN
>> -    unsigned char ss_len;               /* address length */
>> -    unsigned char ss_family;            /* address family */
>> -#else
>> -    unsigned short ss_family;           /* address family */
>> -#endif /* HAVE_SOCKADDR_SA_LEN */
>> -    char        __ss_pad1[_SS_PAD1SIZE];
>> -#ifdef HAVE_LONG_LONG
>> -    PY_LONG_LONG __ss_align;            /* force desired structure storage
>> alignment */
>> -#else
>> -    double __ss_align;          /* force desired structure storage 
>> alignment */
>> -#endif /* HAVE_LONG_LONG */
>> -    char        __ss_pad2[_SS_PAD2SIZE];
>> -};
>> -#endif /* !HAVE_SOCKADDR_STORAGE */
>> +#ifndef _SYS_SOCKET_H_
>> +  #ifndef HAVE_ADDRINFO
>> +    struct addrinfo {
>> +        int         ai_flags;       /* AI_PASSIVE, AI_CANONNAME */
>> +        int         ai_family;      /* PF_xxx */
>> +        int         ai_socktype;    /* SOCK_xxx */
>> +        int         ai_protocol;    /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
>> +        size_t      ai_addrlen;     /* length of ai_addr */
>> +        char        *ai_canonname;  /* canonical name for hostname */
>> +        struct sockaddr *ai_addr;           /* binary address */
>> +        struct addrinfo *ai_next;           /* next structure in linked 
>> list */
>> +    };
>> +  #endif /* !HAVE_ADDRINFO */
>> +
>> +  #ifndef HAVE_SOCKADDR_STORAGE
>> +    /*
>> +     * RFC 2553: protocol-independent placeholder for socket addresses
>> +     */
>> +    #define _SS_MAXSIZE     128
>> +    #ifdef HAVE_LONG_LONG
>> +      #define _SS_ALIGNSIZE   (sizeof(PY_LONG_LONG))
>> +    #else
>> +      #define _SS_ALIGNSIZE   (sizeof(double))
>> +    #endif /* HAVE_LONG_LONG */
>> +    #define _SS_PAD1SIZE    (_SS_ALIGNSIZE - sizeof(u_char) * 2)
>> +    #define _SS_PAD2SIZE    (_SS_MAXSIZE - sizeof(u_char) * 2 - \
>> +                    _SS_PAD1SIZE - _SS_ALIGNSIZE)
>> +
>> +    struct sockaddr_storage {
>> +    #ifdef HAVE_SOCKADDR_SA_LEN
>> +        unsigned char ss_len;               /* address length */
>> +        unsigned char ss_family;            /* address family */
>> +    #else
>> +        unsigned short ss_family;           /* address family */
>> +    #endif /* HAVE_SOCKADDR_SA_LEN */
>> +        char        __ss_pad1[_SS_PAD1SIZE];
>> +    #ifdef HAVE_LONG_LONG
>> +        PY_LONG_LONG __ss_align;            /* force desired structure 
>> storage
>> alignment */
>> +    #else
>> +        double __ss_align;          /* force desired structure storage 
>> alignment */
>> +    #endif /* HAVE_LONG_LONG */
>> +        char        __ss_pad2[_SS_PAD2SIZE];
>> +    };
>> +  #endif  /* !HAVE_SOCKADDR_STORAGE */
>> +#endif  /* _SYS_SOCKET_H_ */
>>
>>  #ifdef __cplusplus
>>  extern "C" {
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/errnomodule.c b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Modules/errnomodule.c
>> index 87ebab0..9e1c236 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/errnomodule.c
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/errnomodule.c
>> @@ -1,5 +1,14 @@
>> +/* Errno module
>>
>> -/* Errno module */
>> +    Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
>> +    This program and the accompanying materials are licensed and made
>> available under
>> +    the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +    The full text of the license may be found at
>> +    http://opensource.org/licenses/bsd-license.
>> +
>> +    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>> +*/
>>
>>  #include "Python.h"
>>
>> @@ -783,8 +792,52 @@ initerrno(void)
>>  #ifdef WSAN
>>      inscode(d, ds, de, "WSAN", WSAN, "Error WSAN");
>>  #endif
>> +
>> +/* These symbols are added for EDK II support.  */
>> +#ifdef EMINERRORVAL
>> +  inscode(d, ds, de, "EMINERRORVAL", EMINERRORVAL, "Lowest valid error
>> value");
>> +#endif
>>  #ifdef ENOTSUP
>> -    inscode(d, ds, de, "ENOTSUP", ENOTSUP, "Operation not supported");
>> +  inscode(d, ds, de, "ENOTSUP", ENOTSUP, "Operation not supported");
>> +#endif
>> +#ifdef EBADRPC
>> +  inscode(d, ds, de, "EBADRPC", EBADRPC, "RPC struct is bad");
>> +#endif
>> +#ifdef ERPCMISMATCH
>> +  inscode(d, ds, de, "ERPCMISMATCH", ERPCMISMATCH, "RPC version
>> wrong");
>> +#endif
>> +#ifdef EPROGUNAVAIL
>> +  inscode(d, ds, de, "EPROGUNAVAIL", EPROGUNAVAIL, "RPC prog. not avail");
>> +#endif
>> +#ifdef EPROGMISMATCH
>> +  inscode(d, ds, de, "EPROGMISMATCH", EPROGMISMATCH, "Program version
>> wrong");
>> +#endif
>> +#ifdef EPROCUNAVAIL
>> +  inscode(d, ds, de, "EPROCUNAVAIL", EPROCUNAVAIL, "Bad procedure for
>> program");
>> +#endif
>> +#ifdef EFTYPE
>> +  inscode(d, ds, de, "EFTYPE", EFTYPE, "Inappropriate file type or format");
>> +#endif
>> +#ifdef EAUTH
>> +  inscode(d, ds, de, "EAUTH", EAUTH, "Authentication error");
>> +#endif
>> +#ifdef ENEEDAUTH
>> +  inscode(d, ds, de, "ENEEDAUTH", ENEEDAUTH, "Need authenticator");
>> +#endif
>> +#ifdef ECANCELED
>> +  inscode(d, ds, de, "ECANCELED", ECANCELED, "Operation canceled");
>> +#endif
>> +#ifdef ENOATTR
>> +  inscode(d, ds, de, "ENOATTR", ENOATTR, "Attribute not found");
>> +#endif
>> +#ifdef EDOOFUS
>> +  inscode(d, ds, de, "EDOOFUS", EDOOFUS, "Programming Error");
>> +#endif
>> +#ifdef EBUFSIZE
>> +  inscode(d, ds, de, "EBUFSIZE", EBUFSIZE, "Buffer too small to hold 
>> result");
>> +#endif
>> +#ifdef EMAXERRORVAL
>> +  inscode(d, ds, de, "EMAXERRORVAL", EMAXERRORVAL, "One more than the
>> highest defined error value");
>>  #endif
>>
>>      Py_DECREF(de);
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/expat/expat_external.h
>> b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/expat/expat_external.h
>> index f337e1c..8645cc8 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/expat/expat_external.h
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/expat/expat_external.h
>> @@ -9,7 +9,9 @@
>>
>>  /* Namespace external symbols to allow multiple libexpat version to
>>     co-exist. */
>> -#include "pyexpatns.h"
>> +#if !defined(UEFI_C_SOURCE)
>> +  #include "pyexpatns.h"
>> +#endif
>>
>>  #if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) &&
>> !defined(__CYGWIN__)
>>  #define XML_USE_MSC_EXTENSIONS 1
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/getpath.c b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Modules/getpath.c
>> index adf0b87..f1f4e47 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/getpath.c
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/getpath.c
>> @@ -1,8 +1,19 @@
>>  /** @file
>>      Return the initial module search path.
>>
>> +    This file is based upon the Modules/getpath.c file from the Python
>> distribution
>> +    but has had everything not exactly necessary for operation on EDK II
>> stripped
>> +    out.
>> +
>>      Search in specified locations for the associated Python libraries.
>>
>> +    For the EDK II, UEFI, implementation of Python, PREFIX and EXEC_PREFIX
>> +    are set as follows:
>> +      PREFIX      = /Efi/StdLib
>> +      EXEC_PREFIX = PREFIX
>> +
>> +    The volume is assumed to be the current volume when Python was
>> started.
>> +
>>      Py_GetPath returns module_search_path.
>>      Py_GetPrefix returns PREFIX
>>      Py_GetExec_Prefix returns PREFIX
>> @@ -11,16 +22,13 @@
>>      These are built dynamically so that the proper volume name can be
>> prefixed
>>      to the paths.
>>
>> -    For the EDK II, UEFI, implementation of Python, PREFIX and EXEC_PREFIX
>> -    are set as follows:
>> -      PREFIX      = /Efi/StdLib
>> -      EXEC_PREFIX = PREFIX
>> -
>> -    The following final paths are assumed:
>> +    The following final paths (for Python 2.7.10) are assumed:
>>        /Efi/Tools/Python.efi                     The Python executable.
>> -      /Efi/StdLib/lib/python.VERSION            The platform independent 
>> Python
>> modules.
>> -      /Efi/StdLib/lib/python.VERSION/dynalib    Dynamically loadable Python
>> extension modules.
>> +      /Efi/StdLib/lib/python27.10               The version dependent Python
>> modules.
>> +      /Efi/StdLib/lib/python.27                 The version independent 
>> Python
>> modules.
>> +      /Efi/StdLib/lib/python27.10/lib-dynload   Dynamically loadable Python
>> extension modules.
>>
>> +    Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>>      Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
>>      This program and the accompanying materials are licensed and made
>> available under
>>      the terms and conditions of the BSD License that accompanies this
>> distribution.
>> @@ -34,13 +42,12 @@
>>  #include <osdefs.h>
>>  #include  <ctype.h>
>>
>> -#ifdef __cplusplus
>> - extern "C" {
>> -#endif
>> +#define SIFY_I( x ) #x
>> +#define SIFY( y )   SIFY_I( y )
>>
>>  /* VERSION must be at least two characters long. */
>>  #ifndef VERSION
>> -  #define VERSION     "27"
>> +  #define VERSION     SIFY(PY_MAJOR_VERSION) SIFY(PY_MINOR_VERSION)
>>  #endif
>>
>>  #ifndef VPATH
>> @@ -61,20 +68,19 @@
>>  #endif
>>
>>  #ifndef   LIBPYTHON
>> -  #define   LIBPYTHON     "lib/python." VERSION
>> +  #define   LIBPYTHON     "lib/python" VERSION "." SIFY(PY_MICRO_VERSION)
>>  #endif
>>
>>  #ifndef PYTHONPATH
>> -  #ifdef HAVE_ENVIRONMENT_OPS
>> -    #define PYTHONPATH  PREFIX LIBPYTHON sDELIM \
>> -                        EXEC_PREFIX LIBPYTHON "/lib-dynload"
>> -  #else
>> -    #define PYTHONPATH  LIBPYTHON
>> -  #endif
>> +  #define PYTHONPATH  LIBPYTHON
>>  #endif
>>
>>  #ifndef LANDMARK
>> -#define LANDMARK    "os.py"
>> +  #define LANDMARK    "os.py"
>> +#endif
>> +
>> +#ifdef __cplusplus
>> + extern "C" {
>>  #endif
>>
>>  static char   prefix[MAXPATHLEN+1];
>> @@ -94,11 +100,7 @@ static char   volume_name[32]             = { 0 };
>>  static int
>>  is_sep(char ch)
>>  {
>> -#ifdef ALTSEP
>>    return ch == SEP || ch == ALTSEP;
>> -#else
>> -  return ch == SEP;
>> -#endif
>>  }
>>
>>  /** Reduce a path by its last element.
>> @@ -117,77 +119,6 @@ reduce(char *dir)
>>      dir[i] = '\0';
>>  }
>>
>> -#ifndef UEFI_C_SOURCE
>> -/** Does filename point to a file and not directory?
>> -
>> -    @param[in]    filename    The fully qualified path to the object to 
>> test.
>> -
>> -    @retval       0     Filename was not found, or is a directory.
>> -    @retval       1     Filename refers to a regular file.
>> -**/
>> -static int
>> -isfile(char *filename)
>> -{
>> -    struct stat buf;
>> -    if (stat(filename, &buf) != 0) {
>> -      return 0;
>> -    }
>> -    //if (!S_ISREG(buf.st_mode))
>> -    if (S_ISDIR(buf.st_mode)) {
>> -      return 0;
>> -    }
>> -    return 1;
>> -}
>> -
>> -/** Determine if filename refers to a Python module.
>> -
>> -    A Python module is indicated if the file exists, or if the file with
>> -    'o' or 'c' appended exists.
>> -
>> -    @param[in]    filename    The fully qualified path to the object to 
>> test.
>> -
>> -    @retval       0
>> -**/
>> -static int
>> -ismodule(char *filename)
>> -{
>> -  if (isfile(filename)) {
>> -    //if (Py_VerboseFlag) PySys_WriteStderr("%s[%d]: file = \"%s\"\n",
>> __func__, __LINE__, filename);
>> -    return 1;
>> -  }
>> -
>> -    /* Check for the compiled version of prefix. */
>> -    if (strlen(filename) < MAXPATHLEN) {
>> -        strcat(filename, Py_OptimizeFlag ? "o" : "c");
>> -        if (isfile(filename)) {
>> -          return 1;
>> -        }
>> -    }
>> -    return 0;
>> -}
>> -
>> -/** Does filename point to a directory?
>> -
>> -    @param[in]    filename    The fully qualified path to the object to 
>> test.
>> -
>> -    @retval       0     Filename was not found, or is not a regular file.
>> -    @retval       1     Filename refers to a directory.
>> -**/
>> -static int
>> -isdir(char *filename)
>> -{
>> -    struct stat buf;
>> -
>> -    if (stat(filename, &buf) != 0)
>> -        return 0;
>> -
>> -    if (!S_ISDIR(buf.st_mode))
>> -        return 0;
>> -
>> -    return 1;
>> -}
>> -#endif  /* UEFI_C_SOURCE */
>> -
>>  /** Determine if a path is absolute, or not.
>>      An absolute path consists of a volume name, "VOL:", followed by a rooted
>> path,
>>      "/path/elements".  If both of these components are present, the path is
>> absolute.
>> @@ -466,7 +397,7 @@ calculate_path(void)
>>      char *pythonpath = PYTHONPATH;
>>      char *rtpypath = Py_GETENV("PYTHONPATH");
>>      //char *home = Py_GetPythonHome();
>> -    char *path = getenv("PATH");
>> +    char *path = getenv("path");
>>      char *prog = Py_GetProgramName();
>>      char argv0_path[MAXPATHLEN+1];
>>      char zip_path[MAXPATHLEN+1];
>> @@ -531,9 +462,9 @@ calculate_path(void)
>>        This is the full path to the platform independent libraries.
>>
>> ############################################################
>> ############### */
>>
>> -        strncpy(prefix, volume_name, MAXPATHLEN);
>> -        joinpath(prefix, PREFIX);
>> -        joinpath(prefix, lib_python);
>> +    strncpy(prefix, volume_name, MAXPATHLEN);
>> +    joinpath(prefix, PREFIX);
>> +    joinpath(prefix, lib_python);
>>
>>  /*
>> ############################################################
>> ###############
>>        Build the FULL path to the zipped-up Python library.
>> @@ -551,10 +482,10 @@ calculate_path(void)
>>        Build the FULL path to dynamically loadable libraries.
>>
>> ############################################################
>> ############### */
>>
>> -        strncpy(exec_prefix, volume_name, MAXPATHLEN);
>> -        joinpath(exec_prefix, EXEC_PREFIX);
>> -        joinpath(exec_prefix, lib_python);
>> -        joinpath(exec_prefix, "lib-dynload");
>> +    strncpy(exec_prefix, volume_name, MAXPATHLEN);    // "fs0:"
>> +    joinpath(exec_prefix, EXEC_PREFIX);               // "fs0:/Efi/StdLib"
>> +    joinpath(exec_prefix, lib_python);                //
>> "fs0:/Efi/StdLib/lib/python.27"
>> +    joinpath(exec_prefix, "lib-dynload");             //
>> "fs0:/Efi/StdLib/lib/python.27/lib-dynload"
>>
>>  /*
>> ############################################################
>> ###############
>>        Build the module search path.
>> @@ -573,9 +504,9 @@ calculate_path(void)
>>        strcpy(prefix, volume_name);
>>      }
>>      bufsz = strlen(prefix);
>> -    if(prefix[bufsz-1] == ':') {
>> -      prefix[bufsz] = SEP;
>> -      prefix[bufsz+1] = 0;
>> +    if(prefix[bufsz-1] == ':') {    // if prefix consists solely of a 
>> volume_name
>> +      prefix[bufsz] = SEP;          //    then append SEP indicating the 
>> root
>> directory
>> +      prefix[bufsz+1] = 0;          //    and ensure the new string is 
>> terminated
>>      }
>>
>>      /* Calculate size of return buffer.
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/main.c b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Modules/main.c
>> index ef9b245..f9b7cbf 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/main.c
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/main.c
>> @@ -1,4 +1,8 @@
>> -/* Python interpreter main program */
>> +/** @file
>> +  Python interpreter main program.
>> +
>> +  Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>> +**/
>>
>>  #include "Python.h"
>>  #include "osdefs.h"
>> @@ -40,7 +44,7 @@ static char **orig_argv;
>>  static int  orig_argc;
>>
>>  /* command line options */
>> -#define BASE_OPTS "3bBc:dEhiJm:OQ:RsStuUvVW:xX?"
>> +#define BASE_OPTS "#3bBc:dEhiJm:OQ:sStuUvVW:xX?"
>>
>>  #ifndef RISCOS
>>  #define PROGRAM_OPTS BASE_OPTS
>> @@ -59,6 +63,7 @@ static char *usage_line =
>>  /* Long usage message, split into parts < 512 bytes */
>>  static char *usage_1 = "\
>>  Options and arguments (and corresponding environment variables):\n\
>> +-#     : alias stderr to stdout for platforms without STDERR output.\n\
>>  -B     : don't write .py[co] files on import; also
>> PYTHONDONTWRITEBYTECODE=x\n\
>>  -c cmd : program passed in as string (terminates option list)\n\
>>  -d     : debug output from parser; also PYTHONDEBUG=x\n\
>> @@ -71,9 +76,6 @@ static char *usage_2 = "\
>>  -m mod : run library module as a script (terminates option list)\n\
>>  -O     : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x\n\
>>  -OO    : remove doc-strings in addition to the -O optimizations\n\
>> --R     : use a pseudo-random salt to make hash() values of various types 
>> be\n\
>> -         unpredictable between separate invocations of the interpreter, 
>> as\n\
>> -         a defense against denial-of-service attacks\n\
>>  -Q arg : division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew\n\
>>  -s     : don't add user site directory to sys.path; also PYTHONNOUSERSITE\n\
>>  -S     : don't imply 'import site' on initialization\n\
>> @@ -102,15 +104,9 @@ PYTHONPATH   : '%c'-separated list of directories
>> prefixed to the\n\
>>  static char *usage_5 = "\
>>  PYTHONHOME   : alternate <prefix> directory (or
>> <prefix>%c<exec_prefix>).\n\
>>                 The default module search path uses %s.\n\
>> -PYTHONCASEOK : ignore case in 'import' statements (Windows).\n\
>> +PYTHONCASEOK : ignore case in 'import' statements (UEFI default).\n\
>>  PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.\n\
>>  ";
>> -static char *usage_6 = "\
>> -PYTHONHASHSEED: if this variable is set to 'random', the effect is the 
>> same\n\
>> -   as specifying the -R option: a random value is used to seed the hashes 
>> of\n\
>> -   str, bytes and datetime objects.  It can also be set to an integer\n\
>> -   in the range [0,4294967295] to get hash values with a predictable 
>> seed.\n\
>> -";
>>
>>
>>  static int
>> @@ -127,7 +123,6 @@ usage(int exitcode, char* program)
>>          fputs(usage_3, f);
>>          fprintf(f, usage_4, DELIM);
>>          fprintf(f, usage_5, DELIM, PYTHONHOMEHELP);
>> -        fputs(usage_6, f);
>>      }
>>  #if defined(__VMS)
>>      if (exitcode == 0) {
>> @@ -251,6 +246,7 @@ Py_Main(int argc, char **argv)
>>      int help = 0;
>>      int version = 0;
>>      int saw_unbuffered_flag = 0;
>> +    int saw_pound_flag = 0;
>>      PyCompilerFlags cf;
>>
>>      cf.cf_flags = 0;
>> @@ -266,26 +262,27 @@ Py_Main(int argc, char **argv)
>>         (including -W and -X options). */
>>      _PyOS_opterr = 0;  /* prevent printing the error in 1st pass */
>>      while ((c = _PyOS_GetOpt(argc, argv, PROGRAM_OPTS)) != EOF) {
>> -        if (c == 'm' || c == 'c') {
>> -            /* -c / -m is the last option: following arguments are
>> -               not interpreter options. */
>> -            break;
>> -        }
>> -        switch (c) {
>> +      if (c == 'm' || c == 'c') {
>> +        /* -c / -m is the last option: following arguments are
>> +           not interpreter options. */
>> +        break;
>> +      }
>> +      switch (c) {
>> +        case '#':
>> +          if (saw_pound_flag == 0) {
>> +            if(freopen("stdout:", "w", stderr) == NULL) {
>> +              puts("ERROR: Unable to reopen stderr as an alias to stdout!");
>> +            }
>> +            saw_pound_flag = 0xFF;
>> +          }
>> +          break;
>>          case 'E':
>> -            Py_IgnoreEnvironmentFlag++;
>> -            break;
>> -        case 'R':
>> -            Py_HashRandomizationFlag++;
>> -            break;
>> -        }
>> +          Py_IgnoreEnvironmentFlag++;
>> +          break;
>> +        default:
>> +          break;
>> +      }
>>      }
>> -    /* The variable is only tested for existence here; _PyRandom_Init will
>> -       check its value further. */
>> -    if (!Py_HashRandomizationFlag &&
>> -        (p = Py_GETENV("PYTHONHASHSEED")) && *p != '\0')
>> -        Py_HashRandomizationFlag = 1;
>> -
>>      _PyRandom_Init();
>>
>>      PySys_ResetWarnOptions();
>> @@ -426,7 +423,7 @@ Py_Main(int argc, char **argv)
>>              PySys_AddWarnOption(_PyOS_optarg);
>>              break;
>>
>> -        case 'R':
>> +        case '#':
>>              /* Already handled above */
>>              break;
>>
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/selectmodule.c b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Modules/selectmodule.c
>> index 2707b05..eb0cb0d 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/selectmodule.c
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/selectmodule.c
>> @@ -1,9 +1,20 @@
>> -/* select - Module containing unix select(2) call.
>> -   Under Unix, the file descriptors are small integers.
>> -   Under Win32, select only exists for sockets, and sockets may
>> -   have any value except INVALID_SOCKET.
>> -   Under BeOS, we suffer the same dichotomy as Win32; sockets can be
>> anything
>> -   >= 0.
>> +/*  @file
>> +  select - Module containing unix select(2) call.
>> +  Under Unix, the file descriptors are small integers.
>> +  Under Win32, select only exists for sockets, and sockets may
>> +  have any value except INVALID_SOCKET.
>> +  Under BeOS, we suffer the same dichotomy as Win32; sockets can be
>> anything
>> +  >= 0.
>> +
>> +  Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>> +  Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
>> +  This program and the accompanying materials are licensed and made
>> available under
>> +  the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +  The full text of the license may be found at
>> +  http://opensource.org/licenses/bsd-license.
>> +
>> +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>>  */
>>
>>  #include "Python.h"
>> @@ -107,7 +118,7 @@ seq2set(PyObject *seq, fd_set *set, pylist
>> fd2obj[FD_SETSIZE + 1])
>>          v = PyObject_AsFileDescriptor( o );
>>          if (v == -1) goto finally;
>>
>> -#if defined(_MSC_VER)
>> +#if defined(_MSC_VER) && !defined(UEFI_C_SOURCE)
>>          max = 0;                             /* not used for Win32 */
>>  #else  /* !_MSC_VER */
>>          if (!_PyIsSelectable_fd(v)) {
>> @@ -1236,17 +1247,17 @@ static PyTypeObject kqueue_queue_Type;
>>   * kevent is not standard and its members vary across BSDs.
>>   */
>>  #if !defined(__OpenBSD__)
>> -#   define IDENT_TYPE  T_UINTPTRT
>> -#   define IDENT_CAST  Py_intptr_t
>> -#   define DATA_TYPE T_INTPTRT
>> +#   define IDENT_TYPE T_UINTPTRT
>> +#   define IDENT_CAST Py_intptr_t
>> +#   define DATA_TYPE  T_INTPTRT
>>  #   define DATA_FMT_UNIT INTPTRT_FMT_UNIT
>> -#   define IDENT_AsType  PyLong_AsUintptr_t
>> +#   define IDENT_AsType PyLong_AsUintptr_t
>>  #else
>> -#   define IDENT_TYPE  T_UINT
>> -#   define IDENT_CAST  int
>> -#   define DATA_TYPE T_INT
>> +#   define IDENT_TYPE T_UINT
>> +#   define IDENT_CAST int
>> +#   define DATA_TYPE  T_INT
>>  #   define DATA_FMT_UNIT "i"
>> -#   define IDENT_AsType  PyLong_AsUnsignedLong
>> +#   define IDENT_AsType PyLong_AsUnsignedLong
>>  #endif
>>
>>  /* Unfortunately, we can't store python objects in udata, because
>> @@ -1298,7 +1309,7 @@ kqueue_event_init(kqueue_event_Object *self,
>> PyObject *args, PyObject *kwds)
>>
>>      if (PyLong_Check(pfd)
>>  #if IDENT_TYPE == T_UINT
>> - && PyLong_AsUnsignedLong(pfd) <= UINT_MAX
>> +  && PyLong_AsUnsignedLong(pfd) <= UINT_MAX
>>  #endif
>>      ) {
>>          self->e.ident = IDENT_AsType(pfd);
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/zlib/gzguts.h b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Modules/zlib/gzguts.h
>> index d87659d..b0d7862 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/zlib/gzguts.h
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/zlib/gzguts.h
>> @@ -1,4 +1,5 @@
>>  /* gzguts.h -- zlib internal header definitions for gz* operations
>> + * Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>>   * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler
>>   * For conditions of distribution and use, see copyright notice in zlib.h
>>   */
>> @@ -31,7 +32,7 @@
>>  #  include <stddef.h>
>>  #endif
>>
>> -#if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32)
>> +#if (defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32)) &&
>> !defined(UEFI_C_SOURCE)
>>  #  include <io.h>
>>  #endif
>>
>> @@ -42,6 +43,11 @@
>>  #  define close _close
>>  #endif
>>
>> +// Needed to get the declarations for open, read, write, close
>> +#ifdef  UEFI_C_SOURCE
>> +# include <unistd.h>
>> +#endif
>> +
>>  #ifdef NO_DEFLATE       /* for compatibility with old definition */
>>  #  define NO_GZCOMPRESS
>>  #endif
>> @@ -99,7 +105,7 @@
>>     Microsoft more than a decade later!), _snprintf does not guarantee null
>>     termination of the result -- however this is only used in gzlib.c where
>>     the result is assured to fit in the space provided */
>> -#ifdef _MSC_VER
>> +#if defined(_MSC_VER) && !defined(UEFI_C_SOURCE)
>>  #  define snprintf _snprintf
>>  #endif
>>
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/zlib/zutil.h b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Modules/zlib/zutil.h
>> index 24ab06b..735e2b6 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/zlib/zutil.h
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Modules/zlib/zutil.h
>> @@ -1,7 +1,10 @@
>> -/* zutil.h -- internal interface and configuration of the compression 
>> library
>> +/** @file
>> +  zutil.h -- internal interface and configuration of the compression library
>> +
>> +   Copyright (C) 2015, Daryl McDaniel.<BR>
>>   * Copyright (C) 1995-2013 Jean-loup Gailly.
>>   * For conditions of distribution and use, see copyright notice in zlib.h
>> - */
>> +**/
>>
>>  /* WARNING: this file should *not* be used by applications. It is
>>     part of the implementation of the compression library and is
>> @@ -21,7 +24,7 @@
>>
>>  #include "zlib.h"
>>
>> -#if defined(STDC) && !defined(Z_SOLO)
>> +#if defined(UEFI_C_SOURCE) || (defined(STDC) && !defined(Z_SOLO))
>>  #  if !(defined(_WIN32_WCE) && defined(_MSC_VER))
>>  #    include <stddef.h>
>>  #  endif
>> @@ -149,7 +152,7 @@ extern z_const char * const z_errmsg[10]; /*
>> indexed by 2-zlib_error */
>>  #  define fdopen(fd,mode) NULL /* No fdopen() */
>>  #endif
>>
>> -#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
>> +#if !defined(UEFI_C_SOURCE) && (defined(_MSC_VER) && (_MSC_VER >
>> 600)) && !defined(__INTERIX)
>>  #  if defined(_WIN32_WCE)
>>  #    define fdopen(fd,mode) NULL /* No fdopen() */
>>  #    ifndef _PTRDIFF_T_DEFINED
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Objects/longobject.c b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Objects/longobject.c
>> index 405be2e..28a80b6 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Objects/longobject.c
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Objects/longobject.c
>> @@ -1,4 +1,15 @@
>> -/* Long (arbitrary precision) integer object implementation */
>> +/** @file
>> +  Long (arbitrary precision) integer object implementation.
>> +
>> +  Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>> +  This program and the accompanying materials are licensed and made
>> available under
>> +  the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +  The full text of the license may be found at
>> +  http://opensource.org/licenses/bsd-license.
>> +
>> +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>> +**/
>>
>>  /* XXX The functional organization of this file is terrible */
>>
>> @@ -24,6 +35,7 @@
>>   */
>>  #define FIVEARY_CUTOFF 8
>>
>> +#undef ABS
>>  #define ABS(x) ((x) < 0 ? -(x) : (x))
>>
>>  #undef MIN
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Objects/stringlib/localeutil.h b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Objects/stringlib/localeutil.h
>> index f548133..df8d8cc 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Objects/stringlib/localeutil.h
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Objects/stringlib/localeutil.h
>> @@ -1,10 +1,25 @@
>> -/* stringlib: locale related helpers implementation */
>> +/** @file
>> +    stringlib: locale related helpers implementation.
>> +
>> +    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
>> +    This program and the accompanying materials are licensed and made
>> available under
>> +    the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +    The full text of the license may be found at
>> +    http://opensource.org/licenses/bsd-license.
>> +
>> +    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>> +**/
>>
>>  #ifndef STRINGLIB_LOCALEUTIL_H
>>  #define STRINGLIB_LOCALEUTIL_H
>>
>>  #include <locale.h>
>>
>> +// Prevent conflicts with EFI
>> +#undef  MAX
>> +#undef  MIN
>> +
>>  #define MAX(x, y) ((x) < (y) ? (y) : (x))
>>  #define MIN(x, y) ((x) < (y) ? (x) : (y))
>>
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Python/getcopyright.c b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Python/getcopyright.c
>> index 913e1d2..90101bc 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Python/getcopyright.c
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Python/getcopyright.c
>> @@ -1,9 +1,27 @@
>> -/* Return the copyright string.  This is updated manually. */
>> +/** @file
>> +  Return the copyright string.  This is updated manually.
>> +
>> +  Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>> +  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
>> +  This program and the accompanying materials are licensed and made
>> available under
>> +  the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +  The full text of the license may be found at
>> +  http://opensource.org/licenses/bsd-license.
>> +
>> +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>> +**/
>>
>>  #include "Python.h"
>>
>> -static char cprt[] =
>> +static char cprt[] =
>>  "\
>> +Copyright (c) 2015 Daryl McDaniel.\n\
>> +All Rights Reserved.\n\
>> +\n\
>> +Copyright (c) 2010-2014 Intel Corporation.\n\
>> +All Rights Reserved.\n\
>> +\n\
>>  Copyright (c) 2001-2015 Python Software Foundation.\n\
>>  All Rights Reserved.\n\
>>  \n\
>> @@ -19,5 +37,5 @@ All Rights Reserved.";
>>  const char *
>>  Py_GetCopyright(void)
>>  {
>> - return cprt;
>> +  return cprt;
>>  }
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Python/marshal.c b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Python/marshal.c
>> index 6b285aa..700516e 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Python/marshal.c
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Python/marshal.c
>> @@ -1,8 +1,18 @@
>> -
>> -/* Write Python objects to files and read them back.
>> -   This is intended for writing and reading compiled Python code only;
>> -   a true persistent storage facility would be much harder, since
>> -   it would have to take circular links and sharing into account. */
>> +/** @file
>> +  Write Python objects to files and read them back.
>> +  This is intended for writing and reading compiled Python code only;
>> +  a true persistent storage facility would be much harder, since
>> +  it would have to take circular links and sharing into account.
>> +
>> +  Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>> +  This program and the accompanying materials are licensed and made
>> available under
>> +  the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +  The full text of the license may be found at
>> +  http://opensource.org/licenses/bsd-license.
>> +
>> +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>> +**/
>>
>>  #define PY_SSIZE_T_CLEAN
>>
>> @@ -11,6 +21,7 @@
>>  #include "code.h"
>>  #include "marshal.h"
>>
>> +#undef ABS
>>  #define ABS(x) ((x) < 0 ? -(x) : (x))
>>
>>  /* High water mark to determine when the marshalled object is dangerously
>> deep
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Python/random.c b/AppPkg/Applications/Python/Python-
>> 2.7.10/PyMod-2.7.10/Python/random.c
>> index d94f89a..9a3cfd6 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Python/random.c
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/PyMod-
>> 2.7.10/Python/random.c
>> @@ -1,3 +1,15 @@
>> +/** @file
>> +
>> +  Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>> +  This program and the accompanying materials are licensed and made
>> available under
>> +  the terms and conditions of the BSD License that accompanies this
>> distribution.
>> +  The full text of the license may be found at
>> +  http://opensource.org/licenses/bsd-license.
>> +
>> +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
>> BASIS,
>> +  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>> EXPRESS OR IMPLIED.
>> +**/
>> +
>>  #include "Python.h"
>>  #ifdef MS_WINDOWS
>>  #include <windows.h>
>> @@ -153,8 +165,12 @@ vms_urandom(unsigned char *buffer, Py_ssize_t
>> size, int raise)
>>
>>  static struct {
>>      int fd;
>> +#ifdef HAVE_STRUCT_STAT_ST_DEV
>>      dev_t st_dev;
>> +#endif
>> +#ifdef HAVE_STRUCT_STAT_ST_INO
>>      ino_t st_ino;
>> +#endif
>>  } urandom_cache = { -1 };
>>
>>  /* Read size bytes from /dev/urandom into buffer.
>> @@ -167,7 +183,7 @@ dev_urandom_noraise(unsigned char *buffer,
>> Py_ssize_t size)
>>
>>      assert (0 < size);
>>
>> -    fd = open("/dev/urandom", O_RDONLY);
>> +    fd = open("/dev/urandom", O_RDONLY, 0);
>>      if (fd < 0)
>>          Py_FatalError("Failed to open /dev/urandom");
>>
>> @@ -204,8 +220,14 @@ dev_urandom_python(char *buffer, Py_ssize_t
>> size)
>>      if (urandom_cache.fd >= 0) {
>>          /* Does the fd point to the same thing as before? (issue #21207) */
>>          if (fstat(urandom_cache.fd, &st)
>> +#ifdef HAVE_STRUCT_STAT_ST_DEV
>>              || st.st_dev != urandom_cache.st_dev
>> -            || st.st_ino != urandom_cache.st_ino) {
>> +#endif
>> +#ifdef  HAVE_STRUCT_STAT_ST_INO
>> +            || st.st_ino != urandom_cache.st_ino
>> +#endif
>> +           )
>> +        {
>>              /* Something changed: forget the cached fd (but don't close it,
>>                 since it probably points to something important for some
>>                 third-party code). */
>> @@ -216,7 +238,7 @@ dev_urandom_python(char *buffer, Py_ssize_t size)
>>          fd = urandom_cache.fd;
>>      else {
>>          Py_BEGIN_ALLOW_THREADS
>> -        fd = open("/dev/urandom", O_RDONLY);
>> +        fd = open("/dev/urandom", O_RDONLY, 0);
>>          Py_END_ALLOW_THREADS
>>          if (fd < 0)
>>          {
>> @@ -250,8 +272,12 @@ dev_urandom_python(char *buffer, Py_ssize_t
>> size)
>>              }
>>              else {
>>                  urandom_cache.fd = fd;
>> +#ifdef HAVE_STRUCT_STAT_ST_DEV
>>                  urandom_cache.st_dev = st.st_dev;
>> +#endif
>> +#ifdef HAVE_STRUCT_STAT_ST_INO
>>                  urandom_cache.st_ino = st.st_ino;
>> +#endif
>>              }
>>          }
>>      }
>> diff --git a/AppPkg/Applications/Python/Python-2.7.10/X64/pyconfig.h
>> b/AppPkg/Applications/Python/Python-2.7.10/X64/pyconfig.h
>> index 17df0cc..22103fc 100644
>> --- a/AppPkg/Applications/Python/Python-2.7.10/X64/pyconfig.h
>> +++ b/AppPkg/Applications/Python/Python-2.7.10/X64/pyconfig.h
>> @@ -1,6 +1,7 @@
>>  /** @file
>>      Manually generated Python Configuration file for EDK II.
>>
>> +    Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
>>      Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
>>      This program and the accompanying materials are licensed and made
>> available under
>>      the terms and conditions of the BSD License that accompanies this
>> distribution.
>> @@ -67,6 +68,9 @@
>>  /* Define to 1 if you have the 'alarm' function. */
>>  #undef HAVE_ALARM
>>
>> +/* Define to 1 if you have the <alloca.h> header file. */
>> +#undef HAVE_ALLOCA_H
>> +
>>  /* Define this if your time.h defines altzone. */
>>  #undef HAVE_ALTZONE
>>
>> @@ -109,6 +113,9 @@
>>  /* define to 1 if your sem_getvalue is broken. */
>>  #define HAVE_BROKEN_SEM_GETVALUE      1
>>
>> +/* Define if 'unsetenv' does not return an int. */
>> +#undef HAVE_BROKEN_UNSETENV
>> +
>>  /* Define this if you have the type _Bool. */
>>  #define HAVE_C99_BOOL                 1
>>
>> @@ -170,10 +177,10 @@
>>  /* Define to 1 if you have the device macros. */
>>  #undef HAVE_DEVICE_MACROS
>>
>> -/* Define if we have /dev/ptc. */
>> +/* Define to 1 if you have the /dev/ptc device file. */
>>  #undef HAVE_DEV_PTC
>>
>> -/* Define if we have /dev/ptmx. */
>> +/* Define to 1 if you have the /dev/ptmx device file. */
>>  #undef HAVE_DEV_PTMX
>>
>>  /* Define to 1 if you have the <direct.h> header file. */
>> @@ -274,11 +281,11 @@
>>  #undef HAVE_GAMMA
>>
>>  /* Define if we can use gcc inline assembler to get and set x87 control word
>> -*/
>> +   */
>>  #if defined(__GNUC__)
>>    #define HAVE_GCC_ASM_FOR_X87  1
>>  #else
>> -  #undef HAVE_GCC_ASM_FOR_X87
>> +#undef HAVE_GCC_ASM_FOR_X87
>>  #endif
>>
>>  /* Define if you have the getaddrinfo function. */
>> @@ -290,6 +297,9 @@
>>  /* Define this if you have flockfile(), getc_unlocked(), and funlockfile() 
>> */
>>  #undef HAVE_GETC_UNLOCKED
>>
>> +/* Define to 1 if you have the 'getentropy' function. */
>> +#undef HAVE_GETENTROPY
>> +
>>  /* Define to 1 if you have the 'getgroups' function. */
>>  #undef HAVE_GETGROUPS
>>
>> @@ -383,6 +393,12 @@
>>  /* Define to 1 if you have the 'initgroups' function. */
>>  #undef HAVE_INITGROUPS
>>
>> +/* Define if your compiler provides int32_t. */
>> +#undef HAVE_INT32_T
>> +
>> +/* Define if your compiler provides int64_t. */
>> +#undef HAVE_INT64_T
>> +
>>  /* Define to 1 if you have the <inttypes.h> header file. */
>>  #define HAVE_INTTYPES_H   1
>>
>> @@ -479,6 +495,9 @@
>>  /* Define to 1 if you have the 'mktime' function. */
>>  #define HAVE_MKTIME     1
>>
>> +/* Define to 1 if you have the 'mmap' function. */
>> +#undef HAVE_MMAP
>> +
>>  /* Define to 1 if you have the 'mremap' function. */
>>  #undef HAVE_MREMAP
>>
>> @@ -524,6 +543,9 @@
>>  /* Define if you have GNU PTH threads. */
>>  #undef HAVE_PTH
>>
>> +/* Define to 1 if you have the 'pthread_atfork' function. */
>> +#undef HAVE_PTHREAD_ATFORK
>> +
>>  /* Defined for Solaris 2.6 bug in pthread header. */
>>  #undef HAVE_PTHREAD_DESTRUCTOR
>>
>> @@ -542,6 +564,9 @@
>>  /* Define to 1 if you have the 'putenv' function. */
>>  #undef HAVE_PUTENV
>>
>> +/* Define if the libcrypto has RAND_egd */
>> +#undef HAVE_RAND_EGD
>> +
>>  /* Define to 1 if you have the 'readlink' function. */
>>  #undef HAVE_READLINK
>>
>> @@ -717,6 +742,12 @@
>>  /* Define to 1 if 'st_rdev' is a member of 'struct stat'. */
>>  #undef HAVE_STRUCT_STAT_ST_RDEV
>>
>> +/* Define to 1 if 'st_dev' is a member of 'struct stat'. */
>> +#undef HAVE_STRUCT_STAT_ST_DEV
>> +
>> +/* Define to 1 if 'st_ino' is a member of 'struct stat'. */
>> +#undef HAVE_STRUCT_STAT_ST_INO
>> +
>>  /* Define to 1 if 'tm_zone' is a member of 'struct tm'. */
>>  #undef HAVE_STRUCT_TM_TM_ZONE
>>
>> @@ -863,6 +894,12 @@
>>  /* Define this if you have tcl and TCL_UTF_MAX==6 */
>>  #undef HAVE_UCS4_TCL
>>
>> +/* Define if your compiler provides uint32_t. */
>> +#undef HAVE_UINT32_T
>> +
>> +/* Define if your compiler provides uint64_t. */
>> +#undef HAVE_UINT64_T
>> +
>>  /* Define to 1 if the system has the type 'uintptr_t'. */
>>  #define HAVE_UINTPTR_T    1
>>
>> @@ -932,22 +969,22 @@
>>  #undef MVWDELCH_IS_EXPRESSION
>>
>>  /* Define to the address where bug reports for this package should be sent.
>> */
>> -#define PACKAGE_BUGREPORT   "[email protected]"
>> +#define PACKAGE_BUGREPORT   "[email protected]"
>>
>>  /* Define to the full name of this package. */
>> -#define PACKAGE_NAME    "EDK II Python Package"
>> +#define PACKAGE_NAME    "EDK II Python 2.7.10 Package"
>>
>>  /* Define to the full name and version of this package. */
>> -#define PACKAGE_STRING  "EDK II Python Package V0.8"
>> +#define PACKAGE_STRING  "EDK II Python 2.7.10 Package V0.1"
>>
>>  /* Define to the one symbol short name of this package. */
>>  #define PACKAGE_TARNAME   "EADK_Python"
>>
>>  /* Define to the home page for this package. */
>> -#define PACKAGE_URL   "http://edk2.tianocore.org/toolkit/python";
>> +#define PACKAGE_URL   "http://edk2.tianocore.org/";
>>
>>  /* Define to the version of this package. */
>> -#define PACKAGE_VERSION  "V0.8"
>> +#define PACKAGE_VERSION  "V0.1"
>>
>>  /* Define if POSIX semaphores aren't enabled on your system */
>>  #define POSIX_SEMAPHORES_NOT_ENABLED    1
>> @@ -1160,13 +1197,14 @@
>>  /* This must be defined on some systems to enable large file support. */
>>  #undef _LARGEFILE_SOURCE
>>
>> +/* This must be defined on AIX systems to enable large file support. */
>> +#undef _LARGE_FILES
>> +
>>  /* Define to 1 if on MINIX. */
>>  #undef _MINIX
>>
>>  /* Define on NetBSD to activate all library features */
>> -#ifndef _NETBSD_SOURCE
>> -  #define _NETBSD_SOURCE  1
>> -#endif
>> +#define _NETBSD_SOURCE  1
>>
>>  /* Define _OSF_SOURCE to get the makedev macro. */
>>  #undef _OSF_SOURCE
>> @@ -1264,3 +1302,4 @@
>>  //#undef volatile
>>
>>  #endif /*Py_PYCONFIG_H*/
>> +
>> --
>> 1.9.5.msysgit.1
>>
>> _______________________________________________
>> edk2-devel mailing list
>> [email protected]
>> https://lists.01.org/mailman/listinfo/edk2-devel
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to