/
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
, multiple selections available,
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