Mercurial > gub
view patches/python-2.4.2-1.patch @ 6512:ccc20ae889ca default tip guix
mingw::guile-2.0.7 builds.
author | Jan Nieuwenhuizen <janneke@gnu.org> |
---|---|
date | Thu, 24 Mar 2016 08:03:39 +0100 |
parents | 647f3e0de54d |
children |
line wrap: on
line source
diff -purNX mingw/.cvsignore ../Python-2.4.2/configure.in ./configure.in --- ../Python-2.4.2/configure.in 2005-08-07 23:08:53.000000000 +0200 +++ ./configure.in 2005-11-04 14:12:41.000000000 +0100 @@ -9,6 +9,11 @@ AC_INIT(python, PYTHON_VERSION, http://w AC_CONFIG_SRCDIR([Include/object.h]) AC_CONFIG_HEADER(pyconfig.h) +# find compiler while respecting --host setting +AC_CANONICAL_HOST() +AC_CHECK_TOOLS(CC,gcc cc) +AC_CHECK_TOOLS(CXX,g++ c++) + dnl This is for stuff that absolutely must end up in pyconfig.h. dnl Please use pyport.h instead, if possible. AH_TOP([ @@ -102,9 +107,15 @@ AC_SUBST(PYTHONFRAMEWORKINSTALLDIR) # Set name for machine-dependent library files AC_SUBST(MACHDEP) AC_MSG_CHECKING(MACHDEP) -if test -z "$MACHDEP" -then +if test -z "$MACHDEP"; then + if test "$cross_compiling" = "no"; then ac_sys_system=`uname -s` + else + m=`$CC -dumpmachine` + changequote(<<, >>)#dnl + ac_sys_system=`expr "$m" : "[^-]*-\([^-]*\)"` + changequote([, ])#dnl + fi if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \ -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then ac_sys_release=`uname -v` @@ -242,6 +253,23 @@ then fi AC_MSG_RESULT($EXTRAPLATDIR) +AC_MSG_CHECKING(posix flavour) +if test -z "$POSIX" +then + case $ac_sys_system/$ac_sys_release in + mingw*) + DELIM=';' + POSIX=nt + ;; + *) + DELIM=':' + POSIX=posix + ;; + esac + fi +AC_SUBST(DELIM) +AC_MSG_RESULT($POSIX) + # Record the configure-time value of MACOSX_DEPLOYMENT_TARGET, # it may influence the way we can build extensions, so distutils # needs to check it @@ -395,9 +423,11 @@ if test -d casesensitivetestdir then AC_MSG_RESULT(yes) BUILDEXEEXT=.exe + case_sensitive=no else - AC_MSG_RESULT(no) - BUILDEXEEXT=$EXEEXT + AC_MSG_RESULT(no) + BUILDEXEEXT=$EXEEXT + case_sensitive=yes fi rmdir CaseSensitiveTestDir @@ -560,6 +590,10 @@ if test $enable_shared = "yes"; then LDLIBRARY='libpython$(VERSION).dll.a' DLLLIBRARY='libpython$(VERSION).dll' ;; + mingw*) + LDLIBRARY='libpython$(VERSION).dll.a' + DLLLIBRARY='libpython$(VERSION).dll' + ;; SunOS*) LDLIBRARY='libpython$(VERSION).so' BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)' @@ -604,9 +638,9 @@ fi AC_MSG_RESULT($LDLIBRARY) -AC_PROG_RANLIB -AC_SUBST(AR) -AC_CHECK_PROGS(AR, ar aal, ar) +# find tools while respecting --host setting +AC_CHECK_TOOL(RANLIB,ranlib) +AC_CHECK_TOOLS(AR,ar aal,ar) case $MACHDEP in bsdos*|hp*|HP*) @@ -1285,6 +1319,7 @@ then case $ac_sys_system in hp*|HP*) SO=.sl;; CYGWIN*) SO=.dll;; + mingw*) SO=.dll;; *) SO=.so;; esac else @@ -1386,6 +1421,8 @@ then SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';; Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";; CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";; + mingw*) LDSHARED='$(CC) -mdll' + BLDSHARED='$(CC) -mdll libpython$(VERSION).dll';; atheos*) LDSHARED="gcc -shared";; *) LDSHARED="ld";; esac @@ -1475,6 +1512,11 @@ then then LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)' fi;; + mingw*) + if test $enable_shared = "no" + then + LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)' + fi;; esac fi AC_MSG_RESULT($LINKFORSHARED) @@ -2068,6 +2110,7 @@ then hp*|HP*) DYNLOADFILE="dynload_hpux.o";; Darwin/*) DYNLOADFILE="dynload_next.o";; atheos*) DYNLOADFILE="dynload_atheos.o";; + mingw*) DYNLOADFILE="dynload_win.o";; *) # use dynload_shlib.c and dlopen() if we have it; otherwise stub # out any dynamic loading @@ -2277,6 +2320,8 @@ AC_CHECK_FUNCS(gettimeofday, ) ) +AC_CHECK_FUNCS(cwait fsync pipe popen spawnv system) + AC_MSG_CHECKING(for major, minor, and makedev) AC_TRY_LINK([ #if defined(MAJOR_IN_MKDEV) @@ -3076,25 +3121,33 @@ then fi AC_MSG_CHECKING(for /dev/ptmx) - -if test -e /dev/ptmx +if test -z "$ac_cv_have_dev_ptmx" then - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_DEV_PTMX, 1, - [Define if we have /dev/ptmx.]) -else - AC_MSG_RESULT(no) + ac_cv_have_dev_ptmx=no + if test "$cross_compiling" = "no" -a -e /dev/ptmx + then + ac_cv_have_dev_ptmx=yes + fi +fi +AC_MSG_RESULT($ac_cv_have_dev_ptmx) +if test "$ac_cv_have_dev_ptmx" = "yes" +then + AC_DEFINE([HAVE_DEV_PTMX], 1, [Define if we have /dev/ptmx.]) fi AC_MSG_CHECKING(for /dev/ptc) - -if test -e /dev/ptc +if test -z "$ac_cv_have_dev_ptc" then - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_DEV_PTC, 1, - [Define if we have /dev/ptc.]) -else - AC_MSG_RESULT(no) + ac_cv_have_dev_ptc=no + if test "$cross_compiling" = "no" -a -e /dev/ptc + then + ac_cv_have_dev_ptc=yes + fi +fi +AC_MSG_RESULT($ac_cv_have_dev_ptc) +if test "$ac_cv_have_dev_ptc" = "yes" +then + AC_DEFINE([HAVE_DEV_PTC], 1, [Define if we have /dev/ptc.]) fi AC_CHECK_TYPE(socklen_t,, @@ -3125,6 +3178,67 @@ for dir in $SRCDIRS; do done AC_MSG_RESULT(done) +# Cross compiling +AC_SUBST(cross_compiling) + +if test "$cross_compiling" = "yes"; then + AC_MSG_CHECKING(cc for build) + ## /usr/bin/cc still uses wrong assembler + ## CC_FOR_BUILD="${CC_FOR_BUILD-/usr/bin/cc}" + CC_FOR_BUILD="${CC_FOR_BUILD-PATH=/usr/bin:$PATH cc}" +else + CC_FOR_BUILD="${CC_FOR_BUILD-$CC}" +fi + +if test "$cross_compiling" = "yes"; then + AC_MSG_RESULT($CC_FOR_BUILD) +fi + +AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler (default: cc)]) + +if test "$cross_compiling" = "yes"; then + AC_MSG_CHECKING(python for build) + PYTHON_FOR_BUILD="${PYTHON_FOR_BUILD-python}" +else + PYTHON_FOR_BUILD='$(BUILDPYTHON)' +fi + +if test "$cross_compiling" = "yes"; then + AC_MSG_RESULT($PYTHON_FOR_BUILD) +fi +AC_ARG_VAR(PYTHON_FOR_BUILD,[build system python (default: python)]) +AC_SUBST(PYTHON_FOR_BUILD) + +if test "$cross_compiling" = "yes"; then + CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-} + changequote(<<, >>)#dnl + python_include=`$PYTHON_FOR_BUILD -c 'import sys; sys.stdout.write ("%s/include/python%s" % (sys.prefix, sys.version[:3]))'` + changequote([, ])#dnl + CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"-I$python_include"} + CROSS_COMMENT=# + if test "$case_sensitive" = "yes" + then + EXEEXT_FOR_BUILD= + else + EXEEXT_FOR_BUILD=.exe + fi + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-} + LIBS_FOR_BUILD=${LIBS_FOR_BUILD-} + O_FOR_BUILD=x + RUNSHARED="CROSS_TARGET=$ac_sys_system SRCDIR=$srcdir SO=${SO}" +else + CROSS_COMMENT= + EXEEXT_FOR_BUILD=$BUILDEXEEXT + O_FOR_BUILD=o +fi +AC_SUBST(CFLAGS_FOR_BUILD) +AC_SUBST(CPPFLAGS_FOR_BUILD) +AC_SUBST(CROSS_COMMENT) +AC_SUBST(EXEEXT_FOR_BUILD) +AC_SUBST(LDFLAGS_FOR_BUILD) +AC_SUBST(LIBS_FOR_BUILD) +AC_SUBST(O_FOR_BUILD) + # generate output files AC_CONFIG_FILES(Makefile.pre Modules/Setup.config) AC_OUTPUT @@ -3132,7 +3246,7 @@ AC_OUTPUT echo "creating Setup" if test ! -f Modules/Setup then - cp $srcdir/Modules/Setup.dist Modules/Setup + sed -e "s/@POSIX@/$POSIX/" $srcdir/Modules/Setup.dist > Modules/Setup fi echo "creating Setup.local" diff -purNX mingw/.cvsignore ../Python-2.4.2/Include/osdefs.h ./Include/osdefs.h --- ../Python-2.4.2/Include/osdefs.h 2003-11-20 02:44:57.000000000 +0100 +++ ./Include/osdefs.h 2005-11-04 11:53:19.000000000 +0100 @@ -18,6 +18,7 @@ extern "C" { #define SEP '\\' #define ALTSEP '/' #define MAXPATHLEN 256 +#define ROOTSEP ':' #endif #define DELIM ';' #endif diff -purNX mingw/.cvsignore ../Python-2.4.2/Include/pyport.h ./Include/pyport.h --- ../Python-2.4.2/Include/pyport.h 2005-09-14 19:54:39.000000000 +0200 +++ ./Include/pyport.h 2005-10-28 15:04:57.000000000 +0200 @@ -478,31 +478,31 @@ the incompatibility will be fixed in Fre BeOS and cygwin are the only other autoconf platform requiring special linkage handling and both of these use __declspec(). */ -#if defined(__CYGWIN__) || defined(__BEOS__) +#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__BEOS__) # define HAVE_DECLSPEC_DLL #endif /* only get special linkage if built as shared or platform is Cygwin */ -#if defined(Py_ENABLE_SHARED) || defined(__CYGWIN__) +#if defined(Py_ENABLE_SHARED) || defined(__CYGWIN__) || defined(__MINGW32__) # if defined(HAVE_DECLSPEC_DLL) # ifdef Py_BUILD_CORE # define PyAPI_FUNC(RTYPE) __declspec(dllexport) RTYPE # define PyAPI_DATA(RTYPE) extern __declspec(dllexport) RTYPE /* module init functions inside the core need no external linkage */ /* except for Cygwin to handle embedding (FIXME: BeOS too?) */ -# if defined(__CYGWIN__) +# if defined(__CYGWIN__) || defined(__MINGW32__) # define PyMODINIT_FUNC __declspec(dllexport) void -# else /* __CYGWIN__ */ +# else /* __CYGWIN__ || __MINGW32__ */ # define PyMODINIT_FUNC void -# endif /* __CYGWIN__ */ +# endif /* __CYGWIN__ || __MINGW32__ */ # else /* Py_BUILD_CORE */ /* Building an extension module, or an embedded situation */ /* public Python functions and data are imported */ /* Under Cygwin, auto-import functions to prevent compilation */ /* failures similar to http://python.org/doc/FAQ.html#3.24 */ -# if !defined(__CYGWIN__) +# if !defined(__CYGWIN__) && !defined(__MINGW32__) # define PyAPI_FUNC(RTYPE) __declspec(dllimport) RTYPE -# endif /* !__CYGWIN__ */ +# endif /* !__CYGWIN__ && ! __MINGW32__ */ # define PyAPI_DATA(RTYPE) extern __declspec(dllimport) RTYPE /* module init functions outside the core must be exported */ # if defined(__cplusplus) diff -purNX mingw/.cvsignore ../Python-2.4.2/Lib/distutils/command/build_ext.py ./Lib/distutils/command/build_ext.py --- ../Python-2.4.2/Lib/distutils/command/build_ext.py 2004-11-10 23:23:15.000000000 +0100 +++ ./Lib/distutils/command/build_ext.py 2005-10-27 21:02:58.000000000 +0200 @@ -612,6 +612,8 @@ class build_ext (Command): ext_path[len(ext_path) - 1] = ext_path[len(ext_path) - 1][:8] # extensions in debug_mode are named 'module_d.pyd' under windows so_ext = get_config_var('SO') + if os.environ.get('CROSS_COMPILING') == 'yes': + so_ext = os.environ.get('SO') if os.name == 'nt' and self.debug: return apply(os.path.join, ext_path) + '_d' + so_ext return apply(os.path.join, ext_path) + so_ext @@ -664,7 +666,7 @@ class build_ext (Command): # don't extend ext.libraries, it may be shared with other # extensions, it is a reference to the original list return ext.libraries + [pythonlib] - elif sys.platform[:6] == "cygwin": + elif sys.platform[:6] == "cygwin" or sys.platform[:5] == "mingw": template = "python%d.%d" pythonlib = (template % (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) diff -purNX mingw/.cvsignore ../Python-2.4.2/Lib/plat-mingw32msvc2/regen ./Lib/plat-mingw32msvc2/regen --- ../Python-2.4.2/Lib/plat-mingw32msvc2/regen 1970-01-01 01:00:00.000000000 +0100 +++ ./Lib/plat-mingw32msvc2/regen 2005-10-27 21:14:04.000000000 +0200 @@ -0,0 +1,3 @@ +#! /bin/sh +set -v +python$EXE ../../Tools/scripts/h2py.py -i '(u_long)' /usr/include/netinet/in.h diff -purNX mingw/.cvsignore ../Python-2.4.2/Makefile.pre.in ./Makefile.pre.in --- ../Python-2.4.2/Makefile.pre.in 2005-03-29 01:23:01.000000000 +0200 +++ ./Makefile.pre.in 2005-11-02 21:29:51.000000000 +0100 @@ -18,6 +18,8 @@ # # See also the section "Build instructions" in the README file. +DELIM=@DELIM@ + # === Variables set by makesetup === MODOBJS= _MODOBJS_ @@ -67,6 +69,16 @@ CFLAGSFORSHARED=@CFLAGSFORSHARED@ # C flags used for building the interpreter object files PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE +# For cross compile: build compiler options +CC_FOR_BUILD= @CC_FOR_BUILD@ +CROSS_COMPILING= @cross_compiling@ +EXEEXT_FOR_BUILD= @EXEEXT_FOR_BUILD@ +O_FOR_BUILD= @O_FOR_BUILD@ + +CFLAGS_FOR_BUILD= @CFLAGS_FOR_BUILD@ +CPPFLAGS_FOR_BUILD= @CPPFLAGS_FOR_BUILD@ -I$(srcdir)/Include +LDFLAGS_FOR_BUILD= @LDFLAGS_FOR_BUILD@ +LIBS_FOR_BUILD= @LIBS_FOR_BUILD@ # Machine-dependent subdirectories MACHDEP= @MACHDEP@ @@ -161,7 +173,8 @@ MACHDEP_OBJS= @MACHDEP_OBJS@ UNICODE_OBJS= @UNICODE_OBJS@ PYTHON= python$(EXE) -BUILDPYTHON= python$(BUILDEXE) +BUILDPYTHON= python$(EXE) +PYTHON_FOR_BUILD= @PYTHON_FOR_BUILD@ # === Definitions added by makesetup === @@ -187,7 +200,7 @@ GRAMMAR_INPUT= $(srcdir)/Grammar/Grammar ########################################################################## # Parser -PGEN= Parser/pgen$(EXE) +PGEN_FOR_BUILD= Parser/pgen$(EXEEXT_FOR_BUILD) POBJS= \ Parser/acceler.o \ @@ -204,14 +217,27 @@ POBJS= \ PARSER_OBJS= $(POBJS) Parser/myreadline.o Parser/tokenizer.o -PGOBJS= \ - Objects/obmalloc.o \ - Python/mysnprintf.o \ - Parser/tokenizer_pgen.o \ - Parser/printgrammar.o \ - Parser/pgenmain.o +POBJS_FOR_BUILD= \ + Parser/acceler.$(O_FOR_BUILD) \ + Parser/grammar1.$(O_FOR_BUILD) \ + Parser/listnode.$(O_FOR_BUILD) \ + Parser/node.$(O_FOR_BUILD) \ + Parser/parser.$(O_FOR_BUILD) \ + Parser/parsetok.$(O_FOR_BUILD) \ + Parser/bitset.$(O_FOR_BUILD) \ + Parser/metagrammar.$(O_FOR_BUILD) \ + Parser/firstsets.$(O_FOR_BUILD) \ + Parser/grammar.$(O_FOR_BUILD) \ + Parser/pgen.$(O_FOR_BUILD) + +PGOBJS_FOR_BUILD= \ + Objects/obmalloc.$(O_FOR_BUILD) \ + Python/mysnprintf.$(O_FOR_BUILD) \ + Parser/tokenizer_pgen.$(O_FOR_BUILD) \ + Parser/printgrammar.$(O_FOR_BUILD) \ + Parser/pgenmain.$(O_FOR_BUILD) -PGENOBJS= $(PGENMAIN) $(POBJS) $(PGOBJS) +PGENOBJS= $(POBJS_FOR_BUILD) $(PGOBJS_FOR_BUILD) ########################################################################## @@ -313,15 +339,15 @@ $(BUILDPYTHON): Modules/$(MAINOBJ) $(LIB Modules/$(MAINOBJ) \ $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) -platform: $(BUILDPYTHON) - $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform +platform: @CROSS_COMMENT@ $(BUILDPYTHON) + $(RUNSHARED) $(PYTHON_FOR_BUILD) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform # Build the shared modules -sharedmods: $(BUILDPYTHON) +sharedmods: @CROSS_COMMENT@ $(BUILDPYTHON) case $$MAKEFLAGS in \ - *-s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \ - *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \ + *-s*) $(RUNSHARED) CC='$(CC)' CROSS_COMPILING='$(CROSS_COMPILING)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' $(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py -q build;; \ + *) $(RUNSHARED) CC='$(CC)' CROSS_COMPILING='$(CROSS_COMPILING)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' $(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py build;; \ esac # buildno should really depend on something like LIBRARY_SRC @@ -441,11 +467,11 @@ Modules/ccpython.o: $(srcdir)/Modules/cc $(CXX) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/ccpython.cc -$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT) - -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) +$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN_FOR_BUILD) $(GRAMMAR_INPUT) + -$(PGEN_FOR_BUILD) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) -$(PGEN): $(PGENOBJS) - $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN) +$(PGEN_FOR_BUILD): $(PGENOBJS) + $(CC_FOR_BUILD) $(OPT) $(LDFLAGS_FOR_BUILD) $(PGENOBJS) $(LIBS_FOR_BUILD) -o $(PGEN_FOR_BUILD) Parser/grammar.o: $(srcdir)/Parser/grammar.c \ $(srcdir)/Include/token.h \ @@ -467,6 +493,13 @@ Objects/unicodectype.o: $(srcdir)/Object $(srcdir)/Objects/unicodetype_db.h ############################################################################ +# Cross compile rules + +.SUFFIXES: .x +.c.x: + $(CC_FOR_BUILD) -c $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) -o $@ $< + +############################################################################ # Header files PYTHON_HEADERS= \ @@ -535,7 +568,7 @@ $(LIBRARY_OBJS) $(MODOBJS) Modules/$(MAI TESTOPTS= -l TESTPROG= $(srcdir)/Lib/test/regrtest.py -TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -E -tt +TESTPYTHON= $(RUNSHARED) $(PYTHON_FOR_BUILD) -E -tt test: all platform -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f -$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) @@ -600,7 +633,7 @@ bininstall: altbininstall # Install the interpreter with $(VERSION) affixed # This goes into $(exec_prefix) -altbininstall: $(BUILDPYTHON) +altbininstall: @CROSS_COMMENT@ $(BUILDPYTHON) @if test "$(PYTHONFRAMEWORKDIR)" != no-framework; then \ if test ! -f $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current/Resources/Info.plist; then \ echo 'Framework build: use "make frameworkinstall" in stead of "make install"'; \ @@ -663,7 +696,7 @@ LIBSUBDIRS= lib-old lib-tk site-packages logging bsddb bsddb/test csv idlelib idlelib/Icons \ distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \ curses $(MACHDEPS) -libinstall: $(BUILDPYTHON) $(srcdir)/Lib/$(PLATDIR) +libinstall: $(srcdir)/Lib/$(PLATDIR) @CROSS_COMMENT@ $(BUILDPYTHON) @for i in $(SCRIPTDIR) $(LIBDEST); \ do \ if test ! -d $(DESTDIR)$$i; then \ @@ -719,19 +752,19 @@ libinstall: $(BUILDPYTHON) $(srcdir)/Lib done $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - ./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ + $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ -d $(LIBDEST) -f \ -x 'badsyntax|site-packages' $(DESTDIR)$(LIBDEST) PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - ./$(BUILDPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \ + $(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \ -d $(LIBDEST) -f \ -x 'badsyntax|site-packages' $(DESTDIR)$(LIBDEST) -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - ./$(BUILDPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \ + $(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \ -d $(LIBDEST)/site-packages -f \ -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - ./$(BUILDPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \ + $(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \ -d $(LIBDEST)/site-packages -f \ -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages @@ -739,9 +772,9 @@ libinstall: $(BUILDPYTHON) $(srcdir)/Lib $(srcdir)/Lib/$(PLATDIR): mkdir $(srcdir)/Lib/$(PLATDIR) cp $(srcdir)/Lib/plat-generic/regen $(srcdir)/Lib/$(PLATDIR)/regen - export PATH; PATH="`pwd`:$$PATH"; \ - export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \ - export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \ +@CROSS_COMMENT@ export PATH; PATH="`pwd`:$$PATH"; \ +@CROSS_COMMENT@ export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \ +@CROSS_COMMENT@ export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \ export EXE; EXE="$(BUILDEXE)"; \ cd $(srcdir)/Lib/$(PLATDIR); ./regen @@ -826,8 +859,9 @@ libainstall: all # Install the dynamically loadable modules # This goes into $(exec_prefix) sharedinstall: - $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \ - --prefix=$(prefix) \ + CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' CROSS_COMPILING='$(CROSS_COMPILING)' \ + $(RUNSHARED) $(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py install \ + --prefix=$(prefix) \ --install-scripts=$(BINDIR) \ --install-platlib=$(DESTSHARED) \ --root=/$(DESTDIR) @@ -875,14 +909,14 @@ frameworkinstallstructure: $(LDLIBRARY) # This installs Mac/Lib into the framework frameworkinstallmaclib: $(MAKE) -f $(srcdir)/Mac/OSX/Makefile installmacsubtree \ - $(RUNSHARED) BUILDPYTHON=./$(BUILDPYTHON) DIRMODE=$(DIRMODE) FILEMODE=$(FILEMODE) \ + $(RUNSHARED) PYTHON_FOR_BUILD=$(PYTHON_FOR_BUILD) DIRMODE=$(DIRMODE) FILEMODE=$(FILEMODE) \ srcdir=$(srcdir) builddir=. prefix=$(prefix) LIBDEST=$(LIBDEST) \ DESTDIR=$(DESTDIR) # This installs the IDE, the Launcher and other apps into /Applications frameworkinstallapps: $(MAKE) -f $(srcdir)/Mac/OSX/Makefile installapps \ - $(RUNSHARED) BUILDPYTHON=./$(BUILDPYTHON) DIRMODE=$(DIRMODE) FILEMODE=$(FILEMODE) \ + $(RUNSHARED) PYTHON_FOR_BUILD=$(PYTHON_FOR_BUILD) DIRMODE=$(DIRMODE) FILEMODE=$(FILEMODE) \ srcdir=$(srcdir) builddir=. DESTDIR=$(DESTDIR) prefix=$(prefix) # This install the unix python and pythonw tools in /usr/local/bin @@ -895,13 +929,13 @@ frameworkinstallunixtools: # It is not part of a normal frameworkinstall frameworkinstallextras: $(MAKE) -f $(srcdir)/Mac/OSX/Makefile installextras \ - $(RUNSHARED) BUILDPYTHON=./$(BUILDPYTHON) DIRMODE=$(DIRMODE) FILEMODE=$(FILEMODE) \ + $(RUNSHARED) PYTHON_FOR_BUILD=$(PYTHON_FOR_BUILD) DIRMODE=$(DIRMODE) FILEMODE=$(FILEMODE) \ srcdir=$(srcdir) builddir=. DESTDIR=$(DESTDIR) # This installs a few of the useful scripts in Tools/scripts scriptsinstall: SRCDIR=$(srcdir) $(RUNSHARED) \ - ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/setup.py install \ + $(PYTHON_FOR_BUILD) $(srcdir)/Tools/scripts/setup.py install \ --prefix=$(prefix) \ --install-scripts=$(BINDIR) \ --root=/$(DESTDIR) @@ -955,11 +989,12 @@ clean: find $(srcdir) -name '*.py[co]' -exec rm -f {} ';' clobber: clean - -rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \ + -rm -f $(BUILDPYTHON) $(PGEN_FOR_BUILD) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \ tags TAGS \ config.cache config.log pyconfig.h Modules/config.c -rm -rf build platform -rm -rf $(PYTHONFRAMEWORKDIR) + -rm -rf buildpython # Make things extra clean, before making a distribution: # remove all generated files, even Makefile[.pre] diff -purNX mingw/.cvsignore ../Python-2.4.2/mingw/.cvsignore ./mingw/.cvsignore --- ../Python-2.4.2/mingw/.cvsignore 1970-01-01 01:00:00.000000000 +0100 +++ ./mingw/.cvsignore 2005-11-04 11:52:49.000000000 +0100 @@ -0,0 +1,20 @@ +#* +*.orig +*.rej +*~ +.#* +.bash_mknetrel +*.patch +CYGWIN-PATCHES +Makefile.in +aclocal.m4 +autom4te.cache +config.guess +config.sub +configure +libltdl +ltmain.sh +CVS +missing +pats +Modules/dl_nt.c diff -purNX mingw/.cvsignore ../Python-2.4.2/mingw/mknetrel ./mingw/mknetrel --- ../Python-2.4.2/mingw/mknetrel 1970-01-01 01:00:00.000000000 +0100 +++ ./mingw/mknetrel 2005-11-02 01:24:38.000000000 +0100 @@ -0,0 +1,80 @@ +# -*- shell-script -*- +# cygwin/mknetrel - Python mknetrel overrides + +# This script should be used to package Python for Cygwin. It can be +# used to build Python on Cygwin, but also on GNU/Linux. Use cyg-apt +# to setup and update Cygwin packages in the cross build environment. + +# This needs a patched python-2.4.2 or 2.5-CVS + +sover=2.4 +sub_packages="devel extra lib" +depends="libpython$sover" +lib_depends="libltdl3 libregex2" +build_depends="mingw-devel libiconv-devel libtool-devel regex-devel" + +# copy and include extra mknetrel stuff +. $src/$cygwin/mknetrel.extras || . $mknetrel/extras + +preconfig () { + extras_preconfig + cd $src && autoupdate + cd $build + # FIXME: only compiling console for now. should build windows and + # console applications. compiled as a windows application, guile + # segfaults when run from the gui (ie, without a console). + if [ "$cygwin" == "mingw" ]; then + build_cc="$target-gcc" + build_cxx="$target-g++" + fi +## export OPT=-g + build_cc="$build_cc -DMS_WINDOWS -DPy_WIN_WIDE_FILENAMES -I$cygwin_prefix/include" + CONFIGOPTS="--disable-static --enable-shared $CONFIGOPTS" +} + +preinstall () { + extras_preinstall + v=$(expr "$ver" : "\(.*\)\.[0-9]-[0-9]*") + addmakeflags INCLUDEDIR=$inst/$prefix/include ' ' \ + MANDIR=$inst/$mandir +} + +cruft=" +bsddb +compiler +curses +distutils +email +hotshot +idlelib +lib-old +lib-tk +logging +test +xml +" + +extra_name () { + echo $base-extra +} + +extra_split () { + v=$(expr "$ver" : "\(.*\)\.[0-9]-[0-9]*") + mkdir -p .$prefix/lib/python$v + for i in $cruft; do + mv $inst$prefix/lib/python$v/$i .$prefix/lib/python$v + done +} + +lib_split () { + #extras_lib_split + mkdir -p .$prefix + mv $inst$prefix/lib .$prefix/lib +} + +postinstall () { + if [ "$cygwin" == "mingw" ]; then + v=$(expr "$ver" : "\(.*\)\.[0-9]-[0-9]*") + cp $inst/usr/lib/python$v/lib-dynload/* $inst/usr/bin + fi +} diff -purNX mingw/.cvsignore ../Python-2.4.2/mingw/mknetrel.auto ./mingw/mknetrel.auto --- ../Python-2.4.2/mingw/mknetrel.auto 1970-01-01 01:00:00.000000000 +0100 +++ ./mingw/mknetrel.auto 2005-05-16 17:31:50.000000000 +0200 @@ -0,0 +1,29 @@ +# -*- shell-script -*- + +# +# mknetrel.split -- autotools +# + +autoupdate () { + if [ "$base" != "libtool" ]; then + if [ -d libltdl ]; then + rm -rf libltdl + libtoolize --force --copy --automake --ltdl + else + libtoolize --force --copy --automake + fi + fi + + chmod +x ./bootstrap ./autogen.sh || : + if [ -x ./bootstrap ]; then + ./bootstrap --noconfigure + elif [ -x ./autogen.sh ]; then + ./autogen.sh --noconfigure + else + aclocal + autoheader + autoconf + automake --add-missing + fi + sed -i~ -e 's/ x$PKG_CONFIG / "$x$PKG_CONFIG" /' $src/configure +} diff -purNX mingw/.cvsignore ../Python-2.4.2/mingw/mknetrel.cross ./mingw/mknetrel.cross --- ../Python-2.4.2/mingw/mknetrel.cross 1970-01-01 01:00:00.000000000 +0100 +++ ./mingw/mknetrel.cross 2005-10-26 14:40:12.000000000 +0200 @@ -0,0 +1,113 @@ +# -*- shell-script -*- + +# +# mknetrel.cross -- set cross.cache for configure +# + +# for cross-compiling +if ! iscygwin; then + uploads=$here/uploads/$base && mkdir -p $uploads/ + tarstem=$uploads/$package +fi + +crosscache () { + cat <<EOF > config.cache +ac_cv_c_bigendian=\${ac_cv_c_bigendian=no} +ac_cv_c_long_size_t=\${ac_cv_c_long_size_t=no} +ac_cv_c_long_time_t=\${ac_cv_c_long_time_t=yes} +ac_cv_sizeof___int64=\${ac_cv_sizeof___int64=0} +ac_cv_sizeof_char=\${ac_cv_sizeof_char=1} +ac_cv_sizeof_char_p=\${ac_cv_sizeof_char_p=4} +ac_cv_sizeof_double=\${ac_cv_sizeof_double=8} +ac_cv_sizeof_float=\${ac_cv_sizeof_float=4} +ac_cv_sizeof_int=\${ac_cv_sizeof_int=4} +ac_cv_sizeof_intmax_t=\${ac_cv_sizeof_intmax_t=8} +ac_cv_sizeof_intptr_t=\${ac_cv_sizeof_intptr_t=4} +ac_cv_sizeof_long=\${ac_cv_sizeof_long=4} +ac_cv_sizeof_long_double=\${ac_cv_sizeof_long_double=12} +ac_cv_sizeof_long_long=\${ac_cv_sizeof_long_long=8} +ac_cv_sizeof_ptrdiff_t=\${ac_cv_sizeof_ptrdiff_t=4} +ac_cv_sizeof_short=\${ac_cv_sizeof_short=2} +ac_cv_sizeof_size_t=\${ac_cv_sizeof_size_t=4} +ac_cv_sizeof_uintptr_t=\${ac_cv_sizeof_uintptr_t=4} +ac_cv_sizeof_unsigned___int64=\${ac_cv_sizeof_unsigned___int64=0} +ac_cv_sizeof_unsigned_char=\${ac_cv_sizeof_unsigned_char=1} +ac_cv_sizeof_unsigned_int=\${ac_cv_sizeof_unsigned_int=4} +ac_cv_sizeof_unsigned_long=\${ac_cv_sizeof_unsigned_long=4} +ac_cv_sizeof_unsigned_long_long=\${ac_cv_sizeof_unsigned_long_long=8} +ac_cv_sizeof_unsigned_short=\${ac_cv_sizeof_unsigned_short=2} +ac_cv_sizeof_void_p=\${ac_cv_sizeof_void_p=4} +ac_16bit_type=\${ac_16bit_type=short} +ac_32bit_type=\${ac_32bit_type=int} +ac_64bit_type=\${ac_64bit_type=none} +ac_cv_sys_restartable_syscalls=\${ac_cv_sys_restartable_syscalls=yes} +ac_cv_sprintf_count=\${ac_cv_sprintf_count=yes} +ac_cv_spinlocks=\${ac_cv_spinlocks=no} +ac_cv_func_getpgrp_void=\${ac_cv_func_getpgrp_void=yes} +ac_cv_func_setvbuf_reversed=\${ac_cv_func_setvbuf_reversed=no} +# but in mingw only if winsock2.h +ac_cv_func_select=\${ac_cv_func_select=yes} +ac_cv_search_dlopen=\${ac_cv_search_dlopen="none required"} +ac_exeext=\${ac_exeext=} +ac_cv_exeext=\${ac_cv_exeext=} + +# libtool searches not only in the cross libpath +# /cygwin/usr/lib:/cygwin/usr/lib/w32api:/usr/i686-cygwin/lib +# but also in /usr/lib. there it finds libdl.a and adds -ldl +# to LIBS +# it seems that libtool is broken wrt cross compilation: +# sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" +lt_cv_dlopen=\${lt_cv_dlopen="dlopen"} +lt_cv_dlopen_libs=\${lt_cv_dlopen_libs="none required"} +libltdl_cv_sys_search_path=\${libltdl_cv_sys_search_path="'"/lib /usr/lib $cygwin_prefix/lib"'"} +lt_cv_sys_max_cmd_len=\${lt_cv_sys_max_cmd_len=8192} +ac_cv_lib_dld_shl_load=\${ac_cv_lib_dld_shl_load=no} +ac_cv_lib_dl_dlopen=\${ac_cv_lib_dl_dlopen=no} +ac_cv_c_stack_direction=\${ac_cv_c_stack_direction=-1} +EOF + + if [ "$cygwin" == "cygwin" ]; then + cat <<EOF > config.cache +ac_cv_func_mkfifo=\${ac_cv_func_mkfifo=yes} +ac_cv_have_dev_ptmx=\${ac_cv_have_dev_ptmx=} +ac_cv_have_dev_ptc=\${ac_cv_have_dev_ptc=} +EOF + else + cat <<EOF > config.cache +ac_cv_func_mkfifo=\${ac_cv_func_mkfifo=no} +ac_cv_have_dev_ptmx=\${ac_cv_have_dev_ptmx=no} +ac_cv_have_dev_ptc=\${ac_cv_have_dev_ptc=no} +EOF + fi +} + +needdevoflags () { + return 1 +} + +extras_preconfig () { + cd $src || exit 1 + patchsrc + if [ ! -x ./configure ]; then + autoupdate + fi + for i in $(find $src -name configure | xargs grep -l PKG_CONFIG); do + sed -i~ -e 's/ x$PKG_CONFIG / "$x$PKG_CONFIG" /' $i + done + cd $build || exit 1 + CONFIGOPTS="--config-cache --enable-shared --disable-static $CONFIGOPTS" + ##[ "$cygwin" == "mingw" ] && CONFIGOPTS="'LDFLAGS=-mwindows -mms-bitfields' $CONFIGOPTS" + iscygwin || crosscache +} + +preconfig () { + extras_preconfig +} + +extras_postconfig () { + fix_libtool_script +} + +postconfig () { + extras_postconfig +} diff -purNX mingw/.cvsignore ../Python-2.4.2/mingw/mknetrel.doc ./mingw/mknetrel.doc --- ../Python-2.4.2/mingw/mknetrel.doc 1970-01-01 01:00:00.000000000 +0100 +++ ./mingw/mknetrel.doc 2005-10-10 22:16:09.000000000 +0200 @@ -0,0 +1,40 @@ +# -*- shell-script -*- + +# +# mknetrel.doc -- fixup doc +# + +docprefix=$prefix/share +docdir=$docprefix/doc + +cygdocdir=$docdir/$Cygwin +infodir=$docprefix/info +mandir=$docprefix/man +v=$(expr "$ver" : "\(.*\)-[0-9]*") +#docdirname=$base-$v +docdirname=$base +packagedocdir=$docdir/$docdirname + +fixdoc () { + # + cd $inst || exit 1 + mkdir -p $inst/$docprefix + for i in info man doc; do + #if [ -d $inst/$docprefix/$i ]; then + if [ -d $inst/$prefix/$i ]; then + cd $inst/$prefix + tar -cf - $i | tar -C $inst/$docprefix -xf - + rm -rf $inst/$prefix/$i + fi + done + if [ -f $inst/$docprefix/$base ]; then + mkdir -p $packagedocdir + tar -C $inst/$docprefix/$base -cf - . | tar -C $inst/$packagedocdir -xf - + fi + for i in $inst/$docprefix/info/*.info \ + $inst/$docprefix/info/*.info-[0-9] \ + $inst/$docprefix/info/*.info-[0-9][0-9]; do + gzip $i + done + true +} diff -purNX mingw/.cvsignore ../Python-2.4.2/mingw/mknetrel.extras ./mingw/mknetrel.extras --- ../Python-2.4.2/mingw/mknetrel.extras 1970-01-01 01:00:00.000000000 +0100 +++ ./mingw/mknetrel.extras 2005-05-26 12:07:02.000000000 +0200 @@ -0,0 +1,12 @@ +# -*- shell-script -*- + +# copy and include extra mknetrel stuff +extras=${extras-"auto cross doc libtool patch split"} +[ ! -d $src/$cygwin ] && mkdir -p $src/$cygwin +i=extras +cp -pv $mknetrel/$i $src/$cygwin/mknetrel.$i +for i in $extras; do + [ -r $mknetrel/$i ] && cp -pv $mknetrel/$i $src/$cygwin/mknetrel.$i + . $src/$cygwin/mknetrel.$i +done +cp -pv $extra/$base $src/$cygwin/mknetrel diff -purNX mingw/.cvsignore ../Python-2.4.2/mingw/mknetrel.libtool ./mingw/mknetrel.libtool --- ../Python-2.4.2/mingw/mknetrel.libtool 1970-01-01 01:00:00.000000000 +0100 +++ ./mingw/mknetrel.libtool 2005-09-27 10:25:19.000000000 +0200 @@ -0,0 +1,65 @@ +# -*- shell-script -*- +# mknetrel.libtool -- libtool fixups + +fix_libtool_dltool () { + sed -i~ \ + -e "s/^DLLTOOL=.*/DLLTOOL='$target-dlltool'/" \ + -e "s/^DLLTOOL=/HOST_CC=gcc\nDLLTOOL=/" \ + -e "s/^HOST_CC=/SED=sed\nHOST_CC=/" \ + -e "s/^allow_undefined_flag=.*/allow_undefined_flag=/" \ + $1 +## -e "s@^sys_lib_dlsearch_path_spec=.*@sys_lib_dlsearch_path_spec='$cygwin_prefix/lib'@" +} + +fix_libtool_dlopen_undefined () { + for i in $(find $build -name libtool); do + sed -i~ -e 's/\(allow_undefined_flag=.*\)unsupported/\1/' $i + done +} + +fix_libtool_script () { + [ $base != "libtool" ] || return 0 + for i in $mknetrel_root/bin/$target-libtool \ + $cygwin_prefix/bin/$target-libtool; do + [ -x "$i" ] && fixtool=$i + done + for i in $(find $build -name libtool); do + [ -n "$fixtool" ] || exit 1 + cp --backup $fixtool $i + done +} + +fix_libtool_la () { + # fix libtool's .la dependency_libs output for dlopen + for i in $inst/lib $inst/$prefix/lib; do + if [ -d "$i" ]; then + cd $i || exit 1 + for j in $(ls -1 *.la); do + sed -i~ \ + -e 's/ *-L *[^"'"'"' ][^"'"'"' ]*//g'\ + -e "s@\( \|=\|'\)\(/[^ ]*usr/lib/lib\)\([^ ']*\)\.\(a\|la\|so\)[^ ']*@\1-l\3@g"\ + $j +## -e "s@\( \|=\|'\)\(cyg\)\([^ ']*\)\(\.dll.a\|.a\)[^ ']*@\1lib\3\4@g"\ +## -e "s@\( \|=\|'\)\(/usr/lib/lib\)\([^ ']*\)\.\(a\|la\|so\)[^ ']*@\1-l\3@g"\ +## -e "s@\( \|=\|'\)\(/usr/lib/lib\)\([^.]*\)\.\(a\|la\|so\)[^ ']*@\1-l\3@g"\ +## -e "s@\( \|=\|'\)\(/usr/lib/lib\)\([^.]*\)[^ ']*@\1-l\3@g"\ +## -e "s@\( \|=\|'\)\(/usr/lib/\)\(lib\)@\1\3@g"\ +## -e "s@\( \|=\)\(/usr/lib/lib\)@\1$cygwin_root\2@g"\ +## -e "s@\( \|=\)\(/usr/lib/lib\)@\1$cygwin_root\2@g"\ +## -e "s@\( \|=\)\(/usr/lib/lib\)\([^ ]*\)[.]\(a\|dll\|la\|so[^ ]*\)@-l\2@g"\ + done + fi + done + + # fix some libtool's .dll name + mv $inst/$prefix/lib/$dll_prefix$base-$sover $inst/$prefix/bin/$dll_prefix$base-$sover.dll + + # more libtool fixups. I love libtool. + sed -i~ \ + -e "s@^dlname=.*@dlname='../bin/$dll_prefix$base-$sover.dll'@" \ + -e "s@^library_names=.*@library_names='lib$base.dll.a'@" \ + -e "s@^old_library=.*@old_library='lib$base.a'@" \ + $inst/$prefix/lib/lib$base.la +## -e "s@^library_names=.*@library_names='$dll_prefix$base.dll.a'@" \ +## -e "s@^old_library=.*@old_library='$dll_prefix$base.a'@" \ +} diff -purNX mingw/.cvsignore ../Python-2.4.2/mingw/mknetrel.split ./mingw/mknetrel.split --- ../Python-2.4.2/mingw/mknetrel.split 1970-01-01 01:00:00.000000000 +0100 +++ ./mingw/mknetrel.split 2005-10-07 15:27:23.000000000 +0200 @@ -0,0 +1,275 @@ +# -*- shell-script -*- +# mknetrel.split -- split subpackages + +extras_preinstall () { + :; +} + +extras_presplit () { + :; +} + +presplit () { + :; +} + +devel_name () { + if ! libdev 2> /dev/null ; then + echo $base-devel + else + if expr "$base" : "\(lib\)" > /dev/null 2>&1; then + echo $base-dev + else + echo lib$base-dev + fi + fi +} + +doc_name () { + echo $base-doc +} + +lib_name () { + if expr "$base" : "\(lib\)" > /dev/null 2>&1; then + echo $base$sover + else + echo lib$base$sover + fi +} + +extras_lib_split () { + mkdir -p ./$prefix/bin || exit 1 + mv $inst/$prefix/bin/*.dll ./$prefix/bin + # better move dlls to bin, see gmp + mkdir -p ./$prefix/lib || exit 1 + mv $inst/$prefix/lib/*.dll ./$prefix/lib + mkdir -p ./$prefix/lib || exit 1 + mv $inst/$prefix/lib/lib*.la ./$prefix/lib + mkdir -p ./$prefix/share || exit 1 + mv $inst/$prefix/share/$base ./$prefix/share + rmdir $inst/$prefix/bin || true + rmdir $inst/$prefix/lib || true + rmdir $inst/$prefix/share || true + true +} + +extras_devel_split () { + mkdir -p ./$prefix/bin || exit 1 + mv $inst/bin/*-config ./$prefix/bin + tar -C $inst -cf - ./$prefix/include | tar -xf - + rm -rf $inst/$prefix/include + # Only static .a libs in devel, load time .la files go in LIB or + # BIN package. + mkdir -p ./$prefix/lib || exit 1 + mv $inst/$prefix/lib/*.a ./$prefix/lib + mv $inst/$prefix/lib/pkgconfig ./$prefix/lib + mkdir -p ./$prefix/share || exit 1 + tar -C $inst -cf - ./$prefix/share/aclocal | tar -xf - + rm -rf $inst/$prefix/share/aclocal + tar -C $inst -cf - ./$prefix/share/libtool | tar -xf - + rm -rf $inst/$prefix/share/libtool + rmdir $inst/$prefix/lib || true + rmdir $inst/$prefix/share || true + true +} + +extras_doc_split () { + mkdir -p ./$docprefix || exit 1 + mkdir -p ./$infodir || exit 1 + tar -C $inst -cf - ./$infodir | tar -xf - + rm -rf $inst/$infodir + if [ "$cygwin" == "mingw" ]; then + mkdir -p ./$mandir || exit 1 + tar -C $inst -cf - ./$mandir | tar -xf - + rm -rf $inst/$mandir + fi + true +} + +extras_prebuild () { + for i in $sub_packages; do + rm -rf $inst-$i + mkdir -p $inst-$i || exit 1 + done +} + +extras_postinstall () { + fixdoc + fix_libtool_la + + mkdir -p $inst-doc/$docprefix + cd $build || exit 1 + + cd $src || exit 1 + install -d -m755 $inst/$packagedocdir + + readmes="$(find . -maxdepth 1 -type f -a -name '[A-Z]*' | egrep -v 'Makefile|GNUmakefile')" + install -m644 $readmes $inst/$packagedocdir + install -m644 $cygwin/changelog $inst/$packagedocdir/changelog.$Cygwin + + ## Cygwin readmes + cd $src || exit 1 + install -d -m755 $inst/$cygdocdir + + cd $src || exit 1 + install -m644 $cygwin/README $inst/$packagedocdir/README.$Cygwin + install -m644 $cygwin/README $inst/$cygdocdir/$package.README + cd $build || exit 1 + install -m644 $cygwin/out/README $inst/$packagedocdir/README.$Cygwin + install -m644 $cygwin/out/README $inst/$cygdocdir/$package.README +} + +auto_requires () { + dlls= + requires= + dlls=$(find . -name '*dll' -o -name '*.exe' \ + | xargs $cygcheck 2>&1 | grep '^ [^ ]' \ + | tr -d '[ \r]' | sed 's@.*\\@@g' | sort -u) + for x in $(ls -1 bin/* sbin/*); do + case $x in + *.exeXXX|*.dllXXX) + dlls="$($cygcheck $x 2>&1 | grep '^ [^ ]' | tr -d '[ \r]' | sed 's@.*bin\\@@g') $dlls" + ;; + esac + case "$(file -b $x)" in + "*Bourne shell script*") + requires="bash\n$requires" + ;; + "*guile*script*") + requires="guile\n$requires" + ;; + "*perl*script*") + requires="perl\n$requires" + ;; + "*python*script*") + requires="python\n$requires" + ;; + esac + done + for x in $dlls; do + requires="$(cyg-apt find $x | sed 's/:.*//')\n$requires" + done + requires=$(echo -e "$requires" | sort -u) + echo $requires +} + +hint () { + if [ -r $shint ]; then + cp $shint $hint + else + cat > $hint <<EOF +sdesc: "$name" +ldesc: "$name - no description (missing $package/$cygwin/$(basename $shint) file)" +EOF + fi + grep ^requires: $hint || echo "requires: $depends" >> $hint + if [ "$cygwin" == "cygwin" ]; then + if grep ^build-requires: $hint; then + mv $hint $hint~ + grep -v build-requires $hint~ > $hint + fi + if iscygwin; then + cygcheck=cygcheck.exe + else + cygcheck="wine $cygwin_prefix/bin/cygcheck.exe" + fi + echo "#auto-requires: $(cd usr; auto_requires)" >> $hint + else + grep ^build-requires: $hint || echo "build-requires: $build_depends" >> $hint + fi +} + +domkdist () { + # + # Fix up installation slightly + # + cd $inst || exit 1 + chmod -R u+w,og-w,a+rX . + cd usr 2>/dev/null && dousrstuff + + # Split off any sub-packages. The actual splitting is handled by + # a package's specific code in extra/. + + # To package `foo' in foo, foo-doc and foo-devel, set + # sub_packages='doc devel'. + + # Then provide functions doc_name and devel_name, that return the + # full name of the sub-package. Also provide functions doc_split + # and devel_split, that mv part of foo's installation in $inst to + # the sub-packages' installation roots $inst-doc and $inst-devel. + + cd $inst || exit 1 + presplit + + for i in $sub_packages; do + subname=$(${i}_name) + cd $inst-$i || exit 1 + ${i}_split || exit 1 + done + + cd $inst || exit 1 + prepackage + + cd $inst || exit 1 + hard2soft + + # + # Make tar balls + # + + # The base package + echo creating $tarstem.tar.bz2 + cd $inst || exit 1 + + name=$base + shint=$src/$cygwin/$name.hint + hint=$uploads/setup.hint + hint + find * -print | egrep -v '\.cvsignore|\.bak$|\.orig$|\.o$|\.rej$|~$|^.#|CVS|/tags$' | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf $tarstem.tar.bz2 + + # Any sub-packages + for i in $sub_packages; do + subname=$(${i}_name) + subload=$uploads/$subname + subtarstem=$subload/$subname-$ver + shint=$src/$cygwin/$subname.hint + hint=$subload/setup.hint + depends=$(eval echo '$'${i}_depends) + mkdir -p $subload || exit 1 + echo creating $subtarstem.tar.bz2 + name=$subname + cd $inst-$i + hint + grep ^external-source: $hint || echo "external-source: $base" >> $hint + hard2soft + find * -print | egrep -v '\.cvsignore|\.bak$|\.orig$|\.o$|\.rej$|~$|^.#|CVS|/tags$' | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf $subtarstem.tar.bz2 + done + + # The source package + cd $src/.. || exit 1 + echo creating "$tarstem"-src.tar.bz2 + ##find $package_src/* -print -follow | egrep -v '\.cvsignore|\.bak$|\.orig$|\.o$|~$|^.#|CVS|%redact|/tags$' | egrep -v "$src_exclude" | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf "$tarstem"-src.tar.bz2 + find $package_src/* -print | egrep -v '\.cvsignore|\.bak$|\.orig$|\.o$|\.rej$|~$|^.#|CVS|%redact|/tags$|/TAGS$|autom4te.cache$' | egrep -v "$src_exclude" | sort | tar -T - --no-recursion --owner=0 --group=0 -cjf "$tarstem"-src.tar.bz2 + ##cd $package_src && tar -cj --exclude='\.cvsignore' --exclude='\.bak$' --exclude='\.orig$' --exclude='\.o$' --exclude='~$' --exclude='^.#' --exclude='CVS' --exclude='%redact' --exclude='/tags$' --exclude='/TAGS$' --exclude='autom4te.cache' --owner=0 --group=0 -f "$tarstem"-src.tar.bz2 . + postpackage +} + +devel_split () { + extras_devel_split +} + +doc_split () { + extras_doc_split +} + +lib_split () { + extras_lib_split +} + +prebuild () { + extras_prebuild +} + +postinstall () { + extras_postinstall +} diff -purNX mingw/.cvsignore ../Python-2.4.2/Modules/dl_nt.c ./Modules/dl_nt.c --- ../Python-2.4.2/Modules/dl_nt.c 1970-01-01 01:00:00.000000000 +0100 +++ ./Modules/dl_nt.c 2005-11-01 11:02:45.000000000 +0100 @@ -0,0 +1,39 @@ +/* + +Entry point for the Windows NT DLL. + +About the only reason for having this, is so initall() can automatically +be called, removing that burden (and possible source of frustration if +forgotten) from the programmer. + +*/ +#include "windows.h" + +/* NT and Python share these */ +#include "pyconfig.h" +#include "Python.h" + +char dllVersionBuffer[16] = ""; // a private buffer + +// Python Globals +HMODULE PyWin_DLLhModule = NULL; +const char *PyWin_DLLVersionString = dllVersionBuffer; + + +BOOL WINAPI DllMain (HANDLE hInst, + ULONG ul_reason_for_call, + LPVOID lpReserved) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + PyWin_DLLhModule = hInst; + // 1000 is a magic number I picked out of the air. Could do with a #define, I spose... + LoadString(hInst, 1000, dllVersionBuffer, sizeof(dllVersionBuffer)); + //initall(); + break; + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} diff -purNX mingw/.cvsignore ../Python-2.4.2/Modules/getpath.c ./Modules/getpath.c --- ../Python-2.4.2/Modules/getpath.c 2004-08-08 03:00:47.000000000 +0200 +++ ./Modules/getpath.c 2005-11-03 13:49:11.000000000 +0100 @@ -120,6 +120,14 @@ #define LANDMARK "os.py" #endif +#ifndef __MINGW32__ +#define IS_ABSOLUTE(x) (x[0] == SEP) +#else /* __MINGW32__ */ +#define IS_ABSOLUTE(x) (x[0] == SEP || x[0] == ALTSEP\ + || (x[1] && x[1] == ROOTSEP\ + && x[2] && (x[2] == SEP || x[2] == ALTSEP))) +#endif /* __MINGW32__ */ + static char prefix[MAXPATHLEN+1]; static char exec_prefix[MAXPATHLEN+1]; static char progpath[MAXPATHLEN+1]; @@ -130,7 +138,12 @@ static void reduce(char *dir) { size_t i = strlen(dir); - while (i > 0 && dir[i] != SEP) + while (i > 0 + && dir[i] != SEP +#ifdef ALTSEP + && dir[i] != ALTSEP +#endif /* ALTSEP */ + ) --i; dir[i] = '\0'; } @@ -203,11 +216,16 @@ static void joinpath(char *buffer, char *stuff) { size_t n, k; - if (stuff[0] == SEP) + if (IS_ABSOLUTE(stuff)) n = 0; else { n = strlen(buffer); - if (n > 0 && buffer[n-1] != SEP && n < MAXPATHLEN) + if (n > 0 + && buffer[n-1] != SEP +#ifdef ALTSEP + && buffer[n-1] != ALTSEP +#endif /* ALTSEP */ + && n < MAXPATHLEN) buffer[n++] = SEP; } if (n > MAXPATHLEN) @@ -224,11 +242,16 @@ joinpath(char *buffer, char *stuff) static void copy_absolute(char *path, char *p) { - if (p[0] == SEP) + if (IS_ABSOLUTE(p)) strcpy(path, p); else { getcwd(path, MAXPATHLEN); - if (p[0] == '.' && p[1] == SEP) + if (p[0] == '.' + && (p[1] == SEP +#ifdef ALTSEP + || p[1] == ALTSEP +#endif /* ALTSEP */ + )) p += 2; joinpath(path, p); } @@ -240,7 +263,7 @@ absolutize(char *path) { char buffer[MAXPATHLEN + 1]; - if (path[0] == SEP) + if (IS_ABSOLUTE(path)) return; copy_absolute(buffer, path); strcpy(path, buffer); @@ -384,13 +407,23 @@ calculate_path(void) unsigned long nsexeclength = MAXPATHLEN; #endif - /* If there is no slash in the argv0 path, then we have to - * assume python is on the user's $PATH, since there's no - * other way to find a directory to start the search from. If - * $PATH isn't exported, you lose. - */ - if (strchr(prog, SEP)) - strncpy(progpath, prog, MAXPATHLEN); + /* If PROG is an absolute name, then we're done. If PROG is not + * an absolute name and contains SEP/ALTSEP, then it must be + * reachable from CWD. Otherwise, python is on the user's $PATH, + * since there's no other way to find a directory to start the + * search from. If $PATH isn't exported, you lose. + */ + if (IS_ABSOLUTE(prog)) + strncpy(progpath, prog, MAXPATHLEN); + else if (strchr(prog, SEP) +#ifdef ALTSEP + || strchr(prog, ALTSEP) +#endif /* ALTSEP */ + ) + { + getcwd(progpath, MAXPATHLEN); + joinpath(progpath, prog); + } #ifdef __APPLE__ /* On Mac OS X, if a script uses an interpreter of the form * "#!/opt/python2.3/bin/python", the kernel only passes "python" @@ -406,6 +439,9 @@ calculate_path(void) ; #endif /* __APPLE__ */ else if (path) { +#ifdef __MINGW32__ + char const *ext = strchr(prog, '.') ? "" : ".exe"; +#endif while (1) { char *delim = strchr(path, DELIM); @@ -420,9 +456,11 @@ calculate_path(void) strncpy(progpath, path, MAXPATHLEN); joinpath(progpath, prog); +#ifdef __MINGW32__ + strcat(progpath, ext); +#endif if (isxfile(progpath)) break; - if (!delim) { progpath[0] = '\0'; break; @@ -432,7 +470,7 @@ calculate_path(void) } else progpath[0] = '\0'; - if (progpath[0] != SEP) + if (!IS_ABSOLUTE(progpath)) absolutize(progpath); strncpy(argv0_path, progpath, MAXPATHLEN); argv0_path[MAXPATHLEN] = '\0'; @@ -478,7 +516,7 @@ calculate_path(void) while (linklen != -1) { /* It's not null terminated! */ tmpbuffer[linklen] = '\0'; - if (tmpbuffer[0] == SEP) + if (IS_ABSOLUTE(tmpbuffer)) /* tmpbuffer should never be longer than MAXPATHLEN, but extra check does not hurt */ strncpy(argv0_path, tmpbuffer, MAXPATHLEN); @@ -545,7 +583,7 @@ calculate_path(void) while (1) { char *delim = strchr(defpath, DELIM); - if (defpath[0] != SEP) + if (!IS_ABSOLUTE(defpath)) /* Paths are relative to prefix */ bufsz += prefixsz; @@ -590,7 +628,7 @@ calculate_path(void) while (1) { char *delim = strchr(defpath, DELIM); - if (defpath[0] != SEP) { + if (!IS_ABSOLUTE(defpath)) { strcat(buf, prefix); strcat(buf, separator); } diff -purNX mingw/.cvsignore ../Python-2.4.2/Modules/posixmodule.c ./Modules/posixmodule.c --- ../Python-2.4.2/Modules/posixmodule.c 2005-09-25 08:16:28.000000000 +0200 +++ ./Modules/posixmodule.c 2005-11-03 10:15:24.000000000 +0100 @@ -106,6 +106,10 @@ corresponding Unix manual entries for mo #define HAVE_FSYNC 1 #define fsync _commit #else +#ifdef __MINGW32__ /* MINGW32 (cross-)compiler*/ +#define HAVE_FSYNC 1 +#define fsync _commit +#else #if defined(PYOS_OS2) && defined(PYCC_GCC) || defined(__VMS) /* Everything needed is defined in PC/os2emx/pyconfig.h or vms/pyconfig.h */ #else /* all other compilers */ @@ -131,12 +135,13 @@ corresponding Unix manual entries for mo #define HAVE_WAIT 1 #define HAVE_TTYNAME 1 #endif /* PYOS_OS2 && PYCC_GCC && __VMS */ +#endif /* __MINGW32__ */ #endif /* _MSC_VER */ #endif /* __BORLANDC__ */ #endif /* ! __WATCOMC__ || __QNX__ */ #endif /* ! __IBMC__ */ -#ifndef _MSC_VER +#if !defined(_MSC_VER) && !defined(__MINGW32__) #if defined(__sgi)&&_COMPILER_VERSION>=700 /* declare ctermid_r if compiling with MIPSPro 7.x in ANSI C mode @@ -182,7 +187,7 @@ extern int lstat(const char *, struct st #endif /* HAVE_LSTAT */ #endif /* !HAVE_UNISTD_H */ -#endif /* !_MSC_VER */ +#endif /* !_MSC_VER && !__MINGW32__ */ #ifdef HAVE_UTIME_H #include <utime.h> @@ -227,7 +232,7 @@ extern int lstat(const char *, struct st #endif #endif -#ifdef _MSC_VER +#if defined(_MSC_VER) || defined(__MINGW32__) #include <direct.h> #include <io.h> #include <process.h> @@ -237,7 +242,7 @@ extern int lstat(const char *, struct st #include <shellapi.h> /* for ShellExecute() */ #define popen _popen #define pclose _pclose -#endif /* _MSC_VER */ +#endif /* _MSC_VER || __MINGW32__ */ #if defined(PYCC_VACPP) && defined(PYOS_OS2) #include <io.h> @@ -304,9 +309,9 @@ extern int lstat(const char *, struct st */ #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 */ +#endif /* !_MSC_VER && ! __MINGW32__ */ static PyObject * convertenviron(void) @@ -1785,7 +1790,7 @@ posix_mkdir(PyObject *self, PyObject *ar Py_FileSystemDefaultEncoding, &path, &mode)) return NULL; Py_BEGIN_ALLOW_THREADS -#if ( defined(__WATCOMC__) || defined(_MSC_VER) || defined(PYCC_VACPP) ) && !defined(__QNX__) +#if ( defined(__WATCOMC__) || defined(_MSC_VER) || defined(__MINGW32__) || defined(PYCC_VACPP) ) && !defined(__QNX__) res = mkdir(path); #else res = mkdir(path, mode); @@ -7219,7 +7224,7 @@ posix_getloadavg(PyObject *self, PyObjec } #endif -#ifdef MS_WINDOWS +#if defined(MS_WINDOWS) && !defined(__MINGW32__) PyDoc_STRVAR(win32_urandom__doc__, "urandom(n) -> str\n\n\ @@ -7576,7 +7581,7 @@ static PyMethodDef posix_methods[] = { #ifdef HAVE_GETLOADAVG {"getloadavg", posix_getloadavg, METH_NOARGS, posix_getloadavg__doc__}, #endif - #ifdef MS_WINDOWS + #if defined(MS_WINDOWS) && !defined(__MINGW32__) {"urandom", win32_urandom, METH_VARARGS, win32_urandom__doc__}, #endif {NULL, NULL} /* Sentinel */ @@ -7849,7 +7854,7 @@ all_ins(PyObject *d) } -#if (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__)) && !defined(__QNX__) +#if (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__) || defined (__MINGW32__)) && !defined(__QNX__) #define INITFUNC initnt #define MODNAME "nt" diff -purNX mingw/.cvsignore ../Python-2.4.2/Modules/Setup.dist ./Modules/Setup.dist --- ../Python-2.4.2/Modules/Setup.dist 2005-03-10 00:47:44.000000000 +0100 +++ ./Modules/Setup.dist 2005-11-03 09:54:46.000000000 +0100 @@ -91,12 +91,12 @@ SITEPATH= TESTPATH= # Path components for machine- or system-dependent modules and shared libraries -MACHDEPPATH=:plat-$(MACHDEP) +MACHDEPPATH=$(DELIM)plat-$(MACHDEP) EXTRAMACHDEPPATH= # Path component for the Tkinter-related modules # The TKPATH variable is always enabled, to save you the effort. -TKPATH=:lib-tk +TKPATH=$(DELIM)lib-tk COREPYTHONPATH=$(DESTPATH)$(SITEPATH)$(TESTPATH)$(MACHDEPPATH)$(EXTRAMACHDEPPATH)$(TKPATH) PYTHONPATH=$(COREPYTHONPATH) @@ -109,7 +109,7 @@ PYTHONPATH=$(COREPYTHONPATH) # 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 +@POSIX@ posixmodule.c # posix (UNIX) system calls errno errnomodule.c # posix (UNIX) errno values _sre _sre.c # Fredrik Lundh's new regular expressions _codecs _codecsmodule.c # access to the builtin codecs and codec registry diff -purNX mingw/.cvsignore ../Python-2.4.2/Modules/timemodule.c ./Modules/timemodule.c --- ../Python-2.4.2/Modules/timemodule.c 2004-08-03 19:58:55.000000000 +0200 +++ ./Modules/timemodule.c 2005-11-02 00:10:36.000000000 +0100 @@ -801,7 +801,9 @@ inittime(void) If Ctrl+C event delivered while not sleeping it will be ignored. */ +#ifdef WITH_THREAD main_thread = PyThread_get_thread_ident(); +#endif hInterruptEvent = CreateEvent(NULL, TRUE, FALSE, NULL); SetConsoleCtrlHandler( PyCtrlHandler, TRUE); #endif /* MS_WINDOWS */ @@ -898,8 +900,11 @@ floatsleep(double secs) * by Guido, only the main thread can be interrupted. */ ul_millis = (unsigned long)millisecs; - if (ul_millis == 0 || - main_thread != PyThread_get_thread_ident()) + if (ul_millis == 0 +#ifdef WITH_THREAD + || main_thread != PyThread_get_thread_ident() +#endif + ) Sleep(ul_millis); else { DWORD rc; diff -purNX mingw/.cvsignore ../Python-2.4.2/Modules/xxsubtype.c ./Modules/xxsubtype.c --- ../Python-2.4.2/Modules/xxsubtype.c 2002-08-14 03:45:37.000000000 +0200 +++ ./Modules/xxsubtype.c 2005-10-27 21:02:58.000000000 +0200 @@ -1,6 +1,10 @@ #include "Python.h" #include "structmember.h" +#ifndef CLOCKS_PER_SEC +#include <bits/time.h> +#endif + PyDoc_STRVAR(xxsubtype__doc__, "xxsubtype is an example module showing how to subtype builtin types from C.\n" "test_descr.py in the standard test suite requires it in order to complete.\n" diff -purNX mingw/.cvsignore ../Python-2.4.2/pyconfig.h.in ./pyconfig.h.in --- ../Python-2.4.2/pyconfig.h.in 2004-10-13 17:30:55.000000000 +0200 +++ ./pyconfig.h.in 2005-10-27 21:06:46.000000000 +0200 @@ -79,6 +79,9 @@ /* Define to 1 if you have the <curses.h> header file. */ #undef HAVE_CURSES_H +/* Define to 1 if you have the `cwait' function. */ +#undef HAVE_CWAIT + /* Define to 1 if you have the device macros. */ #undef HAVE_DEVICE_MACROS @@ -137,7 +140,7 @@ /* Define to 1 if you have the `fstatvfs' function. */ #undef HAVE_FSTATVFS -/* Define if you have the 'fsync' function. */ +/* Define to 1 if you have the `fsync' function. */ #undef HAVE_FSYNC /* Define to 1 if you have the `ftell64' function. */ @@ -326,6 +329,9 @@ /* Define to 1 if you have the `pause' function. */ #undef HAVE_PAUSE +/* Define to 1 if you have the `pipe' function. */ +#undef HAVE_PIPE + /* Define to 1 if you have the `plock' function. */ #undef HAVE_PLOCK @@ -335,6 +341,9 @@ /* Define to 1 if you have the <poll.h> header file. */ #undef HAVE_POLL_H +/* Define to 1 if you have the `popen' function. */ +#undef HAVE_POPEN + /* Define if your compiler supports function prototype */ #undef HAVE_PROTOTYPES @@ -440,6 +449,9 @@ /* Define if you have the 'socketpair' function. */ #undef HAVE_SOCKETPAIR +/* Define to 1 if you have the `spawnv' function. */ +#undef HAVE_SPAWNV + /* Define to 1 if you have the `statvfs' function. */ #undef HAVE_STATVFS @@ -499,6 +511,9 @@ /* Define to 1 if you have the <sysexits.h> header file. */ #undef HAVE_SYSEXITS_H +/* Define to 1 if you have the `system' function. */ +#undef HAVE_SYSTEM + /* Define to 1 if you have the <sys/audioio.h> header file. */ #undef HAVE_SYS_AUDIOIO_H diff -purNX mingw/.cvsignore ../Python-2.4.2/Python/dynload_shlib.c ./Python/dynload_shlib.c --- ../Python-2.4.2/Python/dynload_shlib.c 2004-10-03 10:51:35.000000000 +0200 +++ ./Python/dynload_shlib.c 2005-10-31 15:32:09.000000000 +0100 @@ -32,7 +32,7 @@ const struct filedescr _PyImport_DynLoadFiletab[] = { -#ifdef __CYGWIN__ +#if defined(__CYGWIN__) || defined(__MINGW32__) {".dll", "rb", C_EXTENSION}, {"module.dll", "rb", C_EXTENSION}, #else diff -purNX mingw/.cvsignore ../Python-2.4.2/Python/dynload_win.c ./Python/dynload_win.c --- ../Python-2.4.2/Python/dynload_win.c 2004-07-02 10:53:57.000000000 +0200 +++ ./Python/dynload_win.c 2005-10-31 17:13:18.000000000 +0100 @@ -23,6 +23,9 @@ const struct filedescr _PyImport_DynLoad /* Case insensitive string compare, to avoid any dependencies on particular C RTL implementations */ +#ifdef __MINGW32__ +#define strcasecmp py_strcasecmp +#endif static int strcasecmp (char *string1, char *string2) { int first, second; diff -purNX mingw/.cvsignore ../Python-2.4.2/Python/frozenmain.c ./Python/frozenmain.c --- ../Python-2.4.2/Python/frozenmain.c 2002-06-30 17:26:10.000000000 +0200 +++ ./Python/frozenmain.c 2005-10-27 21:02:58.000000000 +0200 @@ -3,7 +3,7 @@ #include "Python.h" -#ifdef MS_WINDOWS +#if defined (MS_WINDOWS) && ! defined (__MINGW32__) extern void PyWinFreeze_ExeInit(void); extern void PyWinFreeze_ExeTerm(void); extern int PyInitFrozenExtensions(void); @@ -32,12 +32,12 @@ Py_FrozenMain(int argc, char **argv) setbuf(stderr, (char *)NULL); } -#ifdef MS_WINDOWS +#if defined (MS_WINDOWS) && ! defined (__MINGW32__) PyInitFrozenExtensions(); #endif /* MS_WINDOWS */ Py_SetProgramName(argv[0]); Py_Initialize(); -#ifdef MS_WINDOWS +#if defined (MS_WINDOWS) && ! defined (__MINGW32__) PyWinFreeze_ExeInit(); #endif @@ -60,7 +60,7 @@ Py_FrozenMain(int argc, char **argv) if (inspect && isatty((int)fileno(stdin))) sts = PyRun_AnyFile(stdin, "<stdin>") != 0; -#ifdef MS_WINDOWS +#if defined (MS_WINDOWS) && ! defined (__MINGW32__) PyWinFreeze_ExeTerm(); #endif Py_Finalize(); diff -purNX mingw/.cvsignore ../Python-2.4.2/Python/pystate.c ./Python/pystate.c --- ../Python-2.4.2/Python/pystate.c 2005-09-23 10:14:40.000000000 +0200 +++ ./Python/pystate.c 2005-10-27 21:10:54.000000000 +0200 @@ -53,8 +53,9 @@ static PyInterpreterState *interp_head = PyThreadState *_PyThreadState_Current = NULL; PyThreadFrameGetter _PyThreadState_GetFrame = NULL; +#ifdef WITH_THREAD static void _PyGILState_NoteThreadState(PyThreadState* tstate); - +#endif PyInterpreterState * PyInterpreterState_New(void) @@ -188,8 +189,10 @@ PyThreadState_New(PyInterpreterState *in tstate->c_profileobj = NULL; tstate->c_traceobj = NULL; +#ifdef WITH_THREAD _PyGILState_NoteThreadState(tstate); - +#endif + HEAD_LOCK(); tstate->next = interp->tstate_head; interp->tstate_head = tstate; diff -purNX mingw/.cvsignore ../Python-2.4.2/README ./README --- ../Python-2.4.2/README 2005-09-20 21:04:34.000000000 +0200 +++ ./README 2005-10-27 21:02:58.000000000 +0200 @@ -1130,6 +1130,37 @@ release-build performance). The Unix, W do this. +Cross Compiling +--------------- + +Python can be cross compiled by supplying different --build and --host +parameters to configure. Python is compiled on the "build" system and +executed on the "host" system. Cross compiling python requires a +native Python on the build host, and a natively compiled tool `Pgen'. + +Before cross compiling, Python must first be compiled and installed on +the build host. The configure script will use `cc' and `python', or +environment variables CC_FOR_BUILD or PYTHON_FOR_BUILD, eg: + + CC_FOR_BUILD=gcc-3.3 \ + PYTHON_FOR_BUILD=python2.4 \ + .../configure --build=i686-linux --host=i586-mingw32 + +Cross compiling has been tested under linux, mileage may vary for +other platforms. + +A few reminders on using configure to cross compile: +- Cross compile tools must be in PATH, +- Cross compile tools must be prefixed with the host type + (ie i586-mingw32-gcc, i586-mingw32-ranlib, ...), +- CC, CXX, AR, and RANLIB must be undefined when running configure, + they will be auto-detected. + +If you need a cross compiler, Debian ships several several (eg: avr, +m68hc1x, mingw32), while dpkg-cross easily creates others. Otherwise, +check out Dan Kegel's crosstool: http://www.kegel.com/crosstool . + + Miscellaneous issues ==================== diff -purNX mingw/.cvsignore ../Python-2.4.2/setup.py ./setup.py --- ../Python-2.4.2/setup.py 2005-03-09 23:27:24.000000000 +0100 +++ ./setup.py 2005-10-27 21:02:58.000000000 +0200 @@ -103,6 +103,8 @@ class PyBuildExt(build_ext): # Fix up the autodetected modules, prefixing all the source files # with Modules/ and adding Python's include directory to the path. (srcdir,) = sysconfig.get_config_vars('srcdir') + if os.environ.get('CROSS_COMPILING') == 'yes': + srcdir = os.environ.get('SRCDIR') if not srcdir: # Maybe running on Windows but not using CYGWIN? raise ValueError("No source directory; cannot proceed.") @@ -198,6 +200,10 @@ class PyBuildExt(build_ext): self.announce('WARNING: skipping import check for Cygwin-based "%s"' % ext.name) return + if os.environ.get('CROSS_COMPILING') == 'yes': + self.announce('WARNING: skipping import check for cross compiled "%s"' + % ext.name) + return ext_filename = os.path.join( self.build_lib, self.get_ext_filename(self.get_ext_fullname(ext.name))) @@ -231,11 +237,14 @@ class PyBuildExt(build_ext): level=3) def get_platform(self): - # Get value of sys.platform - for platform in ['cygwin', 'beos', 'darwin', 'atheos', 'osf1']: - if sys.platform.startswith(platform): + # Get value of target's sys.platform + p = sys.platform + if os.environ.get('CROSS_COMPILING') == 'yes': + p = os.environ.get('CROSS_TARGET') + for platform in ['cygwin', 'mingw', 'beos', 'darwin', 'atheos', 'osf1']: + if p.startswith(platform): return platform - return sys.platform + return p def detect_modules(self): # Ensure that /usr/local is always used @@ -1092,6 +1101,8 @@ class PyBuildInstallLib(install_lib): # mode 755. All installed directories will get mode 755. so_ext = sysconfig.get_config_var("SO") + if os.environ.get('CROSS_COMPILING') == 'yes': + so_ext = os.environ.get('SO') def install(self): outfiles = install_lib.install(self)