X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fload-dependency;fp=bin%2Fload-dependency;h=2c6781e82c0f7508223ed0407c2ed2eccc63ea2d;hb=612882f86340e4acf58367c93daa3fb27ac2e48b;hp=0000000000000000000000000000000000000000;hpb=94df942c2c7bd3457276fe5b7367623cbb8c1302;p=cross.git diff --git a/bin/load-dependency b/bin/load-dependency new file mode 100755 index 0000000..2c6781e --- /dev/null +++ b/bin/load-dependency @@ -0,0 +1,97 @@ +#!/bin/bash +set -ex + +# Konzept: +# - Schiebe Paket in required.ld +# - Schleife über Inhalt von required.ld +# x Hole Paket +# x Packe Abhängigkeiten des Pakets nach dependencies.ld +# - Leere required.ld +# - Schleife über dependencies.ld +# x Ist Paket im Verzeichnis +# ja: tunix +# nein: +# - Ist Paket in required.ld? +# ja: tunix +# nein: Füge Paket zu required.ld +# - Ist required.ld leer? +# ja: Ende +# nein: springe nach oben + +usage="load-dependency [PAKET | DEBFILE]" + +function get_deb_name { + pkg=$1 + deb_name=$(ls ${pkg}_*.deb || true) 2>/dev/null +} + +# Lösche Hilfsdateien +rm dependencies.ld required.ld || true 2>/dev/null + +# Prüfe Parameter +if [ -n "$1" ] +then + if [ "${1##*.}" == "deb" ] + then + # prüfe deb + dpkg-deb -I $1 |grep "Depends:" |sed "s/Depends://" |tr ',' '\n' >> dependencies.ld + else + # Schiebe Paket in required.ld + echo "$1" >required.ld + fi +else + echo "Prüfung aller deb files noch nicht implementiert." + exit 1 +fi + +while true +do + if [ -f required.ld ] + then + # Schleife über Inhalt von required.ld + rm dependencies.ld || true 2>/dev/null + while read reqline + do + # Hole Paket + pkg_version=$(echo $reqline |sed "s/ (//" |sed "s/= /=/" |sed "s/)//" |sed "s/>.*//") + apt-get download $pkg_version + + # Packe Abhängigkeiten des Pakets nach dependencies.ld + pkg=${pkg_version##=*} + get_deb_name $pkg + dpkg-deb -I $deb_name |grep "Depends:" |sed "s/Depends://" |tr ',' '\n' >> dependencies.ld + done /dev/null + + # Schleife über dependencies.ld + while read depline + do + # Ist Paket im Verzeichnis + pkg=$depline + get_deb_name $pkg + if [ -z "$deb_name" ] + then + # nein: + # Ist Paket in required.ld? + if ! grep "${pkg}_" required.ld 1>/dev/null + then + # nein: Füge Paket zu required.ld + echo $depline >>required.ld + fi + fi + done