list-rdeps: make it quicker
Ximin Luo
3 years ago
34 | 34 | fi |
35 | 35 | |
36 | 36 | apt_versions() { |
37 | aptitude versions --disable-columns -F '%p %t' --group-by=none "~rnative $1" || true | |
37 | aptitude versions --disable-columns -F '%e %p %t' --group-by=none "~rnative $1" || true | |
38 | } | |
39 | ||
40 | all_rust_packages="$(apt_versions "~e^rust-")" | |
41 | quick_apt_versions() { | |
42 | printf "%s\n" "$all_rust_packages" | awk "\$1 ~ /$1/ && \$2 ~ /$2/ && \$3 ~ /$3/ && \$4 ~ /$4/ { ${5:-print} }" | |
38 | 43 | } |
39 | 44 | |
40 | 45 | # versions of source packages in unstable. used to ignore cruft (i.e. binary |
43 | 48 | src_version() { |
44 | 49 | local src="$1" |
45 | 50 | if [ -z "${srcver[$src]}" ]; then |
46 | srcver["$src"]="$(apt_versions "librust-${src}-dev" | grep "$ARCHIVE" | cut '-d ' -f2)" | |
51 | srcver["$src"]="$(quick_apt_versions "" "^librust-${src}-dev$" "" "\y$ARCHIVE\y" 'print $3')" | |
47 | 52 | fi |
48 | 53 | echo "${srcver[$src]}" |
49 | 54 | } |
80 | 85 | pkg="${pkg#rust-}" |
81 | 86 | |
82 | 87 | echo "Versions of rust-${pkg} in $ARCHIVE:" |
83 | apt_versions "~e^rust-${pkg}$" | grep "$ARCHIVE" | sort | while read binpkg ver archive; do | |
88 | quick_apt_versions "^rust-${pkg}$" "" "" "\y$ARCHIVE\y" | sort | while read srcpkg binpkg ver archive; do | |
84 | 89 | if [ "$ver" != "$(src_version "$pkg")" ]; then continue; fi |
85 | 90 | local stat="$(installability "$binpkg" "$ver")" |
86 | 91 | printf "%s %-48s %-16s\n" "$stat" "$binpkg" "$ver" |
89 | 94 | |
90 | 95 | echo "Versions of rdeps of rust-${pkg} in $ARCHIVE, that also exist in $ARCHIVT:" |
91 | 96 | local rdeps="$(apt_versions "~D^librust-${pkg}~(\+~|-[0-9]~).*-dev$")" |
92 | printf "%s\n" "$rdeps" | grep "$ARCHIVE" | while read rdep ver archive; do | |
97 | printf "%s\n" "$rdeps" | grep "$ARCHIVE" | while read src rdep ver archive; do | |
93 | 98 | # we're interested in packages in both archives. |
94 | 99 | if ! printf "%s\n" "$rdeps" | grep "$ARCHIVT" | grep -qF "$rdep"; then |
95 | 100 | local rdepv="$(echo "$rdep" | sed -E -e 's/-[0-9.]+-dev$/-dev/')" |