2021-02-17 23:15:18 +08:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
# Fail on unset variables and command errors
|
|
|
|
set -ue -o pipefail
|
|
|
|
|
|
|
|
# Prevent commands misbehaving due to locale differences
|
|
|
|
export LC_ALL=C
|
|
|
|
|
2017-11-22 15:27:35 +08:00
|
|
|
install_vim() {
|
2019-10-09 22:57:03 +08:00
|
|
|
local URL=https://github.com/vim/vim
|
|
|
|
local tag=$1
|
2021-08-11 13:45:38 +08:00
|
|
|
local ext=$([[ $tag == "nightly" ]] && echo "" || echo "-b $tag")
|
2019-10-09 22:57:03 +08:00
|
|
|
local tmp="$(mktemp -d)"
|
|
|
|
local out="${DEPS}/_vim/$tag"
|
2019-10-13 22:16:53 +08:00
|
|
|
mkdir -p $out
|
2019-10-09 22:57:03 +08:00
|
|
|
git clone --depth 1 --single-branch $ext $URL $tmp
|
|
|
|
cd $tmp
|
2023-04-04 10:53:05 +08:00
|
|
|
|
|
|
|
# Apply Vim patch v8.0.1635 to fix build with Python.
|
|
|
|
if grep -q _POSIX_THREADS src/if_python3.c; then
|
|
|
|
sed -i '/#ifdef _POSIX_THREADS/,+2 d' src/if_python3.c
|
|
|
|
fi
|
|
|
|
|
2020-08-29 16:46:57 +08:00
|
|
|
./configure \
|
2019-10-09 22:57:03 +08:00
|
|
|
--with-features=huge \
|
|
|
|
--enable-pythoninterp \
|
|
|
|
--enable-python3interp \
|
2019-10-13 22:16:53 +08:00
|
|
|
--enable-luainterp \
|
|
|
|
--prefix=${out}
|
2020-08-29 16:46:57 +08:00
|
|
|
make
|
2019-10-13 22:16:53 +08:00
|
|
|
make install
|
|
|
|
}
|
2017-11-22 15:27:35 +08:00
|
|
|
|
2019-10-13 22:16:53 +08:00
|
|
|
install_nvim() {
|
|
|
|
local URL=https://github.com/neovim/neovim
|
|
|
|
local tag=$1
|
|
|
|
local tmp="$(mktemp -d)"
|
|
|
|
local out="${DEPS}/_neovim/$tag"
|
|
|
|
mkdir -p $out
|
2021-08-11 13:45:38 +08:00
|
|
|
curl -o $tmp/nvim-linux64.tar.gz -L "https://github.com/neovim/neovim/releases/download/$tag/nvim-linux64.tar.gz"
|
|
|
|
tar -xzvf $tmp/nvim-linux64.tar.gz -C $tmp
|
|
|
|
cp -r $tmp/nvim-linux64/* $out
|
|
|
|
chmod +x $out/bin/nvim
|
|
|
|
# fix ModuleNotFoundError: No module named 'setuptools'
|
|
|
|
python3 -m pip install -U setuptools
|
|
|
|
python3 -m pip install pynvim
|
2019-10-13 22:16:53 +08:00
|
|
|
}
|
2017-11-22 15:27:35 +08:00
|
|
|
|
2019-10-13 22:16:53 +08:00
|
|
|
install() {
|
|
|
|
local vim=$1
|
|
|
|
local tag=$2
|
2017-11-22 15:27:35 +08:00
|
|
|
|
2019-10-13 22:16:53 +08:00
|
|
|
if [[ -d "${DEPS}/_$vim/$tag/bin" ]]; then
|
|
|
|
echo "Use a cached version '$HOME/_$vim/$tag'."
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
if [[ $vim == "nvim" ]]; then
|
|
|
|
install_nvim $tag
|
|
|
|
else
|
|
|
|
install_vim $tag
|
|
|
|
fi
|
|
|
|
}
|
2019-10-09 22:57:03 +08:00
|
|
|
|
2019-10-13 22:16:53 +08:00
|
|
|
install $@
|