install: updates to install docs and update to task for installing emane to be limited to installing for the python virtual environment, recommend official packages instead

This commit is contained in:
Blake Harnden 2021-11-17 15:55:05 -08:00
parent f090c98c54
commit f98594e927
2 changed files with 50 additions and 77 deletions

View file

@ -24,6 +24,16 @@ Verified:
* Ubuntu - 18.04, 20.04 * Ubuntu - 18.04, 20.04
* CentOS - 7.8, 8.0 * CentOS - 7.8, 8.0
> **NOTE:** Ubuntu 20.04 requires installing legacy ebtables for WLAN functionality
Enabling ebtables legacy:
```shell
sudo apt install ebtables
update-alternatives --set ebtables /usr/sbin/ebtables-legacy
```
> **NOTE:** CentOS 8 does not provide legacy ebtables support, WLAN will not function properly
> **NOTE:** CentOS 8 does not have the netem kernel mod available by default > **NOTE:** CentOS 8 does not have the netem kernel mod available by default
CentOS 8 Enabled netem: CentOS 8 Enabled netem:
@ -182,8 +192,9 @@ cd <repo>
# #
#Options: #Options:
# -d, --dev install development mode # -d, --dev install development mode
# -i STRING, --install-type=STRING # -i STRING, --install-type=STRING used to force an install type, can be one of the following (redhat, debian)
# -l, --local determines if core will install to local system, default is False # -l, --local determines if core will install to local system, default is False
# -o, --[no-]ospf disable ospf installation
# -p STRING, --prefix=STRING prefix where scripts are installed, default is /usr/local # -p STRING, --prefix=STRING prefix where scripts are installed, default is /usr/local
# -v, --verbose enable verbose # -v, --verbose enable verbose
@ -218,49 +229,16 @@ python3 <script>
## Installing EMANE ## Installing EMANE
> **NOTE:** installng emane for the virtual environment is known to work for 1.21+ > **NOTE:** installng emane for the virtual environment is known to work for 1.21+
> **NOTE:** automated install currently targets 1.25
There is an invoke task to help with installing EMANE, which attempts to The recommended way to install EMANE is using prebuilt packages, otherwise
build EMANE from source, but has issue on systems with older protobuf-compilers. you can follow their instructions for installing from source. Installation
information can be found [here](https://github.com/adjacentlink/emane/wiki/Install).
There is an invoke task to help install the EMANE bindings into the CORE virtual
environment, when needed.
```shell ```shell
cd <CORE_REPO> cd <CORE_REPO>
# install to virtual environment
inv install-emane inv install-emane
# install locally to system python3
inv install-emane -l
```
Alternatively EMANE can be installed from deb or RPM packages or from source. See the
[EMANE GitHub](https://github.com/adjacentlink/emane) for full details.
With the caveat that the python bindings need to be installed into CORE's
virtualenv, unless installed locally.
### Installing EMANE Python Bindings for Virtual Environment
If you need to just install the EMANE python bindings to the CORE virtual
environment, since you are installing EMANE itself from pre-built packages.
You can run the following
Leveraging the following wiki:
[build EMANE](https://github.com/adjacentlink/emane/wiki/Build)
The following would install the EMANE python bindings after being
successfully built.
```shell
# clone and build emane python bindings
git clone https://github.com/adjacentlink/emane.git
cd emane
./autogen.sh
PYTHON=python3 ./configure --prefix=/usr
cd src/python
make
# install to core virtual environment
cd <CORE_REPO>/daemon
poetry run pip install <EMANE_REPO>/src/python
``` ```
## Using Invoke Tasks ## Using Invoke Tasks
@ -272,11 +250,9 @@ inv --list
Available tasks: Available tasks:
daemon start core-daemon
install install core, poetry, scripts, service, and ospf mdr install install core, poetry, scripts, service, and ospf mdr
install-emane install emane and the python bindings install-emane install emane python bindings into the core virtual environment
install-scripts install core script files, modified to leverage virtual environment reinstall run the uninstall task, get latest from specified branch, and run install task
install-service install systemd core service
test run core tests test run core tests
test-emane run core emane tests test-emane run core emane tests
test-mock run core tests using mock to avoid running as sudo test-mock run core tests using mock to avoid running as sudo
@ -294,6 +270,9 @@ Docstring:
Options: Options:
-d, --dev install development mode -d, --dev install development mode
-i STRING, --install-type=STRING used to force an install type, can be one of the following (redhat, debian)
-l, --local determines if core will install to local system, default is False
-o, --[no-]ospf disable ospf installation
-p STRING, --prefix=STRING prefix where scripts are installed, default is /usr/local -p STRING, --prefix=STRING prefix where scripts are installed, default is /usr/local
-v, --verbose enable verbose -v, --verbose enable verbose
``` ```

View file

@ -14,7 +14,6 @@ from invoke import task, Context
DAEMON_DIR: str = "daemon" DAEMON_DIR: str = "daemon"
DEFAULT_PREFIX: str = "/usr/local" DEFAULT_PREFIX: str = "/usr/local"
EMANE_CHECKOUT: str = "v1.2.5"
OSPFMDR_CHECKOUT: str = "f21688cdcac30fb10b1ebac0063eb24e4583e9b4" OSPFMDR_CHECKOUT: str = "f21688cdcac30fb10b1ebac0063eb24e4583e9b4"
REDHAT_LIKE = { REDHAT_LIKE = {
"redhat", "redhat",
@ -369,15 +368,15 @@ def install(
@task( @task(
help={ help={
"emane-version": "version of emane install",
"verbose": "enable verbose", "verbose": "enable verbose",
"local": "used determine if core is installed locally, default is False",
"install-type": "used to force an install type, " "install-type": "used to force an install type, "
"can be one of the following (redhat, debian)", "can be one of the following (redhat, debian)",
}, },
) )
def install_emane(c, verbose=False, local=False, install_type=None): def install_emane(c, emane_version, verbose=False, install_type=None):
""" """
install emane and the python bindings install emane python bindings into the core virtual environment
""" """
c.run("sudo -v", hide=True) c.run("sudo -v", hide=True)
p = Progress(verbose) p = Progress(verbose)
@ -405,20 +404,15 @@ def install_emane(c, verbose=False, local=False, install_type=None):
emane_url = "https://github.com/adjacentlink/emane.git" emane_url = "https://github.com/adjacentlink/emane.git"
with p.start("cloning emane"): with p.start("cloning emane"):
c.run(f"git clone {emane_url} {emane_dir}", hide=hide) c.run(f"git clone {emane_url} {emane_dir}", hide=hide)
with p.start("building emane"): with p.start("setup emane"):
with c.cd(emane_dir): with c.cd(emane_dir):
c.run(f"git checkout {EMANE_CHECKOUT}", hide=hide) c.run(f"git checkout {emane_version}", hide=hide)
c.run("./autogen.sh", hide=hide) c.run("./autogen.sh", hide=hide)
c.run("PYTHON=python3 ./configure --prefix=/usr", hide=hide) c.run("PYTHON=python3 ./configure --prefix=/usr", hide=hide)
c.run("make -j$(nproc)", hide=hide) with p.start("build emane python bindings"):
with p.start("installing emane"):
with c.cd(emane_dir):
c.run("sudo make install", hide=hide)
with p.start("installing python binding for core"):
if local:
with c.cd(str(emane_python_dir)): with c.cd(str(emane_python_dir)):
c.run("sudo python3 -m pip install .", hide=hide) c.run("make -j$(nproc)", hide=hide)
else: with p.start("installing emane python bindings for core virtual environment"):
with c.cd(DAEMON_DIR): with c.cd(DAEMON_DIR):
c.run( c.run(
f"poetry run pip install {emane_python_dir.absolute()}", hide=hide f"poetry run pip install {emane_python_dir.absolute()}", hide=hide