install: updates to docs and scripts for installing core

This commit is contained in:
Blake Harnden 2022-01-11 11:06:06 -08:00
parent 871b1ae2af
commit 8cf2b9af08
5 changed files with 87 additions and 157 deletions

View file

@ -2,7 +2,7 @@
CORE: Common Open Research Emulator CORE: Common Open Research Emulator
Copyright (c)2005-2021 the Boeing Company. Copyright (c)2005-2022 the Boeing Company.
See the LICENSE file included in this distribution. See the LICENSE file included in this distribution.
@ -20,29 +20,18 @@ The following should get you up and running on Ubuntu 18+ and CentOS 7+
from a clean install, it will prompt you for sudo password. This would from a clean install, it will prompt you for sudo password. This would
install CORE into a python3 virtual environment and install install CORE into a python3 virtual environment and install
[OSPF MDR](https://github.com/USNavalResearchLaboratory/ospf-mdr) from source. [OSPF MDR](https://github.com/USNavalResearchLaboratory/ospf-mdr) from source.
For more details on installation see [here](https://coreemu.github.io/core/install.html). For more detailed installation see [here](https://coreemu.github.io/core/install.html).
```shell ```shell
git clone https://github.com/coreemu/core.git git clone https://github.com/coreemu/core.git
cd core cd core
``` ./setup.sh
# Ubuntu
Ubuntu: inv install
```shell # CentOS
./install.sh
```
CentOS:
```shell
./install.sh -p /usr ./install.sh -p /usr
``` ```
To additionally install EMANE:
```shell
reset
inv install-emane
```
## Documentation & Support ## Documentation & Support
We are leveraging GitHub hosted documentation and Discord for persistent We are leveraging GitHub hosted documentation and Discord for persistent

View file

@ -105,7 +105,7 @@ Clearing out a current install from 7.0.0+, making sure to provide options
used for install (`-l` or `-p`). used for install (`-l` or `-p`).
```shell ```shell
cd <CORE_REPO> cd <CORE_REPO>
inv uninstall inv uninstall <options>
``` ```
Previous install was built from source for CORE release older than 7.0.0: Previous install was built from source for CORE release older than 7.0.0:
@ -125,16 +125,29 @@ sudo apt remove core
``` ```
## Automated Install ## Automated Install
The automated install will do the following: First we will need to clone and navigate to the CORE repo.
* install base tools needed for installation ```shell
* python3, pip, pipx, invoke, poetry # clone CORE repo
* installs system dependencies for building core git clone https://github.com/coreemu/core.git
* clone/build/install working version of [OPSF MDR](https://github.com/USNavalResearchLaboratory/ospf-mdr) cd core
* installs core into poetry managed virtual environment or locally, if flag is passed ```
* installs scripts pointing pointing to appropriate python location based on install type
* installs systemd service pointing to appropriate python location based on install type
After installation has completed you should be able to run `core-daemon` and `core-gui`. First you can use `setup.sh` as a convenience to install tooling for running invoke tasks:
> **NOTE:** `setup.sh` will attempt to determine your OS by way of `/etc/os-release`, currently it supports
> attempts to install OSs that are debian/redhat like (yum/apt).
* python3, pip, venv
* pipx 0.16.4 via pip
* invoke 1.4.1 via pipx
* poetry 1.1.7 via pipx
Then you can run `inv install <options>`:
* installs system dependencies for building core
* installs core into poetry managed virtual environment or locally, if flag is passed
* installs scripts pointing to appropriate python location based on install type
* installs systemd service pointing to appropriate python location based on install type
* clone/build/install working version of [OPSF MDR](https://github.com/USNavalResearchLaboratory/ospf-mdr)
> **NOTE:** installing locally comes with its own risks, it can result it potential > **NOTE:** installing locally comes with its own risks, it can result it potential
> dependency conflicts with system package manager installed python dependencies > dependency conflicts with system package manager installed python dependencies
@ -142,22 +155,21 @@ After installation has completed you should be able to run `core-daemon` and `co
> **NOTE:** provide a prefix that will be found on path when running as sudo, > **NOTE:** provide a prefix that will be found on path when running as sudo,
> if the default prefix /usr/local will not be valid > if the default prefix /usr/local will not be valid
`install.sh` will attempt to determine your OS by way of `/etc/os-release`, currently it supports
attempts to install OSs that are debian/redhat like (yum/apt).
```shell ```shell
# make sure pip is the latest version before moving forward inv -h install
python3 -m pip install -U pip
# clone CORE repo Usage: inv[oke] [--core-opts] install [--options] [other tasks here ...]
git clone https://github.com/coreemu/core.git
cd core
# script usage: install.sh [-v] [-d] [-l] [-p <prefix>] Docstring:
# install core, poetry, scripts, service, and ospf mdr
# -v enable verbose install
# -d enable developer install Options:
# -l enable local install, not compatible with developer install -d, --dev install development mode
# -p install prefix, defaults to /usr/local -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
-v, --verbose enable verbose
# install core to virtual environment # install core to virtual environment
./install.sh -p <prefix> ./install.sh -p <prefix>
@ -166,6 +178,26 @@ cd core
./install.sh -p <prefix> -l ./install.sh -p <prefix> -l
``` ```
After installation has completed you should be able to run `core-daemon` and `core-gui`.
## Using Invoke Tasks
The invoke tool installed by way of pipx provides conveniences for running
CORE tasks to help ensure usage of the create python virtual environment.
```shell
inv --list
Available tasks:
install install core, poetry, scripts, service, and ospf mdr
install-emane install emane python bindings into the core virtual environment
reinstall run the uninstall task, get latest from specified branch, and run install task
test run core tests
test-emane run core emane tests
test-mock run core tests using mock to avoid running as sudo
uninstall uninstall core, scripts, service, virtual environment, and clean build directory
```
### Enabling Service ### Enabling Service
After installation, the core service is not enabled by default. If you desire to use the After installation, the core service is not enabled by default. If you desire to use the
service, run the following commands. service, run the following commands.
@ -183,27 +215,6 @@ an installation to your use case.
* make sure you have python3 invoke available to leverage `<repo>/tasks.py` * make sure you have python3 invoke available to leverage `<repo>/tasks.py`
```shell ```shell
cd <repo>
#Usage: inv[oke] [--core-opts] install [--options] [other tasks here ...]
#
#Docstring:
# install core, poetry, scripts, service, and ospf mdr
#
#Options:
# -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
# -v, --verbose enable verbose
# install virtual environment
inv install -p <prefix>
# indstall locally
inv install -p <prefix> -l
# this will print the commands that would be ran for a given installation # this will print the commands that would be ran for a given installation
# type without actually running them, they may help in being used as # type without actually running them, they may help in being used as
# the basis for translating to your OS # the basis for translating to your OS
@ -240,39 +251,3 @@ environment, when needed.
cd <CORE_REPO> cd <CORE_REPO>
inv install-emane inv install-emane
``` ```
## Using Invoke Tasks
The invoke tool installed by way of pipx provides conveniences for running
CORE tasks to help ensure usage of the create python virtual environment.
```shell
inv --list
Available tasks:
install install core, poetry, scripts, service, and ospf mdr
install-emane install emane python bindings into the core virtual environment
reinstall run the uninstall task, get latest from specified branch, and run install task
test run core tests
test-emane run core emane tests
test-mock run core tests using mock to avoid running as sudo
uninstall uninstall core, scripts, service, virtual environment, and clean build directory
```
Print help for a given task:
```shell
inv -h install
Usage: inv[oke] [--core-opts] install [--options] [other tasks here ...]
Docstring:
install core, poetry, scripts, service, and ospf mdr
Options:
-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
-v, --verbose enable verbose
```

View file

@ -1,59 +0,0 @@
#!/bin/bash
# exit on error
set -e
# parse arguments
dev=""
verbose=""
prefix=""
local=""
while getopts "dvlp:" opt; do
case ${opt} in
d)
dev="-d"
;;
v)
verbose="-v"
;;
l)
local="-l"
;;
p)
prefix="-p ${OPTARG}"
;;
\?)
echo "script usage: $(basename $0) [-v] [-d] [-l] [-p <prefix>]" >&2
echo "" >&2
echo "-v enable verbose install" >&2
echo "-d enable developer install" >&2
echo "-l enable local install, not compatible with developer install" >&2
echo "-p install prefix, defaults to /usr/local" >&2
exit 1
;;
esac
done
shift $((OPTIND - 1))
# install pre-reqs using yum/apt
if command -v apt &> /dev/null
then
echo "setup to install CORE using apt"
sudo apt install -y python3-pip python3-venv
elif command -v yum &> /dev/null
then
echo "setup to install CORE using yum"
sudo yum install -y python3-pip
else
echo "apt/yum was not found"
echo "install python3 and invoke to run the automated install"
echo "inv -h install"
exit 1
fi
# install pip/invoke to run install with provided options
python3 -m pip install --user pipx==0.16.4
python3 -m pipx ensurepath
export PATH=$PATH:~/.local/bin
pipx install invoke
inv install ${dev} ${verbose} ${local} ${prefix}

26
setup.sh Executable file
View file

@ -0,0 +1,26 @@
#!/bin/bash
# exit on error
set -e
# install pre-reqs using yum/apt
if command -v apt &> /dev/null
then
echo "setup to install CORE using apt"
sudo apt install -y python3-pip python3-venv
elif command -v yum &> /dev/null
then
echo "setup to install CORE using yum"
sudo yum install -y python3-pip
else
echo "apt/yum was not found"
echo "install python3, pip, venv, pipx, and invoke to run the automated install"
exit 1
fi
# install tooling for invoke based installation
python3 -m pip install --user pipx==0.16.4
python3 -m pipx ensurepath
export PATH=$PATH:~/.local/bin
pipx install invoke==1.4.1
pipx install poetry==1.1.7

View file

@ -197,7 +197,6 @@ def install_core(c: Context, hide: bool) -> None:
def install_poetry(c: Context, dev: bool, local: bool, hide: bool) -> None: def install_poetry(c: Context, dev: bool, local: bool, hide: bool) -> None:
c.run("pipx install poetry==1.1.7", hide=hide)
if local: if local:
with c.cd(DAEMON_DIR): with c.cd(DAEMON_DIR):
c.run("poetry build -f wheel", hide=hide) c.run("poetry build -f wheel", hide=hide)