fix
This commit is contained in:
parent
6d026e16f2
commit
559769af88
1 changed files with 32 additions and 0 deletions
|
|
@ -142,6 +142,23 @@ fi
|
||||||
|
|
||||||
needs() { local x; for x in "${NEEDED[@]}"; do [[ "$x" == "$1" ]] && return 0; done; return 1; }
|
needs() { local x; for x in "${NEEDED[@]}"; do [[ "$x" == "$1" ]] && return 0; done; return 1; }
|
||||||
|
|
||||||
|
# Tools this script itself leans on, installed before anything tries to use
|
||||||
|
# them. A minimal Ubuntu has no curl, and the Go tarball download would die on
|
||||||
|
# its first call -- after root was already taken and the first package was
|
||||||
|
# already installed, which is the worst place to stop. Arch's base always has
|
||||||
|
# curl (pacman links against it), so in practice this is the Debian path.
|
||||||
|
ensure_installer_tools() {
|
||||||
|
local wanted=()
|
||||||
|
have curl || wanted+=("curl")
|
||||||
|
# Without the CA bundle every https download fails certificate verification.
|
||||||
|
if [[ "$FAMILY" == "debian" && ! -e /etc/ssl/certs/ca-certificates.crt ]]; then
|
||||||
|
wanted+=("ca-certificates")
|
||||||
|
fi
|
||||||
|
[[ ${#wanted[@]} -eq 0 ]] && return 0
|
||||||
|
info "Installing what this script needs first: ${wanted[*]}"
|
||||||
|
pkg_install "${wanted[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
# --- package manager ---------------------------------------------------------
|
# --- package manager ---------------------------------------------------------
|
||||||
APT_UPDATED=0
|
APT_UPDATED=0
|
||||||
apt_update_once() {
|
apt_update_once() {
|
||||||
|
|
@ -157,6 +174,8 @@ pkg_install() {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ensure_installer_tools
|
||||||
|
|
||||||
# --- Python + OpenSSL --------------------------------------------------------
|
# --- Python + OpenSSL --------------------------------------------------------
|
||||||
if needs python; then
|
if needs python; then
|
||||||
info "Installing Python 3"
|
info "Installing Python 3"
|
||||||
|
|
@ -283,6 +302,19 @@ fi
|
||||||
# into it (PEP 668), and owpengram-server.sh already prefers ./.venv when present.
|
# into it (PEP 668), and owpengram-server.sh already prefers ./.venv when present.
|
||||||
if needs pydeps; then
|
if needs pydeps; then
|
||||||
info "Installing the panel's Python packages into ./.venv"
|
info "Installing the panel's Python packages into ./.venv"
|
||||||
|
# Debian/Ubuntu ship venv separately from python3, so an interpreter that was
|
||||||
|
# already installed (and therefore skipped the Python step above) can still be
|
||||||
|
# missing ensurepip -- `python3 -m venv` then fails halfway through, leaving a
|
||||||
|
# broken .venv behind. The package is named for the interpreter's version;
|
||||||
|
# the unversioned metapackage is the fallback for Debian releases that have it.
|
||||||
|
if [[ "$FAMILY" == "debian" ]] && ! python3 -c 'import ensurepip' 2>/dev/null; then
|
||||||
|
PYVER="$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"
|
||||||
|
info "Installing python${PYVER}-venv"
|
||||||
|
pkg_install "python${PYVER}-venv" 2>/dev/null || pkg_install python3-venv
|
||||||
|
fi
|
||||||
|
# A previous failed attempt leaves a .venv without an interpreter; starting
|
||||||
|
# over is the only way out of that, and it costs nothing when it is absent.
|
||||||
|
[[ -x "$(venv_python)" ]] || rm -rf "$REPO_ROOT/.venv"
|
||||||
[[ -x "$(venv_python)" ]] || python3 -m venv "$REPO_ROOT/.venv"
|
[[ -x "$(venv_python)" ]] || python3 -m venv "$REPO_ROOT/.venv"
|
||||||
"$(venv_python)" -m pip install --quiet --upgrade pip
|
"$(venv_python)" -m pip install --quiet --upgrade pip
|
||||||
"$(venv_python)" -m pip install --quiet -r tui-panel/requirements-panel.txt
|
"$(venv_python)" -m pip install --quiet -r tui-panel/requirements-panel.txt
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue