From b06bf685ea735d2eab01661c255f1ffaca2f0071 Mon Sep 17 00:00:00 2001 From: fgb Date: Tue, 22 Feb 2011 23:29:00 -0800 Subject: [PATCH 1/8] Updated libpng's download link since old one was broken. --- make.osx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.osx b/make.osx index 564b72a9d58f..de70ba5056a0 100644 --- a/make.osx +++ b/make.osx @@ -32,7 +32,7 @@ clean: fetch: ${PYTHON} -c 'import urllib; urllib.urlretrieve("http://superb-sea2.dl.sourceforge.net/project/libpng/zlib/${ZLIBVERSION}/zlib-${ZLIBVERSION}.tar.gz", "zlib-${ZLIBVERSION}.tar.gz")' &&\ - ${PYTHON} -c 'import urllib; urllib.urlretrieve("http://sourceforge.net/projects/libpng/files/libpng-stable/${PNGVERSION}/libpng-${PNGVERSION}.tar.gz/download", "libpng-${PNGVERSION}.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")' From fa54ea93f63606f1d99b483e82580102d2382dd1 Mon Sep 17 00:00:00 2001 From: fgb Date: Tue, 22 Feb 2011 23:37:30 -0800 Subject: [PATCH 2/8] Updated zlibs's download link even though url was still valid. --- make.osx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.osx b/make.osx index de70ba5056a0..b4eb2d74fc62 100644 --- a/make.osx +++ b/make.osx @@ -31,7 +31,7 @@ clean: fetch: - ${PYTHON} -c 'import urllib; urllib.urlretrieve("http://superb-sea2.dl.sourceforge.net/project/libpng/zlib/${ZLIBVERSION}/zlib-${ZLIBVERSION}.tar.gz", "zlib-${ZLIBVERSION}.tar.gz")' &&\ + ${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")' From a82c7dd6c00ada8377e7f8b44ba1a11916a4f7aa Mon Sep 17 00:00:00 2001 From: fgb Date: Tue, 22 Feb 2011 23:45:44 -0800 Subject: [PATCH 3/8] Fixed clean: changed libpng's extension to gz and added some stray files from build process. --- make.osx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/make.osx b/make.osx index b4eb2d74fc62..68cb397ff39b 100644 --- a/make.osx +++ b/make.osx @@ -22,9 +22,10 @@ LDFLAGS="-arch i386 -arch x86_64 -L${PREFIX}/lib -syslibroot,/Developer/SDKs/Mac FFLAGS="-arch i386 -arch x86_64" clean: - rm -rf zlib-${ZLIBVERSION}.tar.gz libpng-${PNGVERSION}.tar.bz2 \ + rm -rf zlib-${ZLIBVERSION}.tar.gz libpng-${PNGVERSION}.tar.gz \ freetype-${FREETYPEVERSION}.tar.bz2 bdist_mpkg-${BDISTMPKGVERSION}.tar.gz \ - bdist_mpkg-${BDISTMPKGVERSION} \ + bdist_mpkg-${BDISTMPKGVERSION} setupext.pyc \ + lib/matplotlib/mpl-data/matplotlib.conf lib/matplotlib/mpl-data/matplotlibrc \ zlib-${ZLIBVERSION} libpng-${PNGVERSION} freetype-${FREETYPEVERSION} \ build From ce1b43e45be092771eeee2345073178b19dbbf42 Mon Sep 17 00:00:00 2001 From: fgb Date: Tue, 22 Feb 2011 23:48:31 -0800 Subject: [PATCH 4/8] Suggesting PYVERSION be input in the command line Although a hard-coded PYVERSION=2.6 is safe for snow leopard, it might make more sense to leave it blank, defaulting to the 'python' command that takes precedence in the PATH. Also, suggesting in the documentation that it can be included in the command line might prompt users to choose the right version without having to edit the makefile. --- README.osx | 2 +- make.osx | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/README.osx b/README.osx index b0f4ad45838b..226718b51744 100644 --- a/README.osx +++ b/README.osx @@ -9,5 +9,5 @@ lib, png or freetype on your system Example usage:: - PREFIX=/Users/jdhunter/dev make -f make.osx fetch deps mpl_install + PREFIX=/Users/jdhunter/dev [PYVERSION=2.6] make -f make.osx fetch deps mpl_install diff --git a/make.osx b/make.osx index 68cb397ff39b..b1a4df39ee4c 100644 --- a/make.osx +++ b/make.osx @@ -1,7 +1,6 @@ # build mpl into a local install dir with -# PREFIX=/Users/jdhunter/dev make -f make.osx fetch deps mpl_install +# PREFIX=/Users/jdhunter/dev [PYVERSION=2.6] make -f make.osx fetch deps mpl_install -PYVERSION=2.6 PYTHON=python${PYVERSION} ZLIBVERSION=1.2.3 PNGVERSION=1.2.39 From 1d7797c1da5f38278aa50ffb0a2295f404a383c1 Mon Sep 17 00:00:00 2001 From: fgb Date: Tue, 22 Feb 2011 23:52:58 -0800 Subject: [PATCH 5/8] Removed the PREFIX from mpl_install in order to install into relevant site-packages. --- make.osx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/make.osx b/make.osx index b1a4df39ee4c..b78abece692c 100644 --- a/make.osx +++ b/make.osx @@ -93,7 +93,7 @@ mpl_install: export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} &&\ export CFLAGS=${CFLAGS} &&\ export LDFLAGS=${LDFLAGS} &&\ - ${PYTHON} setup.py install --prefix=${PREFIX} + ${PYTHON} setup.py install binaries: From b08acaea6cd40e7f6fc1e680374d1e7864de020c Mon Sep 17 00:00:00 2001 From: fgb Date: Mon, 28 Feb 2011 16:34:08 -0800 Subject: [PATCH 6/8] Improved README.osx as suggested by jkseppan. --- README.osx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/README.osx b/README.osx index 226718b51744..7b5b9ea4f535 100644 --- a/README.osx +++ b/README.osx @@ -2,12 +2,18 @@ Build mpl on OSX has proven to be a nightmare because of all the different types of zlib, png and freetype that may be on your system. The recommended and supported way to build is to use the make.osx file in this directory. This script requires you to set a PREFIX -environment variable where you want to the install to go. It will -fetch the dependencies from a remove server and install them into your +environment variable where you want the install to go. It will +fetch the dependencies from a remote server and install them into your PREFIX dir, and then build mpl against them. It should ignore any lib, png or freetype on your system Example usage:: - PREFIX=/Users/jdhunter/dev [PYVERSION=2.6] make -f make.osx fetch deps mpl_install + make -f make.osx PREFIX=/Users/jdhunter/dev PYVERSION=2.6 fetch deps mpl_install + +Variables: + PREFIX (required): where to install the dependencies + PYVERSION (optional): which python version to use (default=python, e.g.=python2.6) + +The Python libraries will be installed in the relevant site-packages, instead of under PREFIX. From aac96d1f9644d53731dae51bb160b0db16af949f Mon Sep 17 00:00:00 2001 From: fgb Date: Mon, 28 Feb 2011 16:49:15 -0800 Subject: [PATCH 7/8] Updated example usage, adding a README reference. --- make.osx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/make.osx b/make.osx index b78abece692c..6759129cc5db 100644 --- a/make.osx +++ b/make.osx @@ -1,5 +1,6 @@ # build mpl into a local install dir with -# PREFIX=/Users/jdhunter/dev [PYVERSION=2.6] make -f make.osx fetch deps mpl_install +# make -f make.osx PREFIX=/Users/jdhunter/dev PYVERSION=2.6 fetch deps mpl_install +# (see README.osx for more details) PYTHON=python${PYVERSION} ZLIBVERSION=1.2.3 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 8/8] 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 &&\