+.config/yt-dlp.conf
[nethome.git] / bin / rpmmerge
1 #! /bin/sh
2 # $Id$
3
4
5 set -ex
6 ok=true
7 l="$*"
8 [ -z "$l" ] && l="$(rpm -qla|perl -lne 'chomp;s/$/.rpmnew/;print if -f;')"
9 for base in $l;do
10         base=`echo $base|sed 's/[.]rpmnew$//'`
11         test -f $base
12         test -f $base.rpmnew
13         test ! -f $base.orig
14         test ! -f $base.rej
15
16         test ! -f $base-orig
17         # The old `-orig' format should be converted by:
18         # 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 "$_: $!";'
19
20         orig="/root/rpmmerge/$base"
21
22         if test ! -f $orig
23         then
24                 if [ "$base" = "${base%/java.security}" ];then
25                         cmp $base $base.rpmnew
26                 fi
27                 mv -f $base.rpmnew $base
28                 continue
29         fi
30
31         # Local changes present in new rpm?
32         if cmp -s $base $base.rpmnew
33         then
34                 mv -f $base.rpmnew $base
35                 cp -p $base $orig
36                 continue
37         fi
38
39         if diff -u $orig $base.rpmnew | patch -N $base
40         then
41                 test ! -f $base.rej
42                 rm -f $base.orig
43                 mv -f $base.rpmnew $orig
44                 continue
45         fi
46         test -f $base.orig
47         test -f $base.rej
48         mv -f $base.orig $base
49         rm -f $base.rej
50
51         #exit 1
52         ok=false
53         continue
54 done
55
56 if $ok
57 then
58         mkdir -p /root/rpmmerge
59         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 $_ eq "/usr/lib/sysimage/rpm/rpmdb.sqlite";next if ! -f $_;$o=$_;$o="/root/rpmmerge/$o";next if -e $o;$od=$o;$od=~s{[^/]*$}{};system "mkdir -p '\''$od'\''" and die "dir $_: $!";system "cp -i -p '\''$_'\'' '\''$o'\''" and die "$_: $!";'
60
61         echo OK
62 else
63         echo ERRORS
64         exit 1
65 fi