install: adjustments to install scripts to better support alternative versions of python, PYTHON_DEP added for system package adjustments
This commit is contained in:
parent
7173e488cb
commit
d77ed9c473
2 changed files with 27 additions and 14 deletions
10
setup.sh
10
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
|
||||
|
|
31
tasks.py
31
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:
|
||||
|
|
Loading…
Reference in a new issue