2012-02-13 10:33:38 +00:00
|
|
|
#!/bin/bash
|
2011-12-13 14:45:38 +00:00
|
|
|
|
2012-02-22 17:44:14 +00:00
|
|
|
# This script is to build the SkeinPyPy package for Windows/Linux and OSx
|
|
|
|
# This script should run under Linux and OSx, as well as Windows with Cygwin.
|
|
|
|
|
2012-02-10 16:20:03 +00:00
|
|
|
#############################
|
|
|
|
# CONFIGURATION
|
|
|
|
#############################
|
|
|
|
|
2012-02-13 10:33:38 +00:00
|
|
|
|
|
|
|
##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
|
2012-02-27 16:29:14 +00:00
|
|
|
BUILD_NAME=NewUI-Beta2
|
2012-02-13 10:33:38 +00:00
|
|
|
TARGET_DIR=${BUILD_TARGET}-SkeinPyPy-${BUILD_NAME}
|
|
|
|
|
|
|
|
##Which versions of external programs to use
|
2012-02-10 16:20:03 +00:00
|
|
|
PYPY_VERSION=1.8
|
|
|
|
WIN_PORTABLE_PY_VERSION=2.7.2.1
|
|
|
|
WIN_PYSERIAL_VERSION=2.5
|
2012-02-13 10:33:38 +00:00
|
|
|
|
|
|
|
#############################
|
|
|
|
# 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
|
|
|
|
}
|
2012-02-10 16:20:03 +00:00
|
|
|
|
|
|
|
#############################
|
|
|
|
# Actual build script
|
|
|
|
#############################
|
|
|
|
|
2012-02-13 10:33:38 +00:00
|
|
|
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
|
2011-12-15 09:22:34 +00:00
|
|
|
fi
|
|
|
|
|
2012-02-10 16:20:03 +00:00
|
|
|
#############################
|
|
|
|
# Download all needed files.
|
|
|
|
#############################
|
|
|
|
|
2012-02-13 10:33:38 +00:00
|
|
|
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
|
2012-02-26 14:37:29 +00:00
|
|
|
if [ ! -f PyOpenGL-3.0.1.win32.exe ]; then
|
|
|
|
curl -L -O http://sourceforge.net/projects/pyopengl/files/PyOpenGL/3.0.1/PyOpenGL-3.0.1.win32.exe
|
|
|
|
fi
|
2012-02-13 10:33:38 +00:00
|
|
|
#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
|
2011-12-13 14:45:38 +00:00
|
|
|
fi
|
2012-02-13 10:33:38 +00:00
|
|
|
|
2012-02-10 16:20:03 +00:00
|
|
|
#Get our own version of Printrun
|
2012-01-10 16:34:05 +00:00
|
|
|
rm -rf Printrun
|
|
|
|
git clone git://github.com/daid/Printrun.git
|
|
|
|
rm -rf Printrun/.git
|
|
|
|
|
2012-02-10 16:20:03 +00:00
|
|
|
#############################
|
|
|
|
# Build the packages
|
|
|
|
#############################
|
2012-02-13 10:33:38 +00:00
|
|
|
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
|
2012-02-26 14:37:29 +00:00
|
|
|
7z x PyOpenGL-3.0.1.win32.exe PURELIB
|
2012-02-13 10:33:38 +00:00
|
|
|
|
|
|
|
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
|
2012-02-26 14:37:29 +00:00
|
|
|
mv PURELIB/OpenGL ${TARGET_DIR}/python/Lib
|
2012-02-13 10:33:38 +00:00
|
|
|
rm -rf \$_OUTDIR
|
|
|
|
rm -rf PURELIB
|
2012-02-22 17:44:14 +00:00
|
|
|
|
|
|
|
#Clean up portable python a bit, to keep the package size down.
|
|
|
|
rm -rf ${TARGET_DIR}/python/PyScripter.*
|
|
|
|
rm -rf ${TARGET_DIR}/python/Doc
|
|
|
|
rm -rf ${TARGET_DIR}/python/locale
|
|
|
|
#rm -rf ${TARGET_DIR}/python/tcl
|
|
|
|
rm -rf ${TARGET_DIR}/python/Lib/test
|
|
|
|
rm -rf ${TARGET_DIR}/python/Lib/distutils
|
|
|
|
rm -rf ${TARGET_DIR}/python/Lib/site-packages/wx-2.8-msw-unicode/wx/tools
|
|
|
|
rm -rf ${TARGET_DIR}/python/Lib/site-packages/wx-2.8-msw-unicode/wx/locale
|
2012-02-13 10:33:38 +00:00
|
|
|
fi
|
2012-02-10 16:20:03 +00:00
|
|
|
|
|
|
|
#Extract pypy
|
2012-02-13 10:33:38 +00:00
|
|
|
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
|
2012-02-22 17:44:14 +00:00
|
|
|
#Cleanup pypy
|
|
|
|
rm -rf ${TARGET_DIR}/pypy/lib-python/2.7/test
|
2012-02-10 16:20:03 +00:00
|
|
|
|
|
|
|
#add Skeinforge
|
2012-02-26 14:37:29 +00:00
|
|
|
cp -a SkeinPyPy_NewUI ${TARGET_DIR}/SkeinPyPy
|
2012-02-10 16:20:03 +00:00
|
|
|
|
2012-02-22 17:44:14 +00:00
|
|
|
#Add the SSE2 check if we can build it, else we skip it.
|
|
|
|
# If we don't have it SkeinPyPy will still function. But crash on machines that don't have SSE2
|
2012-02-22 14:58:22 +00:00
|
|
|
if [ $BUILD_TARGET = "win32" ]; then
|
|
|
|
WINCC=`whereis i386-mingw32-gcc`
|
|
|
|
if [ "$WINCC" != "" ]; then
|
|
|
|
make -C checkSSE2 CC=${WINCC} TARGET=checkSSE2.exe
|
|
|
|
cp checkSSE2/checkSSE2.exe ${TARGET_DIR}/SkeinPyPy
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2012-02-10 16:20:03 +00:00
|
|
|
#add printrun
|
2012-02-13 10:33:38 +00:00
|
|
|
mv Printrun ${TARGET_DIR}/Printrun
|
2012-02-10 16:20:03 +00:00
|
|
|
|
2012-02-13 10:33:38 +00:00
|
|
|
#add script files
|
|
|
|
cp -a scripts/${BUILD_TARGET}/* $TARGET_DIR/
|
2012-02-10 16:20:03 +00:00
|
|
|
|
|
|
|
#add readme file
|
2012-02-13 10:33:38 +00:00
|
|
|
cp README ${TARGET_DIR}/README.txt
|
2012-02-10 16:20:03 +00:00
|
|
|
|
|
|
|
#package the result
|
2012-02-13 10:33:38 +00:00
|
|
|
if (( ${ARCHIVE_FOR_DISTRIBUTION} )); then
|
|
|
|
if [ $BUILD_TARGET = "win32" ]; then
|
2012-02-22 17:44:14 +00:00
|
|
|
rm ${TARGET_DIR}.zip
|
2012-02-13 10:33:38 +00:00
|
|
|
cd ${TARGET_DIR}
|
2012-02-15 12:53:12 +00:00
|
|
|
7z a ../${TARGET_DIR}.zip *
|
2012-02-13 10:33:38 +00:00
|
|
|
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
|
2011-12-13 15:41:02 +00:00
|
|
|
|