exclude: +/usr/lib/locale/locale-archive
[nethome.git] / bin / rpmmerge
1 #! /bin/sh
2 # $Id$
3
4
5 set -ex
6 l="$*"
7 [ -z "$l" ] && l="$(rpm -qla|perl -lne 'chomp;s/$/.rpmnew/;print if -f;')"
8 for base in $l;do
9         base=`echo $base|sed 's/[.]rpmnew$//'`
10         test -f $base
11         test -f $base.rpmnew
12         test ! -f $base.orig
13         test ! -f $base.rej
14
15         test ! -f $base-orig
16         # The old format should be converted by:
17         # rpm -qla|perl -lne 'chomp;s/$/-orig/;next if ! -e;$o=$_;$o=~s/-orig$//;$o=~tr{/}{-};$o="/root/rpmmerge/$o";die $o if -e $o;$_="mv -f '\''$_'\'' '\''$o'\''";system $_ and die "$_: $!";'
18
19         orig="/root/rpmmerge/$(echo $base|tr / -)"
20
21         if test ! -f $orig
22         then
23                 cmp $base $base.rpmnew
24                 mv -f $base.rpmnew $base
25                 continue
26         fi
27
28         if diff -u $orig $base.rpmnew | patch -f $base
29         then
30                 test ! -f $base.rej
31                 rm -f $base.orig
32                 mv -f $base.rpmnew $orig
33                 continue
34         fi
35         test -f $base.orig
36         test -f $base.rej
37         mv -f $base.orig $base
38         rm -f $base.rej
39         exit 1
40 done
41
42 rpm -qac|perl -ne 'chomp;next if $_ eq "(contains no files)";next if m{^/var/lib/rpm/};next if $_ eq "/usr/lib/locale/locale-archive";next if ! -f $_;$o=$_;$o=~tr{/}{-};$o="/root/rpmmerge/$o";next if -e $o;system "cp -i -p '\''$_'\'' '\''$o'\''" and die "$_: $!";'
43
44 echo OK