/
Get dependencies script for DU4

Get dependencies script for DU4

#!/bin/bash DEP_FILE="" #DEP_FILE="req.txt" LOG_FILE="" #LOG_FILE="/data/repo/repo.log" function print_log { if [[ "$LOG_FILE" != "" ]]; then echo "$1" >> $LOG_FILE fi } ## Loop for get build components dependencies echo "" > list_to_check echo "" > final_list sed -i '/^[ \t]*$/d' list_component echo "" >> list_component echo "" > temp if [[ "$DEP_FILE" != "" ]]; then echo "" > $DEP_FILE fi while read comp; do ## Skip empty line if [[ "" == "\$comp" ]]; then continue fi echo -e "\033[33m =====> Getting depends for $comp... \033[0m" res=$(apt-rdepends --build-depends --follow=DEPENDS $comp) echo "$res" | grep 'Build-Depends:' > tmp echo "$res" | grep 'Build-Depends-Indep:' >> tmp sed 's/^[ \t]*Build-Depends:[ \t]*//; s/^[ \t]*Build-Depends-Indep:[ \t]*//' tmp | sed 's/[ \t]*(.*)[ \t]*$//' >> temp rm -f tmp if [[ "$DEP_FILE" != "" ]]; then sed "s/^/$comp:/g" temp >> $DEP_FILE fi done < list_component ## Preparation of initial list of dependencies sort -u temp > list_to_check sed -i '/^[ \t]*$/d' list_to_check end=$(cat list_to_check) echo "" >> list_to_check mkdir /data/repo/pkg/_tdir apt-get -R /data/repo/pkg/_tdir update ## Loop for get packages dependencies while [[ "$end" != "" ]]; do echo "" > temp while read comp; do ## Skip empty line if [[ "" == "$comp" ]]; then continue fi ## Skip packages that are already checked for dependencies res=$(grep "^[ \t]*$comp[ \t]*\$" final_list) if [[ "" != "$res" ]]; then continue fi echo "=====> Getting depends for $comp..." apt-get -R /data/repo/pkg/_tdir install --dry-run $comp | grep "^Inst " | sed 's/^Inst //; s/ .*$//' > tmp cat tmp >> temp ## Add checked package to the list of already checked packages echo "$comp" >> final_list if [[ "$DEP_FILE" != "" ]]; then sed "s/^/$comp:/g" temp >> $DEP_FILE fi done < list_to_check ## Remove repeated records from the list sort -u temp > list_to_check ## Remove empty lines if any sed -i '/^[ \t]*$/d' list_to_check sed -i '/^[ \t]*$/d' final_list end=$(cat list_to_check) echo "" >> list_to_check done ## Loop for check and download dependencies sed -i '/^[ \t]*$/d' final_list sort -u final_list > temp mv -f temp final_list echo "" >> final_list rm -f list_to_check tmp while read pkg; do if [[ "" == "$pkg" ]]; then continue fi echo -e "\033[36m =====> Check $pkg... \033[0m" ## Check if a package exists res=$(apt-cache show $pkg | grep "Package: $pkg") if [[ "$res" != "" ]]; then ## Download existed package echo -e "\033[35m =====> Downloading package $pkg... \033[0m" res=$(apt-get -R /data/repo/pkg/_tdir download $pkg | grep "E:" | sed -n 's/E://') if [[ "$res" == "" ]]; then print_log "$pkg : OK" else echo -e "\033[31;1;4m $res \033[0m" print_log "$pkg: $res" if [[ "$DEP_FILE" != "" ]]; then echo "=======================================" >> errors.log echo "$pkg: $res" >> errors.log grep ":$pkg" $DEP_FILE >> errors.log fi fi else ## Put error message if package doesn't exist echo -e "\033[31;1;4m$pkg: No package found \033[0m" print_log "$pkg: No package found" if [[ "$DEP_FILE" != "" ]]; then echo "=======================================" >> errors.log echo "$pkg: No package found" >> errors.log grep ":$pkg" $DEP_FILE >> errors.log fi fi done < final_list ## Downloading *.deb packages echo -e "\033[32;1m =====> Uploading *.deb packages... \033[0m" reprepro -b /data/repo --export=never -C main includedeb du4-prebuild /data/repo/pkg/*.deb ## Loop for download sources while read component; do if [[ "" == "$component" ]]; then continue fi echo -e "\033[33;1m =====> Downloading sources for $component... \033[0m" apt-get source --download-only $component echo -e "\033[32;1m =====> Uploading sources for $component... \033[0m" reprepro -b /data/repo --export=never -C main includedsc du4-prebuild $component*.dsc rm -rf $component* done < list_component ## Creating index for local repo echo -e "\033[32;1m =====> Creating indices for local repo... \033[0m" reprepro -Vb /data/repo export du4-prebuild echo -e "\033[32;1m =====> DONE \033[0m" rm -fr /data/repo/pkg/_tdir if [[ "$LOG_FILE" != "" ]]; then echo "Downloaded package list is put to $LOG_FILE" fi

Related content

DU4 local build script
DU4 local build script
More like this
Prepare build zone script for DU4
Prepare build zone script for DU4
More like this
Components list for DU4
Components list for DU4
Read with this
Get dependencies script
Get dependencies script
More like this
How get all depend for component from DU2
How get all depend for component from DU2
More like this
DU2 local build script
DU2 local build script
More like this