Mu2_Deploy/Makefile

133 lines
4.8 KiB
Makefile

# Makefile for installation of echomav_deploy on EchoPilot AI hardware
# This is installation of mavlink-router, cockpit and network setup
# Spiri modified to install additional features
.DEFAULT_GOAL := default
SHELL := /bin/bash
SUDO := $(shell test $${EUID} -ne 0 && echo "sudo")
.EXPORT_ALL_VARIABLES:
SYSCFG = /etc/mavlink-router
CONFIG ?= /var/local
LIBSYSTEMD=/lib/systemd/system
SERVICES=mavlink-router.service temperature.service wifibroadcast@drone fpv-camera.service
DRY_RUN=false
LOCAL=/usr/local
LOCAL_SCRIPTS=temperature.sh cockpitScript.sh
.PHONY = enable install see uninstall static default no-static
default:
@$(MAKE) --no-print-directory install
@$(MAKE) --no-print-directory static
explicit-ip:
@$(MAKE) --no-print-directory install
@$(SUDO) ./static-network.sh -i eth0 -a $(ip)
no-static:
@$(MAKE) --no-print-directory install
disable:
@( for c in stop disable ; do $(SUDO) systemctl $${c} $(SERVICES) ; done ; true )
enable:
@( for c in stop disable ; do $(SUDO) systemctl $${c} $(SERVICES) ; done ; true )
@( for s in $(SERVICES) ; do $(SUDO) install -Dm644 $${s%.*}.service $(LIBSYSTEMD)/$${s%.*}.service ; done ; true )
@if [ ! -z "$(SERVICES)" ] ; then $(SUDO) systemctl daemon-reload ; fi
@( for s in $(SERVICES) ; do $(SUDO) systemctl enable $${s%.*} ; done ; true )
@echo ""
@echo "Service is installed. To run now use sudo systemctl start mavlink-router and sudo systemctl start cockpit.socket"
@echo "Inspect output with sudo journalctl -fu mavlink-router"
@echo ""
static:
# set up static ip address on eth0
@$(SUDO) ./static-network.sh -i eth0 -a auto
install:
# install helper apps
# @$(SUDO) rm -r /var/lib/apt/lists/*
@$(SUDO) apt update
@$(SUDO) apt install -y nano
@$(SUDO) apt install -y nload
@$(SUDO) apt install -y htop
@$(SUDO) apt install -y picocom
# install mavlink-router
@rm -rf ~/tmp/mavlink-router-source
@git clone https://github.com/EchoMAV/mavlink-router-src ~/tmp/mavlink-router-source && cd ~/tmp/mavlink-router-source && git submodule update --init --recursive
@$(SUDO) apt -y install git ninja-build pkg-config gcc g++ systemd
@$(SUDO) apt -y install python3-pip
@$(SUDO) pip3 install meson smbus
@cd ~/tmp/mavlink-router-source && meson setup build . && $(SUDO) ninja -C build install
# install the config file
@$(SUDO) mkdir -p $(SYSCFG)
@$(SUDO) cp main.conf $(SYSCFG)/.
# install cockpit
@$(SUDO) ./ensure-cockpit.sh
# set up cockpit files
@$(SUDO) rm -rf /usr/share/cockpit/general/
@$(SUDO) mkdir /usr/share/cockpit/general/
@$(SUDO) cp -rf ui/general/* /usr/share/cockpit/general/
@$(SUDO) cp -rf ui/branding-ubuntu/* /usr/share/cockpit/branding/ubuntu/
@$(SUDO) cp -rf ui/static/* /usr/share/cockpit/static/
@$(SUDO) cp -rf ui/base1/* /usr/share/cockpit/base1/
@[ -d $(LOCAL)/echopilot ] || $(SUDO) mkdir $(LOCAL)/echopilot
@$(SUDO) install -Dm755 version.txt $(LOCAL)/echopilot/.
@for s in $(LOCAL_SCRIPTS) ; do $(SUDO) install -Dm755 $${s} $(LOCAL)/echopilot/$${s} ; done
# install modified 8812EU drivers
@git clone https://github.com/libc0607/rtl88x2eu-20230815 ~/tmp/rtl88x2eu && cd ~/tmp/rtl88x2eu && git submodule update --init --recursive
@$(SUDO) sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile
@$(SUDO) sed -i 's/CONFIG_PLATFORM_ARM64_RPI = n/CONFIG_PLATFORM_ARM64_RPI = y/g' Makefile
@$(SUDO) apt -y install dkms
@$(SUDO) ./dkms-install.sh
# configure naming of wireless interface
# Install WFB-NG dependancies and compile deb
@git clone -b stable https://github.com/svpcom/wfb-ng.git ~/tmp/wfb-ng && cd ~/tmp/wfb-ng
@$(SUDO) apt -y install python3-all libpcap-dev libsodium-dev python3-pip python3-pyroute2 python3-future python3-twisted python3-serial python3-all-dev iw virtualenv debhelper dh-python build-essential
@$(SUDO) make deb
@$(SUDO) dpkg -i /deb_dist/wfb*.deb
# create initial WFB-NG config file
@$(SUDO) cp wifibroadcast.cfg /etc/
# move drone encryption key to /etc/
@$(SUDO) cp drone.key /etc/
# stop any running services we care about
@for c in stop disable ; do $(SUDO) systemctl $${c} $(SERVICES) ; done ; true
# install and enable services
@for s in $(SERVICES) ; do $(SUDO) install -Dm644 $${s%.*}.service $(LIBSYSTEMD)/$${s%.*}.service ; done
@if [ ! -z "$(SERVICES)" ] ; then $(SUDO) systemctl daemon-reload ; fi
@for s in $(SERVICES) ; do $(SUDO) systemctl enable $${s%.*} ; done
# set up the system permissions, stop/disable nvgetty etc
@$(SUDO) systemctl stop nvgetty
@$(SUDO) systemctl disable nvgetty
@$(SUDO) usermod -aG dialout $${USER}
@$(SUDO) usermod -aG tty $${USER}
@echo ""
see:
$(SUDO) cat $(SYSCFG)/main.conf
serial:
-@$(SUDO) python3 serial_number.py 0 || true
-@$(SUDO) python3 serial_number.py 1 || true
uninstall:
@$(MAKE) --no-print-directory disable
@( for s in $(SERVICES) ; do $(SUDO) rm $(LIBSYSTEMD)/$${s%.*}.service ; done ; true )
@if [ ! -z "$(SERVICES)" ] ; then $(SUDO) systemctl daemon-reload ; fi