add python package (contributed by Pavlov Media)
git-svn-id: svn://svn.openwrt.org/openwrt/packages@5282 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
7c44458bc7
commit
c242640fb9
81
lang/python/Makefile
Normal file
81
lang/python/Makefile
Normal file
@ -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))
|
129
lang/python/patches/000-cross-compile.patch
Normal file
129
lang/python/patches/000-cross-compile.patch
Normal file
@ -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" '
|
Loading…
x
Reference in New Issue
Block a user