Merge 79e13d5bd8 into d5c1441a83
This commit is contained in:
commit
37528a016e
112
nvm.sh
112
nvm.sh
|
|
@ -1760,6 +1760,7 @@ nvm_get_os() {
|
||||||
Darwin\ *) NVM_OS=darwin ;;
|
Darwin\ *) NVM_OS=darwin ;;
|
||||||
SunOS\ *) NVM_OS=sunos ;;
|
SunOS\ *) NVM_OS=sunos ;;
|
||||||
FreeBSD\ *) NVM_OS=freebsd ;;
|
FreeBSD\ *) NVM_OS=freebsd ;;
|
||||||
|
OpenBSD\ *) NVM_OS=openbsd ;;
|
||||||
AIX\ *) NVM_OS=aix ;;
|
AIX\ *) NVM_OS=aix ;;
|
||||||
esac
|
esac
|
||||||
nvm_echo "${NVM_OS-}"
|
nvm_echo "${NVM_OS-}"
|
||||||
|
|
@ -1916,7 +1917,7 @@ nvm_install_binary() {
|
||||||
fi
|
fi
|
||||||
local tar
|
local tar
|
||||||
tar='tar'
|
tar='tar'
|
||||||
if [ "${NVM_OS}" = 'aix' ]; then
|
if [ "${NVM_OS}" = 'aix' ] || [ "${NVM_OS}" = 'openbsd' ]; then
|
||||||
tar='gtar'
|
tar='gtar'
|
||||||
fi
|
fi
|
||||||
if (
|
if (
|
||||||
|
|
@ -2091,6 +2092,69 @@ nvm_download_artifact() {
|
||||||
nvm_echo "${TARBALL}"
|
nvm_echo "${TARBALL}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nvm_tar_knows_J() {
|
||||||
|
ERR_MSG=$(tar -J 2>&1 | head -1)
|
||||||
|
[ "_$ERR_MSG" != "_tar: unknown option -- J" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# args: tarball path, NVM_OS var
|
||||||
|
# returns: a string with the path of the extracted compressed file
|
||||||
|
nvm_extract_tar_artifact() {
|
||||||
|
local tar_compression_flag
|
||||||
|
local TARBALL
|
||||||
|
local TAR_COMMAND_SUFFIX
|
||||||
|
local TMPDIR
|
||||||
|
local NVM_OS
|
||||||
|
local tar
|
||||||
|
|
||||||
|
TARBALL="${1}"
|
||||||
|
NVM_OS="${2}"
|
||||||
|
|
||||||
|
tar='tar'
|
||||||
|
if [ "${NVM_OS}" = 'aix' ]; then
|
||||||
|
tar='gtar'
|
||||||
|
fi
|
||||||
|
|
||||||
|
tar_compression_flag='z'
|
||||||
|
|
||||||
|
if ! nvm_tar_knows_J && nvm_has xz && nvm_supports_xz "${VERSION}"; then
|
||||||
|
|
||||||
|
if [ -f "${TARBALL}" ]; then
|
||||||
|
command xz -dk "${TARBALL}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
TARBALL=${TARBALL%.xz}
|
||||||
|
tar_compression_flag=
|
||||||
|
TAR_COMMAND_SUFFIX=
|
||||||
|
TMPDIR="$(dirname "${TARBALL}")"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
if nvm_tar_knows_J; then
|
||||||
|
tar_compression_flag='J'
|
||||||
|
fi
|
||||||
|
|
||||||
|
TAR_COMMAND_SUFFIX="--strip-components 1"
|
||||||
|
TMPDIR="$(dirname "${TARBALL}")/files"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "${TARBALL}" ] && [ -d "${TMPDIR}" ]; then
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
command ${tar} "-x${tar_compression_flag}f" "${TARBALL}" -C "${TMPDIR}" ${TAR_COMMAND_SUFFIX}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The `-C` option for `tar` on Openbsd takes its parameter and extracts files
|
||||||
|
# from the tarball into a new directory named after it. That's why this update
|
||||||
|
# in the `$TMPDIR` is necessary
|
||||||
|
if [ "_$NVM_OS" = "_openbsd" ]; then
|
||||||
|
BASE=$(basename "${TMPDIR}")
|
||||||
|
TMPDIR="${TMPDIR}/${BASE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
nvm_echo "$TMPDIR"
|
||||||
|
}
|
||||||
|
|
||||||
nvm_get_make_jobs() {
|
nvm_get_make_jobs() {
|
||||||
if nvm_is_natural_num "${1-}"; then
|
if nvm_is_natural_num "${1-}"; then
|
||||||
NVM_MAKE_JOBS="$1"
|
NVM_MAKE_JOBS="$1"
|
||||||
|
|
@ -2107,7 +2171,7 @@ nvm_get_make_jobs() {
|
||||||
"_linux")
|
"_linux")
|
||||||
NVM_CPU_CORES="$(nvm_grep -c -E '^processor.+: [0-9]+' /proc/cpuinfo)"
|
NVM_CPU_CORES="$(nvm_grep -c -E '^processor.+: [0-9]+' /proc/cpuinfo)"
|
||||||
;;
|
;;
|
||||||
"_freebsd" | "_darwin")
|
"_freebsd" | "_openbsd" | "_darwin")
|
||||||
NVM_CPU_CORES="$(sysctl -n hw.ncpu)"
|
NVM_CPU_CORES="$(sysctl -n hw.ncpu)"
|
||||||
;;
|
;;
|
||||||
"_sunos")
|
"_sunos")
|
||||||
|
|
@ -2184,11 +2248,11 @@ nvm_install_source() {
|
||||||
make='make'
|
make='make'
|
||||||
local MAKE_CXX
|
local MAKE_CXX
|
||||||
case "${NVM_OS}" in
|
case "${NVM_OS}" in
|
||||||
'freebsd')
|
'freebsd' | 'openbsd')
|
||||||
make='gmake'
|
make='gmake'
|
||||||
MAKE_CXX="CC=${CC:-cc} CXX=${CXX:-c++}"
|
MAKE_CXX="CC=${CC:-cc} CXX=${CXX:-c++}"
|
||||||
;;
|
;;
|
||||||
'darwin')
|
'openbsd' | 'darwin')
|
||||||
MAKE_CXX="CC=${CC:-cc} CXX=${CXX:-c++}"
|
MAKE_CXX="CC=${CC:-cc} CXX=${CXX:-c++}"
|
||||||
;;
|
;;
|
||||||
'aix')
|
'aix')
|
||||||
|
|
@ -2202,15 +2266,9 @@ nvm_install_source() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local tar_compression_flag
|
|
||||||
tar_compression_flag='z'
|
|
||||||
if nvm_supports_xz "${VERSION}"; then
|
|
||||||
tar_compression_flag='J'
|
|
||||||
fi
|
|
||||||
|
|
||||||
local tar
|
local tar
|
||||||
tar='tar'
|
tar='tar'
|
||||||
if [ "${NVM_OS}" = 'aix' ]; then
|
if [ "${NVM_OS}" = 'aix' ] || [ "${NVM_OS}" = 'openbsd' ]; then
|
||||||
tar='gtar'
|
tar='gtar'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -2229,15 +2287,27 @@ nvm_install_source() {
|
||||||
|
|
||||||
TARBALL="$(PROGRESS_BAR="${PROGRESS_BAR}" nvm_download_artifact "${FLAVOR}" source "${TYPE}" "${VERSION}" | command tail -1)" && \
|
TARBALL="$(PROGRESS_BAR="${PROGRESS_BAR}" nvm_download_artifact "${FLAVOR}" source "${TYPE}" "${VERSION}" | command tail -1)" && \
|
||||||
[ -f "${TARBALL}" ] && \
|
[ -f "${TARBALL}" ] && \
|
||||||
TMPDIR="$(dirname "${TARBALL}")/files" && \
|
TMPDIR="$(nvm_extract_tar_artifact "${TARBALL}" "${NVM_OS}" | command tail -1)" && \
|
||||||
|
|
||||||
|
local configure_env
|
||||||
|
# Node's configure.py sets gcc and g++ by default except for darwin
|
||||||
|
# OpenBSD needs to use cc and c++
|
||||||
|
if [ "${NVM_OS}" = 'openbsd' ]; then
|
||||||
|
configure_env="CC=cc CXX=c++"
|
||||||
|
fi
|
||||||
|
|
||||||
if ! (
|
if ! (
|
||||||
# shellcheck disable=SC2086
|
|
||||||
command mkdir -p "${TMPDIR}" && \
|
|
||||||
command "${tar}" -x${tar_compression_flag}f "${TARBALL}" -C "${TMPDIR}" --strip-components 1 && \
|
|
||||||
VERSION_PATH="$(nvm_version_path "${PREFIXED_VERSION}")" && \
|
VERSION_PATH="$(nvm_version_path "${PREFIXED_VERSION}")" && \
|
||||||
nvm_cd "${TMPDIR}" && \
|
nvm_cd "${TMPDIR}" && \
|
||||||
nvm_echo '$>'./configure --prefix="${VERSION_PATH}" $ADDITIONAL_PARAMETERS'<' && \
|
nvm_echo '$>'env ${configure_env} ./configure --prefix="${VERSION_PATH}" ${ADDITIONAL_PARAMETERS}'<' && \
|
||||||
./configure --prefix="${VERSION_PATH}" $ADDITIONAL_PARAMETERS && \
|
env ${configure_env} ./configure --prefix="${VERSION_PATH}" ${ADDITIONAL_PARAMETERS} && \
|
||||||
|
|
||||||
|
# Post-configure: OpenBSD needs to remove the ldl flag in the OpenSSL dep
|
||||||
|
if [ "${NVM_OS}" = 'openbsd' ]; then
|
||||||
|
sed -i 's/-ldl //' ${TMPDIR}/out/deps/openssl/openssl.target.mk
|
||||||
|
sed -i 's/-ldl //' ${TMPDIR}/out/deps/openssl/openssl-cli.target.mk
|
||||||
|
fi
|
||||||
|
|
||||||
$make -j "${NVM_MAKE_JOBS}" ${MAKE_CXX-} && \
|
$make -j "${NVM_MAKE_JOBS}" ${MAKE_CXX-} && \
|
||||||
command rm -f "${VERSION_PATH}" 2>/dev/null && \
|
command rm -f "${VERSION_PATH}" 2>/dev/null && \
|
||||||
$make -j "${NVM_MAKE_JOBS}" ${MAKE_CXX-} install
|
$make -j "${NVM_MAKE_JOBS}" ${MAKE_CXX-} install
|
||||||
|
|
@ -2785,7 +2855,7 @@ nvm() {
|
||||||
local TEST_TOOLS ADD_TEST_TOOLS
|
local TEST_TOOLS ADD_TEST_TOOLS
|
||||||
TEST_TOOLS="git grep awk"
|
TEST_TOOLS="git grep awk"
|
||||||
ADD_TEST_TOOLS="sed cut basename rm mkdir xargs"
|
ADD_TEST_TOOLS="sed cut basename rm mkdir xargs"
|
||||||
if [ "darwin" != "$(nvm_get_os)" ] && [ "freebsd" != "$(nvm_get_os)" ]; then
|
if [ "darwin" != "$(nvm_get_os)" ] && [ "freebsd" != "$(nvm_get_os)" ] && [ "openbsd" != "$(nvm_get_os)" ]; then
|
||||||
TEST_TOOLS="${TEST_TOOLS} ${ADD_TEST_TOOLS}"
|
TEST_TOOLS="${TEST_TOOLS} ${ADD_TEST_TOOLS}"
|
||||||
else
|
else
|
||||||
for tool in ${ADD_TEST_TOOLS} ; do
|
for tool in ${ADD_TEST_TOOLS} ; do
|
||||||
|
|
@ -3108,10 +3178,10 @@ nvm() {
|
||||||
EXIT_CODE=0
|
EXIT_CODE=0
|
||||||
else
|
else
|
||||||
|
|
||||||
if [ "_${NVM_OS}" = "_freebsd" ]; then
|
if [ "_${NVM_OS}" = "_freebsd" ] || [ "_${NVM_OS}" = "_openbsd" ]; then
|
||||||
# node.js and io.js do not have a FreeBSD binary
|
# node.js and io.js do not have a FreeBSD/OpenBSD binary
|
||||||
nobinary=1
|
nobinary=1
|
||||||
nvm_err "Currently, there is no binary for FreeBSD"
|
nvm_err "Currently, there is no binary for ${NVM_OS}"
|
||||||
elif [ "_${NVM_OS}" = "_sunos" ]; then
|
elif [ "_${NVM_OS}" = "_sunos" ]; then
|
||||||
# Not all node/io.js versions have a Solaris binary
|
# Not all node/io.js versions have a Solaris binary
|
||||||
if ! nvm_has_solaris_binary "${VERSION}"; then
|
if ! nvm_has_solaris_binary "${VERSION}"; then
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue