X-Git-Url: https://git.jankratochvil.net/?p=nethome.git;a=blobdiff_plain;f=bin%2Frpmmerge;h=c61a6b7df50e6690e48ba7ce8b63de134f62cd80;hp=c6d4d7c80d46174daa22ebacac23536ff9004aa1;hb=efb225903efdd1c773158be2bbde42738aca654e;hpb=39be8e2e1dd6b91141fe8bcee219e0d6b977ebbe diff --git a/bin/rpmmerge b/bin/rpmmerge index c6d4d7c..c61a6b7 100755 --- a/bin/rpmmerge +++ b/bin/rpmmerge @@ -1,7 +1,9 @@ #! /bin/sh # $Id$ + set -ex +ok=true l="$*" [ -z "$l" ] && l="$(rpm -qla|perl -lne 'chomp;s/$/.rpmnew/;print if -f;')" for base in $l;do @@ -11,27 +13,51 @@ for base in $l;do test ! -f $base.orig test ! -f $base.rej - if test ! -f $base-orig + test ! -f $base-orig + # The old `-orig' format should be converted by: + # 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 "$_: $!";' + + orig="/root/rpmmerge/$base" + + if test ! -f $orig then cmp $base $base.rpmnew mv -f $base.rpmnew $base continue fi - if diff -u $base-orig $base.rpmnew | patch -f $base + # Local changes present in new rpm? + if cmp -s $base $base.rpmnew + then + mv -f $base.rpmnew $base + cp -p $base $orig + continue + fi + + if diff -u $orig $base.rpmnew | patch -N $base then test ! -f $base.rej rm -f $base.orig - mv -f $base.rpmnew $base-orig + mv -f $base.rpmnew $orig continue fi test -f $base.orig test -f $base.rej mv -f $base.orig $base rm -f $base.rej - exit 1 + + #exit 1 + ok=false + continue done -rpm -qac|perl -ne 'chomp;next if $_ eq "(contains no files)";next if m{^/var/lib/rpm/};next if ! -f $_;$o="$_-orig";next if -e $o;system "cp -i -p '\''$_'\'' '\''$o'\''" and die "$_: $!";' +if $ok +then + mkdir -p /root/rpmmerge + 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="/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 "$_: $!";' -echo OK + echo OK +else + echo ERRORS + exit 1 +fi