diff --git a/update-bap b/update-bap new file mode 100644 index 0000000..9ec2be9 --- /dev/null +++ b/update-bap @@ -0,0 +1,670 @@ +#!/bin/bash + +#script to update build a pi script +#20190313 km4ack +#SIDENOTE: This was written as the Covid-19 outbreak was occuring + +WHO=$(whoami) + +#verify not run as root +if [ $WHO = "root" ] +then +echo "no need to run with sudo" +exit 1 +fi + +#verify we have a Downloads directory +mkdir -p $HOME/Downloads + +clear;echo;echo + +echo "Build-a-Pi update tool by KM4ACK" +echo;echo +cat < $2)}') )) +then +RIG=NEEDS-UPDATE +else +RIG="is already latest version" +fi + +#----------------------------------------------------# +# FLDIGI +#----------------------------------------------------# +echo "Checking FLDIGI" +if ! hash fldigi 2>/dev/null; then +FLDIGI="Not Installed" +else +FLDIGI=$(fldigi --version | awk 'FNR == 1 {print $2}') +NEWFLDIGI=$(curl -s https://sourceforge.net/projects/fldigi/files/fldigi/ | \ +grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar" '{print $1}') + + if (( $(echo "$NEWFLDIGI $FLDIGI" | awk '{print ($1 > $2)}') )) + then + FLDIGI=NEEDS-UPDATE + else + FLDIGI="is already latest version" + fi +fi +#----------------------------------------------------# +# FLRIG +#----------------------------------------------------# +echo "Checking FLRIG" +if ! hash flrig 2>/dev/null; then +FLRIG="Not Installed" +else +FLRIG=$(flrig --version | awk 'FNR == 1 {print $2}') +NEWFLRIG=$(curl -s https://sourceforge.net/projects/fldigi/files/flrig/ | \ +grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}') + + if (( $(echo "$NEWFLRIG $FLRIG" | awk '{print ($1 > $2)}') )) + then + FLRIG=NEEDS-UPDATE + else + FLRIG="is already latest version" + fi +fi +#----------------------------------------------------# +# FLAMP +#----------------------------------------------------# +echo "Checking FLAMP" +if ! hash flamp 2>/dev/null; then +FLAMP="Not Installed" +else +FLAMP=$(flamp --version | awk 'FNR == 1 {print $2}') +NEWFLAMP=$(curl -s https://sourceforge.net/projects/fldigi/files/flamp/ | \ +grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}') + + if (( $(echo "$NEWFLAMP $FLAMP" | awk '{print ($1 > $2)}') )) + then + FLAMP=NEEDS-UPDATE + else + FLAMP="is already latest version" + fi +fi +#----------------------------------------------------# +# FLMSG +#----------------------------------------------------# +echo "Checking FLMSG" +if ! hash flmsg 2>/dev/null; then +FLMSG="Not Installed" +else +FLMSG=$(flmsg --version | awk 'FNR == 1 {print $2}') +NEWFLMSG=$(curl -s https://sourceforge.net/projects/fldigi/files/flmsg/ | \ +grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar.gz" '{print $1}') + + if (( $(echo "$NEWFLMSG $FLMSG" | awk '{print ($1 > $2)}') )) + then + FLMSG=NEEDS-UPDATE + else + FLMSG="is already latest version" + fi +fi +#----------------------------------------------------# +# FLNET +#----------------------------------------------------# +echo "Checking FLNET" +if ! hash flnet 2>/dev/null; then +FLNET="Not Installed" +else +FLNET=$(flnet --version | awk 'FNR == 1 {print $2}') +NEWFLNET=$(curl -s https://sourceforge.net/projects/fldigi/files/flnet/ | \ +grep .tar.gz | head -1 | awk -F "-" '{print $2}' | awk -F ".tar" '{print $1}') + + if (( $(echo "$NEWFLNET $FLNET" | awk '{print ($1 > $2)}') )) + then + FLNET=NEEDS-UPDATE + else + FLNET="is already latest version" + fi +fi +#----------------------------------------------------# +# Pat Winlink +#----------------------------------------------------# +echo "Checking Pat Winlink" +if ! hash pat 2>/dev/null; then +PAT="Not Installed" +else +PAT=$(pat version | awk -F 'v' '{print $2}' | head -c 5) +NEWPAT=$(curl -s https://github.com/la5nta/pat/releases | grep -m 1 "amd64.deb"\ + | awk -F '_' '{print $2}') + + if (( $(echo "$NEWPAT $PAT" | awk '{print ($1 > $2)}') )) + then + PAT=NEEDS-UPDATE + else + PAT="is already latest version" +fi +fi +#----------------------------------------------------# +# CHRIP +#----------------------------------------------------# +echo "Checking Chirp" +if ! hash chirpw 2>/dev/null; then +CHIRP="Not Installed" +else +CP=$(chirpw --version) +CHIRP=$(echo $CP | awk '{ print $2 }' | sed 's/daily-//') +NEWCHIRP=$(curl -s https://trac.chirp.danplanet.com/chirp_daily/LATEST/ | \ +grep .tar.gz | awk -F 'chirp-daily-' '{print $2}' | head -c 8) + + if (( $(echo "$NEWCHIRP $CHIRP" | awk '{print ($1 > $2)}') )) + then + CHIRP=NEEDS-UPDATE + else + CHIRP="is already latest version" + fi +fi +#----------------------------------------------------# +# DIREWOLF +#----------------------------------------------------# +echo "Checking Direwolf" +if ! hash direwolf 2>/dev/null; then +DIRE="Not Installed" +else +DIRE=$(direwolf -S -t 0 | head -1 | sed 's/Dire\ Wolf\ version\ //') +wget -P /tmp/ https://raw.githubusercontent.com/wb2osz/direwolf/master/CHANGES.md > /dev/null 2>&1 +NEWDIRE=$(cat /tmp/CHANGES.md | head -5 | tail -1 | awk '{ print $3 }') + + if (( $(echo "$NEWDIRE $DIRE" | awk '{print ($1 > $2)}') )) + then + DIRE=NEEDS-UPDATE + else + DIRE="is already latest version" + fi +fi +#----------------------------------------------------# +# Pat Menu +#----------------------------------------------------# +echo "Checking Pat Menu" +if [ ! -d $HOME/patmenu ]; then +PATMENU="Not Installed" +else +cd $HOME/patmenu/ +wget -O $HOME/patmenu/latest https://raw.githubusercontent.com/km4ack/patmenu/master/release > /dev/null 2>&1 +LATEST=$(cat $HOME/patmenu/latest | grep '^release' | sed 's/release=//') +CURRENT=$(cat $HOME/patmenu/release | grep '^release' | sed 's/release=//') +rm $HOME/patmenu/latest + if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') )) + then + PATMENU="NEEDS-UPDATE" + else + PATMENU="is already latest version" + fi + fi + +#----------------------------------------------------# +# Hot Spot Tools +#----------------------------------------------------# +if [ ! -d $HOME/hotspot-tools ]; then +HSTOOLS="Not Installed" +else +CURRENT=$(cat $HOME/hotspot-tools/changelog | grep version= | sed 's/version=//') +LATEST=$(curl -s https://raw.githubusercontent.com/km4ack/hotspot-tools/master/changelog | grep version= | sed 's/version=//') + if (( $(echo "$LATEST $CURRENT" | awk '{print ($1 > $2)}') )) + then + HSTOOLS="NEEDS-UPDATE" + else + HSTOOLS="is already latest version" + fi +fi +#----------------------------------------------------# +# GARIM +#----------------------------------------------------# +echo "Checking GARIM" +if ! hash garim 2>/dev/null; then +GARIM="Not Installed" +else +GARIM=$(garim --version | head -n1 | awk -F ' ' '{print $2}') +NEWGARIM=$(curl -s https://www.whitemesa.net/garim/garim.html | grep -m 1 \ +"armv7l.tar.gz" | awk -F '-' '{print $2}') + if (( $(echo "$NEWGARIM $GARIM" | awk '{print ($1 > $2)}') )) + then + GARIM=NEEDS-UPDATE + else + GARIM="is already latest version" + fi +fi + +#----------------------------------------------------# +# END VERSION CHECK +# Print Results +#----------------------------------------------------# +#Print results for user +clear;echo;echo +echo "Results of Test" +echo "---------------" +echo "Rig Control "$RIG +echo "FLDIGI "$FLDIGI +echo "FLRIG "$FLRIG +echo "FLAMP" $FLAMP +echo "FLMSG "$FLMSG +echo "FLNET "$FLNET +echo "PAT Winlink "$PAT +echo "Chirp "$CHIRP +echo "Direwolf "$DIRE +echo "Pat Menu "$PATMENU +echo "GARIM "$GARIM +echo "Hotspot Tools "$HSTOOLS + +#----------------------------------------------------# +# Update Function +#----------------------------------------------------# +UPDATE() { +#Section installs/updates fldigi depends. +if [ $FLDIGI = "NEEDS-UPDATE" > /dev/null 2>&1 ] || [ $FLRIG = "NEEDS-UPDATE" > /dev/null 2>&1 ] || [ $FLAMP = "NEEDS-UPDATE" > /dev/null 2>&1 ] || +[ $FLMSG = "NEEDS-UPDATE" > /dev/null 2>&1 ] || [ $FLNET = "NEEDS-UPDATE" > /dev/null 2>&1 ] +then +#install needed depends +sudo apt-get install -y libfltk1.3-dev libjpeg9-dev libxft-dev libxinerama-dev libxcursor-dev libsndfile1-dev libsamplerate0-dev portaudio19-dev libpulse-dev libusb-1.0-0-dev texinfo + +#find how much memory we are working with +FREEMEM=$(free -m | grep Mem: | awk '{ print $2 }') +echo $FREEMEM + +#increase swap file if less than 3G memory + if [ $FREEMEM -lt 3000 ] + then + echo "Increasing Swap size for build" + #increase swap size + sudo sed -i 's/#CONF_SWAPFILE=\/var\/swap/CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile + sudo sed -i 's/CONF_SWAPSIZE=100/CONF_SWAPSIZE=1024/' /etc/dphys-swapfile + sudo /etc/init.d/dphys-swapfile restart + sleep 10 + fi + +#----------------------------------------------------# +# FLXMLRPC +#----------------------------------------------------# + +#check if flxmlrpc library is installed +FLX=$(ldconfig -p | grep flxmlrpc) + + if [ -z "$FLX" ] + then + #determine latest FLXMLRPC & download + FLXM=$(curl -s http://www.w1hkj.com/files/flxmlrpc/ | grep .tar.gz | sed 's/
  • \ flxmlrpc.*$//') + XMPKG=$( echo $FLXM | sed 's/.tar.gz//') + cd $HOME/Downloads + wget http://www.w1hkj.com/files/flxmlrpc/$FLXM + tar -zxvf $FLXM + rm *.gz + + #build FLXMLRPC + cd $XMPKG + ./configure --prefix=/usr/local --enable-static + make + sudo make install + sudo ldconfig + fi +fi +#----------------------------------------------------# +# RIG CONTROL +#----------------------------------------------------# +if [ $RIG = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +LATERIG=$(curl -s https://sourceforge.net/projects/hamlib/files/latest/download | \ +grep -o https://downloads.sourceforge.net/project/hamlib/hamlib/[0-9].[0-9] | \ +head -n 1 | awk -F "/" '{print $7}') +DLRIG=$(curl -s https://sourceforge.net/projects/hamlib/files/hamlib/$LATERIG/ | grep .tar.gz |head -1) +CURRIG=$(echo $DLRIG | sed 's/^.*hamlib/hamlib/' | sed 's/".*$//') +cd $HOME/Downloads +wget https://sourceforge.net/projects/hamlib/files/hamlib/$LATERIG/$CURRIG +DIR=$(echo $CURRIG | sed 's/.tar.gz*$//') +tar -xzvf $CURRIG +cd $DIR +./configure +make +sudo make install +sudo ldconfig +fi +#----------------------------------------------------# +# FLDIGI +#----------------------------------------------------# +if [ $FLDIGI = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +#Determine latest FLDIGI +FLTAR=$(curl -s http://www.w1hkj.com/files/fldigi/ | grep .tar.gz | sed 's/
  • \ fldigi.*$//') +FLPKG=$(echo $FLTAR | sed 's/.tar.gz//') + +#Download latest FLDIGI tar file +cd $HOME/Downloads +wget http://www.w1hkj.com/files/fldigi/$FLTAR +tar -zxvf $FLTAR +rm *.gz + + +#build FLDIGI +cd $FLPKG +./configure --prefix=/usr/local --enable-static +make +sudo make install +sudo ldconfig +fi +#----------------------------------------------------# +# FLRIG +#----------------------------------------------------# +if [ $FLRIG = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +#Determine latest FLRIG +RIGTAR=$(curl -s http://www.w1hkj.com/files/flrig/ | grep .tar.gz | sed 's/
  • \ flrig.*$//') +RIGPKG=$(echo $RIGTAR | sed 's/.tar.gz//') + +#Download latest FLRIG +cd $HOME/Downloads +wget http://www.w1hkj.com/files/flrig/$RIGTAR +tar -zxvf $RIGTAR +rm *.gz + +#Build FLRIG +cd $RIGPKG +./configure --prefix=/usr/local --enable-static +make +sudo make install +sudo ldconfig +fi +#----------------------------------------------------# +# FLAMP +#----------------------------------------------------# +if [ $FLAMP = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +#determine latest FLAMP +AMPTAR=$(curl -s http://www.w1hkj.com/files/flamp/ | grep .tar.gz | sed 's/
  • \ flamp.*$//') +AMPPKG=$(echo $AMPTAR | sed 's/.tar.gz//') + +#download FLAMP +cd $HOME/Downloads +wget http://www.w1hkj.com/files/flamp/$AMPTAR +tar -zxvf $AMPTAR +rm *.gz + +#build FLAMP +cd $AMPPKG +./configure --prefix=/usr/local --enable-static +make +sudo make install +sudo ldconfig +fi +#----------------------------------------------------# +# FLMSG +#----------------------------------------------------# +if [ $FLMSG = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +#Determine latest FLMSG +MSGTAR=$(curl -s http://www.w1hkj.com/files/flmsg/ | grep .tar.gz | sed 's/
  • \ flmsg.*$//') +MSGPKG=$(echo $MSGTAR | sed 's/.tar.gz//') + +#download FLMSG +cd $HOME/Downloads +wget http://www.w1hkj.com/files/flmsg/$MSGTAR +tar -zxvf $MSGTAR +rm *.gz + +#Build FLMSG +cd $MSGPKG +./configure --prefix=/usr/local --enable-static +make +sudo make install +sudo ldconfig +fi +#----------------------------------------------------# +# FLNET +#----------------------------------------------------# +if [ $FLNET = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +#determine lastest FLNET +NETTAR=$(curl -s http://www.w1hkj.com/files/flnet/ | grep .tar.gz | sed 's/
  • \ flnet.*$//') +NETPKG=$(echo $NETTAR | sed 's/.tar.gz//') + +#download FLNET +cd $HOME/Downloads +wget http://www.w1hkj.com/files/flnet/$NETTAR +tar -zxvf $NETTAR +rm *.gz + +#build FLNET +cd $NETPKG +./configure --prefix=/usr/local --enable-static +make +sudo make install +sudo ldconfig +fi + +#reset swap size to default +if [ $FREEMEM -lt 3000 ] > /dev/null 2>&1 +then +echo "Resetting swap size to default" +#reset swap size +sudo sed -i 's/CONF_SWAPFILE=\/var\/swap/#CONF_SWAPFILE=\/var\/swap/' /etc/dphys-swapfile +sudo sed -i 's/CONF_SWAPSIZE=1024/CONF_SWAPSIZE=100/' /etc/dphys-swapfile +sudo /etc/init.d/dphys-swapfile restart +fi +#----------------------------------------------------# +# Pat WINLINK +#----------------------------------------------------# +if [ $PAT = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +echo "updating Pat Winlink" +sleep 1 +sudo systemctl stop pat@$WHO +sudo apt-get remove -y pat +cd $HOME/Downloads +PAT=$(curl -s https://github.com/la5nta/pat/releases/ | grep linux_armhf.deb | head -1 | sed 's/
  • /dev/null 2>&1 +sudo systemctl daemon-reload +echo "Pat Winlink Updated" +sleep 1 +fi +#----------------------------------------------------# +# CHIRP +#----------------------------------------------------# +if [ $CHIRP = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +echo "updating CHIRP" +sleep 1 +cd $HOME/Downloads +wget https://trac.chirp.danplanet.com/chirp_daily/LATEST/ +CHIRPBUILD=$(cat index.html | grep .tar.gz | grep chirp-daily- | awk '{ print $6 }' | sed 's/.*"//' | sed 's/>//' | sed 's/[<].*$//') +sudo apt-get -y install python-gtk2 python-serial python-libxml2 +mkdir $HOME/chirp +cd $HOME/chirp +wget https://trac.chirp.danplanet.com/chirp_daily/LATEST/$CHIRPBUILD +tar -xzf $CHIRPBUILD +CHIRPDIR=$(echo $CHIRPBUILD | sed 's/[.].*$//') +cd $CHIRPDIR +sudo python setup.py install +echo;echo;echo "Chirp has been updated" +sleep 1 +fi +#----------------------------------------------------# +# DIREWOLF +#----------------------------------------------------# +if [ $DIRE = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +echo "updating direwolf" +sleep 1 +cd $HOME/direwolf +git pull +make +sudo make install +fi +#----------------------------------------------------# +# PAT Menu +#----------------------------------------------------# +if [ $PATMENU = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +echo "updating Pat Menu" +sleep 1 +cd $HOME/Downloads +cp $HOME/patmenu/config $HOME/Downloads/ +git clone https://github.com/km4ack/patmenu.git +cp $HOME/Downloads/patmenu/* $HOME/patmenu/ +mv $HOME/Downloads/config $HOME/patmenu/ +rm -rf $HOME/Downloads/patmenu +chmod +x $HOME/patmenu/setup +$HOME/patmenu/./setup +fi + +#----------------------------------------------------# +# GARIM +#----------------------------------------------------# +if [ $GARIM = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +echo "updating GARIM" +sleep 1 +GPKG=$(curl -s https://www.whitemesa.net/garim/src/ | grep tar.gz | tail -1 | sed 's/^.*garim/garim/' | sed 's/tar.gz.*$/tar.gz/') +cd $HOME/Downloads +wget https://www.whitemesa.net/garim/src/$GPKG +tar -xzvf $GPKG +DIR=$(echo $GPKG | sed 's/.tar.gz//') +cd $DIR +./configure +make +sudo make install +fi +#----------------------------------------------------# +# Hotspot Tools +#----------------------------------------------------# +if [ $HSTOOLS = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +echo "updating Hotspot Tools" +sleep 1 +cd $HOME/hotspot-tools +git fetch --all +git reset --hard origin/master +bash setup +fi +} + + +echo;echo + +if [ $FLDIGI = "NEEDS-UPDATE" ] > /dev/null 2>&1 || [ $FLRIG = "NEEDS-UPDATE" ] > /dev/null 2>&1 || +[ $FLAMP = "NEEDS-UPDATE" ] > /dev/null 2>&1 || [ $FLMSG = "NEEDS-UPDATE" ] > /dev/null 2>&1 || +[ $FLNET = "NEEDS-UPDATE" ] > /dev/null 2>&1 || [ $DIRE = "NEEDS-UPDATE" ] > /dev/null 2>&1 || +[ $CHIRP = "NEEDS-UPDATE" ] > /dev/null 2>&1 || [ $FLNET = "NEEDS-UPDATE" ] > /dev/null 2>&1 || +[ $PAT = "NEEDS-UPDATE" ] > /dev/null 2>&1 || [ $RIG = "NEEDS-UPDATE" ] > /dev/null 2>&1 || +[ $PATMENU = "NEEDS-UPDATE" ] > /dev/null 2>&1 || [ $GARIM = "NEEDS-UPDATE" ] > /dev/null 2>&1 || +[ $HSTOOLS = "NEEDS-UPDATE" ] > /dev/null 2>&1 +then +read -p "Would you like to update all apps that need it now? y/n " ANS + if [ $ANS = 'y' ] || [ $ANS = 'Y' ] + then + UPDATE + else + exit 0 + fi +echo;echo;echo "rebooting in 5 seconds" +sleep 5 +sudo reboot +else +echo "Everything is currently up to date" +exit 0 +fi + + + + + + + + + + + + + + + + + + + + + + +