Commit 0efea03f authored by Mike Frysinger's avatar Mike Frysinger
Browse files

update python ... this one should work a lot better than the old one

parent 5226455e
Loading
Loading
Loading
Loading
+36 −16
Original line number Diff line number Diff line
@@ -3,15 +3,13 @@
# python
#
#############################################################
PYTHON_VERSION=2.3.2
PYTHON_SOURCE:=Python-$(PYTHON_VERSION).tgz
PYTHON_VERSION=2.3.4
PYTHON_SOURCE:=Python-$(PYTHON_VERSION).tar.bz2
PYTHON_SITE:=http://python.org/ftp/python/$(PYTHON_VERSION)
PYTHON_DIR:=$(BUILD_DIR)/Python-$(PYTHON_VERSION)
PYTHON_CAT:=zcat
PYTHON_CAT:=bzcat
PYTHON_BINARY:=python
PYTHON_INSTALL_DIR:=$(BUILD_DIR)/python_install
PYTHON_TARGET_BINARY:=$(PYTHON_INSTALL_DIR)/bin/python

PYTHON_TARGET_BINARY:=usr/bin/python

$(DL_DIR)/$(PYTHON_SOURCE):
	 $(WGET) -P $(DL_DIR) $(PYTHON_SITE)/$(PYTHON_SOURCE)
@@ -22,36 +20,58 @@ $(PYTHON_DIR)/.unpacked: $(DL_DIR)/$(PYTHON_SOURCE)
	$(PYTHON_CAT) $(DL_DIR)/$(PYTHON_SOURCE) | tar -C $(BUILD_DIR) -xvf -
	touch $(PYTHON_DIR)/.unpacked

$(PYTHON_DIR)/.configured: $(PYTHON_DIR)/.unpacked
$(PYTHON_DIR)/.patched: $(PYTHON_DIR)/.unpacked
	$(SOURCE_DIR)/patch-kernel.sh $(PYTHON_DIR) $(SOURCE_DIR) python*.patch
	touch $(PYTHON_DIR)/.patched

$(PYTHON_DIR)/.hostpython: $(PYTHON_DIR)/.patched
	(cd $(PYTHON_DIR); rm -rf config.cache; \
		OPT="-O1" \
		./configure \
		--with-cxx=no \
		$(DISABLE_NLS); \
		make python Parser/pygen; \
		mv python hostpython; \
		mv Parser/pgen Parser/hostpgen; \
		make distclean \
	);
	touch $(PYTHON_DIR)/.hostpython

$(PYTHON_DIR)/.configured: $(PYTHON_DIR)/.hostpython
	(cd $(PYTHON_DIR); rm -rf config.cache; \
		$(TARGET_CONFIGURE_OPTS) \
		OPT="$(TARGET_OPTIMIZATION)" \
		./configure \
		--target=$(GNU_TARGET_NAME) \
		--host=$(GNU_TARGET_NAME) \
		--build=$(GNU_HOST_NAME) \
		--prefix=/usr \
		--sysconfdir=/etc \
		--with-cxx=no \
		$(DISABLE_NLS) \
	);
	touch $(PYTHON_DIR)/.configured

$(PYTHON_DIR)/$(PYTHON_BINARY): $(PYTHON_DIR)/.configured
	LD_LIBRARY_PATH=$(STAGING_DIR)/lib
	$(MAKE) CC=$(TARGET_CC) -C $(PYTHON_DIR)
	$(MAKE) CC=$(TARGET_CC) -C $(PYTHON_DIR) DESTDIR=$(TARGET_DIR) \
		HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen

$(TARGET_DIR)/$(PYTHON_TARGET_BINARY): $(PYTHON_DIR)/$(PYTHON_BINARY)

