0aec09d9ea3aaf55b04eb5283fd72ed6f540e9cd
[mono.git] / packaging / Windows / defs / mono
1 #!/bin/bash -xe
2
3 REPODIR=$(dirname $(realpath $0))/../../..
4 INSTALLDIR=$(realpath -m $(dirname $0)/../tmp/mono)
5
6 error()
7 {
8     echo "$(date "+%F@%T") :: $1" 1>&2
9     exit 1
10 }
11
12 report()
13 {
14     echo "$(date "+%F@%T") :: $1"
15 }
16
17 download()
18 {
19         wget --quiet -O ${REPODIR}/pkgconfig.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip
20 }
21
22 clean()
23 {
24         rm -rf ${INSTALLDIR}
25 }
26
27 build()
28 {
29         pushd ${REPODIR}
30         report "Building Mono"
31         mkdir -p ${INSTALLDIR}
32         WORKSPACE=${REPODIR} EXTRA_CONF_FLAGS="--prefix=${INSTALLDIR}" ghprbPullId=1 CI_TAGS="no-tests" label="w32" scripts/ci/run-jenkins.sh || error "*** Could not run autogen ***"
33         popd
34 }
35
36 install()
37 {
38         pushd ${REPODIR}
39         MONO_EXECUTABLE=${REPODIR}/msvc/build/sgen/Win32/bin/Release/mono-sgen.exe make install || error "*** Installing to temporary prefix failed ***"
40         rm -f   ${INSTALLDIR}/bin/mono-sgen.* \
41                 ${INSTALLDIR}/bin/mono-boehm.* \
42                 ${INSTALLDIR}/lib/libmono-2.0.* \
43                 ${INSTALLDIR}/lib/libmonoboehm-2.0.* \
44                 ${INSTALLDIR}/lib/libmonosgen-2.0.* \
45                 ${INSTALLDIR}/bin/MonoPosixHelper.* \
46                 ${INSTALLDIR}/lib/MonoPosixHelper.* \
47                 ${INSTALLDIR}/bin/mono \
48                 ${INSTALLDIR}/bin/pedump \
49                 ${INSTALLDIR}/bin/mono-package-runtime \
50                 ${INSTALLDIR}/bin/monodis*
51         pushd ${REPODIR}
52         cp -a msvc/build/sgen/Win32/bin/Release/monodis-sgen.exe        ${INSTALLDIR}/bin/monodis.exe
53         cp -a msvc/build/sgen/Win32/bin/Release/monodis-sgen.pdb        ${INSTALLDIR}/bin/monodis.pdb
54         cp -a msvc/build/sgen/Win32/bin/Release/mono-sgen.exe   ${INSTALLDIR}/bin/
55         cp -a msvc/build/sgen/Win32/bin/Release/mono-sgen.pdb   ${INSTALLDIR}/bin/
56         cp -a msvc/build/sgen/Win32/bin/Release/mono-2.0-sgen.dll       ${INSTALLDIR}/bin/
57         cp -a msvc/build/sgen/Win32/lib/Release/mono-2.0-sgen.lib       ${INSTALLDIR}/lib/
58         cp -a msvc/build/sgen/Win32/bin/Release/mono-2.0-sgen.pdb       ${INSTALLDIR}/lib/
59         cp -a msvc/build/sgen/Win32/bin/Release/MonoPosixHelper.dll     ${INSTALLDIR}/bin/
60         cp -a msvc/build/sgen/Win32/lib/Release/MonoPosixHelper.lib     ${INSTALLDIR}/lib/
61         cp -a msvc/build/sgen/Win32/bin/Release/MonoPosixHelper.pdb     ${INSTALLDIR}/lib/
62         cp -a msvc/build/boehm/Win32/bin/Release/mono-boehm.exe         ${INSTALLDIR}/bin/
63         cp -a msvc/build/boehm/Win32/bin/Release/mono-boehm.pdb         ${INSTALLDIR}/bin/
64         cp -a msvc/build/boehm/Win32/bin/Release/mono-2.0-boehm.dll     ${INSTALLDIR}/bin/
65         cp -a msvc/build/boehm/Win32/lib/Release/mono-2.0-boehm.lib     ${INSTALLDIR}/lib/
66         cp -a msvc/build/boehm/Win32/bin/Release/mono-2.0-boehm.pdb     ${INSTALLDIR}/lib/
67         cp -a ${INSTALLDIR}/bin/mono-sgen.exe   ${INSTALLDIR}/bin/mono.exe
68         cp -a ${INSTALLDIR}/bin/mono-sgen.pdb   ${INSTALLDIR}/bin/mono.pdb
69         popd
70         pushd ${INSTALLDIR}/bin
71         for i in *
72                 do if [[ "`file -b $i`" == "POSIX shell script, ASCII text"* ]]
73                         then RUNTIME=`grep -ho -m 1 "xbuild/.*/bin/\|[2,3,4]\.[0,5]/" $i | sed 's#/$##'`
74                         if [ -n "$(grep -ho '.:/.*\.exe' $i)" ]
75                                 then EXENAME=$(basename `grep -ho '.:/.*\.exe' $i`)
76                         fi
77                         if [ -f "../lib/mono/${RUNTIME}/${EXENAME}" ]
78                                 then sed "s#@@RUNTIME@@#${RUNTIME}#g" ${REPODIR}/packaging/Windows/resources/wrapper.bat > $i.bat
79                                 sed -i "s#@@COMMAND@@#${EXENAME}#g" $i.bat
80                                 sed -i 's#/#\\#g' $i.bat
81                         fi
82                         sed -i "s#.:/.*/#\"\$\(cygpath -w \"\$\{BASH_SOURCE%/\*\}\"/../lib/mono/${RUNTIME}/\)\"#g" $i
83                         sed -i 's#/.*/tmp/mono/bin#\"\$\{BASH_SOURCE%/\*\}\"#g' $i
84                 fi
85         done
86         unzip -jd . ${REPODIR}/pkgconfig.zip bin/pkg-config.exe
87         chmod a+x *.bat *.exe
88         popd
89         popd
90 }
91
92 prerequisites()
93 {
94         which mcs 2>/dev/null || error "*** mcs is not in \$PATH ***"
95 }
96
97 $@