3 REPODIR
=$
(dirname $
(realpath
$0))/..
/repos
/managed-components
7 echo "$(date "+%F@
%T
") :: $1" 1>&2
13 echo "$(date "+%F@
%T
") :: $1"
19 report
"Downloading Xar"
20 wget
--quiet -O ${REPODIR}/xar.
tar.gz https
://xamjenkinsartifact.blob.core.windows.net
/build-package-win-mono
/xar-1.6
.1.
tar.gz || error
"*** Could not download Xar ***"
21 report
"Downloading x64 hostfxr.dll"
22 wget
--quiet -O ${REPODIR}/hostfxr-x64.
zip https
://www.nuget.org
/api
/v
2/package
/runtime.win-x64.Microsoft.NETCore.DotNetHostResolver
/2.0.0 || error
"*** Could not download 64bit hostfxr.dll ***"
23 report
"Downloading x86 hostfxr.dll"
24 wget
--quiet -O ${REPODIR}/hostfxr-x86.
zip https
://www.nuget.org
/api
/v
2/package
/runtime.win-x86.Microsoft.NETCore.DotNetHostResolver
/2.0.0 || error
"*** Could not download 32bit hostfxr.dll ***"
25 report
"Copying Mono MDK for Mac"
26 cp $1 ${REPODIR}/mono.xar
32 report
"Deleting interstitial output"
33 rm -rf ${REPODIR}/mono-mac \
35 ${REPODIR}/hostfxr-x64 \
36 ${REPODIR}/hostfxr-x86 \
37 ${REPODIR}/Distribution \
39 ${REPODIR}/Resources \
41 ${REPODIR}/..
/..
/tmp
/mono-mac
48 if [ ! -x "${REPODIR}/xar/src/xar" ]
49 then report
"Building Xar"
51 tar xf xar.
tar.gz
-C xar
/ --strip-components=1
53 report
"Patching xar configure for compatibility with openssl 1.1"
54 sed -i 's/OpenSSL_add_all_ciphers/OPENSSL_init_crypto/g' configure
59 report
"Unpacking x64 hostfxr.dll"
61 unzip -j "${REPODIR}/hostfxr-x64.zip" "runtimes/win-x64/native/hostfxr.dll" -d "hostfxr-x64"
62 report
"Unpacking x86 hostfxr.dll"
64 unzip -j "${REPODIR}/hostfxr-x86.zip" "runtimes/win-x86/native/hostfxr.dll" -d "hostfxr-x86"
65 report
"Unpacking Mono for Mac"
66 xar
/src
/xar
-x -f mono.xar
67 zcat mono.pkg
/Payload | bsdcpio
-i
68 mv Library
/Frameworks
/Mono.framework
/Versions
/[5,6].
* mono-mac
74 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/ironpython
${REPODIR}/..
/..
/tmp
/mono
/lib
/
75 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/ironruby
${REPODIR}/..
/..
/tmp
/mono
/lib
/
76 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/xsp
${REPODIR}/..
/..
/tmp
/mono
/lib
/
77 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/Microsoft
* ${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/
78 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/msbuild
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/
79 rm -f ${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/msbuild
/15.0/bin
/SdkResolvers
/Microsoft.DotNet.MSBuildSdkResolver
/libhostfxr.dylib
80 rm -f ${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/msbuild
/Current
/bin
/SdkResolvers
/Microsoft.DotNet.MSBuildSdkResolver
/libhostfxr.dylib
81 if [ "$1" = "x64" ]; then
82 cp ${REPODIR}/hostfxr-x64
/hostfxr.dll
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/msbuild
/Current
/bin
/SdkResolvers
/Microsoft.DotNet.MSBuildSdkResolver
/
84 cp ${REPODIR}/hostfxr-x86
/hostfxr.dll
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/msbuild
/Current
/bin
/SdkResolvers
/Microsoft.DotNet.MSBuildSdkResolver
/
86 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/nuget
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/
87 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/xbuild-frameworks
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/
88 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/xbuild
/deniedAssembliesList.txt
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/xbuild
/
89 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/xbuild
/15.0 ${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/xbuild
/
90 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/xbuild
/Current
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/xbuild
/
91 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/xbuild
/Microsoft
/Microsoft.NET.Build.Extensions
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/xbuild
/Microsoft
/
92 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/xbuild
/Microsoft
/NuGet
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/xbuild
/Microsoft
/
93 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/xbuild
/Microsoft
/Portable
/VisualStudio
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/xbuild
/Microsoft
/Portable
/
94 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/xbuild
/Microsoft
/VisualStudio
/v
/FSharp
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/xbuild
/Microsoft
/VisualStudio
/v
/
95 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
/
96 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
/
97 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
/
98 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
/
99 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/xbuild
/Microsoft
/VisualStudio
/v16.0
/FSharp
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/xbuild
/Microsoft
/VisualStudio
/v16.0
/
100 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/4.5/Microsoft.VisualBasic.dll
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/4.5/
101 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/4.5/Mono.Cecil.VB
* ${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/4.5/
102 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/4.5/Mono.WebServer2.dll
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/4.5/
103 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/4.5/vbnc.
* ${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/4.5/
104 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/4.5/xsp4.exe
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/4.5/
105 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/4.5/fastcgi-mono-server4.exe
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/4.5/
106 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/4.5/mod-mono-server4.exe
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/4.5/
107 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/4.5/mono-fpm.exe
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/4.5/
108 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/fsharp
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/
109 rsync
-a --copy-links ${REPODIR}/mono-mac
/lib
/mono
/4.0-api/Microsoft.VisualBasic.dll
${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/4.0-api/
110 rsync
-a --copy-links ${REPODIR}/mono-mac
/bin
/ir
* ${REPODIR}/..
/..
/tmp
/mono
/bin
/
111 rsync
-a --copy-links ${REPODIR}/mono-mac
/bin
/ipy
* ${REPODIR}/..
/..
/tmp
/mono
/bin
/
112 rsync
-a --copy-links ${REPODIR}/mono-mac
/bin
/fsharp
* ${REPODIR}/..
/..
/tmp
/mono
/bin
/
113 rsync
-a --copy-links ${REPODIR}/mono-mac
/bin
/xsp
* ${REPODIR}/..
/..
/tmp
/mono
/bin
/
114 rsync
-a --copy-links ${REPODIR}/mono-mac
/bin
/nuget
${REPODIR}/..
/..
/tmp
/mono
/bin
/
115 rsync
-a --copy-links ${REPODIR}/mono-mac
/bin
/msbuild
${REPODIR}/..
/..
/tmp
/mono
/bin
/
116 sed -i 's#/Library.*mono#../..#' ${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/Microsoft\ F\
#/v4.*/*
117 sed -i 's#/Library.*mono#../../../../..#' ${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/Microsoft\ SDKs
/F\
#/3.*/Framework/v4.*/*
118 sed -i 's#/Library.*mono#../../../../..#' ${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/Microsoft\ SDKs
/F\
#/4.*/Framework/v4.*/*
119 sed -i 's#/Library.*mono#../../../../..#' ${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/xbuild
/Microsoft
/VisualStudio
/v
*/FSharp
/*
120 rsync
-a --copy-links ${REPODIR}/..
/..
/tmp
/mono
/lib
/mono
/Microsoft\ F\
#/v4.0/* ${REPODIR}/../../tmp/mono/lib/mono/Microsoft\ F\#/v4.0/
121 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/
122 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/
123 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/
124 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/
125 pushd ${REPODIR}/..
/..
/tmp
/mono
/bin
127 for i
in ir ir64 irw irw64 xsp2 xsp4 fsharpc fsharpi fsharpiAnyCpu nuget msbuild ipy ipy64 ipyw ipyw64
128 do echo "Processing $i"
129 sed -i 's#/Library.*mono #\"\$\{BASH_SOURCE%/\*\}\"/mono #' $i
130 sed -i 's#/Library.*cli #\"\$\{BASH_SOURCE%/\*\}\"/cli #' $i
131 if [ -n "$(grep -hoE '[\" ]/Library.*\.(exe|dll)' $i)" ]
132 then EXENAME
=$
(basename `grep -hoE -m 1 '[\" ]/Library.*\.(exe|dll)' $i | sed 's/^\"//'`)
133 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/##')
134 sed "s#@@RUNTIME@@#${RUNTIME}\\\\#g" ${REPODIR}/..
/..
/resources
/wrapper.bat
> $i.bat
135 sed -i "s#@@COMMAND@@#${EXENAME}#g" $i.bat
136 sed -i 's#/#\\#g' $i.bat
138 sed -i 's#/Library.*/[0-9]\+\.[0-9]\+\.[0-9]\+/lib/#\"\$\(cygpath -w \"\$\{BASH_SOURCE%/\*\}\"/../lib/\)\"#g#' $i
139 sed -i 's#\"\"#\"#g' $i
140 sed -i 's#)\"#)#g' $i
141 sed -i 's#exe #exe\" #' $i
142 sed -i 's#dll #dll\" #' $i
143 sed -i 's#basename \$0#basename \"\$0\"#' $i
149 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
153 # make sure we didn't miss any files with Mac paths
154 if grep -R 'Mono\.framework' .
--exclude=xbuild
.1 --exclude=MSBuild.dll.config
--exclude=Microsoft.Common.Mono.Before.targets
--exclude=macpack.exe
; then
155 echo "Found Mac paths in files, please make sure they're fixed."
159 # make sure we didn't miss any files with cygwin install paths
160 if grep -R '/tmp/mono'.
--exclude=*.pc
--exclude=mono-find-provides
--exclude=mono-find-requires
; then
161 echo "Found cygwin paths in files, please make sure they're fixed."
170 which bsdcpio
2>/dev
/null || error
"*** bsdcpio is not in \$PATH ***"
171 which wget
2>/dev
/null || error
"*** wget is not in \$PATH ***"
172 which xml2-config
2>/dev
/null || error
"*** xml2-config is not in \$PATH ***"
173 which unzip 2>/dev
/null || error
"*** unzip is not in \$PATH ***"
174 if [ ! -e "/usr/include/openssl/crypto.h" ]
175 then error
"*** openssl-devel is not installed ***"