Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Code Block
languagebash
#!/bin/bash

## If you need log then put here the name of the log file
#LOG_FILE="list_deps"
LOG_FILE=""
function print_log {
  if [[ "$LOG_FILE" != "" ]]; then
    echo "$1" >> $LOG_FILE
  fi
}

## Loop for get dependsbuild forcomponents builddependencies
componentsecho ##"" The> list_componentto_check
isecho a"" subject to check dependencies
> final_list
sed -i '/^[ \t]*$/d' list_component
cp
echo "" > temp
while read comp; do
  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
done < list_component
list_to_check
## PreparePreparation theof finalinitial list of packages. Initially it is empty
echo "" > final_list dependencies
sort -u temp > list_to_check
sed -i '/^[ \t]*$/d' list_to_check
end=$(cat list_to_check)

## WorkingLoop whilefor thereget ispackages a subject to check
dependencies
while [[ "$end" != "" ]]; do
  ##
Create an temporary file to collect dependencies
  echo "" > temp
  while read ##comp; Checkdo
components one-by-one   while## readSkip comp;empty doline
    if [[ "" == "$comp" ]]; then
      ## Skip
empty line       continue
    fi
    ## CheckSkip ifpackages thisthat componentare is already checked for dependencies
    res=$(grep "^[ \t]*$comp[ \t]*\$" final_list)
    if [[ "" != "$res" ]]; then
      ## Skip already checked component
      continue
    fi
    ## Check component dependencies
    echo -e "\033[33m =====> Getting depends for $comp... \033[0m"
    res=$(apt-rdepends --build-depends --follow=DEPENDS"
    apt-cache depends --no-pre-depends --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances apt-cache depends --no-pre-depends --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances $comp | sed 's/^[ \t|]*Build-Depends:[ \t]*// //; /</d; s/^[ \t]*Build-Depends-Indep:[ \t]*//' | sed "'s/^[ \\t|]*${component}[ \\t]*\$Depends: //; /^[ \\t]*\$</d; s/^[ \\t]*(.*)\$//")
    ## Put dependencies to the temporary file
    echo "$res"//' >> temp
    ## PutAdd thechecked component namepackage to the list of already checked componentspackages
    echo "$comp" >> final_list
  done < list_to_check

  ## Remove duplucatedrepeated dependenciersrecords and put them to from the list of subjects to check
  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)
done

## Loop for check and download dependencies
## Clear the final list
from empty strings
sed -i '/^[ \t]*$/d' final_list
rm -f temp
rm -f list_to_check
## Scan the final list of packages one-by-one
while read pkg; dowhile read pkg; do
  if [[ "" == "$pkg" ]]; then
    continue
  fi
  echo -e "\033[36m =====> Check $pkg... \033[0m"
  ## Check if thea package exists
  res=$(apt-cache show $pkg | grep "Package: $pkg")
  if [[ "$res" != "" ]]; then
    ## Download theexisted package
    echo -e "\033[35m =====> Downloading package $pkg... \033[0m"
    res=$(apt-get download $pkg | grep "E:" | sed -n 's/E://')
    ## Check the
result of downloading     if [[ "$res" == "" ]]; then
      print_log "$pkg : OK"
    else
      echo -e "\033[31;1;4m $res \033[0m"
      print_log "$pkg: $res"
    fi
  else
    ## Put error message if package doesn't exist
    echo -e "\033[31;1;4m$pkg: No package found \033[0m"
    echo "$pkg: No package found" >> list_deps
  fi
done < final_list

## UploadingDownloading *.deb packages to
the local repo
echo -e "\033[32;1m =====> Uploading *.deb packages... \033[0m"
reprepro -b /data/repo --export=never -C main includedeb du2-prebuild /data/repo/pkg/*.deb

## Loop for download sources
while read component; do
  if [[ "" == "$component" ]]; then
  ##  continue
Download source filesfi
  echo -e "\033[33;1m =====> Downloading sources for $component... \033[0m"
  apt-get source --download-only $component
  ## Upload source files to the repo
  echo -e "\033[32;1m =====> Uploading sources for $component... \033[0m"
  reprepro -b /data/repo --export=never -C main includedsc du2-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 du2-prebuild
echo -e "\033[32;1m =====> DONE \033[0m"
if [[ "$LOG_FILE" != "" ]]; then
  echo "Downloaded package list is put to $LOG_FILE"
fi