summaryrefslogtreecommitdiff
path: root/ext/installfiles/linux
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2015-05-19 20:13:19 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2015-05-19 20:13:19 -0700
commit0caac25d28a3c08b91020ed8fa893887229c017a (patch)
tree4203e81fd7d43082deb27713c1892d0b5472628d /ext/installfiles/linux
parentdd701886437d654482ab454b220d41de1dbff012 (diff)
downloadinfinitytier-0caac25d28a3c08b91020ed8fa893887229c017a.tar.gz
infinitytier-0caac25d28a3c08b91020ed8fa893887229c017a.zip
.
Diffstat (limited to 'ext/installfiles/linux')
-rwxr-xr-xext/installfiles/linux/buildinstaller.sh131
1 files changed, 131 insertions, 0 deletions
diff --git a/ext/installfiles/linux/buildinstaller.sh b/ext/installfiles/linux/buildinstaller.sh
new file mode 100755
index 00000000..8f252dff
--- /dev/null
+++ b/ext/installfiles/linux/buildinstaller.sh
@@ -0,0 +1,131 @@
+#!/bin/bash
+
+# This script builds the installer for *nix systems. Windows must do everything
+# completely differently, as usual.
+
+export PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+if [ ! -f zerotier-one ]; then
+ echo "Could not find 'zerotier-one' binary, please build before running this script."
+ exit 2
+fi
+
+machine=`uname -m`
+system=`uname -s`
+
+vmajor=`cat version.h | grep -F ZEROTIER_ONE_VERSION_MAJOR | cut -d ' ' -f 3`
+vminor=`cat version.h | grep -F ZEROTIER_ONE_VERSION_MINOR | cut -d ' ' -f 3`
+revision=`cat version.h | grep -F ZEROTIER_ONE_VERSION_REVISION | cut -d ' ' -f 3`
+
+if [ -z "$vmajor" -o -z "$vminor" -o -z "$revision" ]; then
+ echo "Unable to extract version info from version.h, aborting installer build."
+ exit 2
+fi
+
+rm -rf build-installer
+mkdir build-installer
+
+case "$system" in
+
+ Linux)
+ # Canonicalize $machine for some architectures... we use x86
+ # and x64 for Intel stuff. ARM and others should be fine if
+ # we ever ship officially for those.
+ debian_arch=$machine
+ case "$machine" in
+ i386|i486|i586|i686)
+ machine="x86"
+ debian_arch="i386"
+ ;;
+ x86_64|amd64|x64)
+ machine="x64"
+ debian_arch="amd64"
+ ;;
+ armv6l|arm|armhf)
+ machine="armv6l"
+ debian_arch="armhf"
+ ;;
+ esac
+
+ echo "Assembling Linux installer for $machine and version $vmajor.$vminor.$revision"
+
+ mkdir -p 'build-installer/var/lib/zerotier-one'
+ cp -fp 'ext/installfiles/linux/uninstall.sh' 'build-installer/var/lib/zerotier-one'
+ cp -fp 'zerotier-one' 'build-installer/var/lib/zerotier-one'
+ mkdir -p 'build-installer/tmp'
+ cp -fp 'ext/installfiles/linux/init.d/zerotier-one' 'build-installer/tmp/init.d_zerotier-one'
+ cp -fp 'ext/installfiles/linux/systemd/zerotier-one.service' 'build-installer/tmp/systemd_zerotier-one.service'
+
+ targ="ZeroTierOneInstaller-linux-${machine}-${vmajor}_${vminor}_${revision}"
+ # Use gzip in Linux since some minimal Linux systems do not have bunzip2
+ rm -f build-installer-tmp.tar.gz
+ cd build-installer
+ tar -cf - * | gzip -9 >../build-installer-tmp.tar.gz
+ cd ..
+ rm -f $targ
+ cat ext/installfiles/linux/install.tmpl.sh build-installer-tmp.tar.gz >$targ
+ chmod 0755 $targ
+ rm -f build-installer-tmp.tar.gz
+ ls -l $targ
+
+ if [ -f /usr/bin/dpkg-deb -a "$UID" -eq 0 ]; then
+ echo
+ echo Found dpkg-deb and you are root, trying to build Debian package.
+
+ rm -rf build-installer-deb
+
+ debbase="build-installer-deb/zerotier-one_${vmajor}.${vminor}.${revision}.autoupdating_$debian_arch"
+ debfolder="${debbase}/DEBIAN"
+ mkdir -p $debfolder
+
+ cat 'ext/installfiles/linux/DEBIAN/control.in' | sed "s/__VERSION__/${vmajor}.${vminor}.${revision}.autoupdating/" | sed "s/__ARCH__/${debian_arch}/" >$debfolder/control
+ cat $debfolder/control
+ cp -f 'ext/installfiles/linux/DEBIAN/conffiles' "${debfolder}/conffiles"
+
+ mkdir -p "${debbase}/var/lib/zerotier-one/updates.d"
+ cp -f $targ "${debbase}/var/lib/zerotier-one/updates.d"
+
+ rm -f "${debfolder}/postinst" "${debfolder}/prerm"
+
+ echo '#!/bin/bash' >${debfolder}/postinst
+ echo "/var/lib/zerotier-one/updates.d/${targ}" >>${debfolder}/postinst
+ echo "/bin/rm -f /var/lib/zerotier-one/updates.d/*" >>${debfolder}/postinst
+ chmod a+x ${debfolder}/postinst
+
+ echo '#!/bin/bash' >${debfolder}/prerm
+ echo 'export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin' >>${debfolder}/prerm
+ echo 'if [ "$1" != "upgrade" ]; then' >>${debfolder}/prerm
+ echo ' /var/lib/zerotier-one/uninstall.sh' >>${debfolder}/prerm
+ echo 'fi' >>${debfolder}/prerm
+ chmod a+x ${debfolder}/prerm
+
+ dpkg-deb --build $debbase
+
+ mv -f build-installer-deb/*.deb .
+ rm -rf build-installer-deb
+ fi
+
+ if [ -f /usr/bin/rpmbuild ]; then
+ echo
+ echo Found rpmbuild, trying to build RedHat/CentOS package.
+
+ rm -f /tmp/zerotier-one.spec
+ curr_dir=`pwd`
+ cat ext/installfiles/linux/RPM/zerotier-one.spec.in | sed "s/__VERSION__/${vmajor}.${vminor}.${revision}/g" | sed "s/__INSTALLER__/${targ}/g" >/tmp/zerotier-one.spec
+
+ rpmbuild -ba /tmp/zerotier-one.spec
+
+ rm -f /tmp/zerotier-one.spec
+ fi
+
+ ;;
+
+ *)
+ echo "Unsupported platform: $system"
+ exit 2
+
+esac
+
+rm -rf build-installer
+
+exit 0