| #!/bin/sh -e |
| # Helper to bypass AC_ERLANG_CHECK_LIB |
| # |
| # Ejabberd releases do not download specific versions of its erlang |
| # dependencies. Instead, it clones the master branch of a git |
| # repository and asks erl to provide the library version. However, |
| # the target erl program cannot be called from the host. So, this |
| # script aims at finding the library version installed on the target, |
| # without calling erlang. |
| |
| usage() { |
| cat <<EOF |
| Usage: |
| $0 library |
| Look for Erlang's library in TARGET_DIR/usr/lib/erlang/lib. |
| |
| If the library is found, it returns the path to the latest version, |
| relative to TARGET_DIR. Otherwise, it returns "not found". |
| |
| If there are several versions, it returns an error because it does not |
| know which one Erlang uses. |
| |
| EOF |
| } |
| |
| die () { |
| echo "$@" >&2 |
| exit 1 |
| } |
| |
| if [ $# -ne 1 ]; then |
| usage |
| exit 0 |
| else |
| library="$1" |
| fi |
| |
| target_dir="${TARGET_DIR:-output/target}" |
| |
| [ -d "$target_dir" ] || die "TARGET_DIR is not a directory. Please \ |
| specify the TARGET_DIR environment variable." |
| |
| case "$(ls -1d -- "$target_dir/usr/lib/erlang/lib/$library-"* | wc -l)" in |
| 0) |
| echo "not found" |
| ;; |
| 1) |
| echo "$target_dir/usr/lib/erlang/lib/$library-"* \ |
| | sed -e "s,^$target_dir,," |
| ;; |
| *) |
| die "Several versions of $library have been found. Please \ |
| remove the unused ones." |
| ;; |
| esac |