#!/bin/sh -x # Usage: Run ./buildWin.sh from the packaging directory. # Set up path variables echo $PATH | grep "Qt/[0-9]*\.[0-9]*\.[0-9]*/bin" if [ "$?" != "0" ]; then export PATH=$PATH:/c/Qt/4.3.5/bin fi cd .. TOP_LEVEL=`pwd` DIST_ROOT=$TOP_LEVEL/cad/src/dist DIST_CONTENTS=$DIST_ROOT VERSION_NUM="1.1.1" RC_NUMBER="0" MAJOR=`echo $VERSION_NUM | cut -d "." -f 1` MINOR=`echo $VERSION_NUM | cut -d "." -f 2` TINY=`echo $VERSION_NUM | cut -d "." -f 3` # Do a basic check on the directory structure if [ ! -e "$TOP_LEVEL/cad/src" ]; then echo "Incompatible directory structure." exit 1 fi cat packaging/Win32/installer.nsi | sed -e "s:^!define PRODUCT_VERSION .*:!define PRODUCT_VERSION \\\"$VERSION_NUM\\\":" > packaging/Win32/installer.nsi.btmp mv packaging/Win32/installer.nsi.btmp packaging/Win32/installer.nsi || exit 1 cd $TOP_LEVEL DATECODE=`date "+%B %d, %Y"` # Make modifications to the build constants file cat cad/src/NE1_Build_Constants.py | sed -e "s:NE1_RELEASE_VERSION = \\\".*\\\":NE1_RELEASE_VERSION = \\\"$VERSION_NUM\\\":" > cad/src/NE1_Build_Constants.ptmp mv cad/src/NE1_Build_Constants.ptmp cad/src/NE1_Build_Constants.py || exit 1 cat cad/src/NE1_Build_Constants.py | sed -e "s:NE1_RELEASE_DATE = \\\".*\\\":NE1_RELEASE_DATE = \\\"$DATECODE\\\":" > cad/src/NE1_Build_Constants.ptmp mv cad/src/NE1_Build_Constants.ptmp cad/src/NE1_Build_Constants.py || exit 1 cat cad/src/NE1_Build_Constants.py | sed -e "s:NE1_USE_bsddb3 = .*:NE1_USE_bsddb3 = True:" > cad/src/NE1_Build_Constants.ptmp mv cad/src/NE1_Build_Constants.ptmp cad/src/NE1_Build_Constants.py || exit 1 cat cad/src/NE1_Build_Constants.py | sed -e "s:NE1_OFFICIAL_RELEASE_CANDIDATE = .*:NE1_OFFICIAL_RELEASE_CANDIDATE = $RC_NUMBER:" > cad/src/NE1_Build_Constants.ptmp mv cad/src/NE1_Build_Constants.ptmp cad/src/NE1_Build_Constants.py || exit 1 #Remove the build directories cd $TOP_LEVEL/cad/src rm -rf dist build cd $TOP_LEVEL #Make a tarball of the uncompiled source for later. tar -cz --exclude "*src/experimental*" -X packaging/Win32/exclude_files.txt -f /c/NE1_source.tar.gz * # Modify the main.py file to find the pyopengl egg file for Win cat cad/src/main.py | grep "sys.path.insert" | grep "pyopengl" if [ "$?" != "0" ]; then cat cad/src/main.py | sed -e "/import sys, os, time/a\\ sys.path.insert(0, os.path.dirname(sys.argv[0]) + \'\\\\\\\\pyopengl-3.0.0a6-py2.4.egg\')" > cad/src/main.py.btmp mv cad/src/main.py.btmp cad/src/main.py || exit 1 fi # Start with the main build # Build the base .exe and directory contents cd $TOP_LEVEL/cad/src cp $TOP_LEVEL/packaging/Win32/setup.py . c:/python24/python setup.py py2exe --includes=sip,pkg_resources --packages=ctypes --excludes=OpenGL -d dist/program || exit 1 cp c:/python24/Lib/site-packages/PyOpenGL-3.0.0a6-py2.4.egg dist/program/ cd $TOP_LEVEL mkdir $DIST_CONTENTS/bin # Build and copy NanoDynamics-1 cd $TOP_LEVEL/sim/src #cp $TOP_LEVEL/packaging/Win32/ND1-Makefile ./Makefile make clean || exit 1 make sim.dll || exit 1 #make pyx || exit 1 #cp simulator.exe $DIST_CONTENTS/bin/ #if [ ! -e "$DIST_CONTENTS/bin/simulator.exe" ]; then exit; fi cp sim.dll $DIST_CONTENTS/bin/ if [ ! -e "$DIST_CONTENTS/bin/sim.dll" ]; then exit; fi # Build/copy the shared DLLs cd $TOP_LEVEL/cad/src STORED_PATH=$PYTHONPATH PYTHONPATH=/c/Python24/Lib export PYTHONPATH make shared || exit 1 cp atombase.dll $DIST_CONTENTS/bin/ cp samevals.dll $DIST_CONTENTS/bin/ PYTHONPATH=$STORED_PATH cd $TOP_LEVEL # Copy the gnuplot binary cp c:/gnuplot/bin/wgnuplot.exe $DIST_CONTENTS/bin/ if [ ! -e "$DIST_CONTENTS/bin/wgnuplot.exe" ]; then exit; fi # Copy the OpenBabel binaries unzip $TOP_LEVEL/packaging/Win32/OpenBabel.MMP.win32.zip -d $DIST_CONTENTS/bin cd $DIST_CONTENTS/bin #tar -xzvf $TOP_LEVEL/packaging/Win32/OpenBabel.MMP.win32.tgz cd $TOP_LEVEL #cp $TOP_LEVEL/packaging/Win32/openbabel/* $DIST_CONTENTS/bin # Copy the doc/ files mkdir $DIST_CONTENTS/doc cp cad/doc/keyboardshortcuts.htm $DIST_CONTENTS/doc/ cp cad/doc/mousecontrols.htm $DIST_CONTENTS/doc/ # Copy partlib tree to a user-visible location and make a symbolic link to it # for NE1 to use. cp -R $TOP_LEVEL/cad/partlib $DIST_ROOT/ # Copy images DIST_IMAGES_DIR=$DIST_ROOT/src/ui/ mkdir -p $DIST_IMAGES_DIR/actions #cp -R cad/src/ui/actions/Edit $DIST_IMAGES_DIR/actions/ #cp -R cad/src/ui/actions/File $DIST_IMAGES_DIR/actions/ #cp -R cad/src/ui/actions/Help $DIST_IMAGES_DIR/actions/ #cp -R cad/src/ui/actions/Insert $DIST_IMAGES_DIR/actions/ #cp -R cad/src/ui/actions/Properties\ Manager $DIST_IMAGES_DIR/actions/ #cp -R cad/src/ui/actions/Simulation $DIST_IMAGES_DIR/actions/ #cp -R cad/src/ui/actions/Toolbars $DIST_IMAGES_DIR/actions/ #cp -R cad/src/ui/actions/Tools $DIST_IMAGES_DIR/actions/ #cp -R cad/src/ui/actions/View $DIST_IMAGES_DIR/actions/ #cp -R cad/src/ui/actions/Command\ Toolbar $DIST_IMAGES_DIR/actions/ #cp -R cad/src/ui/border $DIST_IMAGES_DIR #cp -R cad/src/ui/confcorner $DIST_IMAGES_DIR #cp -R cad/src/ui/cursors $DIST_IMAGES_DIR #cp -R cad/src/ui/dialogs $DIST_IMAGES_DIR #cp -R cad/src/ui/exprs $DIST_IMAGES_DIR #cp -R cad/src/ui/images $DIST_IMAGES_DIR #cp -R cad/src/ui/modeltree $DIST_IMAGES_DIR cp -R cad/src/ui/* $DIST_IMAGES_DIR cd $TOP_LEVEL # Copy the ReadeMe.html file and Licenses/ files cp $TOP_LEVEL/cad/src/ReadMe.html $DIST_ROOT/ mkdir $DIST_ROOT/Licenses cp $TOP_LEVEL/cad/src/LICENSE $DIST_ROOT/Licenses/NanoEngineer-1_License.txt cp $TOP_LEVEL/cad/licenses-common/Gnuplot_License $DIST_ROOT/Licenses/Gnuplot_License.txt cp $TOP_LEVEL/cad/licenses-common/NanoKids_Attribution $DIST_ROOT/Licenses/NanoKids_Attribution.txt cp $TOP_LEVEL/cad/licenses-common/OpenGL_License.doc $DIST_ROOT/Licenses/ cp $TOP_LEVEL/cad/licenses-common/OpenGL_LicenseOverview $DIST_ROOT/Licenses/OpenGL_LicenseOverview.txt cp $TOP_LEVEL/cad/licenses-common/PyOpenGL_License $DIST_ROOT/Licenses/PyOpenGL_License.txt cp $TOP_LEVEL/cad/licenses-common/Python_License $DIST_ROOT/Licenses/Python_License.txt cp $TOP_LEVEL/cad/licenses-Mac/PyQt_License $DIST_ROOT/Licenses/PyQt_License.txt cp $TOP_LEVEL/cad/licenses-Mac/Qt_License $DIST_ROOT/Licenses/Qt_License.txt cp $TOP_LEVEL/packaging/MacOSX/ctypes_License.txt $DIST_ROOT/Licenses/ cp $TOP_LEVEL/packaging/MacOSX/numarray_License.txt $DIST_ROOT/Licenses/ cp $TOP_LEVEL/packaging/MacOSX/NumPy_License.txt $DIST_ROOT/Licenses/ cp $TOP_LEVEL/packaging/MacOSX/PythonImagingLibrary_License.txt $DIST_ROOT/Licenses/ cp $TOP_LEVEL/packaging/MacOSX/OracleBerkeleyDB_License.txt $DIST_ROOT/Licenses/ cp $TOP_LEVEL/packaging/MacOSX/bsddb3_License.txt $DIST_ROOT/Licenses/ cp $TOP_LEVEL/packaging/MacOSX/OpenBabel_License.txt $DIST_ROOT/Licenses/ # Plugins # mkdir $DIST_CONTENTS/plugins # Copy the Nanotube plugins directory cp -r $TOP_LEVEL/cad/plugins/Nanotube $DIST_CONTENTS/plugins/ # Build and copy the CoNTub plugin #cd $TOP_LEVEL/cad/plugins/CoNTub #make #cp -R ../CoNTub $DIST_CONTENTS/plugins/ #if [ ! -e "$DIST_CONTENTS/plugins/CoNTub/bin/HJ" ]; then exit; fi #cd $TOP_LEVEL # Copy the DNA plugin files cp -R $TOP_LEVEL/cad/plugins/DNA $DIST_CONTENTS/plugins/ cp -R $TOP_LEVEL/cad/plugins/NanoDynamics-1 $DIST_CONTENTS/plugins/ mkdir $DIST_CONTENTS/plugins/GROMACS cp -R $TOP_LEVEL/cad/plugins/GROMACS/Pam5Potential.xvg $DIST_CONTENTS/plugins/GROMACS/ cp $TOP_LEVEL/cad/plugins/GROMACS/mdrunner.bat $DIST_CONTENTS/plugins/GROMACS/ cd $TOP_LEVEL # # End Plugins # Remove cruft rm -rf `find $DIST_ROOT -name CVS` rm -rf $DIST_ROOT/partlib/*/CVS rm -rf $DIST_ROOT/partlib/*/*/CVS # experimental addin to get rid of .svn directories rm -rf `find $DIST_ROOT -name .svn` rm -rf $DIST_ROOT/partlib/*/.svn rm -rf $DIST_ROOT/partlib/*/*/.svn rm -rf $DIST_ROOT/src/ui/*/*/.svn mkdir $DIST_ROOT/source cd $DIST_ROOT/source tar -xzf /c/NE1_source.tar.gz #rm /c/NE1_source.tar.gz cd $TOP_LEVEL # Create the installer "c:/program files/nsis/makensis.exe" packaging/Win32/installer.nsi