You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.7 KiB

#!/bin/bash
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
# source this script to import its utility functions
opam_retry () {
"$@" || ( \
echo >&2; \
printf '*** `%s` failed\n' "$*" >&2; \
echo '*** Updating opam then retrying' >&2; \
opam update && \
"$@" || ( \
echo >&2; \
printf '*** ERROR: `%s` failed\n' "$*" >&2; \
exit 1 \
) \
)
}
opam_failed () {
local command=$1
echo
printf '*** ERROR: %s failed\n' "$command" >&2
printf "*** ERROR: Try running \$(opam update) then running this script again\n" >&2
exit 1
}
opam_require_version_2 () {
local status=0
local version=0
{ version=$(opam --version 2>/dev/null); status=$?; }
if [ "$status" != 0 ]; then
printf '*** ERROR: `opam --version` failed, please install opam version 2\n' >&2
env >&2
exit 1
fi
case $version in
2*) ;;
*)
printf '*** ERROR: opam version "%s" is not supported, please install opam version 2\n' "$version" >&2
printf '*** NOTE: opam is "%s"\n' "$(which opam)" >&2
env >&2
exit 1
esac
}
# assumes opam is available and initialized
opam_switch_create_if_needed () {
local switch=$1
local compiler=$2
local switch_exists=no
for installed_switch in $(opam switch list --short); do
if [ "$installed_switch" == "$switch" ]; then
switch_exists=yes
break
fi
done
if [ "$switch_exists" = "no" ]; then
opam switch create "$switch" "$compiler"
fi
}
opam_require_version_2