From: daid Date: Mon, 13 Feb 2012 10:33:38 +0000 (+0100) Subject: Updated build script so it works for osx. (Thanks bbum!) X-Git-Tag: RC1~173^2~7 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=559f855ef0fc8d11d4c04efabadce005b148f5db;p=cura.git Updated build script so it works for osx. (Thanks bbum!) Added osx pronterface start script (Thanks bbum!) General update to the build script so it's easier to use. --- diff --git a/build.sh b/build.sh index ea124c5c..2ccd7a1e 100755 --- a/build.sh +++ b/build.sh @@ -1,47 +1,78 @@ -#!/bin/sh +#!/bin/bash ############################# # CONFIGURATION ############################# + +##Select the build target +BUILD_TARGET=win32 +#BUILD_TARGET=linux +#BUILD_TARGET=osx64 + +##Do we need to create the final archive +ARCHIVE_FOR_DISTRIBUTION=1 +##Which version name are we appending to the final archive +BUILD_NAME=Alpha4 +TARGET_DIR=${BUILD_TARGET}-SkeinPyPy-${BUILD_NAME} + +##Which versions of external programs to use PYPY_VERSION=1.8 WIN_PORTABLE_PY_VERSION=2.7.2.1 WIN_PYSERIAL_VERSION=2.5 -BUILD_NAME=Alpha4 + +############################# +# Support functions +############################# +function checkTool +{ + if [ -z `which $1` ]; then + echo "The $1 command must be somewhere in your \$PATH." + echo "Fix your \$PATH or install $2" + exit 1 + fi +} ############################# # Actual build script ############################# -#Check if we have 7zip, needed to extract and packup a bunch of packages. -7z > /dev/null 2>&1 -if [ $? != 0 ]; then - echo $0 requires 7zip to run. - exit 1 +checkTool git "git: http://git-scm.com/" +checkTool curl "curl: http://curl.haxx.se/" +if [ $BUILD_TARGET = "win32" ]; then + #Check if we have 7zip, needed to extract and packup a bunch of packages for windows. + checkTool 7z "7zip: http://www.7-zip.org/" +fi +#For building under MacOS we need gnutar instead of tar +if [ -z `which gnutar` ]; then + TAR=tar +else + TAR=gnutar fi ############################# # Download all needed files. ############################# -#Get portable python for windows and extract it. (Linux and Mac need to install python themselfs) -if [ ! -f "PortablePython_${WIN_PORTABLE_PY_VERSION}.exe" ]; then - wget http://ftp.nluug.nl/languages/python/portablepython/v2.7/PortablePython_${WIN_PORTABLE_PY_VERSION}.exe -fi -if [ ! -f pyserial-${WIN_PYSERIAL_VERSION}.exe ]; then - wget http://sourceforge.net/projects/pyserial/files/pyserial/${WIN_PYSERIAL_VERSION}/pyserial-${WIN_PYSERIAL_VERSION}.win32.exe/download - mv download pyserial-${WIN_PYSERIAL_VERSION}.exe -fi -#Get pypy -if [ ! -f "pypy-${PYPY_VERSION}-win32.zip" ]; then - wget https://bitbucket.org/pypy/pypy/downloads/pypy-${PYPY_VERSION}-win32.zip -fi -if [ ! -f "pypy-${PYPY_VERSION}-linux.tar.bz2" ]; then - wget https://bitbucket.org/pypy/pypy/downloads/pypy-${PYPY_VERSION}-linux.tar.bz2 -fi -if [ ! -f "pypy-${PYPY_VERSION}-osx64.tar.bz2" ]; then - wget https://bitbucket.org/pypy/pypy/downloads/pypy-${PYPY_VERSION}-osx64.tar.bz2 +if [ $BUILD_TARGET = "win32" ]; then + #Get portable python for windows and extract it. (Linux and Mac need to install python themselfs) + if [ ! -f "PortablePython_${WIN_PORTABLE_PY_VERSION}.exe" ]; then + curl -L -O http://ftp.nluug.nl/languages/python/portablepython/v2.7/PortablePython_${WIN_PORTABLE_PY_VERSION}.exe + fi + if [ ! -f pyserial-${WIN_PYSERIAL_VERSION}.exe ]; then + curl -L -O http://sourceforge.net/projects/pyserial/files/pyserial/${WIN_PYSERIAL_VERSION}/pyserial-${WIN_PYSERIAL_VERSION}.win32.exe/download + mv download pyserial-${WIN_PYSERIAL_VERSION}.exe + fi + #Get pypy + if [ ! -f "pypy-${PYPY_VERSION}-win32.zip" ]; then + curl -L -O https://bitbucket.org/pypy/pypy/downloads/pypy-${PYPY_VERSION}-win32.zip + fi +else + if [ ! -f "pypy-${PYPY_VERSION}-${BUILD_TARGET}.tar.bz2" ]; then + curl -L -O https://bitbucket.org/pypy/pypy/downloads/pypy-${PYPY_VERSION}-${BUILD_TARGET}.tar.bz2 + fi fi + #Get our own version of Printrun rm -rf Printrun git clone git://github.com/daid/Printrun.git @@ -50,55 +81,55 @@ rm -rf Printrun/.git ############################# # Build the packages ############################# -rm -rf target_win32 target_linux target_osx64 -mkdir -p target_win32 target_linux target_osx64 - -7z x PortablePython_${WIN_PORTABLE_PY_VERSION}.exe \$_OUTDIR/App -7z x PortablePython_${WIN_PORTABLE_PY_VERSION}.exe \$_OUTDIR/Lib/site-packages -7z x pyserial-${WIN_PYSERIAL_VERSION}.exe PURELIB - -mkdir -p target_win32/python -mv \$_OUTDIR/App/* target_win32/python -mv \$_OUTDIR/Lib/site-packages/wx* target_win32/python/Lib/site-packages/ -mv PURELIB/serial target_win32/python/Lib -rm -rf \$_OUTDIR -rm -rf PURELIB +rm -rf ${TARGET_DIR} +mkdir -p ${TARGET_DIR} + +if [ $BUILD_TARGET = "win32" ]; then + #For windows extract portable python to include it. + 7z x PortablePython_${WIN_PORTABLE_PY_VERSION}.exe \$_OUTDIR/App + 7z x PortablePython_${WIN_PORTABLE_PY_VERSION}.exe \$_OUTDIR/Lib/site-packages + 7z x pyserial-${WIN_PYSERIAL_VERSION}.exe PURELIB + + mkdir -p ${TARGET_DIR}/python + mv \$_OUTDIR/App/* ${TARGET_DIR}/python + mv \$_OUTDIR/Lib/site-packages/wx* ${TARGET_DIR}/python/Lib/site-packages/ + mv PURELIB/serial ${TARGET_DIR}/python/Lib + rm -rf \$_OUTDIR + rm -rf PURELIB +fi #Extract pypy -7z x pypy-${PYPY_VERSION}-win32.zip -otarget_win32 -mv target_win32/pypy-${PYPY_VERSION} target_win32/pypy -cd target_linux; tar -xjf ../pypy-${PYPY_VERSION}-linux.tar.bz2; cd .. -mv target_linux/pypy-${PYPY_VERSION} target_linux/pypy -cd target_osx64; tar -xjf ../pypy-${PYPY_VERSION}-osx64.tar.bz2; cd .. -mv target_linux/pypy-${PYPY_VERSION} target_osx64/pypy +if [ $BUILD_TARGET = "win32" ]; then + 7z x pypy-${PYPY_VERSION}-win32.zip -o${TARGET_DIR} + mv ${TARGET_DIR}/pypy-${PYPY_VERSION} ${TARGET_DIR}/pypy +else + cd ${TARGET_DIR}; $TAR -xjf ../pypy-${PYPY_VERSION}-${BUILD_TARGET}.tar.bz2; cd .. + mv ${TARGET_DIR}/pypy-${PYPY_VERSION} ${TARGET_DIR}/pypy +fi #add Skeinforge -cp -a SkeinPyPy target_win32/SkeinPyPy -cp -a SkeinPyPy target_linux/SkeinPyPy -cp -a SkeinPyPy target_osx64/SkeinPyPy +cp -a SkeinPyPy ${TARGET_DIR}/SkeinPyPy #add printrun -cp -a Printrun target_win32/Printrun -cp -a Printrun target_linux/Printrun -cp -a Printrun target_osx64/Printrun +mv Printrun ${TARGET_DIR}/Printrun -#add windows batch files -echo "python\\python.exe SkeinPyPy\\skeinforge_application\\skeinforge.py" > target_win32/skeinforge.bat -echo "python\\python.exe printrun\\pronterface.py" > target_win32/printrun.bat +#add script files +cp -a scripts/${BUILD_TARGET}/* $TARGET_DIR/ #add readme file -cp README target_win32/README.txt -cp README target_linux/README.txt -cp README target_osx64/README.txt +cp README ${TARGET_DIR}/README.txt #package the result -cd target_win32 -7z a ../SkeinPyPy_Win32_${BUILD_NAME}.zip * -cd .. -cd target_linux -7z a ../SkeinPyPy_Linux_${BUILD_NAME}.zip * -cd .. -cd target_osx64 -7z a ../SkeinPyPy_MacOSX_${BUILD_NAME}.zip * -cd .. +if (( ${ARCHIVE_FOR_DISTRIBUTION} )); then + if [ $BUILD_TARGET = "win32" ]; then + cd ${TARGET_DIR} + 7z a ../SkeinPyPy_${BUILD_TARGET}_${BUILD_NAME}.zip * + cd .. + else + echo "Archiving to ${TARGET_DIR}.tar.gz" + $TAR cfp - ${TARGET_DIR} | gzip --best -c > ${TARGET_DIR}.tar.gz + fi +else + echo "Installed into ${TARGET_DIR}" +fi diff --git a/scripts/linux/pronterface.sh b/scripts/linux/pronterface.sh new file mode 100644 index 00000000..68d3c0d0 --- /dev/null +++ b/scripts/linux/pronterface.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +python -c 'import wx' +if [ $? != 0 ]; then + echo "Requires wx python." + exit 1 +fi + +python -c 'import serial' +if [ $? != 0 ]; then + echo "Requires pyserial." + exit 1 +fi + +SCRIPT_DIR=`dirname $0` +python ${SCRIPT_DIR}/Printrun/pronterface.py + diff --git a/scripts/osx64/pronterface.sh b/scripts/osx64/pronterface.sh new file mode 100644 index 00000000..93005942 --- /dev/null +++ b/scripts/osx64/pronterface.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +arch -arch i386 python2.7 -c 'import wx' +if [ $? != 0 ]; then + echo "Requires wx. Download and install from:" + echo " http://www.wxpython.org/download.php" + exit 1 +fi + +python2.7 -c 'import serial' +if [ $? != 0 ]; then + echo "Requires pyserial." + echo " sudo easy_install-2.7 pyserial" + exit 1 +fi + +SCRIPT_DIR=`dirname $0` +arch -arch i386 python2.7 ${SCRIPT_DIR}/Printrun/pronterface.py + diff --git a/scripts/win32/printrun.bat b/scripts/win32/printrun.bat new file mode 100644 index 00000000..e1741793 --- /dev/null +++ b/scripts/win32/printrun.bat @@ -0,0 +1 @@ +@python\python.exe printrun\pronterface.py diff --git a/scripts/win32/skeinforge.bat b/scripts/win32/skeinforge.bat new file mode 100644 index 00000000..19b9e466 --- /dev/null +++ b/scripts/win32/skeinforge.bat @@ -0,0 +1,2 @@ +@python\python.exe SkeinPyPy\skeinforge_application\skeinforge.py +