<div dir="ltr"><div><div><div>Hallo Zusammen,<br><br></div>ich hab mal versucht ein Skript zu bauen das vzlogger installiert oder- sofern schon vorhanden- aktualisiert. Wäre schön wenn das jemand testen könnte bevor ich es im git einstelle (@Udo: das wäre auch was für Dich ;)<br><br></div>Viele Grüße,<br></div>Andreas<br><br><br>#!/bin/bash<br>#<br># Installer<br>#<br># @copyright Copyright (c) 2015, The <a href="http://volkszaehler.org">volkszaehler.org</a> project<br># @license <a href="http://www.opensource.org/licenses/gpl-license.php">http://www.opensource.org/licenses/gpl-license.php</a> GNU Public License<br># @author Andreas Goetz<br>#<br>##<br># The installer will clone all required repositories or update them if necessary.<br># Then the modules are compiled and installed<br># <br># USAGE:<br># <br>#   Run install.sh from vzlogger or parent folder<br>#   <br>#       ./install.sh<br>#       <br>#   To execute specific parts of the build select which ones to run:<br>#       <br>#       ./install.sh <list of modules> <br>#   <br>#   Modules:<br>#     - vzlogger (libraries must be in place already)<br>#     - libjson<br>#     - libsml<br>#     - clean (will clean the respektive make targets, requires explicitly naming the modules)<br># <br>#     To run a clean build:<br>#     <br>#       ./install.sh vzlogger libjson libsml clean<br>#       <br>##<br># This file is part of <a href="http://volkzaehler.org">volkzaehler.org</a><br>#<br># <a href="http://volkzaehler.org">volkzaehler.org</a> is free software: you can redistribute it and/or modify<br># it under the terms of the GNU General Public License as published by<br># the Free Software Foundation, either version 3 of the License, or<br># any later version.<br>#<br># <a href="http://volkzaehler.org">volkzaehler.org</a> is distributed in the hope that it will be useful,<br># but WITHOUT ANY WARRANTY; without even the implied warranty of<br># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br># GNU General Public License for more details.<br>#<br># You should have received a copy of the GNU General Public License<br># along with <a href="http://volkszaehler.org">volkszaehler.org</a>. If not, see <<a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>>.<br>##<br><br>set -e<br>shopt -s nocasematch<br><br>###############################<br># some defaults<br>vzlogger_dir=vzlogger<br>lib_dir=libs<br>git_config=.git/config<br><br>###############################<br># functions<br>ask() {<br>    question="$1"<br>    default="$2"<br>    read -e -p "$question [$default] "<br>    REPLY="${REPLY:-$default}"<br>}<br><br>contains() {<br>    [[ $1 =~ $2 ]] && true || false<br>}<br><br>git_is_repo() {<br>    folder="$1"<br>    match="${2-$folder}"<br><br>    if [ -e "$folder/$git_config" ] && grep -q "$match" "$folder/$git_config"; then<br>        true<br>    else<br>        false<br>    fi<br>}<br><br>git_update() {<br>    folder="$1"<br>    git_repo="$2"<br>    match="${3-$folder}"<br>    git_params="${4-}"<br><br>    if git_is_repo $folder $match; then<br>        echo "$folder folder: $(pwd)/$folder"<br>        git_dirty=$(cd $folder; git fetch; git log HEAD.. --oneline)<br>    else<br>        echo "$folder not found"<br>        echo "cloning $folder git repository"<br>        git clone $git_params "$git_repo"<br>    fi<br><br>    if [ -n "$git_dirty" ]; then<br>        echo "updating $folder git repository with remote changes"<br>        pushd $folder<br>            git pull<br>        popd<br>    fi<br>}<br><br><br>###############################<br># header<br>echo "vzlogger installation script"<br><br>###############################<br># check prerequisites<br>echo<br>echo -n "checking prerequisites:"<br><br>deps=( grep pidof git cmake pkg-config autoreconf )<br>for binary in "${deps[@]}"; do<br>    if binpath="$(which $binary)" ; then<br>        echo -n " $binary"<br>    else<br>        echo<br>        echo " $binary: not found. Please install to use this script (e.g. sudo apt-get install $binary)."<br>        exit 1<br>    fi<br>done<br>echo<br><br>###############################<br>echo<br>echo "vzlogger setup..."<br>if [ -n "$1" ]; then<br>    echo "setup modules: $1"<br>fi<br><br>###############################<br>echo<br>echo "checking for vzlogger folder"<br><br>if git_is_repo . vzlogger; then<br>    # move to parent folder<br>    cd ..<br>fi<br><br>if [ -z "$1" ] || contains "$*" vzlogger; then<br>    git_update "$vzlogger_dir" <a href="https://github.com/volkszaehler/vzlogger.git">https://github.com/volkszaehler/vzlogger.git</a> vzlogger<br>fi<br><br>pushd "$vzlogger_dir"<br><br>###############################<br>echo<br>echo "checking for libraries"<br><br>if [ ! -d "$lib_dir" ]; then<br>    echo "creating library folder $lib_dir"<br>    mkdir "$lib_dir"<br>fi<br>pushd "$lib_dir"<br><br>    ###############################<br>    # libjson<br>    if [ -z "$1" ] || contains "$*" libjson; then<br>        echo<br>        echo "checking for libjson"<br><br>        git_update json-c <a href="https://github.com/json-c/json-c">https://github.com/json-c/json-c</a> json-c "-b json-c-0.12"<br>    fi<br><br>    # libsml<br>    if [ -z "$1" ] || contains "$*" libsml; then<br>        echo<br>        echo "checking for libsml"<br><br>        git_update libsml <a href="https://github.com/volkszaehler/libsml.git">https://github.com/volkszaehler/libsml.git</a><br>    fi<br><br><br>    ###############################<br>    echo<br>    echo "building and installing libraries"<br><br>    # libjson<br>    if [ -z "$1" ] || contains "$*" libjson; then<br>        echo<br>        echo "building and installing libjson"<br>        pushd json-c<br>            if [ ! -x ./configure ]; then<br>                sh autogen.sh<br>            fi<br>            if [ ! -e Makefile ]; then<br>                ./configure<br>            else<br>                if contains "$*" clean; then make clean; fi<br>            fi<br><br>            make<br>            sudo make install<br>        popd<br>    fi<br><br>    # libsml<br>    if [ -z "$1" ] || contains "$*" libsml; then<br>        echo<br>        echo "building and installing libsml"<br>        pushd libsml<br>            if contains "$*" clean; then make clean; fi<br><br>            make<br>            sudo cp sml/lib/libsml.* /usr/lib/<br>            sudo cp -R sml/include/* /usr/include/<br>            sudo cp sml.pc /usr/lib/pkgconfig/<br>        popd<br>    fi<br><br>popd<br><br>###############################<br># vzlogger<br>if [ -z "$1" ] || contains "$*" vzlogger; then<br>    echo<br>    echo "building and installing vzlogger"<br><br>    if contains "$*" clean; then<br>        echo "clearing cmake cache"<br>        rm CMakeCache.txt<br>    fi<br><br>    echo "building vzlogger"<br>    cmake .<br>    make<br>    echo "installing vzlogger"<br>    sudo make install<br><br>    if [ -n $(pidof vzlogger) ]; then<br>        echo<br>        echo "vzlogger is already running"<br>        echo "make sure to restart vzlogger"<br>    fi<br>fi<br><br>popd<br><br><br></div>