Skip to content

Commit

Permalink
chore(configure): be more defensive about SpiderMonkey location
Browse files Browse the repository at this point in the history
The `configure` script does not check whether SpiderMonkey
actually exists at the presumed location.  This may go wrong when
the user has a version different from the default one.  The
mistake is spotted only in build time, indirectly, via missing
header files.  That is too late and it may not be evident for the
user what the problem is.

Add a user-friendly safeguard for Unix-like systems to prevent
this from happening.
  • Loading branch information
pgj committed Jan 17, 2023
1 parent a14922f commit 84d4b5b
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion configure
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,15 @@ WITH_DOCS=1
ERLANG_MD5="false"
SKIP_DEPS=0

run_erlang() {
erl -noshell -eval "$1" -eval "halt()."
}

COUCHDB_USER="$(whoami 2>/dev/null || echo couchdb)"
SM_VSN=${SM_VSN:-"91"}
ARCH="$(uname -m)"
ERLANG_VER="$(erl -eval 'io:put_chars(erlang:system_info(otp_release)), halt().' -noshell)"
ERLANG_VER="$(run_erlang 'io:put_chars(erlang:system_info(otp_release)).')"
ERLANG_OS="$(run_erlang 'case os:type() of {OS, _} -> io:format("~s~n", [OS]) end.')"

. ${rootdir}/version.mk
COUCHDB_VERSION=${vsn_major}.${vsn_minor}.${vsn_patch}
Expand Down Expand Up @@ -230,6 +235,25 @@ then
exit 1
fi

if [ "${ERLANG_OS}" = "unix" ]
then
case "${SM_VSN}" in
1.8.5)
SM_HEADERS="js"
;;
*) SM_HEADERS="mozjs-${SM_VSN}"
;;
esac

if [ ! -d "/usr/include/${SM_HEADERS}" ] && \
[ ! -d "/usr/local/include/${SM_HEADERS}" ] && \
[ ! -d "/opt/homebrew/include/${SM_HEADERS}" ]
then
echo "ERROR: SpiderMonkey ${SM_VSN} is not found. Please specify with --spidermonkey-version."
exit 1
fi
fi

echo "==> configuring couchdb in rel/couchdb.config"
cat > rel/couchdb.config << EOF
% Licensed under the Apache License, Version 2.0 (the "License"); you may not
Expand Down

0 comments on commit 84d4b5b

Please sign in to comment.