From: Felix Fietkau Date: Tue, 24 Oct 2006 17:20:50 +0000 (+0000) Subject: add python package (contributed by Pavlov Media) X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fsvn-archive%2Farchive.git;a=commitdiff_plain;h=e95c119e495bdfb329f6140164ff681b0ea67daa add python package (contributed by Pavlov Media) SVN-Revision: 5282 --- diff --git a/lang/python/Makefile b/lang/python/Makefile new file mode 100644 index 0000000000..638af2c6fb --- /dev/null +++ b/lang/python/Makefile @@ -0,0 +1,81 @@ +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)) diff --git a/lang/python/patches/000-cross-compile.patch b/lang/python/patches/000-cross-compile.patch new file mode 100644 index 0000000000..4072738dd1 --- /dev/null +++ b/lang/python/patches/000-cross-compile.patch @@ -0,0 +1,129 @@ +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" '