--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python
+PKG_VERSION:=2.4.3
+PKG_RELEASE:=1
+
+PKG_SOURCE:=Python-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=http://www.python.org/ftp/python/2.4.3/
+PKG_MD5SUM:=141c683447d5e76be1d2bd4829574f02
+PKG_CAT:=bzcat
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Python programming language
+ URL:=http://www.python.org
+ DEPENDS:=+uclibcxx
+endef
+
+define Package/python/description
+Python programming language
+ Python is a dynamic object-oriented programming language that
+ can be used for many kinds of software development. It offers
+ strong support for integration with other languages and tools,
+ comes with extensive standard libraries, and can be learned in a
+ few days. Many Python programmers report substantial productivity
+ gains and feel the language encourages the development of higher
+ quality, more maintainable code.
+endef
+
+define Build/Configure
+ (cd $(PKG_BUILD_DIR); \
+ CONFIG_SITE= \
+ ./configure --with-threads=no; \
+ $(MAKE) python Parser/pgen; \
+ mv python hostpython; \
+ mv Parser/pgen Parser/hostpgen; \
+ make distclean; \
+ echo "import sys" > $(PKG_BUILD_DIR)/setup.py.new; \
+ echo "sys.path.append('$(PKG_BUILD_DIR)/Lib')" >> $(PKG_BUILD_DIR)/setup.py.new; \
+ cat $(PKG_BUILD_DIR)/setup.py.new $(PKG_BUILD_DIR)/setup.py > $(PKG_BUILD_DIR)/setup.py.foo; \
+ mv $(PKG_BUILD_DIR)/setup.py.foo $(PKG_BUILD_DIR)/setup.py; \
+ rm $(PKG_BUILD_DIR)/setup.py.new; \
+ );
+ $(call Build/Configure/Default, \
+ --disable-shared \
+ --sysconfdir=/etc \
+ --with-threads=no, \
+ HOSTPYTHON=./hostpython \
+ HOSTPGEN=./Parser/hostpgen \
+ )
+endef
+
+MAKE_OPTS= \
+ $(TARGET_CONFIGURE_OPTS) \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ LD_LIBRARY_PATH="$(STAGING_DIR)/lib:$(LD_LIBRARY_PATH)" \
+ LD="$(TARGET_CC)" \
+ HOSTPYTHON=./hostpython \
+ HOSTPGEN=./Parser/hostpgen
+
+define Build/Compile
+ $(MAKE) -C $(PKG_BUILD_DIR) \
+ DESTDIR="$(PKG_INSTALL_DIR)" \
+ $(MAKE_OPTS) \
+ all
+endef
+
+define Package/python/install
+ mkdir -p $(1)/lib
+ $(MAKE) -C $(PKG_BUILD_DIR) \
+ $(MAKE_OPTS) \
+ DESTDIR="$(1)" \
+ install
+endef
+
+$(eval $(call BuildPackage,python))
--- /dev/null
+diff -uN Python-2.4.3.orig/Makefile.pre.in Python-2.4.3.cc/Makefile.pre.in
+--- Python-2.4.3.orig/Makefile.pre.in 2006-03-13 07:08:41.000000000 -0600
++++ Python-2.4.3.cc/Makefile.pre.in 2006-10-13 14:47:12.000000000 -0500
+@@ -162,6 +162,7 @@
+
+ PYTHON= python$(EXE)
+ BUILDPYTHON= python$(BUILDEXE)
++HOSTPYTHON= ./$(BUILDPYTHON)
+
+ # === Definitions added by makesetup ===
+
+@@ -189,6 +190,8 @@
+ # Parser
+ PGEN= Parser/pgen$(EXE)
+
++HOSTPGEN= $(PGEN)
++
+ POBJS= \
+ Parser/acceler.o \
+ Parser/grammar1.o \
+@@ -320,8 +323,8 @@
+ # Build the shared modules
+ sharedmods: $(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*) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' $(HOSTPYTHON) -E $(srcdir)/setup.py -q build;; \
++ *) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' $(HOSTPYTHON) -E $(srcdir)/setup.py build;; \
+ esac
+
+ # buildno should really depend on something like LIBRARY_SRC
+@@ -442,8 +445,7 @@
+
+
+ $(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
+- -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
+-
++ -$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
+ $(PGEN): $(PGENOBJS)
+ $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
+
+@@ -723,19 +725,19 @@
+ done
+ $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+ PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- ./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
++ $(HOSTPYTHON) -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 \
++ $(HOSTPYTHON) -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 \
++ $(HOSTPYTHON) -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 \
++ $(HOSTPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
+ -d $(LIBDEST)/site-packages -f \
+ -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+
+@@ -830,7 +832,8 @@
+ # Install the dynamically loadable modules
+ # This goes into $(exec_prefix)
+ sharedinstall:
+- $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \
++ CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' CROSS_COMPILE='$(CROSS_COMPILE)' \
++ $(HOSTPYTHON) -E $(srcdir)/setup.py install \
+ --prefix=$(prefix) \
+ --install-scripts=$(BINDIR) \
+ --install-platlib=$(DESTSHARED) \
+diff -uN Python-2.4.3.orig/setup.py Python-2.4.3.cc/setup.py
+--- Python-2.4.3.orig/setup.py 2006-03-23 13:07:46.000000000 -0600
++++ Python-2.4.3.cc/setup.py 2006-10-13 15:36:01.000000000 -0500
+@@ -205,26 +205,30 @@
+ try:
+ imp.load_dynamic(ext.name, ext_filename)
+ except ImportError, why:
+- self.announce('*** WARNING: renaming "%s" since importing it'
+- ' failed: %s' % (ext.name, why), level=3)
+- assert not self.inplace
+- basename, tail = os.path.splitext(ext_filename)
+- newname = basename + "_failed" + tail
+- if os.path.exists(newname):
+- os.remove(newname)
+- os.rename(ext_filename, newname)
+-
+- # XXX -- This relies on a Vile HACK in
+- # distutils.command.build_ext.build_extension(). The
+- # _built_objects attribute is stored there strictly for
+- # use here.
+- # If there is a failure, _built_objects may not be there,
+- # so catch the AttributeError and move on.
+- try:
+- for filename in self._built_objects:
+- os.remove(filename)
+- except AttributeError:
+- self.announce('unable to remove files (ignored)')
++ if os.environ.get('CROSS_COMPILE') != "yes":
++ self.announce('*** WARNING: renaming "%s" since importing it'
++ ' failed: %s' % (ext.name, why), level=3)
++ assert not self.inplace
++ basename, tail = os.path.splitext(ext_filename)
++ newname = basename + "_failed" + tail
++ if os.path.exists(newname):
++ os.remove(newname)
++ os.rename(ext_filename, newname)
++
++ # XXX -- This relies on a Vile HACK in
++ # distutils.command.build_ext.build_extension(). The
++ # _built_objects attribute is stored there strictly for
++ # use here.
++ # If there is a failure, _built_objects may not be there,
++ # so catch the AttributeError and move on.
++ try:
++ for filename in self._built_objects:
++ os.remove(filename)
++ except AttributeError:
++ self.announce('unable to remove files (ignored)')
++ else:
++ self.announce('WARNING: "%s" failed importing, but we leave it because we are cross-compiling' % ext.name)
++
+ except:
+ exc_type, why, tb = sys.exc_info()
+ self.announce('*** WARNING: importing extension "%s" '