[SciPy-Dev] Advice on py3 debugging
Pauli Virtanen
pav at iki.fi
Thu Nov 11 18:19:46 EST 2010
On Thu, 11 Nov 2010 15:07:59 -0800, Matthew Brett wrote:
[clip]
> I should say that the nasty solution that I have now is a temporary
> Makefile in <working_tree>/scipy/scipy/io/matlab:
>
> TMP_BUILD = $(HOME)/tmp/scipy-matlab-files
>
> py3-py:
> rsync -r --delete . $(TMP_BUILD)
> cd $(TMP_BUILD) && 2to3 -w *.py tests/*.py && python3 setup.py
> build_ext -i
>
> and I link $(TMP_BUILD) as <installed_packages>/scipy/io/matlab
I have the following Makefile. Full (re)install runs fast enough for me.
SVN_BASE_REVISION=$(shell git log|sed -n -e '/git-svn-id:.*@\([0-9]\+\)/{s/.*@//;s/ .*//;p;q}')
GIT_REVISION=$(shell git log|sed -e '1{s/commit \(......\).*/\1/;q;}')
REVISION=$(SVN_BASE_REVISION)+$(GIT_REVISION)
all: build test
all-wine: build-wine test-wine
build: build-linux
test: test-linux
test-all: test-linux test-wine
build-all: build-linux build-wine
PYVER=2.6
export OPT=-ggdb
export PYTHONPATH=$(CURDIR)/../numpy/dist/linux/lib/python$(PYVER)/site-packages/
PATH := /usr/lib/ccache:/usr/local/lib/f90cache:$(PATH)
export PATH
USE_2TO3CACHE=1
export USE_2TO3CACHE
LANG=C
export LANG
TEST_MODULE=scipy
TEST_TYPE=full
TEST_STANZA='import sys, os; sys.path.insert(0, os.path.join(os.getcwd(), "site-packages")); import $(TEST_MODULE) as tst; sys.exit(not tst.test("$(TEST_TYPE)", verbose=2).wasSuccessful())'
build-linux:
@echo "version = \"$(REVISION)\"" > scipy/__svn_version__.py
@echo "--- Building..."
python$(PYVER) setup.py build --debug install --prefix=$(CURDIR)/dist/linux \
> build.log 2>&1 || { cat build.log; exit 1; }
build-linux-scons:
@echo "version = \"$(REVISION)\"" > scipy/__svn_version__.py
@echo "--- Building..."
python$(PYVER) setupscons.py build --debug install --prefix=$(CURDIR)/dist/linux \
> build.log 2>&1 || { cat build.log; exit 1; }
test-linux:
@echo "--- Testing in Linux"
(cd dist/linux/lib/python$(PYVER) && python$(PYVER) -c $(TEST_STANZA)) \
> test.log 2>&1 || { cat test.log; exit 1; }
test-cgdb:
@echo "--- Testing in Linux"
cd dist/linux/lib/python$(PYVER) && cgdb --args python$(PYVER) -c $(TEST_STANZA)
test-valgrind:
@echo "--- Testing in Linux"
cd dist/linux/lib/python$(PYVER) && valgrind --suppressions=$(HOME)/.valgrind/valgrind-python.supp -- python$(PYVER) -c $(TEST_STANZA)
egg-install:
install -d $(CURDIR)/dist/linux/lib/python$(PYVER)/site-packages
PYTHONPATH=$$PYTHONPATH:$(CURDIR)/dist/linux/lib/python$(PYVER)/site-packages \
python$(PYVER) setupegg.py install --prefix=$(CURDIR)/dist/linux \
> install.log 2>&1 || { cat install.log; exit 1; }
find $(CURDIR)/dist -name 'test_*.py' -print0|xargs -0r chmod a-x
build-wine:
@echo "--- Building..."
wine c:\\Python25\\python.exe setup.py build --compiler=mingw32 install --prefix="dist\\win32" \
> build.log 2>&1 || { cat build.log; exit 1; }
test-wine:
@echo "--- Testing in WINE"
(cd dist/win32/Lib && wine c:\\Python25\\python.exe -c $(TEST_STANZA)) \
> test.log 2>&1 || { cat test.log; exit 1; }
ipython:
cd $(CURDIR)/dist && PYTHONPATH=$$PYTHONPATH:$(CURDIR)/dist/linux/lib/python$(PYVER)/site-packages python$(PYVER) `which ipython` -pylab
cgdb:
cd $(CURDIR)/dist && PYTHONPATH=$$PYTHONPATH:$(CURDIR)/dist/linux/lib/python$(PYVER)/site-packages cgdb --args python$(PYVER)
python:
cd $(CURDIR)/dist && PYTHONPATH=$$PYTHONPATH:$(CURDIR)/dist/linux/lib/python$(PYVER)/site-packages python$(PYVER)
sh:
cd $(CURDIR)/dist && PYTHONPATH=$$PYTHONPATH:$(CURDIR)/dist/linux/lib/python$(PYVER)/site-packages bash
etags:
find scipy -name '*.[ch]' -o -name '*.src' \
| ctags-exuberant -L - \
-e --extra=+fq --fields=+afiksS --c++-kinds=+px \
--langmap=c:+.src,python:+.pyx --if0=yes \
--regex-c="/#define ([a-zA-Z0-9 at _]*@[a-zA-Z0-9 at _]*)/\1/" \
--regex-c="/^([a-zA-Z0-9 at _]*@[a-zA-Z0-9 at _]*)\(/\1/"
tags: etags
clean:
rm -rf build dist
.PHONY: test build test-linux build-linux test-wine build-wine clean etags tags
More information about the SciPy-Dev
mailing list