blob: 1421ce04b191379a6b7adca603f5f6c2b70e0e2c (
plain)
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
140
141
142
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
|
#!/bin/bash -xe
REPODIR=$(dirname $(realpath $0))/../repos/managed-components
error()
{
echo "$(date "+%F@%T") :: $1" 1>&2
exit 1
}
report()
{
echo "$(date "+%F@%T") :: $1"
}
download()
{
mkdir -p ${REPODIR}
report "Downloading Xar"
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 ***"
report "Downloading x64 hostfxr.dll"
wget --quiet -O ${REPODIR}/hostfxr-x64.zip https://www.nuget.org/api/v2/package/runtime.win-x64.Microsoft.NETCore.DotNetHostResolver/2.0.0 || error "*** Could not download 64bit hostfxr.dll ***"
report "Downloading x86 hostfxr.dll"
wget --quiet -O ${REPODIR}/hostfxr-x86.zip https://www.nuget.org/api/v2/package/runtime.win-x86.Microsoft.NETCore.DotNetHostResolver/2.0.0 || error "*** Could not download 32bit hostfxr.dll ***"
report "Copying Mono MDK for Mac"
cp $1 ${REPODIR}/mono.xar
}
clean()
{
pushd ${REPODIR}
report "Deleting interstitial output"
rm -rf ${REPODIR}/mono-mac \
${REPODIR}/xar \
${REPODIR}/hostfxr-x64 \
${REPODIR}/hostfxr-x86 \
${REPODIR}/Distribution \
${REPODIR}/mono.pkg \
${REPODIR}/Resources \
${REPODIR}/Library \
${REPODIR}/../../tmp/mono-mac
popd
}
build()
{
pushd ${REPODIR}
if [ ! -x "${REPODIR}/xar/src/xar" ]
then report "Building Xar"
mkdir -p xar
tar xf xar.tar.gz -C xar/ --strip-components=1
pushd xar/
./configure
make
popd
fi
report "Unpacking x64 hostfxr.dll"
mkdir -p hostfxr-x64
unzip -j "${REPODIR}/hostfxr-x64.zip" "runtimes/win-x64/native/hostfxr.dll" -d "hostfxr-x64"
report "Unpacking x86 hostfxr.dll"
mkdir -p hostfxr-x86
unzip -j "${REPODIR}/hostfxr-x86.zip" "runtimes/win-x86/native/hostfxr.dll" -d "hostfxr-x86"
report "Unpacking Mono for Mac"
xar/src/xar -x -f mono.xar
zcat mono.pkg/Payload | bsdcpio -i
mv Library/Frameworks/Mono.framework/Versions/[5,6].* mono-mac
popd
}
install()
{
rsync -a --copy-links ${REPODIR}/mono-mac/lib/ironpython ${REPODIR}/../../tmp/mono/lib/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/ironruby ${REPODIR}/../../tmp/mono/lib/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/xsp ${REPODIR}/../../tmp/mono/lib/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/Microsoft* ${REPODIR}/../../tmp/mono/lib/mono/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/msbuild ${REPODIR}/../../tmp/mono/lib/mono/
rm -f ${REPODIR}/../../tmp/mono/lib/mono/msbuild/15.0/bin/SdkResolvers/Microsoft.DotNet.MSBuildSdkResolver/libhostfxr.dylib
if [ "$1" = "x64" ]; then
cp ${REPODIR}/hostfxr-x64/hostfxr.dll ${REPODIR}/../../tmp/mono/lib/mono/msbuild/15.0/bin/SdkResolvers/Microsoft.DotNet.MSBuildSdkResolver/
else
cp ${REPODIR}/hostfxr-x86/hostfxr.dll ${REPODIR}/../../tmp/mono/lib/mono/msbuild/15.0/bin/SdkResolvers/Microsoft.DotNet.MSBuildSdkResolver/
fi
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/nuget ${REPODIR}/../../tmp/mono/lib/mono/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild-frameworks ${REPODIR}/../../tmp/mono/lib/mono/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild/deniedAssembliesList.txt ${REPODIR}/../../tmp/mono/lib/mono/xbuild/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild/15.0 ${REPODIR}/../../tmp/mono/lib/mono/xbuild/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild/Microsoft/Microsoft.NET.Build.Extensions ${REPODIR}/../../tmp/mono/lib/mono/xbuild/Microsoft/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild/Microsoft/NuGet ${REPODIR}/../../tmp/mono/lib/mono/xbuild/Microsoft/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild/Microsoft/Portable/VisualStudio ${REPODIR}/../../tmp/mono/lib/mono/xbuild/Microsoft/Portable/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild/Microsoft/VisualStudio/v/FSharp ${REPODIR}/../../tmp/mono/lib/mono/xbuild/Microsoft/VisualStudio/v/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild/Microsoft/VisualStudio/v11.0/FSharp ${REPODIR}/../../tmp/mono/lib/mono/xbuild/Microsoft/VisualStudio/v11.0/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild/Microsoft/VisualStudio/v12.0/FSharp ${REPODIR}/../../tmp/mono/lib/mono/xbuild/Microsoft/VisualStudio/v12.0/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild/Microsoft/VisualStudio/v14.0/FSharp ${REPODIR}/../../tmp/mono/lib/mono/xbuild/Microsoft/VisualStudio/v14.0/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/xbuild/Microsoft/VisualStudio/v15.0/FSharp ${REPODIR}/../../tmp/mono/lib/mono/xbuild/Microsoft/VisualStudio/v15.0/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/gac/nunit*/2.4.8.0__96d09a1eb7f44a77/*.dll* ${REPODIR}/../../tmp/mono/lib/mono/4.5/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/Microsoft.VisualBasic.dll ${REPODIR}/../../tmp/mono/lib/mono/4.5/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/Mono.Cecil.VB* ${REPODIR}/../../tmp/mono/lib/mono/4.5/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/Mono.WebServer2.dll ${REPODIR}/../../tmp/mono/lib/mono/4.5/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/vbnc.* ${REPODIR}/../../tmp/mono/lib/mono/4.5/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/xsp4.exe ${REPODIR}/../../tmp/mono/lib/mono/4.5/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/fastcgi-mono-server4.exe ${REPODIR}/../../tmp/mono/lib/mono/4.5/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/mod-mono-server4.exe ${REPODIR}/../../tmp/mono/lib/mono/4.5/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.5/mono-fpm.exe ${REPODIR}/../../tmp/mono/lib/mono/4.5/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/fsharp ${REPODIR}/../../tmp/mono/lib/mono/
rsync -a --copy-links ${REPODIR}/mono-mac/lib/mono/4.0-api/Microsoft.VisualBasic.dll ${REPODIR}/../../tmp/mono/lib/mono/4.0-api/
rsync -a --copy-links ${REPODIR}/mono-mac/bin/ir* ${REPODIR}/../../tmp/mono/bin/
rsync -a --copy-links ${REPODIR}/mono-mac/bin/ipy* ${REPODIR}/../../tmp/mono/bin/
rsync -a --copy-links ${REPODIR}/mono-mac/bin/fsharp* ${REPODIR}/../../tmp/mono/bin/
rsync -a --copy-links ${REPODIR}/mono-mac/bin/xsp* ${REPODIR}/../../tmp/mono/bin/
rsync -a --copy-links ${REPODIR}/mono-mac/bin/nuget ${REPODIR}/../../tmp/mono/bin/
rsync -a --copy-links ${REPODIR}/mono-mac/bin/msbuild ${REPODIR}/../../tmp/mono/bin/
sed -i 's#/Library.*mono#../..#' ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ F\#/v4.*/*
sed -i 's#/Library.*mono#../../../../..#' ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ SDKs/F\#/3.*/Framework/v4.*/*
sed -i 's#/Library.*mono#../../../../..#' ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ SDKs/F\#/4.*/Framework/v4.*/*
sed -i 's#/Library.*mono#../../../../..#' ${REPODIR}/../../tmp/mono/lib/mono/xbuild/Microsoft/VisualStudio/v*/FSharp/*
rsync -a --copy-links ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ F\#/v4.0/* ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ F\#/v4.0/
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/
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/
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/
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/
pushd ${REPODIR}/../../tmp/mono/bin
rm -f xsp
for i in ir ir64 irw irw64 xsp2 xsp4 fsharpc fsharpi fsharpiAnyCpu nuget msbuild ipy ipy64 ipyw ipyw64
do echo "Processing $i"
sed -i 's#/Library.*mono #\"\$\{BASH_SOURCE%/\*\}\"/mono #' $i
sed -i 's#/Library.*cli #\"\$\{BASH_SOURCE%/\*\}\"/cli #' $i
if [ -n "$(grep -hoE '[\" ]/Library.*\.(exe|dll)' $i)" ]
then EXENAME=$(basename `grep -hoE -m 1 '[\" ]/Library.*\.(exe|dll)' $i | sed 's/^\"//'`)
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/##')
sed "s#@@RUNTIME@@#${RUNTIME}\\\\#g" ${REPODIR}/../../resources/wrapper.bat > $i.bat
sed -i "s#@@COMMAND@@#${EXENAME}#g" $i.bat
sed -i 's#/#\\#g' $i.bat
fi
sed -i 's#/Library.*/[0-9]\+\.[0-9]\+\.[0-9]\+/lib/#\"\$\(cygpath -w \"\$\{BASH_SOURCE%/\*\}\"/../lib/\)\"#g#' $i
sed -i 's#\"\"#\"#g' $i
sed -i 's#)\"#)#g' $i
sed -i 's#exe #exe\" #' $i
sed -i 's#dll #dll\" #' $i
sed -i 's#basename \$0#basename \"\$0\"#' $i
done
cp xsp4 xsp
cp xsp4.bat xsp.bat
chmod a+x *
cd ..
for i in lib/mono/4.5/Mono.Cecil.VB*.dll lib/mono/4.5/Microsoft.VisualBasic.dll lib/mono/*/xsp*.exe lib/mono/4.5/fastcgi-mono-server4.exe lib/mono/4.5/mod-mono-server4.exe lib/mono/4.5/mono-fpm.exe lib/mono/*/Mono.WebServer*.dll
do bin/gacutil -i $i
done
# make sure we didn't miss any files with Mac paths
if grep -R 'Mono\.framework' . --exclude=xbuild.1 --exclude=MSBuild.dll.config --exclude=Microsoft.Common.Mono.Before.targets --exclude=macpack.exe; then
echo "Found Mac paths in files, please make sure they're fixed."
exit 1
fi
# make sure we didn't miss any files with cygwin install paths
if grep -R '/tmp/mono'. --exclude=*.pc --exclude=mono-find-provides --exclude=mono-find-requires; then
echo "Found cygwin paths in files, please make sure they're fixed."
exit 1
fi
popd
}
prerequisites()
{
which bsdcpio 2>/dev/null || error "*** bsdcpio is not in \$PATH ***"
which wget 2>/dev/null || error "*** wget is not in \$PATH ***"
which xml2-config 2>/dev/null || error "*** xml2-config is not in \$PATH ***"
which unzip 2>/dev/null || error "*** unzip is not in \$PATH ***"
if [ ! -e "/usr/include/openssl/crypto.h" ]
then error "*** openssl-devel is not installed ***"
fi
}
$@
|