#!/bin/bash # buildbawt.sh # 20231026 # ircerr@EFNet PATH="/home/cjdns/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" cd && cd www/buildbawt || exit 1 mkdir -p logs/ || exit 1 mkdir -p src/ || exit 1 mkdir -p repo/ || exit 1 ( #Get cjdns master repo if [ ! -d src/cjdns-master ] then echo "-Cloning cjdns (master)" ( cd src && git clone https://github.com/cjdelisle/cjdns/ cjdns-master ) ( cd src/cjdns-master && git config pull.rebase false ) fi #Get cjdns crashy repo if [ ! -d src/cjdns-crashey ] then echo "-Cloning cjdns (crashey)" ( cd src && git clone https://github.com/cjdelisle/cjdns/ cjdns-crashey ) ( cd src/cjdns-crashey && git config pull.rebase false ) ( cd src/cjdns-crashey && git checkout crashey && git pull ) fi #Check for new master MLHASH="`cd src/cjdns-master && git log -1|grep ^commit|head -n1|cut -d\ -f2 || echo 0`" MLDATE="`cd src/cjdns-master && git log -n1 --format=\"%at\"`" MLDATE="`date -u -d @$MLDATE +%Y%m%d_%H%M%S`" ( cd src/cjdns-master && git pull ) MNHASH="`cd src/cjdns-master && git log -1|grep ^commit|head -n1|cut -d\ -f2 || echo 0`" MNDATE="`cd src/cjdns-master && git log -n1 --format=\"%at\"`" MNDATE="`date -u -d @$MNDATE +%Y%m%d_%H%M%S`" if [ "$MLHASH" == "0" ] \ || [ "$MNHASH" == "0" ] then echo "--Failed to get git hash" exit fi if [ "$MNHASH" == "$MLHASH" ] \ && [ "$1" == "" ] then echo "-No changes" NEW_MASTER=0 else NEW_MASTER=1 echo "-Master was: $MLHASH ($MLDATE)" echo "-Master is: $MNHASH ($MNDATE)" fi #Check for new crashey CLHASH="`cd src/cjdns-crashey && git log -1|grep ^commit|head -n1|cut -d\ -f2 || echo 0`" CLDATE="`cd src/cjdns-crashey && git log -n1 --format=\"%at\"`" CLDATE="`date -u -d @$CLDATE +%Y%m%d_%H%M%S`" ( cd src/cjdns-crashey && git pull ) CNHASH="`cd src/cjdns-crashey && git log -1|grep ^commit|head -n1|cut -d\ -f2 || echo 0`" CNDATE="`cd src/cjdns-crashey && git log -n1 --format=\"%at\"`" CNDATE="`date -u -d @$CNDATE +%Y%m%d_%H%M%S`" if [ "$CLHASH" == "0" ] \ || [ "$CNHASH" == "0" ] then echo "--Failed to get git hash" exit fi if [ "$CNHASH" == "$CLHASH" ] \ && [ "$1" == "" ] then echo "-No changes" NEW_CRASHEY=0 else NEW_CRASHEY=1 echo "-Crashey was: $CLHASH ($CLDATE)" echo "-Crashey is: $CNHASH ($CNDATE)" fi if [ "$NEW_MASTER" == "1" ] then #Build Linux Master if [ ! -f logs/linux-master-$MNDATE-$MNHASH.log ] \ && [ ! -f logs/linux-master-$NNDATE-$NNHASH-FAIL.log ] then ( cp -a src/cjdns-master/ src/cjdns-master-$MNHASH && cd src/cjdns-master-$MNHASH && ./clean && NO_TEST=1 Seccomp_NO=1 CROSS=1 ./do ) 2>&1 | tee logs/linux-master-$MNDATE-$MNHASH.log #Linux Master Fail if [ ! -f src/cjdns-master-$MNHASH/cjdroute ] then echo "--Failed to build" mv logs/linux-master-$MNDATE-$NNHASH.log logs/linux-master-$NNDATE-$NNHASH-FAIL.log echo "#cjdns BUILDBAWT :: Linux (master) build failed. http://cjdns.ca/buildbawt/logs/linux-master-$MNDATE-$MNHASH-FAIL.log" >> /tmp/readlog.txt fi #Linux Master Success if [ -f src/cjdns-master-$MNHASH/cjdroute ] then cp src/cjdns-master-$MNHASH/cjdroute . tar -cJf linux-master-$MNDATE-$MNHASH.tar.xz cjdroute rm cjdroute mv linux-master-$MNDATE-$MNHASH.tar.xz repo/ ( cd repo; rm latest-linux-master.tar.xz; ln -s linux-master-$MNDATE-$MNHASH.tar.xz latest-linux-master.tar.xz ) echo "#cjdns BUILDBAWT :: Linux (master) build succeeded. http://cjdns.ca/buildbawt/" >> /tmp/readlog.txt fi #Cleanup ( cd src/cjdns-master && ./clean ) &> /dev/null rm -rf src/cjdns-master-$MNHASH/ fi #Build Windows Master if [ ! -f logs/windows-master-$MNDATE-$MNHASH.log ] \ && [ ! -f logs/windows-master-$MNDATE-$MNHASH-FAIL.log ] then ( cp -a src/cjdns-master/ src/cjdns-master-$MNHASH && cd src/cjdns-master-$MNHASH && ./clean && NO_TEST=1 Seccomp_NO=1 CROSS=1 ./windows_do ) 2>&1 | tee logs/windows-master-$MNDATE-$MNHASH.log #Windows Master Fail if [ ! -f src/cjdns-master-$MNHASH/target/x86_64-pc-windows-gnu/release/cjdroute.exe ] then echo "--Failed to build" mv logs/windows-master-$MNDATE-$MNHASH.log logs/windows-master-$MNDATE-$MNHASH-FAIL.log echo "#cjdns BUILDBAWT :: Windows (master) build failed. http://cjdns.ca/buildbawt/logs/windows-master-$MNDATE-$MNHASH-FAIL.log" >> /tmp/readlog.txt fi #Windows Master Success if [ -f src/cjdns-master-$MNHASH/target/x86_64-pc-windows-gnu/release/cjdroute.exe ] then cp src/cjdns-master-$MNHASH/target/x86_64-pc-windows-gnu/release/cjdroute.exe cjdroute.exe zip -9 "windows-master-$MNDATE-$MNHASH.zip" cjdroute.exe rm cjdroute.exe mv windows-master-$MNDATE-$MNHASH.zip repo/ ( cd repo; rm latest-windows-master.zip; ln -s windows-master-$MNDATE-$MNHASH.zip latest-windows-master.zip ) echo "#cjdns BUILDBAWT :: Windows (master) build succeeded. http://cjdns.ca/buildbawt/" >> /tmp/readlog.txt fi #Cleanup ( cd src/cjdns-master && ./clean ) &> /dev/null rm -rf src/cjdns-master-$MNHASH/ fi #Build Android Master if [ ! -f logs/android-master-$MNDATE-$MNHASH.log ] \ && [ ! -f logs/android-master-$MNDATE-$MNHASH-FAIL.log ] then ( cp -a src/cjdns-master/ src/cjdns-master-$MNHASH && cd src/cjdns-master-$MNHASH && ./clean && NO_TEST=1 Seccomp_NO=1 CROSS=1 ./android_do ) 2>&1 | tee logs/android-master-$MNDATE-$MNHASH.log #Android Master Fail if [ "`find src/cjdns-master-$MNHASH/target/ -name 'cjdroute'`" == "" ] then echo "--Failed to build" mv logs/android-master-$MNDATE-$MNHASH.log logs/android-master-$MNDATE-$MNHASH-FAIL.log echo "#cjdns BUILDBAWT :: Android (master) build failed. http://cjdns.ca/buildbawt/logs/android-master-$MNDATE-$MNHASH-FAIL.log" >> /tmp/readlog.txt fi #Android Master Success if [ "`find src/cjdns-master-$MNHASH/target/ -name 'cjdroute'`" != "" ] then find src/cjdns-master-$MNHASH/target/ -name 'cjdroute' | \ while read F do cp "$F" cjdroute T="`echo \"$F\"|sed 's/.*target\///g;s/\/release.*//g'`" zip -9 "android-master-$MNDATE-$MNHASH-$T.zip" cjdroute rm cjdroute mv "android-master-$MNDATE-$MNHASH-$T.zip" repo/ ( cd repo; rm "latest-android-master-$T.zip"; ln -s "android-master-$MNDATE-$MNHASH-$T.zip" "latest-android-master.zip" ) done echo "#cjdns BUILDBAWT :: Android (master) build succeeded. http://cjdns.ca/buildbawt/" >> /tmp/readlog.txt fi #Cleanup ( cd src/cjdns-master && ./clean ) &> /dev/null rm -rf src/cjdns-master-$MNHASH/ fi fi if [ "$NEW_CRASHEY" == "1" ] then #Build Linux Crashey if [ ! -f logs/linux-crashey-$CNDATE-$CNHASH.log ] \ && [ ! -f logs/linux-crashey-$CNDATE-$CNHASH-FAIL.log ] then ( cp -a src/cjdns-crashey/ src/cjdns-crashey-$CNHASH && cd src/cjdns-crashey-$CNHASH && ./clean && NO_TEST=1 Seccomp_NO=1 CROSS=1 ./do ) 2>&1 | tee logs/linux-crashey-$CNDATE-$CNHASH.log #Linux Crashey Fail if [ ! -f src/cjdns-crashey-$CNHASH/cjdroute ] then echo "--Failed to build" mv logs/linux-crashey-$CNDATE-$CNHASH.log logs/linux-crashey-$CNDATE-$CNHASH-FAIL.log echo "#cjdns BUILDBAWT :: Linux (crashey) build failed. http://cjdns.ca/buildbawt/logs/linux-crashey-$CNDATE-$CNHASH-FAIL.log" >> /tmp/readlog.txt fi #Linux Crashey Success if [ -f src/cjdns-crashey-$CNHASH/cjdroute ] then cp src/cjdns-crashey-$CNHASH/cjdroute . tar -cJf linux-crashey-$CNDATE-$CNHASH.tar.xz cjdroute mv linux-crashey-$CNDATE-$CNHASH.tar.xz repo/ rm cjdroute ( cd repo; rm latest-linux-crashey.tar.xz; ln -s linux-crashey-$CNDATE-$CNHASH.tar.xz latest-linux-crashey.tar.xz ) echo "#cjdns BUILDBAWT :: Linux (crashey) build succeeded. http://cjdns.ca/buildbawt/" >> /tmp/readlog.txt fi #Cleanup ( cd src/cjdns-crashey && ./clean ) &> /dev/null rm -rf src/cjdns-crashey-$CNHASH/ fi #Build Windows Crashey if [ ! -f logs/windows-crashey-$CNDATE-$CNHASH.log ] \ && [ ! -f logs/windows-crashey-$CNDATE-$CNHASH-FAIL.log ] then ( cp -a src/cjdns-crashey/ src/cjdns-crashey-$CNHASH && cd src/cjdns-crashey-$CNHASH && ./clean && NO_TEST=1 Seccomp_NO=1 CROSS=1 ./windows_do ) 2>&1 | tee logs/windows-crashey-$CNDATE-$CNHASH.log #Windows Crashey Fail if [ ! -f src/cjdns-crashey-$CNHASH/target/x86_64-pc-windows-gnu/release/cjdroute.exe ] then echo "--Failed to build" mv logs/windows-crashey-$CNDATE-$CNHASH.log logs/windows-crashey-$CNDATE-$CNHASH-FAIL.log echo "#cjdns BUILDBAWT :: Windows (crashey) build failed. http://cjdns.ca/buildbawt/logs/windows-crashey-$CNDATE-$CNHASH-FAIL.log" >> /tmp/readlog.txt fi #Windows Crashey Success if [ -f src/cjdns-crashey-$CNHASH/target/x86_64-pc-windows-gnu/release/cjdroute.exe ] then cp src/cjdns-crashey-$CNHASH/target/x86_64-pc-windows-gnu/release/cjdroute.exe cjdroute.exe zip -9 "windows-crashey-$CNDATE-$CNHASH.zip" cjdroute.exe rm cjdroute mv windows-crashey-$CNDATE-$CNHASH.zip repo/ ( cd repo; rm latest-windows-crashey.zip; ln -s windows-crashey-$CNDATE-$CNHASH.zip latest-windows-crashey.zip ) echo "#cjdns BUILDBAWT :: Windows (crashey) build succeeded. http://cjdns.ca/buildbawt/" >> /tmp/readlog.txt fi #Cleanup ( cd src/cjdns-crashey && ./clean ) &> /dev/null rm -rf src/cjdns-crashey-$CNHASH/ fi #Build Android Crashey if [ ! -f logs/android-crashey-$CNDATE-$CNHASH.log ] \ && [ ! -f logs/android-crashey-$CNDATE-$CNHASH-FAIL.log ] then ( cp -a src/cjdns-crashey src/cjdns-crashey-$CNHASH && cd src/cjdns-crashey-$CNHASH && ./clean && NO_TEST=1 Seccomp_NO=1 CROSS=1 ./android_do ) 2>&1 | tee logs/android-crashey-$CNDATE-$CNHASH.log #Android Crashey Fail if [ "`find src/cjdns-crashey-$CNHASH/target/ -name 'cjdroute'`" == "" ] then echo "--Failed to build" mv logs/android-crashey-$CNDATE-$CNHASH.log logs/android-crashey-$CNDATE-$CNHASH-FAIL.log echo "#cjdns BUILDBAWT :: Android (crashey) build failed. http://cjdns.ca/buildbawt/logs/android-crashey-$CNDATE-$CNHASH-FAIL.log" >> /tmp/readlog.txt fi #Android Crashey Success if [ "`find src/cjdns-crashey-$CNHASH/target/ -name 'cjdroute'`" != "" ] then find src/cjdns-crashey-$CNHASH/target/ -name 'cjdroute' | \ while read F do cp "$F" cjdroute && \ T="`echo \"$F\"|sed 's/.*target\///g;s/\/release.*//g'`" zip -9 "android-crashey-$CNDATE-$CNHASH-$T.zip" cjdroute rm cjdroute mv android-crashey-$CNDATE-$CNHASH-$T.zip repo/ ( cd repo; rm latest-android-crashey-$T.zip; ln -s android-crashey-$CNDATE-$CNHASH-$T.zip latest-android-crashey-$T.zip ) done echo "#cjdns BUILDBAWT :: Android (crashey) build succeeded. http://cjdns.ca/buildbawt/" >> /tmp/readlog.txt fi ( cd src/cjdns-crashey && ./clean ) &> /dev/null rm -rf src/cjdns-crashey-$CNHASH/ fi fi ) 2>&1 | tee -a logs/buildbawt.log #EOF#