From d77ed9c47363aaeec8d218030b767435e2e65725 Mon Sep 17 00:00:00 2001 From: Blake Harnden <32446120+bharnden@users.noreply.github.com> Date: Fri, 27 May 2022 20:10:48 -0700 Subject: [PATCH] install: adjustments to install scripts to better support alternative versions of python, PYTHON_DEP added for system package adjustments --- setup.sh | 10 ++++++---- tasks.py | 31 +++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/setup.sh b/setup.sh index eb81a451..80f51b8e 100755 --- a/setup.sh +++ b/setup.sh @@ -1,14 +1,16 @@ #!/bin/bash # install pre-reqs using yum/apt +PYTHON="${PYTHON:=python3}" +PYTHON_DEP="${PYTHON_DEP:=python3}" if command -v apt &> /dev/null then echo "setup to install CORE using apt" - sudo apt install -y python3-pip python3-venv + sudo apt install -y ${PYTHON_DEP}-pip ${PYTHON_DEP}-venv elif command -v yum &> /dev/null then echo "setup to install CORE using yum" - sudo yum install -y python3-pip + sudo yum install -y ${PYTHON_DEP}-pip else echo "apt/yum was not found" echo "install python3, pip, venv, pipx, and invoke to run the automated install" @@ -16,8 +18,8 @@ else fi # install tooling for invoke based installation -python3 -m pip install --user pipx==0.16.4 -python3 -m pipx ensurepath +${PYTHON} -m pip install --user pipx==0.16.4 +${PYTHON} -m pipx ensurepath export PATH=$PATH:~/.local/bin pipx install invoke==1.4.1 pipx install poetry==1.1.12 diff --git a/tasks.py b/tasks.py index 2b999cfc..63231de5 100644 --- a/tasks.py +++ b/tasks.py @@ -114,6 +114,10 @@ def get_env_python() -> str: return os.environ.get("PYTHON", "python3") +def get_env_python_dep() -> str: + return os.environ.get("PYTHON_DEP", "python3") + + def get_python(c: Context, warn: bool = False) -> str: with c.cd(DAEMON_DIR): r = c.run("poetry env info -p", warn=warn, hide=True) @@ -153,23 +157,27 @@ def get_os(install_type: Optional[str]) -> OsInfo: def check_existing_core(c: Context, hide: bool) -> None: if c.run("python -c \"import core\"", warn=True, hide=hide): raise SystemError("existing python2 core installation detected, please remove") - if c.run("python3 -c \"import core\"", warn=True, hide=hide): - raise SystemError("existing python3 core installation detected, please remove") + python_bin = get_env_python() + if c.run(f"{python_bin} -c \"import core\"", warn=True, hide=hide): + raise SystemError( + f"existing {python_bin} core installation detected, please remove" + ) if c.run("which core-daemon", warn=True, hide=hide): raise SystemError("core scripts found, please remove old installation") def install_system(c: Context, os_info: OsInfo, hide: bool) -> None: + python_dep = get_env_python_dep() if os_info.like == OsLike.DEBIAN: c.run( "sudo apt install -y automake pkg-config gcc libev-dev nftables " - "iproute2 ethtool tk python3-tk bash", + f"iproute2 ethtool tk {python_dep}-tk bash", hide=hide ) elif os_info.like == OsLike.REDHAT: c.run( "sudo yum install -y automake pkgconf-pkg-config gcc gcc-c++ " - "libev-devel nftables iproute python3-devel python3-tkinter " + f"libev-devel nftables iproute {python_dep}-devel {python_dep}-tkinter " "tk ethtool make bash", hide=hide ) @@ -202,14 +210,14 @@ def install_core(c: Context, hide: bool) -> None: def install_poetry(c: Context, dev: bool, local: bool, hide: bool) -> None: + python_bin = get_env_python() if local: with c.cd(DAEMON_DIR): c.run("poetry build -f wheel", hide=hide) - c.run("sudo python3 -m pip install dist/*") + c.run(f"sudo {python_bin} -m pip install dist/*") else: args = "" if dev else "--no-dev" with c.cd(DAEMON_DIR): - python_bin = get_env_python() c.run(f"poetry env use {python_bin}", hide=hide) c.run(f"poetry install {args}", hide=hide) if dev: @@ -388,12 +396,13 @@ def install_emane(c, emane_version, verbose=False, install_type=None): p = Progress(verbose) hide = not verbose os_info = get_os(install_type) + python_dep = get_env_python_dep() with p.start("installing system dependencies"): if os_info.like == OsLike.DEBIAN: c.run( "sudo apt install -y gcc g++ automake libtool libxml2-dev " "libprotobuf-dev libpcap-dev libpcre3-dev uuid-dev pkg-config " - "protobuf-compiler git python3-protobuf python3-setuptools", + f"protobuf-compiler git {python_dep}-protobuf {python_dep}-setuptools", hide=hide, ) elif os_info.like == OsLike.REDHAT: @@ -402,7 +411,7 @@ def install_emane(c, emane_version, verbose=False, install_type=None): c.run( "sudo yum install -y autoconf automake git libtool libxml2-devel " "libpcap-devel pcre-devel libuuid-devel make gcc-c++ protobuf-compiler " - "protobuf-devel python3-setuptools", + f"protobuf-devel {python_dep}-setuptools", hide=hide, ) emane_dir = "../emane" @@ -411,10 +420,11 @@ def install_emane(c, emane_version, verbose=False, install_type=None): with p.start("cloning emane"): c.run(f"git clone {emane_url} {emane_dir}", hide=hide) with p.start("setup emane"): + python_bin = get_env_python() with c.cd(emane_dir): c.run(f"git checkout {emane_version}", hide=hide) c.run("./autogen.sh", hide=hide) - c.run("PYTHON=python3 ./configure --prefix=/usr", hide=hide) + c.run(f"PYTHON={python_bin} ./configure --prefix=/usr", hide=hide) with p.start("build emane python bindings"): with c.cd(str(emane_python_dir)): c.run("make -j$(nproc)", hide=hide) @@ -456,7 +466,8 @@ def uninstall( if local: with p.start("uninstalling core"): - c.run("sudo python3 -m pip uninstall -y core", hide=hide) + python_bin = get_env_python() + c.run(f"sudo {python_bin} -m pip uninstall -y core", hide=hide) else: python = get_python(c, warn=True) if python: