mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.0 KiB

  1. #!/bin/bash
  2. #
  3. # Given are builds without stage 9 in which broken packages
  4. # have been rebuilt unless all deps are resolved.
  5. #
  6. # This script is trying to resolve all cyclic deps causing
  7. # troubles in scripts/Check-Deps-2 by looking into the dep
  8. # files from the given builds and adding del entries to
  9. # scripts/dep_fixes.txt for those of the cyclic deps present
  10. # in scripts/dep_db.txt but not in the given builds deps.
  11. #
  12. # So you can do stuff like:
  13. #
  14. # while ./depfeedback.sh build/ref06* >> scripts/dep_fixes.txt; do true; done
  15. if [ "$1" = "merge" ]
  16. then
  17. shift
  18. perl -e '
  19. my %deps;
  20. while (<>) {
  21. comp; next unless s/^(\S+)\s+del\s+//;
  22. my $p = $1; @_ = split /\s+/;
  23. $deps{$p}{$_} = 1 foreach (@_);
  24. }
  25. foreach (sort keys %deps) {
  26. print "$_", length $_ < 8 ? "\t\t" : length $_ >= 16 ? " " : "\t";
  27. print "del\t", join(" ", sort keys %{$deps{$_}}), "\n"
  28. }
  29. ' "$@"
  30. exit 0
  31. fi
  32. if [ -z "$1" -o ! -d "$1/var/adm/dependencies" ]
  33. then
  34. echo "Usage: $0 build/<ROCKCFGID> [ ... ] >> scripts/dep_fixes.txt"
  35. echo " $0 merge list1 list2 list3 ..."
  36. exit 1
  37. fi
  38. rm -f dependencies.dot dependencies.dbg
  39. rm -f dependencies.patch dependencies.done
  40. ./scripts/Check-Deps-2 > /dev/null
  41. if [ -f dependencies.dot ]
  42. then
  43. echo -n > dependencies.done
  44. while read dep pkg; do
  45. for x; do
  46. if [ -f "$x/var/adm/logs/5-$pkg.log" -a \
  47. -f "$x/var/adm/dependencies/$pkg" ]
  48. then
  49. if ! grep -qx "$pkg: $dep" "$x/var/adm/dependencies/$pkg"; then
  50. echo "$pkg del $dep" >> dependencies.done
  51. fi
  52. fi
  53. done
  54. done < dependencies.dbg
  55. if [ -s dependencies.done ]
  56. then
  57. bash $0 merge dependencies.done
  58. echo Found $(wc -l < dependencies.done) questionable deps. >&2
  59. else
  60. rm -f dependencies.dot dependencies.dbg
  61. rm -f dependencies.patch dependencies.done
  62. echo "No questionable deps found, still some cyclic deps left." >&2
  63. exit 1
  64. fi
  65. else
  66. rm -f dependencies.dot dependencies.dbg
  67. rm -f dependencies.patch dependencies.done
  68. echo "No cyclic deps left." >&2
  69. exit 1
  70. fi
  71. rm -f dependencies.dot dependencies.dbg
  72. rm -f dependencies.patch dependencies.done
  73. exit 0