On 17 November 2017 at 13:23, Jonas Gorski <jonas.gor...@gmail.com> wrote: > On 17 November 2017 at 11:35, Matthias Schiffer > <mschif...@universe-factory.net> wrote: >> On 11/17/2017 10:14 AM, Jonas Gorski wrote: >>> On 17 November 2017 at 01:41, <luizl...@gmail.com> wrote: >>>> From: Luiz Angelo Daros de Luca <luizl...@gmail.com> >>>> >>>> Only backup /aaa/bbb/ccc if /rom/aaa/bbb/ccc does not exist >>>> or /aaa/bbb/ccc is different from /rom/aaa/bbb/ccc. >>>> >>>> Signed-off-by: Luiz Angelo Daros de Luca <luizl...@gmail.com> >>>> --- >>>> package/base-files/files/sbin/sysupgrade | 6 ++++-- >>>> 1 file changed, 4 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/package/base-files/files/sbin/sysupgrade >>>> b/package/base-files/files/sbin/sysupgrade >>>> index 359f21f51c..0085dbe07e 100755 >>>> --- a/package/base-files/files/sbin/sysupgrade >>>> +++ b/package/base-files/files/sbin/sysupgrade >>>> @@ -101,8 +101,10 @@ add_uci_conffiles() { >>>> local file="$1" >>>> ( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \ >>>> /etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \ >>>> - -type f -o -type l 2>/dev/null; >>>> - opkg list-changed-conffiles ) | sort -u > "$file" >>>> + $(opkg list-changed-conffiles) \ >>>> + \( -type f -o -type l \) \ >>>> + \( \( -exec test -e /rom{} \; -exec cmp -s {} /rom{} \; \) >>>> -o -print \) 2>/dev/null; >>>> + ) | sort -u > "$file" >>> >>> "opkg list-changed-conffiles" should have already filtered by that >>> (but obviously didn't), so the issue should be fixed at the source >>> instead of being worked around. >> >> `opkg list-changed-conffiles` does filter for changed files > > The issue seems to be a bit more complex than at first sight. > > There are at least two issues causing all /rom files treated as modified: > > 1) The hashing of opkg seems to be broken: > > # opkg -V2 list-changed-conffiles > ... > conffile_has_been_modified: Conffile /etc/ppp/options: > old > chk=851bf20b58373edaba24255bb5c8abf86288379f6f0d99c72c01b76cee56a7b7 > new > chk=a0509db666fc831a3f9332ca6e911ba9a32e7f1ce13733e539a719f0413794b9 > # sha256sum /etc/ppp/options > a0509db666fc831a3f9332ca6e911ba9a32e7f1ce13733e539a719f0413794b9 > /etc/ppp/options > # grep "/etc/ppp/options" /usr/lib/opkg/status > /etc/ppp/options > a0509db666fc831a3f9332ca6e911ba9a32e7f1ce13733e539a719f0413794b9 > > (old chk is the calculated checksum of the existing file, new chk is > the one according to status) > > So while the one from status is properly read, the generated one > doesn't match the existing file at all.
Okay, found the issue, the sha256sum calculation was broken for big endian systems. With it fixed it's a much more managable list (with a freshly booted system): root@LEDE:/# opkg list-changed-conffiles /etc/group /etc/passwd /etc/shadow /etc/config/dhcp /etc/dropbear/dropbear_rsa_host_key root@LEDE:/# Regards Jonas _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev