]>
Commit | Line | Data |
---|---|---|
c808fcaf ER |
1 | #!/bin/sh |
2 | # check for packages on local system with PLD-doc/PLD-update-TODO | |
3 | # Author: Elan Ruusamäe <glen@pld-linux.org> | |
4 | # Date: 2012-04-05 | |
5 | ||
6 | export LC_ALL=C | |
7 | CVSROOT=:pserver:cvs@cvs.pld-linux.org:/cvsroot | |
8 | d=$- | |
9 | ||
c808fcaf ER |
10 | # generate list of package basenames from rpmdb |
11 | rpm_pkgs() { | |
12 | set -$d | |
13 | ||
14 | [ -s $t/rpm.db ] || rpm -qa --qf '%{SOURCERPM} %{VERSION}\n' > $t/rpm.db | |
15 | ||
16 | # translate pkg names to basenames | |
17 | [ -s $t/rpm.basenames ] || sed -re 's,^(.+)-[^-]+-[^-]+ ,\1 ,' $t/rpm.db > $t/rpm.basenames | |
18 | # uniq | |
19 | [ -s $t/rpm.lst ] || sort -u $t/rpm.basenames > $t/rpm.lst | |
20 | } | |
21 | ||
22 | # fetch PLD-update-TODO | |
23 | cvs_todo() { | |
24 | set -$d | |
25 | ||
d97493a8 | 26 | [ -s $t/PLD-doc/PLD-update-TODO ] || (cd $t; cvs -d $CVSROOT -Q co PLD-doc/PLD-update-TODO) |
c808fcaf ER |
27 | |
28 | # reformat for easier parsing | |
29 | # amaya(13) [OLD] 9.54 [NEW] 11.0 | |
30 | # vim [OLD] 7.3.401 [NEW] 7.3.515 | |
31 | [ -s $t/rpm.todo ] || sed -rne 's,^([^( ]+).*?\[NEW\] (.+)$,\1 \2,p' $t/PLD-doc/PLD-update-TODO > $t/rpm.todo | |
32 | ||
33 | # TODO: should uniq as well: | |
34 | # $ grep links2 PLD-doc/PLD-update-TODO | |
35 | # links2(22) [OLD] 2.2 [NEW] 2.6 | |
36 | # links2(25) [OLD] 2.1pre28 [NEW] 2.6 | |
37 | } | |
38 | ||
39 | rpm_diff() { | |
40 | # set -$d | |
41 | ||
42 | rpm_pkgs | |
43 | cvs_todo | |
44 | ||
45 | [ -s $t/rpm.diffs ] || { | |
46 | set +e | |
47 | while read pkg v2; do | |
48 | v1=$(awk -vpkg=$pkg '$1 == pkg {print $2}' $t/rpm.lst) | |
49 | [ "$v1" ] || continue | |
50 | ||
51 | cmp=$(rpmvercmp $v1 $v2) | |
52 | if [ $? -eq 2 ]; then | |
53 | echo "$pkg $cmp" | |
54 | fi | |
55 | done < $t/rpm.todo | |
56 | set -e | |
57 | } | |
58 | } | |
59 | ||
60 | set -e | |
61 | t=$(mktemp -d) | |
62 | #t=. | |
63 | ||
64 | rpm_diff | |
65 | ||
66 | rm -rf $t |