-#!/usr/bin/env bash
+#!/bin/sh
+
+set -e
# This is a simple script primarily used for CI to install necessary dependencies
#
-# For CI typical usage is
-#
-# ./install-native-dependencies.sh <OS> <arch> azDO
-#
-# For developer use it is not recommended to include the azDO final argument as that
-# makes installation and configuration setting only required for azDO
-#
-# So simple developer usage would currently be
+# Usage:
#
# ./install-native-dependencies.sh <OS>
-if [ "$1" = "Linux" ]; then
- sudo apt update
- if [ "$?" != "0" ]; then
- exit 1;
- fi
- sudo apt install cmake llvm-3.9 clang-3.9 lldb-3.9 liblldb-3.9-dev libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev libcurl4-openssl-dev libssl-dev libkrb5-dev libnuma-dev build-essential
- if [ "$?" != "0" ]; then
- exit 1;
- fi
-elif [[ "$1" == "MacCatalyst" || "$1" == "OSX" || "$1" == "tvOS" || "$1" == "iOS" ]]; then
- engdir=$(dirname "${BASH_SOURCE[0]}")
-
- echo "Installed xcode version: `xcode-select -p`"
-
- if [ "$3" = "azDO" ]; then
- # workaround for old osx images on hosted agents
- # piped in case we get an agent without these values installed
- if ! brew_output="$(brew uninstall openssl@1.0.2t 2>&1 >/dev/null)"; then
- echo "didn't uninstall openssl@1.0.2t"
- else
- echo "successfully uninstalled openssl@1.0.2t"
- fi
- fi
+os="$(echo "$1" | tr "[:upper:]" "[:lower:]")"
+
+if [ -e /etc/os-release ]; then
+ . /etc/os-release
+fi
+
+if [ "$os" = "linux" ] && { [ "$ID" = "debian" ] || [ "$ID_LIKE" = "debian" ]; }; then
+ apt update
+
+ apt install -y build-essential gettext locales cmake llvm clang lldb liblldb-dev libunwind8-dev libicu-dev liblttng-ust-dev \
+ libssl-dev libkrb5-dev libnuma-dev zlib1g-dev
+
+ localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
+elif [ "$os" = "maccatalyst" ] || [ "$os" = "osx" ] || [ "$os" = "macos" ] || [ "$os" = "tvos" ] || [ "$os" = "ios" ]; then
+ echo "Installed xcode version: $(xcode-select -p)"
brew update --preinstall
- brew bundle --no-upgrade --no-lock --file "${engdir}/Brewfile"
- if [ "$?" != "0" ]; then
- exit 1;
- fi
+ brew bundle --no-upgrade --no-lock --file "$(dirname "$0")/Brewfile"
else
- echo "Must pass \"Linux\", \"tvOS\", \"iOS\" or \"OSX\" as first argument."
+ echo "Must pass 'Linux', 'macOS', 'maccatalyst', 'iOS' or 'tvOS' as first argument."
exit 1
fi
-
name: ${{ parameters.platform }}
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS', 'MacCatalyst') }}:
- - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }} ${{ parameters.archType }} azDO
+ - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }}
displayName: Install Build Dependencies
- script: |
# Install test build dependencies
- ${{ if eq(parameters.osGroup, 'OSX') }}:
- - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) ${{ parameters.archType }} azDO
+ - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup)
displayName: Install native dependencies
# Build core/libraries dependencies of test build
# and FreeBSD builds use a build agent with dependencies
# preinstalled, so we only need this step for OSX and Windows.
- ${{ if eq(parameters.osGroup, 'OSX') }}:
- - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) ${{ parameters.archType }} azDO
+ - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup)
displayName: Install native dependencies (OSX)
# Install internal tools on official builds
# and FreeBSD builds use a build agent with dependencies
# preinstalled, so we only need this step for OSX and Windows.
- ${{ if eq(parameters.osGroup, 'OSX') }}:
- - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) ${{ parameters.archType }} azDO
+ - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup)
displayName: Install native dependencies
# Install internal tools on official builds
cleanUnpackFolder: false
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
- - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }} ${{ parameters.archType }} azDO
+ - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }}
displayName: Install Build Dependencies
- script: |
- template: /eng/pipelines/common/restore-internal-tools.yml
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
- - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }} ${{ parameters.archType }} azDO
+ - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }}
displayName: Install Build Dependencies
- script: |
# and FreeBSD builds use a build agent with dependencies
# preinstalled, so we only need this step for OSX and Windows.
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
- - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) ${{ parameters.archType }} azDO
+ - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup)
displayName: Install native dependencies
- ${{ each monoCrossAOTTargetOS in parameters.monoCrossAOTTargetOS }}:
# and FreeBSD builds use a build agent with dependencies
# preinstalled, so we only need this step for OSX and Windows.
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
- - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) ${{ parameters.archType }} azDO
+ - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup)
displayName: Install native dependencies
# Build