diff --git a/build_static_rsync b/build_static_rsync new file mode 100755 index 0000000..ad8fea3 --- /dev/null +++ b/build_static_rsync @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +# Usage: ./build_static_rsync +# or +# bash build_static_rsync +# Description: Download newest stable rsync release and +# compiles a static binary +# Author: Patrick Neumann (patrick@neumannsland.de) +# Platform: Debian or Raspbian GNU/Linux (tested: 9.5) +# Version: 1.0 +# Date: 06.07.2018 +# License: GPL3 +# Warranty: This program is distributed WITHOUT ANY WARRANTY + +# autodetect arch: +ARCH="$( /bin/uname --machine )" + +# autodetect release or do it manualy: +RELEASE="$( /usr/bin/curl -s https://rsync.samba.org/ \ + | /bin/grep -E "Rsync version [[:digit:]]\.[[:digit:]]{1,2}\.[[:digit:]]{1,2} released" \ + | /usr/bin/head -n 1 \ + | /bin/grep -o -E "[[:digit:]]\.[[:digit:]]{1,2}\.[[:digit:]]{1,2}" )" +#VERSION="3.1.3" +/usr/bin/test -n "${RELEASE}" || ( echo "Release detection failed - please edit script manually" ; exit 1 ) + +# dependencies (static libs): +if [ ! -f /usr/share/build-essential/list ] ; then /usr/bin/sudo /usr/bin/apt install build-essential --assume-yes ; fi +if [ ! -f /usr/lib/*-linux-gnu*/libc.a ] ; then /usr/bin/sudo /usr/bin/apt install libc6-dev --assume-yes ; fi +if [ ! -f /usr/lib/*-linux-gnu*/libpopt.a ] ; then /usr/bin/sudo /usr/bin/apt install libpopt-dev --assume-yes ; fi +if [ ! -f /usr/bin/yodl2man ] ; then /usr/bin/sudo /usr/bin/apt install yodl --assume-yes ; fi + +# downloading... +/usr/bin/wget https://download.samba.org/pub/rsync/rsync-${RELEASE}.tar.gz + +# extracting... +/bin/tar xzf rsync-${RELEASE}.tar.gz + +# compiling and stripping... +cd rsync-${RELEASE}/ +./configure +/usr/bin/make CFLAGS="-I./popt -I./zlib -static" EXEEXT="-${ARCH}-${RELEASE}" +/usr/bin/strip rsync-${ARCH}-${RELEASE} + +# final instructions: +echo +echo "Ready to copy:" +echo +echo " cp $PWD/rsync-${ARCH}-${RELEASE} /media/POLICE/" +echo + +exit 0 \ No newline at end of file