python: uclibc $(TARGET_DIR)/$(PYTHON_TARGET_BINARY)
	$(MAKE) CC=$(TARGET_CC) -C $(PYTHON_DIR) install
	rm $(PYTHON_INSTALL_DIR)/bin/idle
	rm $(PYTHON_INSTALL_DIR)/bin/pydoc
	LD_LIBRARY_PATH=$(STAGING_DIR)/lib
	$(MAKE) CC=$(TARGET_CC) -C $(PYTHON_DIR) install \
		DESTDIR=$(TARGET_DIR) CROSS_COMPILE=yes \
		HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen
	rm $(TARGET_DIR)/usr/bin/idle
	rm $(TARGET_DIR)/usr/bin/pydoc
	find $(TARGET_DIR)/usr/lib/ -name '*.pyc' -o -name '*.pyo' | xargs rm
	rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
		$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc

python: uclibc $(TARGET_DIR)/$(PYTHON_TARGET_BINARY)

python-clean:
	-$(MAKE) -C $(PYTHON_DIR) distclean
	rm $(PYTHON_DIR)/.configured

python-dirclean:
	rm -rf $(PYTHON_DIR)
+117 −0
Original line number Diff line number Diff line
--- Python-2.3.4/Makefile.pre.in.orig	2003-11-18 14:54:00.000000000 -0500
+++ Python-2.3.4/Makefile.pre.in	2004-07-29 21:44:47.075924464 -0400
@@ -159,6 +159,7 @@
 
 PYTHON=		python$(EXE)
 BUILDPYTHON=	python$(BUILDEXE)
+HOSTPYTHON=	./$(BUILDPYTHON)
 
 # === Definitions added by makesetup ===
 
@@ -186,6 +187,8 @@
 # Parser
 PGEN=		Parser/pgen$(EXE)
 
+HOSTPGEN=	$(PGEN)
+
 POBJS=		\
 		Parser/acceler.o \
 		Parser/grammar1.o \
@@ -314,8 +317,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*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' CROSS_COMPILE='yes' OPT='$(OPT)' DESTDIR='$(DESTDIR)'  $(HOSTPYTHON) -E $(srcdir)/setup.py -q build;; \
+	*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' CROSS_COMPILE='yes' OPT='$(OPT)' DESTDIR='$(DESTDIR)' $(HOSTPYTHON) -E $(srcdir)/setup.py build;; \
 	esac
 
 # buildno should really depend on something like LIBRARY_SRC
@@ -432,7 +435,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)
@@ -705,19 +708,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
 
@@ -812,7 +815,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) \
--- Python-2.3.4/setup.py.orig	2004-07-29 21:32:12.993562408 -0400
+++ Python-2.3.4/setup.py	2004-07-29 21:47:12.174866072 -0400
@@ -213,6 +213,7 @@
         try:
             imp.load_dynamic(ext.name, ext_filename)
         except ImportError, why:
+          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
@@ -233,6 +234,9 @@
                     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" '
@@ -245,8 +245,9 @@
 
     def detect_modules(self):
         # Ensure that /usr/local is always used
-        add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
-        add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+        add_dir_to_list(self.compiler.library_dirs, os.getenv('DESTDIR') + '/lib')
+        add_dir_to_list(self.compiler.library_dirs, os.getenv('DESTDIR') + '/usr/lib')
+        add_dir_to_list(self.compiler.include_dirs, os.getenv('DESTDIR') + '/usr/include')
 
         # fink installs lots of goodies in /sw/... - make sure we
         # check there
@@ -254,11 +255,6 @@
             add_dir_to_list(self.compiler.library_dirs, '/sw/lib')
             add_dir_to_list(self.compiler.include_dirs, '/sw/include')
 
-        if os.path.normpath(sys.prefix) != '/usr':
-            add_dir_to_list(self.compiler.library_dirs,
-                            sysconfig.get_config_var("LIBDIR"))
-            add_dir_to_list(self.compiler.include_dirs,
-                            sysconfig.get_config_var("INCLUDEDIR"))
 
         try:
             have_unicode = unicode