mirror of
https://github.com/wez/wezterm.git
synced 2024-08-17 10:10:23 +03:00
401 lines
7.3 KiB
Bash
Executable File
401 lines
7.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
TESTING=0
|
|
DOCS=0
|
|
for arg in "$@"; do
|
|
case $arg in
|
|
--testing)
|
|
TESTING=1
|
|
;;
|
|
--docs)
|
|
DOCS=1
|
|
;;
|
|
*)
|
|
echo 'get-deps:'
|
|
echo ' --docs include dependencies required for testing docs'
|
|
echo ' --testing include dependencies required for tests'
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
NOTFOUND=0
|
|
|
|
test_cmd() {
|
|
command -v $1 >/dev/null
|
|
}
|
|
|
|
test_flag() {
|
|
test $TESTING -eq 1
|
|
}
|
|
|
|
docs_flag() {
|
|
test $DOCS -eq 1
|
|
}
|
|
|
|
if test -z "$SUDO"; then
|
|
if test_cmd 'sudo'; then
|
|
SUDO="sudo"
|
|
elif test_cmd 'doas'; then
|
|
SUDO="doas"
|
|
fi
|
|
fi
|
|
|
|
alpine_deps() {
|
|
APK="$SUDO apk"
|
|
$APK add \
|
|
'alpine-sdk' \
|
|
'bash' \
|
|
'build-base' \
|
|
'coreutils' \
|
|
'fontconfig-dev' \
|
|
'libssh2-dev' \
|
|
'libx11-dev' \
|
|
'libxkbcommon-dev' \
|
|
'openssl-dev' \
|
|
'pkgconf' \
|
|
'python3' \
|
|
'wayland-dev' \
|
|
'xcb-util-dev' \
|
|
'xcb-util-image-dev' \
|
|
'xcb-util-keysyms-dev' \
|
|
'xcb-util-wm-dev' \
|
|
'zlib-dev' \
|
|
'zstd-dev'
|
|
|
|
if ! test_cmd 'cargo'; then
|
|
$APK add 'cargo'
|
|
fi
|
|
|
|
if test_flag; then
|
|
$APK add 'openssh'
|
|
fi
|
|
}
|
|
|
|
fedora_deps() {
|
|
if test_cmd 'dnf'; then
|
|
YUM="$SUDO dnf"
|
|
elif test_cmd 'yum'; then
|
|
YUM="$SUDO yum"
|
|
else
|
|
echo "No idea what package manager to use, sorry! (perhaps 'dnf' or 'yum' is not in \$PATH?)"
|
|
return 1
|
|
fi
|
|
# Fedora 33 moved some perl bits around
|
|
$YUM install -y 'perl-FindBin' 'perl-File-Compare' || true
|
|
$YUM install -y \
|
|
'make' \
|
|
'gcc' \
|
|
'gcc-c++' \
|
|
'flatpak-builder' \
|
|
'fontconfig-devel' \
|
|
'openssl-devel' \
|
|
'perl-interpreter' \
|
|
'python3' \
|
|
'python3-pip' \
|
|
'libxcb-devel' \
|
|
'libxkbcommon-devel' \
|
|
'libxkbcommon-x11-devel' \
|
|
'wayland-devel' \
|
|
'mesa-libEGL-devel' \
|
|
'xcb-util-devel' \
|
|
'xcb-util-keysyms-devel' \
|
|
'xcb-util-image-devel' \
|
|
'xcb-util-wm-devel' \
|
|
'rpm-build'
|
|
|
|
if test_flag; then
|
|
$YUM install -y 'openssh-server'
|
|
fi
|
|
}
|
|
|
|
suse_deps() {
|
|
ZYPPER="$SUDO zypper"
|
|
RESOLVE=""
|
|
if [ "${CI}" == "yes" ] ; then
|
|
RESOLVE="--allow-downgrade"
|
|
fi
|
|
$ZYPPER install $RESOLVE -yl 'perl-FindBin' 'perl-File-Compare' || true
|
|
$ZYPPER install $RESOLVE -yl \
|
|
'make' \
|
|
'gcc' \
|
|
'gcc-c++' \
|
|
'fontconfig-devel' \
|
|
'libopenssl-devel' \
|
|
'perl' \
|
|
'python3' \
|
|
'libxcb-devel' \
|
|
'libxkbcommon-devel' \
|
|
'libxkbcommon-x11-devel' \
|
|
'wayland-devel' \
|
|
'Mesa-libEGL-devel' \
|
|
'xcb-util-devel' \
|
|
'xcb-util-keysyms-devel' \
|
|
'xcb-util-image-devel' \
|
|
'xcb-util-wm-devel' \
|
|
'rpm-build'
|
|
|
|
if test_flag; then
|
|
$ZYPPER install $RESOLVE -yl 'openssh-server'
|
|
fi
|
|
}
|
|
|
|
debian_deps() {
|
|
APT="$SUDO apt-get"
|
|
apt-cache show 'libxcb-util-dev' > /dev/null 2>&1 && XCBUTIL="libxcb-util-dev" || XCBUTIL="libxcb-util0-dev"
|
|
$APT install -y \
|
|
'bsdutils' \
|
|
'cmake' \
|
|
'dpkg-dev' \
|
|
'fakeroot' \
|
|
'gcc' \
|
|
'g++' \
|
|
'libegl1-mesa-dev' \
|
|
'libssl-dev' \
|
|
'libfontconfig1-dev' \
|
|
'libwayland-dev' \
|
|
'libx11-xcb-dev' \
|
|
'libxcb-ewmh-dev' \
|
|
'libxcb-icccm4-dev' \
|
|
'libxcb-image0-dev' \
|
|
'libxcb-keysyms1-dev' \
|
|
'libxcb-randr0-dev' \
|
|
'libxcb-render0-dev' \
|
|
'libxcb-xkb-dev' \
|
|
'libxkbcommon-dev' \
|
|
'libxkbcommon-x11-dev' \
|
|
"$XCBUTIL" \
|
|
'lsb-release' \
|
|
'python3' \
|
|
'xdg-utils' \
|
|
'xorg-dev'
|
|
|
|
if test_flag; then
|
|
$APT install -y 'openssh-server'
|
|
fi
|
|
if docs_flag; then
|
|
$APT install -y 'python3-pip mkdocs'
|
|
fi
|
|
}
|
|
|
|
arch_deps() {
|
|
PACMAN="$SUDO pacman"
|
|
$PACMAN -S --noconfirm --needed \
|
|
'base-devel' \
|
|
'cargo' \
|
|
'cmake' \
|
|
'fontconfig' \
|
|
'git' \
|
|
'hicolor-icon-theme' \
|
|
'libx11' \
|
|
'libxkbcommon-x11' \
|
|
'pkgconf' \
|
|
'python3' \
|
|
'wayland' \
|
|
'xcb-util' \
|
|
'xcb-util-image' \
|
|
'xcb-util-keysyms' \
|
|
'xcb-util-wm'
|
|
|
|
if test_flag; then
|
|
$PACMAN -S --noconfirm --needed \
|
|
'openssh'
|
|
fi
|
|
}
|
|
|
|
bsd_deps() {
|
|
PKG="$SUDO pkg"
|
|
$PKG install -y \
|
|
'cmake' \
|
|
'curl' \
|
|
'egl-wayland' \
|
|
'expat' \
|
|
'fontconfig' \
|
|
'gcc' \
|
|
'gettext' \
|
|
'git' \
|
|
'gmake' \
|
|
'libxcb' \
|
|
'libxkbcommon' \
|
|
'mesa-devel' \
|
|
'openssl' \
|
|
'p5-ExtUtils-MakeMaker' \
|
|
'perl5' \
|
|
'pkgconf' \
|
|
'python3' \
|
|
'rust' \
|
|
'wayland' \
|
|
'libxcb' \
|
|
'xcb-util' \
|
|
'xcb-util-image' \
|
|
'xcb-util-keysyms' \
|
|
'xcb-util-wm' \
|
|
'z' \
|
|
'zip'
|
|
}
|
|
|
|
gentoo_deps() {
|
|
portageq envvar USE | xargs -n 1 | grep '^X$' \
|
|
|| (echo 'X is not found in USE flags' && exit 1)
|
|
EMERGE="$SUDO emerge"
|
|
for pkg in \
|
|
'cmake' \
|
|
'fontconfig' \
|
|
'openssl' \
|
|
'dev-vcs/git' \
|
|
'libX11' \
|
|
'libxkbcommon' \
|
|
'pkgconf' \
|
|
'python' \
|
|
'perl' \
|
|
'wayland' \
|
|
'mesa' \
|
|
'xcb-util' \
|
|
'xcb-util-image' \
|
|
'xcb-util-keysyms' \
|
|
'xcb-util-wm'
|
|
do
|
|
equery l "$pkg" > /dev/null || $EMERGE --select $pkg
|
|
done
|
|
}
|
|
|
|
void_deps() {
|
|
XBPS="$SUDO xbps-install"
|
|
$XBPS -S \
|
|
'gcc' \
|
|
'pkgconf' \
|
|
'fontconfig-devel' \
|
|
'openssl-devel' \
|
|
'wayland-devel' \
|
|
'libX11-devel' \
|
|
'libxkbcommon-devel' \
|
|
'xcb-util-devel' \
|
|
'xcb-util-image-devel'
|
|
|
|
if ! test_cmd 'cargo'; then
|
|
$XBPS -S 'cargo'
|
|
fi
|
|
|
|
if test_flag; then
|
|
$XBPS -S \
|
|
'openssh'
|
|
fi
|
|
}
|
|
|
|
solus_deps() {
|
|
EOPKG="$SUDO eopkg"
|
|
$EOPKG install -y -c system.devel
|
|
$EOPKG install -y \
|
|
xcb-util-devel \
|
|
xcb-util-image-devel \
|
|
libxkbcommon-devel \
|
|
fontconfig-devel \
|
|
libx11-devel
|
|
}
|
|
|
|
fallback_method() {
|
|
if test -e /etc/alpine-release; then
|
|
alpine_deps
|
|
elif test -e /etc/centos-release || test -e /etc/fedora-release || test -e /etc/redhat-release; then
|
|
fedora_deps
|
|
elif test -e /etc/debian_version; then
|
|
debian_deps
|
|
elif test -e /etc/arch-release; then
|
|
arch_deps
|
|
elif test -e /etc/gentoo-release; then
|
|
gentoo_deps
|
|
elif test -e /etc/solus-release; then
|
|
solus_deps
|
|
elif test_cmd 'lsb_release' && test "$(lsb_release -si)" = "openSUSE"; then
|
|
suse_deps
|
|
fi
|
|
|
|
# OSTYPE is set by bash
|
|
case $OSTYPE in
|
|
darwin*|msys)
|
|
echo "skipping darwin*/msys"
|
|
;;
|
|
freebsd*)
|
|
bsd_deps
|
|
;;
|
|
''|linux-gnu)
|
|
# catch and known OSTYPE
|
|
echo "\$OSTYPE is '$OSTYPE'"
|
|
;;
|
|
*)
|
|
NOTFOUND=1
|
|
return 1
|
|
;;
|
|
esac
|
|
return 0
|
|
}
|
|
|
|
if test -e /etc/os-release; then
|
|
. /etc/os-release
|
|
fi
|
|
|
|
set -e
|
|
|
|
case $ID in
|
|
centos|fedora|rhel)
|
|
fedora_deps
|
|
;;
|
|
alpine)
|
|
alpine_deps
|
|
;;
|
|
*suse*)
|
|
suse_deps
|
|
;;
|
|
debian|ubuntu|pop)
|
|
debian_deps
|
|
;;
|
|
freebsd) # available since 13.0
|
|
bsd_deps
|
|
;;
|
|
arch|artix)
|
|
arch_deps
|
|
;;
|
|
gentoo)
|
|
gentoo_deps
|
|
;;
|
|
void)
|
|
void_deps
|
|
;;
|
|
solus)
|
|
solus_deps
|
|
;;
|
|
*)
|
|
echo "Couldn't find OS by ID, found ID: $ID"
|
|
echo "Fallback to detecting '/etc/<name>-release'"
|
|
fallback_method
|
|
if ! test $? -eq 0; then
|
|
if ! test $NOTFOUND -eq 0; then
|
|
echo "Couldn't identify OS through '/etc/<name>-release'"
|
|
fi
|
|
exit 1
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
if ! test $NOTFOUND -eq 0; then
|
|
echo "Please contribute the commands to install the deps for:"
|
|
if test_cmd 'lsb_release'; then
|
|
lsb_release -ds
|
|
elif test -e /etc/os-release; then
|
|
cat /etc/os-release
|
|
else
|
|
echo "Couldn't recognise system"
|
|
fi
|
|
exit 1
|
|
fi
|
|
|
|
if ! test_cmd 'rustc'; then
|
|
echo "Rust is not installed!"
|
|
echo "Please see https://wezfurlong.org/wezterm/install/source.html for installation instructions"
|
|
exit 1
|
|
fi
|
|
|
|
if ! ./ci/check-rust-version.sh; then
|
|
exit 1
|
|
fi
|