chiark / gitweb /
Updated build script so it works for osx. (Thanks bbum!)
authordaid <daid303@gmail.com>
Mon, 13 Feb 2012 10:33:38 +0000 (11:33 +0100)
committerdaid <daid303@gmail.com>
Mon, 13 Feb 2012 10:33:38 +0000 (11:33 +0100)
Added osx pronterface start script (Thanks bbum!)
General update to the build script so it's easier to use.

build.sh
scripts/linux/pronterface.sh [new file with mode: 0644]
scripts/osx64/pronterface.sh [new file with mode: 0644]
scripts/win32/printrun.bat [new file with mode: 0644]
scripts/win32/skeinforge.bat [new file with mode: 0644]

index ea124c5c6748fe3397b3066de555b8613572f855..2ccd7a1ee010755a3a7ee908eedbb2b413c921fc 100755 (executable)
--- 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 (file)
index 0000000..68d3c0d
--- /dev/null
@@ -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 (file)
index 0000000..9300594
--- /dev/null
@@ -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 (file)
index 0000000..e174179
--- /dev/null
@@ -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 (file)
index 0000000..19b9e46
--- /dev/null
@@ -0,0 +1,2 @@
+@python\python.exe SkeinPyPy\skeinforge_application\skeinforge.py
+