Merge pull request #5002 from BrzVlad/feature-sgen-modes
[mono.git] / packaging / Windows / defs / managed-components
1 #!/bin/bash -xe
2
3 REPODIR=$(dirname $(realpath $0))/../repos/managed-components
4
5 error()
6 {
7     echo "$(date "+%F@%T") :: $1" 1>&2
8     exit 1
9 }
10
11 report()
12 {
13     echo "$(date "+%F@%T") :: $1"
14 }
15
16 download()
17 {
18         mkdir -p ${REPODIR}
19         report "Downloading Xar"
20         wget --quiet -O ${REPODIR}/xar.tar.gz https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/xar/xar-1.5.2.tar.gz || error "*** Could not download Xar ***"
21         report "Copying Mono MDK for Mac"
22         cp ${2} ${REPODIR}/mono.xar
23 }
24
25 clean()
26 {
27         pushd ${REPODIR}
28         report "Deleting interstitial output"
29         rm -rf  ${REPODIR}/mono-mac \
30                 ${REPODIR}/xar \
31                 ${REPODIR}/Distribution \
32                 ${REPODIR}/mono.pkg \
33                 ${REPODIR}/Resources \
34                 ${REPODIR}/Library \
35                 ${REPODIR}/../../tmp/mono-mac
36         popd
37 }
38
39 build()
40 {
41         pushd ${REPODIR}
42         if [ ! -x "${REPODIR}/xar/src/xar" ]
43                 then report "Building Xar"
44                 mkdir -p xar
45                 tar xf xar.tar.gz -C xar/ --strip-components=1
46                 pushd xar/
47                 ./configure
48                 make
49                 popd
50         fi
51         report "Unpacking Mono for Mac"
52         xar/src/xar -x -f mono.xar
53         zcat mono.pkg/Payload | bsdcpio -i
54         mv Library/Frameworks/Mono.framework/Versions/5.* mono-mac
55         popd
56 }
57
58 install()
59 {
60         rsync -a --copy-links ${REPODIR}/mono-mac/lib/xsp                                       ${REPODIR}/../../tmp/mono/lib/
61         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/Microsoft*                           ${REPODIR}/../../tmp/mono/lib/mono/
62         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/msbuild                              ${REPODIR}/../../tmp/mono/lib/mono/
63         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/nuget                                ${REPODIR}/../../tmp/mono/lib/mono/
64         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild-frameworks                    ${REPODIR}/../../tmp/mono/lib/mono/
65         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/gac/FSharp.Core/4.4.1.0__b03f5f7f11d50a3a/FSharp*                            ${REPODIR}/../../tmp/mono/lib/mono/4.5/
66         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/gac/nunit*/2.4.8.0__96d09a1eb7f44a77/*.dll*                                  ${REPODIR}/../../tmp/mono/lib/mono/4.5/
67         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/Microsoft.VisualBasic.dll        ${REPODIR}/../../tmp/mono/lib/mono/4.5/
68         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/Mono.Cecil.VB*                   ${REPODIR}/../../tmp/mono/lib/mono/4.5/
69         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/Mono.WebServer2.dll              ${REPODIR}/../../tmp/mono/lib/mono/4.5/
70         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/vbnc.*                           ${REPODIR}/../../tmp/mono/lib/mono/4.5/
71         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/xsp4.exe                         ${REPODIR}/../../tmp/mono/lib/mono/4.5/
72         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/fsharp                               ${REPODIR}/../../tmp/mono/lib/mono/
73         rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.0-api/Microsoft.VisualBasic.dll    ${REPODIR}/../../tmp/mono/lib/mono/4.0-api/
74         rsync -a --copy-links ${REPODIR}/mono-mac/bin/fsharp*                                   ${REPODIR}/../../tmp/mono/bin/
75         rsync -a --copy-links ${REPODIR}/mono-mac/bin/xsp*                                      ${REPODIR}/../../tmp/mono/bin/
76         rsync -a --copy-links ${REPODIR}/mono-mac/bin/nuget                                     ${REPODIR}/../../tmp/mono/bin/
77         rsync -a --copy-links ${REPODIR}/mono-mac/bin/msbuild                                   ${REPODIR}/../../tmp/mono/bin/
78         sed -i 's#/Library.*mono#../..#' ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ F\#/v4.*/*
79         sed -i 's#/Library.*mono#../../../../..#' ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ SDKs/F\#/3.*/Framework/v4.*/*
80         rsync -a --copy-links ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ F\#/v4.0/*          ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ F\#/v4.0/
81         rsync -a --copy-links ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ SDKs/F\#/3.0/Framework/v4.0/*       ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ SDKs/F\#/3.0/Framework/v4.0/
82         rsync -a --copy-links ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ SDKs/F\#/3.1/Framework/v4.0/*       ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ SDKs/F\#/3.1/Framework/v4.0/
83         rsync -a --copy-links ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ SDKs/F\#/4.0/Framework/v4.0/*       ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ SDKs/F\#/4.0/Framework/v4.0/
84         rsync -a --copy-links ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ SDKs/F\#/4.1/Framework/v4.0/*       ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ SDKs/F\#/4.1/Framework/v4.0/
85         pushd ${REPODIR}/../../tmp/mono/bin
86         rm -f xsp
87         for i in xsp2 xsp4 fsharpc fsharpi fsharpiAnyCpu nuget msbuild
88                 do echo "Processing $i"
89                 sed -i 's#/Library.*mono #\"\$\{BASH_SOURCE%/\*\}\"/mono #' $i
90                 sed -i 's#/Library.*cli #\"\$\{BASH_SOURCE%/\*\}\"/cli #' $i
91                 if [ -n "$(grep -hoE '[\" ]/Library.*\.(exe|dll)' $i)" ]
92                         then EXENAME=$(basename `grep -hoE -m 1 '[\" ]/Library.*\.(exe|dll)' $i | sed 's/^\"//'`)
93                         RUNTIME=$(dirname `grep -hoE -m 1 '[\" ]/Library.*\.(exe|dll)' $i` | sed 's/^\"//' | sed 's#/Library.*/[0-9]\+\.[0-9]\+\.[0-9]\+/lib/##' | sed '/^mono\//! s#^#..\\\\#' | sed 's#^mono/##')
94                         sed "s#@@RUNTIME@@#${RUNTIME}\\\\#g" ${REPODIR}/../../resources/wrapper.bat > $i.bat
95                         sed -i "s#@@COMMAND@@#${EXENAME}#g" $i.bat
96                         sed -i 's#/#\\#g' $i.bat
97                 fi
98                 sed -i 's#/Library.*/[0-9]\+\.[0-9]\+\.[0-9]\+/lib/#\"\$\(cygpath -w \"\$\{BASH_SOURCE%/\*\}\"/../lib/\)\"#g#' $i
99                 sed -i 's#\"\"#\"#g' $i
100                 sed -i 's#)\"#)#g' $i
101                 sed -i 's#exe #exe\" #' $i
102                 sed -i 's#dll #dll\" #' $i
103                 sed -i 's#basename \$0#basename \"\$0\"#' $i
104         done
105         cp xsp4 xsp
106         cp xsp4.bat xsp.bat
107         chmod a+x *
108         cd ..
109         for i in lib/mono/4.5/Mono.Cecil.VB*.dll lib/mono/4.5/Microsoft.VisualBasic.dll lib/mono/*/xsp*.exe lib/mono/*/FSharp*.dll lib/mono/*/Mono.WebServer*.dll ../../repos/managed-components/mono-mac/lib/mono/gac/FSharp.Core/4.3*/FSharp.Core.dll ../../repos/managed-components/mono-mac/lib/mono/gac/FSharp.Core/4.4.0*/FSharp.Core.dll
110                 do bin/gacutil -i $i
111         done
112         rsync -a --copy-links lib/mono/4.5/FSharp.Core.*data lib/mono/gac/FSharp.Core/4.4.1.0__*/
113         rsync -a --copy-links lib/mono/4.5/FSharp.Core.*data lib/mono/gac/FSharp.Core/4.4.0.0__*/
114         rsync -a --copy-links lib/mono/4.5/FSharp.Core.*data lib/mono/gac/FSharp.Core/4.3.1.0__*/
115         rsync -a --copy-links lib/mono/4.5/FSharp.Core.*data lib/mono/gac/FSharp.Core/4.3.0.0__*/
116         popd
117 }
118
119 prerequisites()
120 {
121         which bsdcpio           2>/dev/null || error "*** bsdcpio is not in \$PATH ***"
122         which wget              2>/dev/null || error "*** wget is not in \$PATH ***"
123         which xml2-config       2>/dev/null || error "*** xml2-config is not in \$PATH ***"
124         if [ ! -e "/usr/include/openssl/crypto.h" ]
125                 then error "*** openssl-devel is not installed ***"
126         fi
127 }
128
129 $@