motioneye-dev - New seq to install motioneye from dev branch using python3
This commit is contained in:
116
seqs/motioneye-dev.sh
Executable file
116
seqs/motioneye-dev.sh
Executable file
@@ -0,0 +1,116 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
readonly toolName=motioneye
|
||||
readonly sq_meUrl='https://github.com/motioneye-project/motioneye/archive/dev.tar.gz'
|
||||
|
||||
# Already defined by sequencer.sh, but may be overwritten
|
||||
#readonly seq_configName="${sq_scriptName}.cfg"
|
||||
#readonly seq_configTemplate="${seq_origin}/${sq_configName}.example"
|
||||
|
||||
sq_aptOpt=
|
||||
sq_config=0
|
||||
|
||||
seq_config() {
|
||||
## Called once before executing steps.
|
||||
## e.g. to source a config file manually:
|
||||
#. "${seq_origin}/${seq_configName}"
|
||||
|
||||
## or to use sequencer api with profile config file support:
|
||||
#if initSeqConfig -p "${seq_fileName}" "${seq_configTemplate}" ; then
|
||||
|
||||
## or to use sequencer api with global config file:
|
||||
#if initSeqConfig "${seq_configName}" "${seq_configTemplate}" ; then
|
||||
# sq_config=1
|
||||
#else
|
||||
# # End if no configuration file exists
|
||||
# dry || return -1
|
||||
#fi
|
||||
|
||||
dry || root || fatal "Needs to be root"
|
||||
# Since RasperryPi OS bullseye motion is provided with expected version 4.3.2-1
|
||||
lsb_release -c | grep bullseye >/dev/null 2>&1 || fatal "Only debian bullseye supported to install motion directly"
|
||||
|
||||
## Apt cmdline option to suppress user interaction
|
||||
interactive || sq_aptOpt="-y"
|
||||
|
||||
## Disable error checks if external scripts are used
|
||||
## e.g. error on unbound variables
|
||||
#disableErrorCheck
|
||||
|
||||
## Return of non zero value will abort the sequence
|
||||
return 0
|
||||
}
|
||||
|
||||
step_1_info() { echo "Show status"; }
|
||||
step_1_alias() { echo "status"; }
|
||||
step_1() {
|
||||
info "Status of $toolName .."
|
||||
exe service motioneye status
|
||||
}
|
||||
|
||||
step_20_info() { echo "Install motioneye dependencies"; }
|
||||
step_20_alias() { echo "install"; }
|
||||
step_20() {
|
||||
exe apt update
|
||||
exe apt --no-install-recommends install ca-certificates curl python3 python3-dev python3-pip python3-venv libcurl4-openssl-dev gcc libssl-dev ${sq_aptOpt}
|
||||
exep DEBIAN_FRONTEND="noninteractive" apt-get -y --no-install-recommends install motion v4l-utils ffmpeg curl
|
||||
info "Disable motion service"
|
||||
info -a "(Will be started by motioneye)"
|
||||
exe systemctl disable --now motion
|
||||
}
|
||||
|
||||
step_21_info() { echo "Create virtual environment"; }
|
||||
step_21() {
|
||||
[[ -d "${sc_meVenvHome}" ]] && fatal "$tooName already installed"
|
||||
|
||||
exe python3 -m venv "${sc_meVenvHome}"
|
||||
}
|
||||
sc_meVenvHome="/opt/motioneye"
|
||||
sc_mePip="${sc_meVenvHome}/bin/pip"
|
||||
|
||||
step_22_info() { echo "Install $toolName in venv"; }
|
||||
step_22() {
|
||||
exe "${sc_mePip}" install "${sq_meUrl}"
|
||||
}
|
||||
|
||||
step_23_info() { echo "Setup $toolName service and config"; }
|
||||
step_23() {
|
||||
local lMeConfDir="$(dirname -- "${sc_meConfigFile}")"
|
||||
if [[ ! -d "${lMeConfDir}" ]] ; then
|
||||
exe mkdir -p "${lMeConfDir}"
|
||||
addConf -s -f "${sc_meConfigExample}" "${sc_meConfigFile}"
|
||||
exe chown -R motion: "${lMeConfDir}"
|
||||
fi
|
||||
addConf -s "${sc_meSystemd}" "${sc_meServiceFile}"
|
||||
exe systemctl daemon-reload
|
||||
exe systemctl enable --now motioneye
|
||||
}
|
||||
sc_meConfigFile="/etc/motioneye/motioneye.conf"
|
||||
sc_meConfigExample="${sc_meVenvHome}/lib/python3.9/site-packages/motioneye/extra/motioneye.conf.sample"
|
||||
sc_meServiceFile="/etc/systemd/system/motioneye.service"
|
||||
|
||||
sc_meSystemd="[Unit]
|
||||
Description=motionEye Server
|
||||
After=network.target local-fs.target remote-fs.target
|
||||
|
||||
[Service]
|
||||
User=motion
|
||||
RuntimeDirectory=motioneye
|
||||
LogsDirectory=motioneye
|
||||
StateDirectory=motioneye
|
||||
ExecStart=${sc_meVenvHome}/bin/meyectl startserver -c /etc/motioneye/motioneye.conf
|
||||
Restart=on-abort
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target"
|
||||
|
||||
step_25_info() { echo "Upgrade $toolName"; }
|
||||
step_25_alias() { echo "upgrade"; }
|
||||
step_25() {
|
||||
exe service motioneye stop
|
||||
exe "${sc_mePip}" install --upgrade --force-reinstall --no-deps "${sq_meUrl}"
|
||||
exe service motioneye start
|
||||
}
|
||||
|
||||
readonly sqr_minVersion=16
|
||||
. /usr/local/bin/sequencer.sh
|
Reference in New Issue
Block a user