2020-10-23 17:59:08 +03:00
|
|
|
#!/bin/bash -e -o pipefail
|
2023-11-28 02:25:03 +01:00
|
|
|
################################################################################
|
|
|
|
|
## File: install-xamarin.sh
|
|
|
|
|
## Desc: Install Xamarin
|
|
|
|
|
################################################################################
|
|
|
|
|
|
2020-09-10 14:34:08 +03:00
|
|
|
source ~/utils/utils.sh
|
|
|
|
|
source ~/utils/xamarin-utils.sh
|
|
|
|
|
|
2023-12-21 14:48:28 +01:00
|
|
|
mono_versions=($(get_toolset_value '.xamarin."mono_versions" | reverse | .[]'))
|
|
|
|
|
xamarin_ios_versions=($(get_toolset_value '.xamarin."ios_versions" | reverse | .[]'))
|
|
|
|
|
xamarin_mac_versions=($(get_toolset_value '.xamarin."mac_versions" | reverse | .[]'))
|
|
|
|
|
xamarin_android_versions=($(get_toolset_value '.xamarin."android_versions" | reverse | .[]'))
|
|
|
|
|
latest_sdk_symlink=$(get_toolset_value '.xamarin.bundles[0].symlink')
|
|
|
|
|
current_sdk_symlink=$(get_toolset_value '.xamarin."bundle_default"')
|
|
|
|
|
default_xcode_version=$(get_toolset_value '.xcode.default')
|
2020-09-10 14:34:08 +03:00
|
|
|
|
2024-01-09 14:47:31 +01:00
|
|
|
if [[ $current_sdk_symlink == "latest" ]]; then
|
2023-12-21 14:48:28 +01:00
|
|
|
current_sdk_symlink=$latest_sdk_symlink
|
2020-09-10 14:34:08 +03:00
|
|
|
fi
|
|
|
|
|
|
2024-01-09 14:47:31 +01:00
|
|
|
MONO_VERSIONS_PATH="/Library/Frameworks/Mono.framework/Versions"
|
|
|
|
|
IOS_VERSIONS_PATH="/Library/Frameworks/Xamarin.iOS.framework/Versions"
|
|
|
|
|
ANDROID_VERSIONS_PATH="/Library/Frameworks/Xamarin.Android.framework/Versions"
|
|
|
|
|
MAC_VERSIONS_PATH="/Library/Frameworks/Xamarin.Mac.framework/Versions"
|
2020-09-10 14:34:08 +03:00
|
|
|
|
2024-01-09 14:47:31 +01:00
|
|
|
TMPMOUNT=$(/usr/bin/mktemp -d /tmp/visualstudio.XXXX)
|
|
|
|
|
TMPMOUNT_FRAMEWORKS=$TMPMOUNT/frameworks
|
2020-09-10 14:34:08 +03:00
|
|
|
createBackupFolders
|
|
|
|
|
|
|
|
|
|
pushd $TMPMOUNT
|
|
|
|
|
|
|
|
|
|
# Download NUnit console
|
|
|
|
|
downloadNUnitConsole
|
|
|
|
|
|
|
|
|
|
# Install Mono sdks
|
2024-01-09 14:47:31 +01:00
|
|
|
for version in ${mono_versions[@]}; do installMono $version; done
|
2020-09-10 14:34:08 +03:00
|
|
|
sudo mv -v $TMPMOUNT_FRAMEWORKS/mono/* $MONO_VERSIONS_PATH/
|
|
|
|
|
|
|
|
|
|
# Install Xamarin.iOS sdks
|
2024-01-09 14:47:31 +01:00
|
|
|
for version in ${xamarin_ios_versions[@]}; do installXamarinIOS $version; done
|
2020-09-10 14:34:08 +03:00
|
|
|
sudo mv -v $TMPMOUNT_FRAMEWORKS/ios/* $IOS_VERSIONS_PATH/
|
|
|
|
|
|
|
|
|
|
# Install Xamarin.Mac sdks
|
2024-01-09 14:47:31 +01:00
|
|
|
for version in ${xamarin_mac_versions[@]}; do installXamarinMac $version; done
|
2020-09-10 14:34:08 +03:00
|
|
|
sudo mv -v $TMPMOUNT_FRAMEWORKS/mac/* $MAC_VERSIONS_PATH/
|
|
|
|
|
|
|
|
|
|
# Install Xamarin.Android sdks
|
2024-01-09 14:47:31 +01:00
|
|
|
for version in ${xamarin_android_versions[@]}; do installXamarinAndroid $version; done
|
2020-09-10 14:34:08 +03:00
|
|
|
sudo mv -v $TMPMOUNT_FRAMEWORKS/android/* $ANDROID_VERSIONS_PATH/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create bundles
|
2023-12-21 14:48:28 +01:00
|
|
|
bundles_count=$(get_toolset_value '.xamarin.bundles | length')
|
|
|
|
|
for ((bundle_index=0; bundle_index<bundles_count; bundle_index++)); do
|
|
|
|
|
symlink=$(get_toolset_value ".xamarin.bundles[$bundle_index].symlink")
|
|
|
|
|
mono=$(get_toolset_value ".xamarin.bundles[$bundle_index].mono")
|
|
|
|
|
ios=$(get_toolset_value ".xamarin.bundles[$bundle_index].ios")
|
|
|
|
|
mac=$(get_toolset_value ".xamarin.bundles[$bundle_index].mac")
|
|
|
|
|
android=$(get_toolset_value ".xamarin.bundles[$bundle_index].android")
|
|
|
|
|
createBundle $symlink $mono $ios $mac $android
|
2020-09-10 14:34:08 +03:00
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Symlinks for the latest Xamarin bundle
|
2023-12-21 14:48:28 +01:00
|
|
|
createBundleLink $latest_sdk_symlink "Latest"
|
|
|
|
|
createBundleLink $current_sdk_symlink "Current"
|
2020-09-10 14:34:08 +03:00
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Fix nuget in some mono versions because of known bugs
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
# Creating UWP Shim to hack UWP build failure
|
|
|
|
|
createUWPShim
|
|
|
|
|
|
|
|
|
|
popd
|
|
|
|
|
|
|
|
|
|
echo "Clean up packages..."
|
2024-01-09 14:47:31 +01:00
|
|
|
sudo rm -rf $TMPMOUNT
|
2020-10-26 17:41:40 +03:00
|
|
|
|
|
|
|
|
# Fix Xamarin issue with Xcode symlink: https://github.com/xamarin/xamarin-macios/issues/9960
|
|
|
|
|
PREFERENCES_XAMARIN_DIR="${HOME}/Library/Preferences/Xamarin"
|
|
|
|
|
mkdir -p $PREFERENCES_XAMARIN_DIR
|
2023-12-21 14:48:28 +01:00
|
|
|
/usr/libexec/PlistBuddy -c "add :AppleSdkRoot string /Applications/Xcode_${default_xcode_version}.app" $PREFERENCES_XAMARIN_DIR/Settings.plist
|
2021-01-20 14:11:00 +07:00
|
|
|
|
2022-08-10 13:55:34 +01:00
|
|
|
# Temporary workaround to recreate nuget.config file with a correct feed https://github.com/actions/runner-images/issues/5768
|
2022-06-22 22:20:37 +04:00
|
|
|
rm -rf $HOME/.config/NuGet/NuGet.Config
|
|
|
|
|
nuget config
|
|
|
|
|
|
2023-12-15 19:29:17 +01:00
|
|
|
# Temporary workaround to point Mono to the proper NUnit console
|
|
|
|
|
sudo sed -Ei '' 's/3.6.0/3.6.1/' /Library/Frameworks/Mono.framework/Versions/Current/Commands/nunit3-console
|
|
|
|
|
|
2021-01-20 14:11:00 +07:00
|
|
|
invoke_tests "Xamarin"
|