[vz-dev] vzlogger install script

Andre Bernemann andre.bernemann at gmail.com
Tue Mar 3 14:11:12 CET 2015


Hallo Andreas,

wget produziert install.sh.1, hab ich übersehen. Immerhin hätten wir das
gleich Ergebnis produziert ;-)

Gruß
André

Andreas Götz <cpuidle at gmail.com> schrieb am Di., 3. März 2015 um 14:05 Uhr:

> Hi,
>
> Am 03.03.2015 um 13:25 schrieb Andre Bernemann <andre.bernemann at gmail.com
> >:
>
> Hallo Andreas,
>
> Zeile 247
>
> if [ ! grep -q vzlogger /etc/inittab ]; then
>
> wirft bei mir noch den Fehler
>
> [: too many arguments
>
> Wenn ich das abändere auf
>
> if ! grep -q vzlogger /etc/inittab;  then
>
>
> So stehts im github. Update vergessen?
>
>
> klappt es. Mein test kommt scheinbar nicht mit der obigen Syntax klar.
>
> Gruß
> André
>
>
> Viele Grüße, Andreas
>
> Andreas Goetz <cpuidle at gmail.com> schrieb am Di., 3. März 2015 um
> 09:20 Uhr:
>
> Moin Andre,
>>
>> aktuelle Version im git sollte jetzt durchlaufen. Wenn noch etwas fehlt
>> melde Dich gerne.
>>
>> Viele Grüße,
>> Andreas
>>
>> PS.: Nicht github sondern KDG hatte das Problem die Verbindung in die USA
>> gekappt zu haben. Sachen gibts...
>>
>>
>> 2015-03-02 20:14 GMT+01:00 Andreas Goetz <cpuidle at gmail.com>:
>>
>>> OK, ich habe beide Fehler gefunden. Einmal in meinem Skript etwas zuviel
>>> optimiert, einmal liegt der Fehler im letzten Commit bzw. den
>>> Abhängigkeiten. Leider ist github down, sobald das wieder da ist korrigier
>>> ichs.
>>>
>>> Viele Grüße,
>>> Andreas
>>>
>>>
>>> 2015-03-02 17:37 GMT+01:00 Andre Bernemann <andre.bernemann at gmail.com>:
>>>
>>>>
>>>> Hallo Andreas,
>>>>
>>>> Andreas Goetz <cpuidle at gmail.com> schrieb am Mo., 2. März 2015 um
>>>> 16:23 Uhr:
>>>>
>>>>> Hallo Andre,
>>>>>
>>>>> On Mon, Mar 2, 2015 at 2:55 PM, Andre Bernemann <
>>>>> andre.bernemann at gmail.com> wrote:
>>>>>
>>>>>> gute Idee, Danke für das Skript. Ich habe es mal getestet, und
>>>>>> prinzipiell funktioniert es bis auf ein paar Kleinigkeiten:
>>>>>>
>>>>>
>>>>> Das wäre ja schön, aber die Mängelliste ist ja doch etwas länger.
>>>>>
>>>>
>>>>>
>>>>>> 1. ./install.sh libsml --> klappt einwandfrei
>>>>>>
>>>>>
>>>>> Der vollständigkeit halber: was hast Du vorher gemacht? git clone?
>>>>> wget? Hattest Du install.sh auch mal ohne Parameter aufgerufen? Gelten die
>>>>> Ergebnisse unten für einen frischen git clone? Wann hattest Du das getestet?
>>>>>
>>>>
>>>> Vorher hatte ich einen git reset durchgeführt. Ich habe libsml schon
>>>> woanders liegen, der Installer hat es aber innerhalb des vzlogger Ordners
>>>> (unter libs wie geplant) neu angelegt. Damit ist libsml ein frischer git
>>>> clone, obwohl mein pi libsml grundsätzlich schon mal kompiliert hat.
>>>> Dependencies sind demnach alle vorhanden. Durchgeführt habe ich es nach den
>>>> letzten Änderungen im git (efd38e9).
>>>>
>>>> Ich habe es nun wie folgt nochmal auf 2 rPi's durchgeführt:
>>>>
>>>> - wget install.sh
>>>> - chmod +x
>>>> - ./install ohne Parameter aufgerufen: Alles wird heruntergeladen,
>>>> erster Fehler tritt beim make von libjson auf (s.u.).
>>>> - manuell autogen.sh in ./vzlogger/libs/json-c aufgerufen
>>>> - touch INSTALL im vzlogger Verzeichnis
>>>> - nochmals ./install.sh ohne Parameter aufgerufen
>>>> --> läuft dann fast komplett durch, zuletzt kommt noch ein kleiner
>>>> Fehler aus Z249: ./install.sh: line 247: [: too many arguments, aber
>>>> das ist ja eine Kleinigkeit.
>>>>
>>>>
>>>>>
>>>>>> 2. ./install.sh libjson:
>>>>>> Ich bekomme folgenden Fehler:
>>>>>>
>>>>>> CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash
>>>>>> /home/pi/vz/vzlogger/libs/json-c/missing aclocal-1.14
>>>>>> /home/pi/vz/vzlogger/libs/json-c/missing: line 81: aclocal-1.14:
>>>>>> command not found
>>>>>> WARNING: 'aclocal-1.14' is missing on your system.
>>>>>>          You should only need it if you modified 'acinclude.m4' or
>>>>>>          'configure.ac' or m4 files included by 'configure.ac'.
>>>>>>          The 'aclocal' program is part of the GNU Automake package:
>>>>>>          <http://www.gnu.org/software/automake>
>>>>>>          It also requires GNU Autoconf, GNU m4 and Perl in order to
>>>>>> run:
>>>>>>          <http://www.gnu.org/software/autoconf>
>>>>>>          <http://www.gnu.org/software/m4/>
>>>>>>          <http://www.perl.org/>
>>>>>> Makefile:462: recipe for target 'aclocal.m4' failed
>>>>>> make: *** [aclocal.m4] Error 127
>>>>>>
>>>>>> Wenn ich die Skripte (autogen.sh && ...) manuell direkt im Ordner
>>>>>> libs/json-c durchlaufen lasse klappt es. Möglicherweise gibt es ein Problem
>>>>>> mit pushd und autogen.sh?
>>>>>>
>>>>>
>>>>> Ich passe. Überhaupt keine Idee. Kann das nur nochmal vom Start weg
>>>>> versuchen nachzuvollziehen.
>>>>>
>>>>>
>>>>>> 3. ./install.sh vzlogger
>>>>>>
>>>>> Fehler:
>>>>>> Install the project...
>>>>>> /usr/bin/cmake -P cmake_install.cmake
>>>>>> -- Install configuration: ""
>>>>>> -- Installing: /usr/local/share/doc/vzlogger-0-4/README
>>>>>> CMake Error at cmake_install.cmake:36 (FILE):
>>>>>>   file INSTALL cannot find "/home/pi/vz/vzlogger/INSTALL".
>>>>>> Makefile:65: recipe for target 'install' failed
>>>>>> make: *** [install] Error 1
>>>>>>
>>>>>> Neben INSTALL wird auch die Datei COPYING in cmake_install.cmake
>>>>>> referenziert. Lege ich die beiden Dateien an funktioniert es.
>>>>>>
>>>>>
>>>>> Kommt der Fehler auch wenn Du einfach nur
>>>>>
>>>>> cmake .
>>>>> make
>>>>> sudo make install
>>>>>
>>>>> aufrufst?
>>>>>
>>>>
>>>> Ja.
>>>>
>>>>
>>>>>
>>>>>
>>>> Bei mir gibt es COPYING, im git ist sie ebenfalls- warum existiert die
>>>>> Datei bei Dir nicht standardmäßig?
>>>>>
>>>>> @root, @mbehr: kann es sein dass das Aufräumen der Automake Umgebung
>>>>> etwas damit zu tun hat (mindestens bzgl. INSTALL)?
>>>>>
>>>>
>>>> Ok, COPYING war da, hatte ich übersehen, mein Fehler. INSTALL fehlt
>>>> allerdings.
>>>>
>>>>
>>>>>
>>>>>> Gruß
>>>>>> André
>>>>>>
>>>>>
>>>>> Viele Grüße,
>>>>> Andreas
>>>>>
>>>>
>>>> Ich hoffe das hilft weiter.
>>>>
>>>> Gruß
>>>> André
>>>>
>>>> P.S.: Komplett OT, aber ich wäre ein großer Fan des raw Kontextes in
>>>> der Middleware.
>>>>
>>>>
>>>>>>
>>>>>> Andreas Goetz <cpuidle at gmail.com> schrieb am So., 1. März 2015 um
>>>>>> 13:49 Uhr:
>>>>>>
>>>>>> Hallo Zusammen,
>>>>>>>
>>>>>>> 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 ;)
>>>>>>>
>>>>>>> Viele Grüße,
>>>>>>> Andreas
>>>>>>>
>>>>>>>
>>>>>>> #!/bin/bash
>>>>>>> #
>>>>>>> # Installer
>>>>>>> #
>>>>>>> # @copyright Copyright (c) 2015, The volkszaehler.org project
>>>>>>> # @license http://www.opensource.org/licenses/gpl-license.php GNU
>>>>>>> Public License
>>>>>>> # @author Andreas Goetz
>>>>>>> #
>>>>>>> ##
>>>>>>> # The installer will clone all required repositories or update them
>>>>>>> if necessary.
>>>>>>> # Then the modules are compiled and installed
>>>>>>> #
>>>>>>> # USAGE:
>>>>>>> #
>>>>>>> #   Run install.sh from vzlogger or parent folder
>>>>>>> #
>>>>>>> #       ./install.sh
>>>>>>> #
>>>>>>> #   To execute specific parts of the build select which ones to run:
>>>>>>> #
>>>>>>> #       ./install.sh <list of modules>
>>>>>>> #
>>>>>>> #   Modules:
>>>>>>> #     - vzlogger (libraries must be in place already)
>>>>>>> #     - libjson
>>>>>>> #     - libsml
>>>>>>> #     - clean (will clean the respektive make targets, requires
>>>>>>> explicitly naming the modules)
>>>>>>> #
>>>>>>> #     To run a clean build:
>>>>>>> #
>>>>>>> #       ./install.sh vzlogger libjson libsml clean
>>>>>>> #
>>>>>>> ##
>>>>>>> # This file is part of volkzaehler.org
>>>>>>> #
>>>>>>> # volkzaehler.org is free software: you can redistribute it and/or
>>>>>>> modify
>>>>>>> # it under the terms of the GNU General Public License as published
>>>>>>> by
>>>>>>> # the Free Software Foundation, either version 3 of the License, or
>>>>>>> # any later version.
>>>>>>> #
>>>>>>> # volkzaehler.org is distributed in the hope that it will be useful,
>>>>>>> # but WITHOUT ANY WARRANTY; without even the implied warranty of
>>>>>>> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>>>>>> # GNU General Public License for more details.
>>>>>>> #
>>>>>>> # You should have received a copy of the GNU General Public License
>>>>>>> # along with volkszaehler.org. If not, see <
>>>>>>> http://www.gnu.org/licenses/>.
>>>>>>> ##
>>>>>>>
>>>>>>> set -e
>>>>>>> shopt -s nocasematch
>>>>>>>
>>>>>>> ###############################
>>>>>>> # some defaults
>>>>>>> vzlogger_dir=vzlogger
>>>>>>> lib_dir=libs
>>>>>>> git_config=.git/config
>>>>>>>
>>>>>>> ###############################
>>>>>>> # functions
>>>>>>> ask() {
>>>>>>>     question="$1"
>>>>>>>     default="$2"
>>>>>>>     read -e -p "$question [$default] "
>>>>>>>     REPLY="${REPLY:-$default}"
>>>>>>> }
>>>>>>>
>>>>>>> contains() {
>>>>>>>     [[ $1 =~ $2 ]] && true || false
>>>>>>> }
>>>>>>>
>>>>>>> git_is_repo() {
>>>>>>>     folder="$1"
>>>>>>>     match="${2-$folder}"
>>>>>>>
>>>>>>>     if [ -e "$folder/$git_config" ] && grep -q "$match"
>>>>>>> "$folder/$git_config"; then
>>>>>>>         true
>>>>>>>     else
>>>>>>>         false
>>>>>>>     fi
>>>>>>> }
>>>>>>>
>>>>>>> git_update() {
>>>>>>>     folder="$1"
>>>>>>>     git_repo="$2"
>>>>>>>     match="${3-$folder}"
>>>>>>>     git_params="${4-}"
>>>>>>>
>>>>>>>     if git_is_repo $folder $match; then
>>>>>>>         echo "$folder folder: $(pwd)/$folder"
>>>>>>>         git_dirty=$(cd $folder; git fetch; git log HEAD.. --oneline)
>>>>>>>     else
>>>>>>>         echo "$folder not found"
>>>>>>>         echo "cloning $folder git repository"
>>>>>>>         git clone $git_params "$git_repo"
>>>>>>>     fi
>>>>>>>
>>>>>>>     if [ -n "$git_dirty" ]; then
>>>>>>>         echo "updating $folder git repository with remote changes"
>>>>>>>         pushd $folder
>>>>>>>             git pull
>>>>>>>         popd
>>>>>>>     fi
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>> ###############################
>>>>>>> # header
>>>>>>> echo "vzlogger installation script"
>>>>>>>
>>>>>>> ###############################
>>>>>>> # check prerequisites
>>>>>>> echo
>>>>>>> echo -n "checking prerequisites:"
>>>>>>>
>>>>>>> deps=( grep pidof git cmake pkg-config autoreconf )
>>>>>>> for binary in "${deps[@]}"; do
>>>>>>>     if binpath="$(which $binary)" ; then
>>>>>>>         echo -n " $binary"
>>>>>>>     else
>>>>>>>         echo
>>>>>>>         echo " $binary: not found. Please install to use this script
>>>>>>> (e.g. sudo apt-get install $binary)."
>>>>>>>         exit 1
>>>>>>>     fi
>>>>>>> done
>>>>>>> echo
>>>>>>>
>>>>>>> ###############################
>>>>>>> echo
>>>>>>> echo "vzlogger setup..."
>>>>>>> if [ -n "$1" ]; then
>>>>>>>     echo "setup modules: $1"
>>>>>>> fi
>>>>>>>
>>>>>>> ###############################
>>>>>>> echo
>>>>>>> echo "checking for vzlogger folder"
>>>>>>>
>>>>>>> if git_is_repo . vzlogger; then
>>>>>>>     # move to parent folder
>>>>>>>     cd ..
>>>>>>> fi
>>>>>>>
>>>>>>> if [ -z "$1" ] || contains "$*" vzlogger; then
>>>>>>>     git_update "$vzlogger_dir" https://github.com/volkszaehle
>>>>>>> r/vzlogger.git vzlogger
>>>>>>> fi
>>>>>>>
>>>>>>> pushd "$vzlogger_dir"
>>>>>>>
>>>>>>> ###############################
>>>>>>> echo
>>>>>>> echo "checking for libraries"
>>>>>>>
>>>>>>> if [ ! -d "$lib_dir" ]; then
>>>>>>>     echo "creating library folder $lib_dir"
>>>>>>>     mkdir "$lib_dir"
>>>>>>> fi
>>>>>>> pushd "$lib_dir"
>>>>>>>
>>>>>>>     ###############################
>>>>>>>     # libjson
>>>>>>>     if [ -z "$1" ] || contains "$*" libjson; then
>>>>>>>         echo
>>>>>>>         echo "checking for libjson"
>>>>>>>
>>>>>>>         git_update json-c https://github.com/json-c/json-c json-c
>>>>>>> "-b json-c-0.12"
>>>>>>>     fi
>>>>>>>
>>>>>>>     # libsml
>>>>>>>     if [ -z "$1" ] || contains "$*" libsml; then
>>>>>>>         echo
>>>>>>>         echo "checking for libsml"
>>>>>>>
>>>>>>>         git_update libsml https://github.com/volkszaehler/libsml.git
>>>>>>>     fi
>>>>>>>
>>>>>>>
>>>>>>>     ###############################
>>>>>>>     echo
>>>>>>>     echo "building and installing libraries"
>>>>>>>
>>>>>>>     # libjson
>>>>>>>     if [ -z "$1" ] || contains "$*" libjson; then
>>>>>>>         echo
>>>>>>>         echo "building and installing libjson"
>>>>>>>         pushd json-c
>>>>>>>             if [ ! -x ./configure ]; then
>>>>>>>                 sh autogen.sh
>>>>>>>             fi
>>>>>>>             if [ ! -e Makefile ]; then
>>>>>>>                 ./configure
>>>>>>>             else
>>>>>>>                 if contains "$*" clean; then make clean; fi
>>>>>>>             fi
>>>>>>>
>>>>>>>             make
>>>>>>>             sudo make install
>>>>>>>         popd
>>>>>>>     fi
>>>>>>>
>>>>>>>     # libsml
>>>>>>>     if [ -z "$1" ] || contains "$*" libsml; then
>>>>>>>         echo
>>>>>>>         echo "building and installing libsml"
>>>>>>>         pushd libsml
>>>>>>>             if contains "$*" clean; then make clean; fi
>>>>>>>
>>>>>>>             make
>>>>>>>             sudo cp sml/lib/libsml.* /usr/lib/
>>>>>>>             sudo cp -R sml/include/* /usr/include/
>>>>>>>             sudo cp sml.pc /usr/lib/pkgconfig/
>>>>>>>         popd
>>>>>>>     fi
>>>>>>>
>>>>>>> popd
>>>>>>>
>>>>>>> ###############################
>>>>>>> # vzlogger
>>>>>>> if [ -z "$1" ] || contains "$*" vzlogger; then
>>>>>>>     echo
>>>>>>>     echo "building and installing vzlogger"
>>>>>>>
>>>>>>>     if contains "$*" clean; then
>>>>>>>         echo "clearing cmake cache"
>>>>>>>         rm CMakeCache.txt
>>>>>>>     fi
>>>>>>>
>>>>>>>     echo "building vzlogger"
>>>>>>>     cmake .
>>>>>>>     make
>>>>>>>     echo "installing vzlogger"
>>>>>>>     sudo make install
>>>>>>>
>>>>>>>     if [ -n $(pidof vzlogger) ]; then
>>>>>>>         echo
>>>>>>>         echo "vzlogger is already running"
>>>>>>>         echo "make sure to restart vzlogger"
>>>>>>>     fi
>>>>>>> fi
>>>>>>>
>>>>>>> popd
>>>>>>>
>>>>>>>
>>>>>>>
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-dev/attachments/20150303/bf4e17a4/attachment-0001.html>


More information about the volkszaehler-dev mailing list