Reviewed-by: Jaben Carsey <jaben.car...@intel.com>

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
> Daryl McDaniel
> Sent: Saturday, November 07, 2015 11:46 AM
> To: edk2-devel@lists.01.org; Carsey, Jaben <jaben.car...@intel.com>;
> Bjorge, Erik C <erik.c.bjo...@intel.com>
> 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.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Daryl McDaniel <edk2-li...@mc2research.org>
> ---
>  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   "edk2-de...@lists.sourceforge.net"
> +#define PACKAGE_BUGREPORT   "edk2-devel@lists.01.org"
> 
>  /* 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   "edk2-de...@lists.sourceforge.net"
> +#define PACKAGE_BUGREPORT   "edk2-devel@lists.01.org"
> 
>  /* 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
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to