From a71414d73ad38f2a7dccd9089a6f610bcd75c146 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jouni=20K=2E=20Sepp=C3=A4nen?= Date: Sat, 5 Mar 2011 11:05:45 +0200 Subject: [PATCH 1/4] Simplify make.osx, add targets --- README.osx | 17 +++++++++-- make.osx | 86 ++++++++++++++++++++++++------------------------------ 2 files changed, 52 insertions(+), 51 deletions(-) diff --git a/README.osx b/README.osx index 7b5b9ea4f535..dac81f47b90f 100644 --- a/README.osx +++ b/README.osx @@ -9,11 +9,22 @@ lib, png or freetype on your system Example usage:: - make -f make.osx PREFIX=/Users/jdhunter/dev PYVERSION=2.6 fetch deps mpl_install + make -f make.osx PREFIX=/Users/jdhunter/dev PYVERSION=2.6 \ + fetch deps mpl_install_std Variables: PREFIX (required): where to install the dependencies - PYVERSION (optional): which python version to use (default=python, e.g.=python2.6) + PYVERSION (optional): which python version to use + (default=python, e.g. PYVERSION=2.6 uses python2.6) -The Python libraries will be installed in the relevant site-packages, instead of under PREFIX. +Targets: + clean: remove compiled files + fetch: download dependencies + deps: build all dependencies (zlib, png, freetype) + mpl_build: compile matplotlib + mpl_install: install matplotlib in $PREFIX/lib/pythonX.Y/site-packages + mpl_install_std: install matplotlib in standard site-packages directory + mpl_install_egg: install matplotlib as an egg + mpl_install_develop: set up egg link to working directory (for developers) + binaries: create the dmg file for distribution diff --git a/make.osx b/make.osx index 6759129cc5db..7d29974aab14 100644 --- a/make.osx +++ b/make.osx @@ -1,3 +1,4 @@ +# -*- makefile -*- # build mpl into a local install dir with # make -f make.osx PREFIX=/Users/jdhunter/dev PYVERSION=2.6 fetch deps mpl_install # (see README.osx for more details) @@ -8,18 +9,18 @@ PNGVERSION=1.2.39 FREETYPEVERSION=2.3.11 MACOSX_DEPLOYMENT_TARGET=10.6 OSX_SDK_VER=10.6 -ARCH_FLAGS="-arch i386-arch x86_64" +ARCH_FLAGS=-arch i386 -arch x86_64 ## You shouldn't need to configure past this point -#PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" -#CFLAGS="${ARCH_FLAGS} -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk" -#LDFLAGS="${ARCH_FLAGS} -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk" +export PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig +export CFLAGS=${ARCH_FLAGS} -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk +export LDFLAGS=${ARCH_FLAGS} -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk +export MACOSX_DEPLOYMENT_TARGET -PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig" -CFLAGS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk" -LDFLAGS="-arch i386 -arch x86_64 -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk" -FFLAGS="-arch i386 -arch x86_64" +help: + @echo "Interesting targets: clean, fetch, deps, mpl_build, mpl_install_std" + @echo "See README.osx for details" clean: rm -rf zlib-${ZLIBVERSION}.tar.gz libpng-${PNGVERSION}.tar.gz \ @@ -36,72 +37,61 @@ fetch: ${PYTHON} -c 'import urllib; urllib.urlretrieve("http://sourceforge.net/projects/libpng/files/libpng12/older-releases/${PNGVERSION}/libpng-${PNGVERSION}.tar.gz/download", "libpng-${PNGVERSION}.tar.gz")' &&\ ${PYTHON} -c 'import urllib; urllib.urlretrieve("http://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPEVERSION}.tar.bz2", "freetype-${FREETYPEVERSION}.tar.bz2")' +check-prefix: + @if [ ! -d "$(PREFIX)" ]; then echo Set PREFIX to a directory - see README.osx; exit 1; fi - - -zlib: - export PKG_CONFIG_PATH=${PKG_CONFIG_PATH} &&\ +zlib: check-prefix rm -rf zlib-${ZLIBVERSION} &&\ tar xvfz zlib-${ZLIBVERSION}.tar.gz &&\ cd zlib-${ZLIBVERSION} &&\ - export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} &&\ - export CFLAGS=${CFLAGS} &&\ - export LDFLAGS=${LDFLAGS} &&\ ./configure --prefix=${PREFIX}&&\ - MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} make -j3 install&& \ - unset MACOSX_DEPLOYMENT_TARGET + ${MAKE} -j3 install -png: zlib - export PKG_CONFIG_PATH=${PKG_CONFIG_PATH} &&\ +png: check-prefix zlib rm -rf libpng-${PNGVERSION} &&\ tar xvfz libpng-${PNGVERSION}.tar.gz && \ cd libpng-${PNGVERSION} &&\ - export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} &&\ - export CFLAGS=${CFLAGS} &&\ - export LDFLAGS=${LDFLAGS} &&\ ./configure --disable-dependency-tracking --prefix=${PREFIX} &&\ - make -j3 install&&\ - cp .libs/libpng.a . &&\ - unset MACOSX_DEPLOYMENT_TARGET + ${MAKE} -j3 install&&\ + cp .libs/libpng.a . - -freetype: zlib - export PKG_CONFIG_PATH=${PKG_CONFIG_PATH} &&\ +freetype: check-prefix zlib rm -rf ${FREETYPEVERSION} &&\ tar xvfj freetype-${FREETYPEVERSION}.tar.bz2 &&\ cd freetype-${FREETYPEVERSION} &&\ - export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} &&\ - export CFLAGS=${CFLAGS} &&\ - export LDFLAGS=${LDFLAGS} &&\ ./configure --prefix=${PREFIX} &&\ - make -j3 install &&\ - cp objs/.libs/libfreetype.a . &&\ - unset MACOSX_DEPLOYMENT_TARGET - + ${MAKE} -j3 install &&\ + cp objs/.libs/libfreetype.a . deps: zlib png freetype echo 'all done' -mpl_build: - export PKG_CONFIG_PATH=${PKG_CONFIG_PATH} &&\ - export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} &&\ - export CFLAGS=${CFLAGS} &&\ - export LDFLAGS=${LDFLAGS} &&\ +# Various build and install targets +# +# The values of PKG_CONFIG_PATH, MACOSX_DEPLOYMENT_TARGET, CFLAGS, +# LDFLAGS affect the compilation; note that variables are +# automatically put into the environment by make. + +mpl_build: check-prefix ${PYTHON} setup.py build -mpl_install: - export PKG_CONFIG_PATH=${PKG_CONFIG_PATH} &&\ - export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} &&\ - export CFLAGS=${CFLAGS} &&\ - export LDFLAGS=${LDFLAGS} &&\ +mpl_install: check-prefix + ${PYTHON} setup.py install --prefix=${PREFIX} + +mpl_install_std: check-prefix ${PYTHON} setup.py install +mpl_install_egg: check-prefix + ${PYTHON} setupegg.py install + +mpl_install_develop: check-prefix + ${PYTHON} setupegg.py develop + -binaries: +binaries: check-prefix + @if [ -z "$(PYVERSION)" ]; then echo Must set PYVERSION; exit 1; fi unset PKG_CONFIG_PATH &&\ cp release/osx/data/setup.cfg release/osx/data/ReadMe.txt . &&\ - export CFLAGS=${CFLAGS} &&\ - export LDFLAGS=${LDFLAGS} &&\ rm -f ${PREFIX}/lib/*.dylib &&\ /Library/Frameworks/Python.framework/Versions/${PYVERSION}/bin/bdist_mpkg --readme=ReadMe.txt &&\ hdiutil create -srcdir dist/matplotlib-${MPLVERSION}-py${PYVERSION}-macosx10.5.mpkg dist/matplotlib-${MPLVERSION}-py${PYVERSION}-macosx10.5.dmg &&\ From 9204cc7a7ca8fd5e4c0cf1ce3ea0b3639010521d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jouni=20K=2E=20Sepp=C3=A4nen?= Date: Sun, 6 Mar 2011 09:34:02 +0200 Subject: [PATCH 2/4] Upgrade dependency versions in make.osx --- make.osx | 58 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/make.osx b/make.osx index e7e00bfb2ace..d3c968696207 100644 --- a/make.osx +++ b/make.osx @@ -2,16 +2,34 @@ # build mpl into a local install dir with # make -f make.osx PREFIX=/Users/jdhunter/dev PYVERSION=2.6 fetch deps mpl_install # (see README.osx for more details) -MPLVERSION=1.0rc1 +MPLVERSION=1.1.0 PYVERSION=2.6 PYTHON=python${PYVERSION} -ZLIBVERSION=1.2.3 -PNGVERSION=1.2.39 -FREETYPEVERSION=2.3.11 MACOSX_DEPLOYMENT_TARGET=10.6 OSX_SDK_VER=10.6 ARCH_FLAGS=-arch i386 -arch x86_64 +# Dependency versions and URLs +# +# Adjusting these version numbers should be enough most of the time, +# but the download URLs are subject to change. + +ZLIBVERSION=1.2.5 +PNGVERSION=1.5.1 +FREETYPEVERSION=2.4.4 + +ZLIBFILE=zlib-${ZLIBVERSION}.tar.gz +ZLIBDIR=$(basename $(basename ${ZLIBFILE})) +ZLIBURL=http://sourceforge.net/projects/libpng/files/zlib/${ZLIBVERSION}/${ZLIBFILE}/download + +PNGFILE=libpng-${PNGVERSION}.tar.gz +PNGDIR=$(basename $(basename ${PNGFILE})) +PNGURL=http://sourceforge.net/projects/libpng/files/libpng15/${PNGVERSION}/${PNGFILE}/download + +FREETYPEFILE=freetype-${FREETYPEVERSION}.tar.bz2 +FREETYPEDIR=$(basename $(basename ${FREETYPEFILE})) +FREETYPEURL=http://download.savannah.gnu.org/releases/freetype/${FREETYPEFILE} + ## You shouldn't need to configure past this point export PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig @@ -27,8 +45,8 @@ check-prefix: @if [ ! -d "$(PREFIX)" ]; then echo Set PREFIX to a directory - see README.osx; exit 1; fi clean: - rm -rf zlib-${ZLIBVERSION}.tar.gz libpng-${PNGVERSION}.tar.gz \ - freetype-${FREETYPEVERSION}.tar.bz2 bdist_mpkg-${BDISTMPKGVERSION}.tar.gz \ + rm -rf ${ZLIBFILE} ${PNGFILE} ${FREETYPEFILE} \ + bdist_mpkg-${BDISTMPKGVERSION}.tar.gz \ bdist_mpkg-${BDISTMPKGVERSION} setupext.pyc \ lib/matplotlib/mpl-data/matplotlib.conf lib/matplotlib/mpl-data/matplotlibrc \ zlib-${ZLIBVERSION} libpng-${PNGVERSION} freetype-${FREETYPEVERSION} \ @@ -37,29 +55,29 @@ clean: fetch: - ${PYTHON} -c 'import urllib; urllib.urlretrieve("http://sourceforge.net/projects/libpng/files/zlib/${ZLIBVERSION}/zlib-${ZLIBVERSION}.tar.gz/download", "zlib-${ZLIBVERSION}.tar.gz")' &&\ - ${PYTHON} -c 'import urllib; urllib.urlretrieve("http://sourceforge.net/projects/libpng/files/libpng12/older-releases/${PNGVERSION}/libpng-${PNGVERSION}.tar.gz/download", "libpng-${PNGVERSION}.tar.gz")' &&\ - ${PYTHON} -c 'import urllib; urllib.urlretrieve("http://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPEVERSION}.tar.bz2", "freetype-${FREETYPEVERSION}.tar.bz2")' + ${PYTHON} -c 'import urllib; urllib.urlretrieve("${ZLIBURL}", "${ZLIBFILE}")' &&\ + ${PYTHON} -c 'import urllib; urllib.urlretrieve("${PNGURL}", "${PNGFILE}")' &&\ + ${PYTHON} -c 'import urllib; urllib.urlretrieve("${FREETYPEURL}", "${FREETYPEFILE}")' zlib: check-prefix - rm -rf zlib-${ZLIBVERSION} &&\ - tar xvfz zlib-${ZLIBVERSION}.tar.gz &&\ - cd zlib-${ZLIBVERSION} &&\ - ./configure --prefix=${PREFIX}&&\ + rm -rf ${ZLIBDIR} &&\ + tar xvfz ${ZLIBFILE} &&\ + cd ${ZLIBDIR} &&\ + ./configure --prefix=${PREFIX} &&\ ${MAKE} -j3 install png: check-prefix zlib - rm -rf libpng-${PNGVERSION} &&\ - tar xvfz libpng-${PNGVERSION}.tar.gz && \ - cd libpng-${PNGVERSION} &&\ + rm -rf ${PNGDIR} &&\ + tar xvfz ${PNGFILE} && \ + cd ${PNGDIR} &&\ ./configure --disable-dependency-tracking --prefix=${PREFIX} &&\ ${MAKE} -j3 install&&\ - cp .libs/libpng.a . + echo NOT DOING cp .libs/libpng15.a . freetype: check-prefix zlib - rm -rf ${FREETYPEVERSION} &&\ - tar xvfj freetype-${FREETYPEVERSION}.tar.bz2 &&\ - cd freetype-${FREETYPEVERSION} &&\ + rm -rf ${FREETYPEDIR} &&\ + tar xvfj ${FREETYPEFILE} &&\ + cd ${FREETYPEDIR} &&\ ./configure --prefix=${PREFIX} &&\ ${MAKE} -j3 install &&\ cp objs/.libs/libfreetype.a . From 9d4c65e8cc6b1ad7b6c8913bc92fc143b72a1006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jouni=20K=2E=20Sepp=C3=A4nen?= Date: Thu, 10 Mar 2011 11:53:54 +0200 Subject: [PATCH 3/4] Remove unnecessary command from make.osx The echo was there to comment out a cp command, and things seem to work fine without the cp. --- make.osx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/make.osx b/make.osx index d3c968696207..a564346ab615 100644 --- a/make.osx +++ b/make.osx @@ -71,8 +71,7 @@ png: check-prefix zlib tar xvfz ${PNGFILE} && \ cd ${PNGDIR} &&\ ./configure --disable-dependency-tracking --prefix=${PREFIX} &&\ - ${MAKE} -j3 install&&\ - echo NOT DOING cp .libs/libpng15.a . + ${MAKE} -j3 install freetype: check-prefix zlib rm -rf ${FREETYPEDIR} &&\ From b7efe259fc8cb062b42bb92ed5f2a6bcdbeb2573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jouni=20K=2E=20Sepp=C3=A4nen?= Date: Sat, 26 Mar 2011 22:15:58 +0200 Subject: [PATCH 4/4] Go back to older freetype --- make.osx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.osx b/make.osx index a564346ab615..b9ce9c63cec4 100644 --- a/make.osx +++ b/make.osx @@ -16,7 +16,7 @@ ARCH_FLAGS=-arch i386 -arch x86_64 ZLIBVERSION=1.2.5 PNGVERSION=1.5.1 -FREETYPEVERSION=2.4.4 +FREETYPEVERSION=2.3.11 ZLIBFILE=zlib-${ZLIBVERSION}.tar.gz ZLIBDIR=$(basename $(basename ${ZLIBFILE}))