| From 2eba3794fc214f8f471ae2563ddb0f5a5df610dc Mon Sep 17 00:00:00 2001 |
| From: Erik Faye-Lund <kusmabite@gmail.com> |
| Date: Tue, 9 Oct 2012 22:48:36 +0200 |
| Subject: [PATCH] dirty patch |
| |
| --- |
| Makefile.pre.in | 11 +- |
| Modules/Setup | 506 ++++++++++++++++++++++++++++++++++++++++++++++++++ |
| Modules/posixmodule.c | 35 ++-- |
| PC/_winreg.c | 16 ++ |
| PC/import_nt.c | 2 +- |
| Python/dynload_win.c | 3 +- |
| Python/random.c | 7 + |
| configure | 12 +- |
| 8 files changed, 563 insertions(+), 29 deletions(-) |
| create mode 100644 Modules/Setup |
| |
| diff --git a/Makefile.pre.in b/Makefile.pre.in |
| index e2237a9..966a915 100644 |
| --- a/Makefile.pre.in |
| +++ b/Makefile.pre.in |
| @@ -193,8 +193,8 @@ PROFILE_TASK= $(srcdir)/Tools/pybench/pybench.py -n 2 --with-gc --with-syscheck |
| ########################################################################## |
| # Modules |
| MODULE_OBJS= \ |
| - Modules/config.o \ |
| - Modules/getpath.o \ |
| + PC/config.o \ |
| + PC/getpathp.o \ |
| Modules/main.o \ |
| Modules/gcmodule.o |
| |
| @@ -301,7 +301,8 @@ PYTHON_OBJS= \ |
| Python/dtoa.o \ |
| Python/formatter_unicode.o \ |
| Python/formatter_string.o \ |
| - Python/$(DYNLOADFILE) \ |
| + Python/dynload_win.o \ |
| + PC/dl_nt.o \ |
| $(LIBOBJS) \ |
| $(MACHDEP_OBJS) \ |
| $(THREADOBJ) |
| @@ -396,9 +397,9 @@ coverage: |
| |
| |
| # Build the interpreter |
| -$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) |
| +$(BUILDPYTHON): Modules/python.o PC/import_nt.o $(LIBRARY) $(LDLIBRARY) |
| $(LINKCC) $(LDFLAGS) $(LINKFORSHARED) -o $@ \ |
| - Modules/python.o \ |
| + Modules/python.o PC/import_nt.o \ |
| $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) |
| |
| platform: $(BUILDPYTHON) |
| diff --git a/Modules/Setup b/Modules/Setup |
| new file mode 100644 |
| index 0000000..2daecba |
| --- /dev/null |
| +++ b/Modules/Setup |
| @@ -0,0 +1,506 @@ |
| +# -*- makefile -*- |
| +# The file Setup is used by the makesetup script to construct the files |
| +# Makefile and config.c, from Makefile.pre and config.c.in, |
| +# respectively. The file Setup itself is initially copied from |
| +# Setup.dist; once it exists it will not be overwritten, so you can edit |
| +# Setup to your heart's content. Note that Makefile.pre is created |
| +# from Makefile.pre.in by the toplevel configure script. |
| + |
| +# (VPATH notes: Setup and Makefile.pre are in the build directory, as |
| +# are Makefile and config.c; the *.in and *.dist files are in the source |
| +# directory.) |
| + |
| +# Each line in this file describes one or more optional modules. |
| +# Modules enabled here will not be compiled by the setup.py script, |
| +# so the file can be used to override setup.py's behavior. |
| + |
| +# Lines have the following structure: |
| +# |
| +# <module> ... [<sourcefile> ...] [<cpparg> ...] [<library> ...] |
| +# |
| +# <sourcefile> is anything ending in .c (.C, .cc, .c++ are C++ files) |
| +# <cpparg> is anything starting with -I, -D, -U or -C |
| +# <library> is anything ending in .a or beginning with -l or -L |
| +# <module> is anything else but should be a valid Python |
| +# identifier (letters, digits, underscores, beginning with non-digit) |
| +# |
| +# (As the makesetup script changes, it may recognize some other |
| +# arguments as well, e.g. *.so and *.sl as libraries. See the big |
| +# case statement in the makesetup script.) |
| +# |
| +# Lines can also have the form |
| +# |
| +# <name> = <value> |
| +# |
| +# which defines a Make variable definition inserted into Makefile.in |
| +# |
| +# Finally, if a line contains just the word "*shared*" (without the |
| +# quotes but with the stars), then the following modules will not be |
| +# built statically. The build process works like this: |
| +# |
| +# 1. Build all modules that are declared as static in Modules/Setup, |
| +# combine them into libpythonxy.a, combine that into python. |
| +# 2. Build all modules that are listed as shared in Modules/Setup. |
| +# 3. Invoke setup.py. That builds all modules that |
| +# a) are not builtin, and |
| +# b) are not listed in Modules/Setup, and |
| +# c) can be build on the target |
| +# |
| +# Therefore, modules declared to be shared will not be |
| +# included in the config.c file, nor in the list of objects to be |
| +# added to the library archive, and their linker options won't be |
| +# added to the linker options. Rules to create their .o files and |
| +# their shared libraries will still be added to the Makefile, and |
| +# their names will be collected in the Make variable SHAREDMODS. This |
| +# is used to build modules as shared libraries. (They can be |
| +# installed using "make sharedinstall", which is implied by the |
| +# toplevel "make install" target.) (For compatibility, |
| +# *noconfig* has the same effect as *shared*.) |
| +# |
| +# In addition, *static* explicitly declares the following modules to |
| +# be static. Lines containing "*static*" and "*shared*" may thus |
| +# alternate throughout this file. |
| + |
| +# NOTE: As a standard policy, as many modules as can be supported by a |
| +# platform should be present. The distribution comes with all modules |
| +# enabled that are supported by most platforms and don't require you |
| +# to ftp sources from elsewhere. |
| + |
| + |
| +# Some special rules to define PYTHONPATH. |
| +# Edit the definitions below to indicate which options you are using. |
| +# Don't add any whitespace or comments! |
| + |
| +# Directories where library files get installed. |
| +# DESTLIB is for Python modules; MACHDESTLIB for shared libraries. |
| +DESTLIB=$(LIBDEST) |
| +MACHDESTLIB=$(BINLIBDEST) |
| + |
| +# NOTE: all the paths are now relative to the prefix that is computed |
| +# at run time! |
| + |
| +# Standard path -- don't edit. |
| +# No leading colon since this is the first entry. |
| +# Empty since this is now just the runtime prefix. |
| +DESTPATH= |
| + |
| +# Site specific path components -- should begin with : if non-empty |
| +SITEPATH= |
| + |
| +# Standard path components for test modules |
| +TESTPATH= |
| + |
| +# Path components for machine- or system-dependent modules and shared libraries |
| +MACHDEPPATH=:plat-$(MACHDEP) |
| +EXTRAMACHDEPPATH= |
| + |
| +# Path component for the Tkinter-related modules |
| +# The TKPATH variable is always enabled, to save you the effort. |
| +TKPATH=:lib-tk |
| + |
| +# Path component for old modules. |
| +OLDPATH=:lib-old |
| + |
| +COREPYTHONPATH=$(DESTPATH)$(SITEPATH)$(TESTPATH)$(MACHDEPPATH)$(EXTRAMACHDEPPATH)$(TKPATH)$(OLDPATH) |
| +PYTHONPATH=$(COREPYTHONPATH) |
| + |
| + |
| +# The modules listed here can't be built as shared libraries for |
| +# various reasons; therefore they are listed here instead of in the |
| +# normal order. |
| + |
| +# This only contains the minimal set of modules required to run the |
| +# setup.py script in the root of the Python source tree. |
| + |
| +posix posixmodule.c # posix (UNIX) system calls |
| +errno errnomodule.c # posix (UNIX) errno values |
| +# pwd pwdmodule.c # this is needed to find out the user's home dir |
| + # if $HOME is not set |
| +_sre _sre.c # Fredrik Lundh's new regular expressions |
| +_codecs _codecsmodule.c # access to the builtin codecs and codec registry |
| +_weakref _weakref.c # weak references |
| + |
| +# The zipimport module is always imported at startup. Having it as a |
| +# builtin module avoids some bootstrapping problems and reduces overhead. |
| +zipimport zipimport.c |
| + |
| +# The rest of the modules listed in this file are all commented out by |
| +# default. Usually they can be detected and built as dynamically |
| +# loaded modules by the new setup.py script added in Python 2.1. If |
| +# you're on a platform that doesn't support dynamic loading, want to |
| +# compile modules statically into the Python binary, or need to |
| +# specify some odd set of compiler switches, you can uncomment the |
| +# appropriate lines below. |
| + |
| +# ====================================================================== |
| + |
| +# The Python symtable module depends on .h files that setup.py doesn't track |
| +_symtable symtablemodule.c |
| + |
| +# The SGI specific GL module: |
| + |
| +GLHACK=-Dclear=__GLclear |
| +#gl glmodule.c cgensupport.c -I$(srcdir) $(GLHACK) -lgl -lX11 |
| + |
| +# Pure module. Cannot be linked dynamically. |
| +# -DWITH_QUANTIFY, -DWITH_PURIFY, or -DWITH_ALL_PURE |
| +#WHICH_PURE_PRODUCTS=-DWITH_ALL_PURE |
| +#PURE_INCLS=-I/usr/local/include |
| +#PURE_STUBLIBS=-L/usr/local/lib -lpurify_stubs -lquantify_stubs |
| +#pure puremodule.c $(WHICH_PURE_PRODUCTS) $(PURE_INCLS) $(PURE_STUBLIBS) |
| + |
| +# Uncommenting the following line tells makesetup that all following |
| +# modules are to be built as shared libraries (see above for more |
| +# detail; also note that *static* reverses this effect): |
| + |
| +#*shared* |
| + |
| +# GNU readline. Unlike previous Python incarnations, GNU readline is |
| +# now incorporated in an optional module, configured in the Setup file |
| +# instead of by a configure script switch. You may have to insert a |
| +# -L option pointing to the directory where libreadline.* lives, |
| +# and you may have to change -ltermcap to -ltermlib or perhaps remove |
| +# it, depending on your system -- see the GNU readline instructions. |
| +# It's okay for this to be a shared library, too. |
| + |
| +#readline readline.c -lreadline -ltermcap |
| + |
| + |
| +# Modules that should always be present (non UNIX dependent): |
| + |
| +array arraymodule.c # array objects |
| +cmath cmathmodule.c _math.c # -lm # complex math library functions |
| +math mathmodule.c _math.c # -lm # math library functions, e.g. sin() |
| +_struct _struct.c # binary structure packing/unpacking |
| +time timemodule.c # -lm # time operations and variables |
| +operator operator.c # operator.add() and similar goodies |
| +#_testcapi _testcapimodule.c # Python C API test module |
| +_random _randommodule.c # Random number generator |
| +_collections _collectionsmodule.c # Container types |
| +itertools itertoolsmodule.c # Functions creating iterators for efficient looping |
| +strop stropmodule.c # String manipulations |
| +_functools _functoolsmodule.c # Tools for working with functions and callable objects |
| +#_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c # elementtree accelerator |
| +#_pickle _pickle.c # pickle accelerator |
| +datetime datetimemodule.c # date/time type |
| +_bisect _bisectmodule.c # Bisection algorithms |
| + |
| +#unicodedata unicodedata.c # static Unicode character database |
| + |
| +# access to ISO C locale support |
| +_locale _localemodule.c # -lintl |
| + |
| + |
| +# Modules with some UNIX dependencies -- on by default: |
| +# (If you have a really backward UNIX, select and socket may not be |
| +# supported...) |
| + |
| +#fcntl fcntlmodule.c # fcntl(2) and ioctl(2) |
| +#spwd spwdmodule.c # spwd(3) |
| +#grp grpmodule.c # grp(3) |
| +#select selectmodule.c # select(2); not on ancient System V |
| + |
| +# Memory-mapped files (also works on Win32). |
| +mmap mmapmodule.c |
| + |
| +# CSV file helper |
| +_csv _csv.c |
| + |
| +# Socket module helper for socket(2) |
| +#_socket socketmodule.c |
| + |
| +# Socket module helper for SSL support; you must comment out the other |
| +# socket line above, and possibly edit the SSL variable: |
| +#SSL=/usr/local/ssl |
| +#_ssl _ssl.c \ |
| +# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ |
| +# -L$(SSL)/lib -lssl -lcrypto |
| + |
| +# The crypt module is now disabled by default because it breaks builds |
| +# on many systems (where -lcrypt is needed), e.g. Linux (I believe). |
| +# |
| +# First, look at Setup.config; configure may have set this for you. |
| + |
| +#crypt cryptmodule.c # -lcrypt # crypt(3); needs -lcrypt on some systems |
| + |
| + |
| +# Some more UNIX dependent modules -- off by default, since these |
| +# are not supported by all UNIX systems: |
| + |
| +#nis nismodule.c -lnsl # Sun yellow pages -- not everywhere |
| +#termios termios.c # Steen Lumholt's termios module |
| +#resource resource.c # Jeremy Hylton's rlimit interface |
| + |
| + |
| +# Multimedia modules -- off by default. |
| +# These don't work for 64-bit platforms!!! |
| +# #993173 says audioop works on 64-bit platforms, though. |
| +# These represent audio samples or images as strings: |
| + |
| +audioop audioop.c # Operations on audio samples |
| +imageop imageop.c # Operations on images |
| + |
| + |
| +# Note that the _md5 and _sha modules are normally only built if the |
| +# system does not have the OpenSSL libs containing an optimized version. |
| + |
| +# The _md5 module implements the RSA Data Security, Inc. MD5 |
| +# Message-Digest Algorithm, described in RFC 1321. The necessary files |
| +# md5.c and md5.h are included here. |
| + |
| +_md5 md5module.c md5.c |
| + |
| + |
| +# The _sha module implements the SHA checksum algorithms. |
| +# (NIST's Secure Hash Algorithms.) |
| +_sha shamodule.c |
| +_sha256 sha256module.c |
| +_sha512 sha512module.c |
| + |
| + |
| +# SGI IRIX specific modules -- off by default. |
| + |
| +# These module work on any SGI machine: |
| + |
| +# *** gl must be enabled higher up in this file *** |
| +#fm fmmodule.c $(GLHACK) -lfm -lgl # Font Manager |
| +#sgi sgimodule.c # sgi.nap() and a few more |
| + |
| +# This module requires the header file |
| +# /usr/people/4Dgifts/iristools/include/izoom.h: |
| +#imgfile imgfile.c -limage -lgutil -lgl -lm # Image Processing Utilities |
| + |
| + |
| +# These modules require the Multimedia Development Option (I think): |
| + |
| +#al almodule.c -laudio # Audio Library |
| +#cd cdmodule.c -lcdaudio -lds -lmediad # CD Audio Library |
| +#cl clmodule.c -lcl -lawareaudio # Compression Library |
| +#sv svmodule.c yuvconvert.c -lsvideo -lXext -lX11 # Starter Video |
| + |
| + |
| +# The FORMS library, by Mark Overmars, implements user interface |
| +# components such as dialogs and buttons using SGI's GL and FM |
| +# libraries. You must ftp the FORMS library separately from |
| +# ftp://ftp.cs.ruu.nl/pub/SGI/FORMS. It was tested with FORMS 2.2a. |
| +# NOTE: if you want to be able to use FORMS and curses simultaneously |
| +# (or both link them statically into the same binary), you must |
| +# compile all of FORMS with the cc option "-Dclear=__GLclear". |
| + |
| +# The FORMS variable must point to the FORMS subdirectory of the forms |
| +# toplevel directory: |
| + |
| +#FORMS=/ufs/guido/src/forms/FORMS |
| +#fl flmodule.c -I$(FORMS) $(GLHACK) $(FORMS)/libforms.a -lfm -lgl |
| + |
| + |
| +# SunOS specific modules -- off by default: |
| + |
| +#sunaudiodev sunaudiodev.c |
| + |
| + |
| +# A Linux specific module -- off by default; this may also work on |
| +# some *BSDs. |
| + |
| +#linuxaudiodev linuxaudiodev.c |
| + |
| + |
| +# George Neville-Neil's timing module: |
| + |
| +#timing timingmodule.c |
| + |
| + |
| +# The _tkinter module. |
| +# |
| +# The command for _tkinter is long and site specific. Please |
| +# uncomment and/or edit those parts as indicated. If you don't have a |
| +# specific extension (e.g. Tix or BLT), leave the corresponding line |
| +# commented out. (Leave the trailing backslashes in! If you |
| +# experience strange errors, you may want to join all uncommented |
| +# lines and remove the backslashes -- the backslash interpretation is |
| +# done by the shell's "read" command and it may not be implemented on |
| +# every system. |
| + |
| +# *** Always uncomment this (leave the leading underscore in!): |
| +# _tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \ |
| +# *** Uncomment and edit to reflect where your Tcl/Tk libraries are: |
| +# -L/usr/local/lib \ |
| +# *** Uncomment and edit to reflect where your Tcl/Tk headers are: |
| +# -I/usr/local/include \ |
| +# *** Uncomment and edit to reflect where your X11 header files are: |
| +# -I/usr/X11R6/include \ |
| +# *** Or uncomment this for Solaris: |
| +# -I/usr/openwin/include \ |
| +# *** Uncomment and edit for Tix extension only: |
| +# -DWITH_TIX -ltix8.1.8.2 \ |
| +# *** Uncomment and edit for BLT extension only: |
| +# -DWITH_BLT -I/usr/local/blt/blt8.0-unoff/include -lBLT8.0 \ |
| +# *** Uncomment and edit for PIL (TkImaging) extension only: |
| +# (See http://www.pythonware.com/products/pil/ for more info) |
| +# -DWITH_PIL -I../Extensions/Imaging/libImaging tkImaging.c \ |
| +# *** Uncomment and edit for TOGL extension only: |
| +# -DWITH_TOGL togl.c \ |
| +# *** Uncomment and edit to reflect your Tcl/Tk versions: |
| +# -ltk8.2 -ltcl8.2 \ |
| +# *** Uncomment and edit to reflect where your X11 libraries are: |
| +# -L/usr/X11R6/lib \ |
| +# *** Or uncomment this for Solaris: |
| +# -L/usr/openwin/lib \ |
| +# *** Uncomment these for TOGL extension only: |
| +# -lGL -lGLU -lXext -lXmu \ |
| +# *** Uncomment for AIX: |
| +# -lld \ |
| +# *** Always uncomment this; X11 libraries to link with: |
| +# -lX11 |
| + |
| +# Lance Ellinghaus's syslog module |
| +#syslog syslogmodule.c # syslog daemon interface |
| + |
| + |
| +# Curses support, requring the System V version of curses, often |
| +# provided by the ncurses library. e.g. on Linux, link with -lncurses |
| +# instead of -lcurses). |
| +# |
| +# First, look at Setup.config; configure may have set this for you. |
| + |
| +#_curses _cursesmodule.c -lcurses -ltermcap |
| +# Wrapper for the panel library that's part of ncurses and SYSV curses. |
| +#_curses_panel _curses_panel.c -lpanel -lncurses |
| + |
| + |
| +# Generic (SunOS / SVR4) dynamic loading module. |
| +# This is not needed for dynamic loading of Python modules -- |
| +# it is a highly experimental and dangerous device for calling |
| +# *arbitrary* C functions in *arbitrary* shared libraries: |
| + |
| +#dl dlmodule.c |
| + |
| + |
| +# Modules that provide persistent dictionary-like semantics. You will |
| +# probably want to arrange for at least one of them to be available on |
| +# your machine, though none are defined by default because of library |
| +# dependencies. The Python module anydbm.py provides an |
| +# implementation independent wrapper for these; dumbdbm.py provides |
| +# similar functionality (but slower of course) implemented in Python. |
| + |
| +# The standard Unix dbm module has been moved to Setup.config so that |
| +# it will be compiled as a shared library by default. Compiling it as |
| +# a built-in module causes conflicts with the pybsddb3 module since it |
| +# creates a static dependency on an out-of-date version of db.so. |
| +# |
| +# First, look at Setup.config; configure may have set this for you. |
| + |
| +#dbm dbmmodule.c # dbm(3) may require -lndbm or similar |
| + |
| +# Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm: |
| +# |
| +# First, look at Setup.config; configure may have set this for you. |
| + |
| +#gdbm gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm |
| + |
| + |
| +# Sleepycat Berkeley DB interface. |
| +# |
| +# This requires the Sleepycat DB code, see http://www.sleepycat.com/ |
| +# The earliest supported version of that library is 3.0, the latest |
| +# supported version is 4.0 (4.1 is specifically not supported, as that |
| +# changes the semantics of transactional databases). A list of available |
| +# releases can be found at |
| +# |
| +# http://www.sleepycat.com/update/index.html |
| +# |
| +# Edit the variables DB and DBLIBVERto point to the db top directory |
| +# and the subdirectory of PORT where you built it. |
| +#DB=/usr/local/BerkeleyDB.4.0 |
| +#DBLIBVER=4.0 |
| +#DBINC=$(DB)/include |
| +#DBLIB=$(DB)/lib |
| +#_bsddb _bsddb.c -I$(DBINC) -L$(DBLIB) -ldb-$(DBLIBVER) |
| + |
| +# Historical Berkeley DB 1.85 |
| +# |
| +# This module is deprecated; the 1.85 version of the Berkeley DB library has |
| +# bugs that can cause data corruption. If you can, use later versions of the |
| +# library instead, available from <http://www.sleepycat.com/>. |
| + |
| +#DB=/depot/sundry/src/berkeley-db/db.1.85 |
| +#DBPORT=$(DB)/PORT/irix.5.3 |
| +#bsddb185 bsddbmodule.c -I$(DBPORT)/include -I$(DBPORT) $(DBPORT)/libdb.a |
| + |
| + |
| + |
| +# Helper module for various ascii-encoders |
| +binascii binascii.c |
| + |
| +# Fred Drake's interface to the Python parser |
| +parser parsermodule.c |
| + |
| +# cStringIO and cPickle |
| +cStringIO cStringIO.c |
| +cPickle cPickle.c |
| + |
| + |
| +# Lee Busby's SIGFPE modules. |
| +# The library to link fpectl with is platform specific. |
| +# Choose *one* of the options below for fpectl: |
| + |
| +# For SGI IRIX (tested on 5.3): |
| +#fpectl fpectlmodule.c -lfpe |
| + |
| +# For Solaris with SunPro compiler (tested on Solaris 2.5 with SunPro C 4.2): |
| +# (Without the compiler you don't have -lsunmath.) |
| +#fpectl fpectlmodule.c -R/opt/SUNWspro/lib -lsunmath -lm |
| + |
| +# For other systems: see instructions in fpectlmodule.c. |
| +#fpectl fpectlmodule.c ... |
| + |
| +# Test module for fpectl. No extra libraries needed. |
| +#fpetest fpetestmodule.c |
| + |
| +# Andrew Kuchling's zlib module. |
| +# This require zlib 1.1.3 (or later). |
| +# See http://www.gzip.org/zlib/ |
| +zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz |
| + |
| +# Interface to the Expat XML parser |
| +# |
| +# Expat was written by James Clark and is now maintained by a group of |
| +# developers on SourceForge; see www.libexpat.org for more |
| +# information. The pyexpat module was written by Paul Prescod after a |
| +# prototype by Jack Jansen. Source of Expat 1.95.2 is included in |
| +# Modules/expat/. Usage of a system shared libexpat.so/expat.dll is |
| +# not advised. |
| +# |
| +# More information on Expat can be found at www.libexpat.org. |
| +# |
| +#pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI |
| + |
| + |
| +# Hye-Shik Chang's CJKCodecs |
| + |
| +# multibytecodec is required for all the other CJK codec modules |
| +_multibytecodec cjkcodecs/multibytecodec.c |
| + |
| +_codecs_cn cjkcodecs/_codecs_cn.c |
| +_codecs_hk cjkcodecs/_codecs_hk.c |
| +_codecs_iso2022 cjkcodecs/_codecs_iso2022.c |
| +_codecs_jp cjkcodecs/_codecs_jp.c |
| +_codecs_kr cjkcodecs/_codecs_kr.c |
| +_codecs_tw cjkcodecs/_codecs_tw.c |
| + |
| +# Example -- included for reference only: |
| +# xx xxmodule.c |
| + |
| +# Another example -- the 'xxsubtype' module shows C-level subtyping in action |
| +xxsubtype xxsubtype.c |
| + |
| +# |
| +future_builtins future_builtins.c |
| +_hotshot _hotshot.c |
| +_json _json.c |
| +_heapq _heapqmodule.c |
| +_lsprof _lsprof.c rotatingtree.c |
| +_io _io/_iomodule.c _io/stringio.c _io/bytesio.c _io/textio.c _io/fileio.c _io/bufferedio.c _io/iobase.c |
| +_winred ../PC/_winreg.c |
| +_subprocess ../PC/_subprocess.c |
| +msvcrt ../PC/msvcrtmodule.c |
| diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c |
| index 1bd5c1a..2147f4e 100644 |
| --- a/Modules/posixmodule.c |
| +++ b/Modules/posixmodule.c |
| @@ -118,7 +118,7 @@ corresponding Unix manual entries for more information on calls."); |
| #define HAVE_SYSTEM 1 |
| #define HAVE_WAIT 1 |
| #else |
| -#ifdef _MSC_VER /* Microsoft compiler */ |
| +#if defined(_MSC_VER) || defined(__MINGW32__) /* Win32 compiler */ |
| #define HAVE_GETCWD 1 |
| #define HAVE_SPAWNV 1 |
| #define HAVE_EXECV 1 |
| @@ -171,7 +171,7 @@ extern char *ctermid_r(char *); |
| #if defined(PYCC_VACPP) |
| extern int mkdir(char *); |
| #else |
| -#if ( defined(__WATCOMC__) || defined(_MSC_VER) ) && !defined(__QNX__) |
| +#if ( defined(__WATCOMC__) || defined(_MSC_VER) ) && !defined(__QNX__) || defined(__MINGW32__) |
| extern int mkdir(const char *); |
| #else |
| extern int mkdir(const char *, mode_t); |
| @@ -184,7 +184,7 @@ extern int rmdir(char *); |
| extern int chdir(const char *); |
| extern int rmdir(const char *); |
| #endif |
| -#ifdef __BORLANDC__ |
| +#if defined(__BORLANDC__) || defined(__MINGW32__) |
| extern int chmod(const char *, int); |
| #else |
| extern int chmod(const char *, mode_t); |
| @@ -195,7 +195,11 @@ extern int fchmod(int, mode_t); |
| /*#ifdef HAVE_LCHMOD |
| extern int lchmod(const char *, mode_t); |
| #endif*/ |
| +#ifdef __MINGW32__ |
| +extern int chown(const char *, int, int); |
| +#else |
| extern int chown(const char *, uid_t, gid_t); |
| +#endif |
| extern char *getcwd(char *, int); |
| extern char *strerror(int); |
| extern int link(const char *, const char *); |
| @@ -256,7 +260,7 @@ extern int lstat(const char *, struct stat *); |
| #endif |
| #endif |
| |
| -#ifdef _MSC_VER |
| +#if defined(_MSC_VER) || defined(__MINGW32__) |
| #ifdef HAVE_DIRECT_H |
| #include <direct.h> |
| #endif |
| @@ -447,7 +451,7 @@ _PyVerify_fd_dup2(int fd1, int fd2) |
| */ |
| #include <crt_externs.h> |
| static char **environ; |
| -#elif !defined(_MSC_VER) && ( !defined(__WATCOMC__) || defined(__QNX__) ) |
| +#elif !defined(_MSC_VER) && !defined(__MINGW32__) && ( !defined(__WATCOMC__) || defined(__QNX__) ) |
| extern char **environ; |
| #endif /* !_MSC_VER */ |
| |
| @@ -544,7 +548,7 @@ posix_error_with_allocated_filename(char* name) |
| |
| #ifdef MS_WINDOWS |
| static PyObject * |
| -win32_error(char* function, char* filename) |
| +win32_error(const char* function, char* filename) |
| { |
| /* XXX We should pass the function name along in the future. |
| (_winreg.c also wants to pass the function name.) |
| @@ -559,7 +563,7 @@ win32_error(char* function, char* filename) |
| } |
| |
| static PyObject * |
| -win32_error_unicode(char* function, Py_UNICODE* filename) |
| +win32_error_unicode(const char* function, Py_UNICODE* filename) |
| { |
| /* XXX - see win32_error for comments on 'function' */ |
| errno = GetLastError(); |
| @@ -729,9 +733,9 @@ posix_2str(PyObject *args, |
| |
| #ifdef MS_WINDOWS |
| static PyObject* |
| -win32_1str(PyObject* args, char* func, |
| - char* format, BOOL (__stdcall *funcA)(LPCSTR), |
| - char* wformat, BOOL (__stdcall *funcW)(LPWSTR)) |
| +win32_1str(PyObject* args, const char* func, |
| + const char* format, BOOL (__stdcall *funcA)(LPCSTR), |
| + const char* wformat, BOOL (__stdcall *funcW)(LPCWSTR)) |
| { |
| PyObject *uni; |
| char *ansi; |
| @@ -766,7 +770,7 @@ win32_1str(PyObject* args, char* func, |
| it also needs to set "magic" environment variables indicating |
| the per-drive current directory, which are of the form =<drive>: */ |
| static BOOL __stdcall |
| -win32_chdir(LPCSTR path) |
| +win32_chdir(const LPCSTR path) |
| { |
| char new_path[MAX_PATH+1]; |
| int result; |
| @@ -866,7 +870,7 @@ struct win32_stat{ |
| int st_ctime_nsec; |
| }; |
| |
| -static __int64 secs_between_epochs = 11644473600; /* Seconds between 1.1.1601 and 1.1.1970 */ |
| +static __int64 secs_between_epochs = 11644473600ll; /* Seconds between 1.1.1601 and 1.1.1970 */ |
| |
| static void |
| FILE_TIME_to_time_t_nsec(FILETIME *in_ptr, time_t *time_out, int* nsec_out) |
| @@ -6997,10 +7001,9 @@ posix_putenv(PyObject *self, PyObject *args) |
| /* XXX This can leak memory -- not easy to fix :-( */ |
| len = strlen(s1) + strlen(s2) + 2; |
| #ifdef MS_WINDOWS |
| - if (_MAX_ENV < (len - 1)) { |
| + if (32767 < (len - 1)) { |
| PyErr_Format(PyExc_ValueError, |
| - "the environment variable is longer than %u bytes", |
| - _MAX_ENV); |
| + "the environment variable is longer than 32767 bytes"); |
| return NULL; |
| } |
| #endif |
| @@ -9251,7 +9254,7 @@ all_ins(PyObject *d) |
| } |
| |
| |
| -#if (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__)) && !defined(__QNX__) |
| +#if (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__MINGW32__) || defined(__BORLANDC__)) && !defined(__QNX__) |
| #define INITFUNC initnt |
| #define MODNAME "nt" |
| |
| diff --git a/PC/_winreg.c b/PC/_winreg.c |
| index 445c3ed..c0bcd8b 100644 |
| --- a/PC/_winreg.c |
| +++ b/PC/_winreg.c |
| @@ -16,6 +16,22 @@ |
| #include "structmember.h" |
| #include "malloc.h" /* for alloca */ |
| #include "windows.h" |
| +#include "stdlib.h" |
| + |
| +#ifdef __MINGW32__ |
| +extern size_t _mbstrlen(const char *); |
| +#define KEY_WOW64_64KEY 0x0100 |
| +#define REG_NOTIFY_CHANGE_NAME 0x00000001L |
| +#define REG_NOTIFY_CHANGE_ATTRIBUTES 0x00000002L |
| +#define REG_NOTIFY_CHANGE_LAST_SET 0x00000004L |
| +#define REG_NOTIFY_CHANGE_SECURITY 0x00000008L |
| +#define REG_LEGAL_CHANGE_FILTER \ |
| + (REG_NOTIFY_CHANGE_NAME |\ |
| + REG_NOTIFY_CHANGE_ATTRIBUTES |\ |
| + REG_NOTIFY_CHANGE_LAST_SET |\ |
| + REG_NOTIFY_CHANGE_SECURITY) |
| + |
| +#endif |
| |
| static BOOL PyHKEY_AsHKEY(PyObject *ob, HKEY *pRes, BOOL bNoneOK); |
| static PyObject *PyHKEY_FromHKEY(HKEY h); |
| diff --git a/PC/import_nt.c b/PC/import_nt.c |
| index 196a774..ef1efe8 100644 |
| --- a/PC/import_nt.c |
| +++ b/PC/import_nt.c |
| @@ -9,7 +9,7 @@ |
| #include "Python.h" |
| #include "osdefs.h" |
| #include <windows.h> |
| -#include "importdl.h" |
| +#include "../Python/importdl.h" |
| #include "malloc.h" /* for alloca */ |
| |
| /* a string loaded from the DLL at startup */ |
| diff --git a/Python/dynload_win.c b/Python/dynload_win.c |
| index 4e5555e..220119c 100644 |
| --- a/Python/dynload_win.c |
| +++ b/Python/dynload_win.c |
| @@ -28,7 +28,7 @@ const struct filedescr _PyImport_DynLoadFiletab[] = { |
| /* Case insensitive string compare, to avoid any dependencies on particular |
| C RTL implementations */ |
| |
| -static int strcasecmp (char *string1, char *string2) |
| +static int py_strcasecmp (char *string1, char *string2) |
| { |
| int first, second; |
| |
| @@ -41,6 +41,7 @@ static int strcasecmp (char *string1, char *string2) |
| |
| return (first - second); |
| } |
| +#define strcasecmp py_strcasecmp |
| |
| |
| /* Function to return the name of the "python" DLL that the supplied module |
| diff --git a/Python/random.c b/Python/random.c |
| index a2ae002..9d046d0 100644 |
| --- a/Python/random.c |
| +++ b/Python/random.c |
| @@ -12,6 +12,13 @@ static int _Py_HashSecret_Initialized = 0; |
| #endif |
| |
| #ifdef MS_WINDOWS |
| + |
| +#ifndef PROV_RSA_FULL |
| +typedef ULONG_PTR HCRYPTPROV; |
| +#define PROV_RSA_FULL 1 |
| +#define CRYPT_VERIFYCONTEXT 0xF0000000 |
| +#endif |
| + |
| typedef BOOL (WINAPI *CRYPTACQUIRECONTEXTA)(HCRYPTPROV *phProv,\ |
| LPCSTR pszContainer, LPCSTR pszProvider, DWORD dwProvType,\ |
| DWORD dwFlags ); |
| diff --git a/configure b/configure |
| index 3948080..1675812 100644 |
| --- a/configure |
| +++ b/configure |
| @@ -11129,12 +11129,12 @@ _ACEOF |
| |
| $as_echo "#define HAVE_ST_BLOCKS 1" >>confdefs.h |
| |
| -else |
| - case " $LIBOBJS " in |
| - *" fileblocks.$ac_objext "* ) ;; |
| - *) LIBOBJS="$LIBOBJS fileblocks.$ac_objext" |
| - ;; |
| -esac |
| +#else |
| +# case " $LIBOBJS " in |
| +# *" fileblocks.$ac_objext "* ) ;; |
| +# *) LIBOBJS="$LIBOBJS fileblocks.$ac_objext" |
| +# ;; |
| +#esac |
| |
| fi |
| |
| -- |
| 1.7.11.msysgit.1.1.gf0affa1 |
| |