Commit a94197f3 authored by eric pellegrini's avatar eric pellegrini

Reintroduced some files necessary for windows build

parent 1af35083
This is the MDANSE changes log file.
This diff is collapsed.
@ECHO OFF
:: set white on gray background
COLOR B
:: set the title of the nMOLDYN shell
TITLE MDANSE command shell
:: append python path to the PATH
SET PATH="%~dp0";%PATH%
:: get rid of any third-party program that may alter the PYTHONHOME and PYTHONPATH
SET PYTHONHOME=
SET PYTHONPATH=
!include "MUI.nsh"
!include "x64.nsh"
!include "LogicLib.nsh"
!ifndef ARCH
!error "No architecture defined (win32 or win-amd64)"
!endif
!ifndef VERSION
!define VERSION 'DEV'
!endif
!ifndef REVISION
!define REVISION '???'
!endif
; The name of the installer
Name "MDANSE ${VERSION}"
; The name of the installer file to write
OutFile "MDANSE_${VERSION}_${ARCH}.exe"
RequestExecutionLevel admin #NOTE: You still need to check user rights with UserInfo!
; The default installation directory
InstallDir "$PROGRAMFILES\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}"
; Registry key to check for directory (so if you install again, it will overwrite the old one automatically)
InstallDirRegKey HKLM "Software\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}" "Install_Dir"
; Will show the details of installation
ShowInstDetails show
; Will show the details of uninstallation
ShowUnInstDetails show
!define PUBLISHER "Institut Laue-Langevin"
!define WEB_SITE "https://github.com/eurydyce/MDANSE"
!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\MDANSE_${VERSION}_${ARCH}"
!define UNINST_ROOT_KEY "HKLM"
!define ICONS_DIR $INSTDIR\icons
; Prompt the user in case he wants to cancel the installation
!define MUI_ABORTWARNING
; define the icon for the installer file and the installer 'bandeau'
!define MUI_ICON "icons\MDANSE.ico"
!define MUI_UNICON "icons\MDANSE_uninstall.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "icons\MDANSE_resized.bmp"
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "icons\MDANSE_uninstall_resized.bmp"
!define WEB_ICON "icons\website.ico"
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of \
MDANSE release ${VERSION} (Rev ${REVISION}).\
\n\nMDANSE (Molecular Dynamics ANalysis for Neutron Scattering Experiments) is an program for the analysis of Molecular Dynamics simulations. \
It is especially designed for the computation and decomposition of neutron scattering spectra. \
The structure and dynamics of the simulated systems can be characterized in terms of various space \
and time correlation functions."
; Insert a "Welcome" page in the installer
!insertmacro MUI_PAGE_WELCOME
; Insert a "License" page in the installer
!insertmacro MUI_PAGE_LICENSE "LICENSE.txt"
; Insert a page to browse for the installation directory
!insertmacro MUI_PAGE_DIRECTORY
; Insert a page for actual installation (+display) of MDANSE
!insertmacro MUI_PAGE_INSTFILES
; Insert in the finish page the possibility to run MDANSE
!define MUI_FINISHPAGE_RUN_NOTCHECKED
!define MUI_FINISHPAGE_RUN_TEXT "Start MDANSE ${VERSION}"
!define MUI_FINISHPAGE_RUN "$INSTDIR\MDANSE_launcher.bat"
; Insert in the finish page the possibility to view the changelog
!define MUI_FINISHPAGE_SHOWREADME_TEXT "View Changelog"
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\CHANGELOG.txt"
; Actually insert the finish page to the installer
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Set the installer language to english
!insertmacro MUI_LANGUAGE "English"
;RequestExecutionLevel user
Function .onInit
${If} ${ARCH} == "win-amd64"
StrCpy $INSTDIR "$PROGRAMFILES64\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}"
${Else}
StrCpy $INSTDIR "$PROGRAMFILES\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}"
${EndIf}
FunctionEnd
Section "MDANSE ${VERSION}" SEC01
SetShellVarContext all
SetOutPath "$INSTDIR"
SetOverwrite on
File /r /x *.pyc /x *.pyo /x *.log /x *.egg-info "${PYTHON_INST}\*"
File "CHANGELOG.txt"
File "LICENSE.txt"
File "MDANSE_launcher.bat"
File "MDANSE_command_shell.bat"
CreateDirectory "${ICONS_DIR}"
SetOutPath "${ICONS_DIR}"
SetOverwrite on
File /oname=run.ico "${MUI_ICON}"
File /oname=uninstall.ico "${MUI_UNICON}"
File /oname=web.ico "${WEB_ICON}"
File /oname=terminal.ico "icons\MDANSE_terminal.ico"
SetOutPath "$INSTDIR"
SetOverwrite on
CreateShortCut "$DESKTOP\MDANSE_${VERSION}_${ARCH}.lnk" "$INSTDIR\MDANSE_launcher.bat" "" "${ICONS_DIR}\run.ico" 0
CreateDirectory "$SMPROGRAMS\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}"
CreateShortCut "$SMPROGRAMS\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}\MDANSE.lnk" "$INSTDIR\MDANSE_launcher.bat" "" "${ICONS_DIR}\run.ico" 0
CreateShortCut "$SMPROGRAMS\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}\MDANSE_command_shell.lnk" \
"$SYSDIR\cmd.exe" \
'/K "$INSTDIR\MDANSE_command_shell.bat"' \
"${ICONS_DIR}\terminal.ico" 0
WriteIniStr "$INSTDIR\MDANSE.url" "InternetShortcut" "URL" "${WEB_SITE}"
CreateShortCut "$SMPROGRAMS\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}\Website.lnk" "$INSTDIR\MDANSE.url" "" "${ICONS_DIR}\web.ico" 0
CreateShortCut "$SMPROGRAMS\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}\Uninstall.lnk" "$INSTDIR\uninst.exe" "" "${ICONS_DIR}\uninstall.ico" 0
WriteRegStr ${UNINST_ROOT_KEY} "${UNINST_KEY}" "DisplayName" "MDANSE_${VERSION}_${ARCH}"
WriteRegStr ${UNINST_ROOT_KEY} "${UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${UNINST_ROOT_KEY} "${UNINST_KEY}" "DisplayIcon" "${ICONS_DIR}\run.ico"
WriteRegStr ${UNINST_ROOT_KEY} "${UNINST_KEY}" "DisplayVersion" "${VERSION}"
WriteRegStr ${UNINST_ROOT_KEY} "${UNINST_KEY}" "URLInfoAbout" "${WEB_SITE}"
WriteRegStr ${UNINST_ROOT_KEY} "${UNINST_KEY}" "Publisher" "${PUBLISHER}"
WriteUninstaller "$INSTDIR\uninst.exe"
SetAutoClose false
SectionEnd
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you really sure you want to uninstall MDANSE ${VERSION} ?" IDYES +2
Abort
FunctionEnd
Section uninstall
SetShellVarContext all
Delete "$INSTDIR\MDANSE.url"
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\CHANGELOG.txt"
Delete "$INSTDIR\MDANSE_launcher.bat"
Delete "$INSTDIR\MDANSE_command_shell.bat"
Delete "$INSTDIR\python27.dll"
Delete "${ICONS_DIR}\run.ico"
Delete "${ICONS_DIR}\terminal.ico"
Delete "${ICONS_DIR}\uninstall.ico"
Delete "${ICONS_DIR}\web.ico"
Delete "$DESKTOP\MDANSE_${VERSION}_${ARCH}.lnk"
Delete "$SMPROGRAMS\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}\MDANSE_command_shell.lnk"
Delete "$SMPROGRAMS\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}\Uninstall.lnk"
Delete "$SMPROGRAMS\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}\Website.lnk"
Delete "$SMPROGRAMS\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}\MDANSE.lnk"
RMDir /r "$SMPROGRAMS\Institut Laue-Langevin\MDANSE_${VERSION}_${ARCH}"
RMDir /r "$INSTDIR"
DeleteRegKey ${UNINST_ROOT_KEY} "${UNINST_KEY}"
SetAutoClose false
SectionEnd
\ No newline at end of file
@echo off
:: Set PYTHONHOME and PYTHONPATH to empty strings to avoid any side-effects due to third-party
:: programs (e.g. Scienomics) that may set these variables to fulfill their needs
set PYTHONHOME=
set PYTHONPATH=
set dirname="%~dp0"
start /B /D %dirname% pythonw.exe Scripts\nmoldyn_gui
\ No newline at end of file
#!/bin/bash
#############################
# CONFIGURATION
#############################
if [ ! $1 ]; then
echo "Need a build target ! [ win32 | win-amd64]"
exit 1
fi
BUILD_TARGET=$1
if [ $BUILD_TARGET = "win32" ]; then
PYTHON_SUFFIX=""
MSVC_BUILD_TARGET="/x86"
elif [ $BUILD_TARGET = "win-amd64" ]; then
PYTHON_SUFFIX=".amd64"
MSVC_BUILD_TARGET="/x64"
else
echo "Unrecognized build target ! [ win32 | win-amd64]"
exit 1 # signal error
fi
# Test for an optional second parameter
DO_CLEAN_UP="1"
if [ $2 -a $2 = "no_cleanup" ]; then
DO_CLEAN_UP="0"
fi
##Which versions of external programs to use
PYTHON_VERSION=2.7.6
# Change working directory to the directory the script is in
# http://stackoverflow.com/a/246128
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
#echo "SCRIPT_DIR : $SCRIPT_DIR"
# Remove the log file created at the previous build
rm -f NSISlog.txt
# This is the directory that will contain the temporary installation
TARGET_DIR="C:\nmoldyn_temp_${BUILD_TARGET}"
TARGET_DIR_CYGWIN=$(cygpath -u $TARGET_DIR)
if [ -e $TARGET_DIR_CYGWIN ]; then
echo "Removing previous target dir : $TARGET_DIR_CYGWIN"
rm -rf ${TARGET_DIR_CYGWIN}
fi
#############################
# 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
}
function downloadURL
{
filename=`basename "$1"`
echo "Checking for $filename"
if [ ! -f "$filename" ]; then
echo "Downloading $1"
curl -L -O "$1"
if [ $? != 0 ]; then
echo "Failed to download $1"
exit 1
fi
fi
}
function extract
{
echo "Extracting $*"
echo "7z x -y $*" >> log.txt
7z x -y $* >> log.txt
}
checkTool curl "curl: http://curl.haxx.se/"
if [ $BUILD_TARGET = "win32" ] || [ $BUILD_TARGET = "win-amd64" ] ; 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 >/dev/null 2>&1` ]; then
TAR=tar
else
TAR=gnutar
fi
#############################
# Build the packages
#############################
cd "$SCRIPT_DIR"
if [ $BUILD_TARGET = "win32" ] || [ $BUILD_TARGET = "win-amd64" ]; then
DEPENDENCIES_DIR=dependencies/${BUILD_TARGET}
PYTHON_MSI_WIN=$(cygpath -a -w ${DEPENDENCIES_DIR}/python-${PYTHON_VERSION}${PYTHON_SUFFIX}.msi)
echo DEPENDENCIES_DIR $DEPENDENCIES_DIR
echo PYTHON_MSI_WIN $PYTHON_MSI_WIN
echo TARGET_DIR $TARGET_DIR
echo "Extracting clean python <${PYTHON_MSI_WIN}> in <${TARGET_DIR}>"
cmd /c "msiexec /L* pythonlog.txt /qn /a ${PYTHON_MSI_WIN} TARGETDIR=${TARGET_DIR}"
# Exit now if something goes wrong
if [ $? -ne 0 ]; then
status = $?
echo "Failed to extract python"
exit status
fi
#Clean up python a bit, to keep the package size down
echo "Cleaning up Python"
rm -rf ${TARGET_DIR_CYGWIN}/Doc
rm -rf ${TARGET_DIR_CYGWIN}/Lib/site-packages
rm -rf ${TARGET_DIR_CYGWIN}/Lib/test
rm -rf ${TARGET_DIR_CYGWIN}/locale
rm -rf ${TARGET_DIR_CYGWIN}/Logs
rm -rf ${TARGET_DIR_CYGWIN}/share
rm -rf ${TARGET_DIR_CYGWIN}/Scripts
rm -rf ${TARGET_DIR_CYGWIN}/tcl
mkdir -p ${TARGET_DIR_CYGWIN}/Lib/site-packages
mkdir -p ${TARGET_DIR_CYGWIN}/Scripts
cd ${DEPENDENCIES_DIR}
echo "Extracting dependencies"
# extract numpy
extract numpy-MKL-1.8.0.${BUILD_TARGET}-py2.7.exe PLATLIB
# extract matplotlib and its dependencies
extract pyparsing-2.0.1.${BUILD_TARGET}-py2.7.exe PURELIB
extract python-dateutil-2.2.${BUILD_TARGET}-py2.7.exe PURELIB
extract pytz-2013.9.${BUILD_TARGET}-py2.7.exe PURELIB
extract six-1.5.2.${BUILD_TARGET}-py2.7.exe PURELIB
extract matplotlib-1.3.1.${BUILD_TARGET}-py2.7.exe PLATLIB
#extract Cython
extract Cython-0.19.2.${BUILD_TARGET}-py2.7.exe PLATLIB
extract Cython-0.19.2.${BUILD_TARGET}-py2.7.exe SCRIPTS
# extract Pyro
extract Pyro-3.16.${BUILD_TARGET}.exe PURELIB
# extract VTK
extract VTK-5.10.1.${BUILD_TARGET}-py2.7.exe PURELIB
# extract wxPython and its dependencies
extract wxPython-common-2.8.12.1.${BUILD_TARGET}-py2.7.exe PURELIB
extract wxPython-2.8.12.1.${BUILD_TARGET}-py2.7.exe PLATLIB
# extract ScientificPython
extract ScientificPython-2.9.2.${BUILD_TARGET}-py2.7.exe DATA
extract ScientificPython-2.9.2.${BUILD_TARGET}-py2.7.exe PLATLIB
extract ScientificPython-2.9.2.${BUILD_TARGET}-py2.7.exe SCRIPTS
# extract MMTK
extract MMTK-2.7.6.${BUILD_TARGET}-py2.7.exe PLATLIB
cd ${SCRIPT_DIR}
# move the packages to the target directory
echo "Moving deps to target"
mv ${DEPENDENCIES_DIR}/PLATLIB/numpy ${TARGET_DIR_CYGWIN}/Lib/site-packages/numpy
mv ${DEPENDENCIES_DIR}/PURELIB/dateutil ${TARGET_DIR_CYGWIN}/Lib/site-packages/dateutil
mv ${DEPENDENCIES_DIR}/PURELIB/pyparsing.py ${TARGET_DIR_CYGWIN}/Lib/site-packages/pyparsing.py
mv ${DEPENDENCIES_DIR}/PURELIB/pytz ${TARGET_DIR_CYGWIN}/Lib/site-packages/pytz
mv ${DEPENDENCIES_DIR}/PURELIB/six.py ${TARGET_DIR_CYGWIN}/Lib/site-packages/six.py
mv ${DEPENDENCIES_DIR}/PLATLIB/matplotlib ${TARGET_DIR_CYGWIN}/Lib/site-packages/matplotlib
mv ${DEPENDENCIES_DIR}/PLATLIB/Cython ${TARGET_DIR_CYGWIN}/Lib/site-packages/Cython
mv ${DEPENDENCIES_DIR}/SCRIPTS/cython.py ${TARGET_DIR_CYGWIN}/Scripts/cython.py
cp ${TARGET_DIR}/Scripts/cython.py ${TARGET_DIR_CYGWIN}/Lib/site-packages/
mv ${DEPENDENCIES_DIR}/PURELIB/Pyro ${TARGET_DIR_CYGWIN}/Lib/site-packages/Pyro
mv ${DEPENDENCIES_DIR}/PURELIB/vtk ${TARGET_DIR_CYGWIN}/Lib/site-packages/vtk
mv ${DEPENDENCIES_DIR}/PURELIB/wx.pth ${TARGET_DIR_CYGWIN}/Lib/site-packages/
mv ${DEPENDENCIES_DIR}/PURELIB/wxversion.py ${TARGET_DIR_CYGWIN}/Lib/site-packages/
mv ${DEPENDENCIES_DIR}/PLATLIB/wx-2.8-msw-unicode ${TARGET_DIR_CYGWIN}/Lib/site-packages/wx-2.8-msw-unicode
mv ${DEPENDENCIES_DIR}/PLATLIB/Scientific ${TARGET_DIR_CYGWIN}/Lib/site-packages/Scientific
# this is a hack due to a bug introduced by Konrad in version 2.9.2 of Scientific: the N.package is not defined anymore
# which triggers erros for modules that used N.package (e.g. MMTK.Random)
echo "package='NumPy'" >> ${TARGET_DIR_CYGWIN}/Lib/site-packages/Scientific/N.py
mv ${DEPENDENCIES_DIR}/DATA/Lib/site-packages/Scientific/netcdf3.dll ${TARGET_DIR_CYGWIN}/Lib/site-packages/Scientific
mv ${DEPENDENCIES_DIR}/SCRIPTS/task_manager ${TARGET_DIR_CYGWIN}/Scripts/task_manager
mv ${DEPENDENCIES_DIR}/PLATLIB/MMTK ${TARGET_DIR_CYGWIN}/Lib/site-packages/MMTK
fi
# take the latest version of nmoldyn available on the forge
echo "Getting last nMolDyn revision (devel)"
svn co http://forge.epn-campus.eu/svn/nmoldyn/devel
# Get revision number from svn
REV_NUMBER=$(svnversion devel)
echo "Revision number is $REV_NUMBER"
# go the nmoldyn base directory
cd devel
# Add current revision number to python source code (will appear in "About..." dialog)
sed -i "s/__revision__ = \"undefined\"/__revision__ = \"${REV_NUMBER}\"/" nMOLDYN/__pkginfo__.py
# setup the environment for a visual studio build of nmoldyn using microsoft SDK 7.0 and build nmoldyn
echo "nMolDyn setup and build"
cmd /V:ON /E:ON /C start /WAIT "..\setup_and_build.bat" "${TARGET_DIR}" ${MSVC_BUILD_TARGET}
# Exit now if unable to build
if [ $? -ne 0 ]; then
status = $?
echo "Failed to build nMolDyn"
exit status
fi
# go back to the installation base directory
cd "${SCRIPT_DIR}"
# fetching the current version of nMoldyn from the repository
##VERSION=`${TARGET_DIR}/python.exe -c "d={};execfile('devel/nMOLDYN/__pkginfo__.py',d);print d['__version__']"`
##VERSION=$(echo $VERSION|tr -d '\r')
# Other way to fetch the current version without python
VERSION=$(grep -Po '(?<=__version__ = \")\d.\d.\d' devel/nMOLDYN/__pkginfo__.py)
# create the nmoldyn installer
echo "Creating nsis installer for target ${BUILD_TARGET}..."
makensis /V4 /ONSISlog.txt /DVERSION=${VERSION} /DARCH=${BUILD_TARGET} /DPYTHON_INST="${TARGET_DIR}" /DREVISION=${REV_NUMBER} nmoldyn_installer.nsi
# delete devel and dependencies....
if [ ${DO_CLEAN_UP} = "1" ]; then
echo "Cleaning up temporary repository"
rm -rf devel
rm -rf "${TARGET_DIR}"
#remove the temporary directories used for package extraction
rm -rf ${DEPENDENCIES_DIR}/DATA
rm -rf ${DEPENDENCIES_DIR}/PLATLIB
rm -rf ${DEPENDENCIES_DIR}/PURELIB
rm -rf ${DEPENDENCIES_DIR}/SCRIPTS
rm -f ${DEPENDENCIES_DIR}/log.txt
fi
echo "Done"
\ No newline at end of file
@echo off
:: %1 --> the python base directory
:: %2 --> the msvc build target (/x86 for win32, /x64 for win-amd64)
setlocal EnableDelayedExpansion
:: This is the Miscrosoft SDF version needed for the build of python 2.7 extensions
call "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\SetEnv.cmd" /release %2
set DISTUTILS_USE_SDK=1
%1\python.exe setup.py build
%1\python.exe setup.py install
exit
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment