If you are using GitLab outside of the ILL, then you will need to use HTTPS and not SSH for clone/push/pull operations. If you are using the VPN, then SSH will work normally.

run_build.sh 6.98 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
#!/bin/bash

#############################
# CONFIGURATION
#############################

if [ ! $1 ]; then
    BUILD_TARGET="win-amd64"
else
    BUILD_TARGET=$1
fi

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

##Which versions of external programs to use
PYTHON_VERSION=2.7.6

CI_PROJECT_DIR_WIN=$(cygpath -a -w ${CI_PROJECT_DIR})

# Change working directory to the directory the script is in
# http://stackoverflow.com/a/246128
SCRIPT_DIR="${CI_PROJECT_DIR}/BuildServer/Windows"

# This is the directory that will contain the temporary installation
TARGET_DIR="${CI_PROJECT_DIR_WIN}\\BuildServer\\Windows\\Build"
TARGET_DIR_CYGWIN=$(cygpath -u $TARGET_DIR)

function extract
{
	echo "Extracting $*"
	echo "7z x -y $*" >> log.txt
	7z x -y $* >> log.txt
}

#############################
# Build the packages
#############################

cd "${SCRIPT_DIR}"

if [ -e "$TARGET_DIR_CYGWIN" ]; then
	echo "Removing previous target dir : $TARGET_DIR_CYGWIN"
	rm -rf ${TARGET_DIR_CYGWIN}
fi

DEPENDENCIES_DIR=${CI_WINDOWS_DEPENDENCIES_PATH_UNIX}/${BUILD_TARGET}

PYTHON_MSI=python-${PYTHON_VERSION}${PYTHON_SUFFIX}.msi
PYTHON_MSI_WIN=${CI_WINDOWS_DEPENDENCIES_PATH}\\${BUILD_TARGET}\\${PYTHON_MSI}

echo "Extracting 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
65
	status=$?
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
	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}/Tools/Scripts
rm -rf ${TARGET_DIR_CYGWIN}/tcl
rm -f ${TARGET_DIR_CYGWIN}/NEWS.txt
rm -f ${TARGET_DIR_CYGWIN}/${PYTHON_MSI}

mkdir -p ${TARGET_DIR_CYGWIN}/Lib/site-packages
mkdir -p ${TARGET_DIR_CYGWIN}/Scripts

cd ${DEPENDENCIES_DIR}

echo "Extracting dependencies"

eric pellegrini's avatar
eric pellegrini committed
87 88 89
# extract setuptools
extract setuptools-28.7.1.${BUILD_TARGET}.exe PURELIB

90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
# 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 Sphinx and its dependencies
extract alabaster-0.7.5.${BUILD_TARGET}.exe PURELIB
extract Pygments-2.0.2.${BUILD_TARGET}.exe PURELIB
extract Pygments-2.0.2.${BUILD_TARGET}.exe SCRIPTS
extract Babel-1.3.${BUILD_TARGET}.exe PURELIB
extract Babel-1.3.${BUILD_TARGET}.exe SCRIPTS
extract MarkupSafe-0.23.${BUILD_TARGET}-py2.7.exe PLATLIB
extract Jinja2-2.7.3.${BUILD_TARGET}.exe PURELIB
extract docutils-0.12.${BUILD_TARGET}.exe PURELIB
extract docutils-0.12.${BUILD_TARGET}.exe SCRIPTS
extract Sphinx-1.3.1.${BUILD_TARGET}.exe PURELIB
extract sphinx_rtd_theme-0.1.8.${BUILD_TARGET}.exe PURELIB

extract nose-1.3.7.${BUILD_TARGET}.exe PURELIB
extract nose-1.3.7.${BUILD_TARGET}.exe SCRIPTS

# 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

# move the packages to the target directory
echo "Moving dependencies to ${BUILD_TARGET}"
eric pellegrini's avatar
eric pellegrini committed
140 141 142

mv PURELIB/pkg_resources ${TARGET_DIR_CYGWIN}/Lib/site-packages/pkg_resources

143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
mv PLATLIB/numpy ${TARGET_DIR_CYGWIN}/Lib/site-packages/numpy

mv PURELIB/dateutil ${TARGET_DIR_CYGWIN}/Lib/site-packages/dateutil
mv PURELIB/pyparsing.py ${TARGET_DIR_CYGWIN}/Lib/site-packages/pyparsing.py
mv PURELIB/pytz ${TARGET_DIR_CYGWIN}/Lib/site-packages/pytz
mv PURELIB/six.py ${TARGET_DIR_CYGWIN}/Lib/site-packages/six.py
mv PLATLIB/matplotlib ${TARGET_DIR_CYGWIN}/Lib/site-packages/matplotlib

mv PLATLIB/Cython ${TARGET_DIR_CYGWIN}/Lib/site-packages/Cython
mv SCRIPTS/cython.py ${TARGET_DIR_CYGWIN}/Scripts/cython.py
cp ${TARGET_DIR}/Scripts/cython.py ${TARGET_DIR_CYGWIN}/Lib/site-packages/
mv PURELIB/Pyro ${TARGET_DIR_CYGWIN}/Lib/site-packages/Pyro

mv PURELIB/alabaster ${TARGET_DIR_CYGWIN}/Lib/site-packages/alabaster
mv PURELIB/pygments ${TARGET_DIR_CYGWIN}/Lib/site-packages/pygments
mv SCRIPTS/pygment* ${TARGET_DIR_CYGWIN}/Scripts/
mv PURELIB/babel ${TARGET_DIR_CYGWIN}/Lib/site-packages/babel
mv SCRIPTS/pybabel* ${TARGET_DIR_CYGWIN}/Scripts/
mv PLATLIB/markupsafe ${TARGET_DIR_CYGWIN}/Lib/site-packages/markupsafe
mv PURELIB/jinja2 ${TARGET_DIR_CYGWIN}/Lib/site-packages/jinja2
mv PURELIB/docutils ${TARGET_DIR_CYGWIN}/Lib/site-packages/docutils
mv SCRIPTS/rst* ${TARGET_DIR_CYGWIN}/Scripts/
mv PURELIB/sphinx ${TARGET_DIR_CYGWIN}/Lib/site-packages/sphinx
mv PURELIB/sphinx_rtd_theme ${TARGET_DIR_CYGWIN}/Lib/site-packages/sphinx_rtd_theme

mv PURELIB/nose ${TARGET_DIR_CYGWIN}/Lib/site-packages/nose
mv SCRIPTS/nosetests ${TARGET_DIR_CYGWIN}/Scripts/

mv PURELIB/vtk ${TARGET_DIR_CYGWIN}/Lib/site-packages/vtk

mv PURELIB/wx.pth ${TARGET_DIR_CYGWIN}/Lib/site-packages/
mv PURELIB/wxversion.py ${TARGET_DIR_CYGWIN}/Lib/site-packages/
mv PLATLIB/wx-2.8-msw-unicode ${TARGET_DIR_CYGWIN}/Lib/site-packages/wx-2.8-msw-unicode

echo "package='NumPy'" >> PLATLIB/Scientific/N.py
mv 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)
mv DATA/Lib/site-packages/Scientific/netcdf3.dll ${TARGET_DIR_CYGWIN}/Lib/site-packages/Scientific
mv SCRIPTS/task_manager ${TARGET_DIR_CYGWIN}/Scripts/task_manager

mv PLATLIB/MMTK ${TARGET_DIR_CYGWIN}/Lib/site-packages/MMTK

rm -rf DATA
rm -rf PLATLIB
rm -rf PURELIB
rm -rf SCRIPTS

cd ${SCRIPT_DIR}

rm pythonlog.txt

cd ${CI_PROJECT_DIR}

# Get revision number from GIT
198 199
COMMIT_ID=$(git rev-parse --long HEAD)
echo "Commit id ${COMMIT_ID}"
200 201 202 203 204 205 206 207 208 209 210

# setup the environment for a visual studio build of MDANSE using microsoft SDK 7.0 and build MDANSE
echo "MDANSE setup and build"

# go back to the installation base directory
cd ${SCRIPT_DIR}

cmd /V:ON /E:ON /C "setup_and_build.bat" "${CI_PROJECT_DIR_WIN}" "${TARGET_DIR}" ${MSVC_BUILD_TARGET}

# Exit now if unable to build
if [ $? -ne 0 ]; then
211
	status=$?
212 213 214
	echo "Failed to build MDANSE"
	exit status
fi