summaryrefslogtreecommitdiff
path: root/liste-verfuegbare-Versionen
blob: 13540ed19ebbc6f2be438903d0a26e6f96e0d45d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash

provided=$(mktemp)

sources=(
  /var/lib/pacman/sync
  /mnt/archlinux/archlinux
  /mnt/archlinux
)

for i in "${!sources[@]}"; do
  find "${sources["${i}"]}" -name '*.db' \
    -exec bsdtar -Oxzf {} \; \
  2>/dev/null \
  | sed -n '
    /^%\(NAME\|VERSION\)%$/ {
      N
      s/\n/ /
      p
    }
    /^%PROVIDES%$/,/^$/ {
      /^[^%]/ p
    }
  ' \
  | sed -n '
    s/^\(\S\+\)=\(\S\+\)-\(64\|32\)$/\2 \1/
    T no_provides
    p
    d
    :no_provides
    /^%NAME%/ {
      N
      s/^%NAME% \(\S\+\)\n%VERSION% \(\S\+\)-\S\+$/\2 \1/
      T
      p
    }
  ' \
  | sed '
    s/^/'"${i}"' /
  '
done \
| sort -k3,3 -k1n,1 -k2Vr,2 \
| uniq -f2 \
| cut -d' ' -f2,3 \
>"${provided}"

printf '%s\n' "${provided}"