apk: provide csum for static conffiles
For non-overlay configuration we need checksum for config file that weren't modified by the user. For OPKG in sysupgrade we check the status file for the Conffiles: entry of every package. this entry contains checksum for every static file that the package contains. Provide the same info for APK by creating a conffiles_static file and parse this file on sysupgrade for non-overlay configurations. This is also used by the sysupgrade -u option to exclude non-changed files from the final backup. Link: https://github.com/openwrt/openwrt/pull/15543 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This commit is contained in:
parent
9a52ec4fa0
commit
93d49529a1
@ -307,12 +307,25 @@ else
|
|||||||
if [ -n "$(USERID)" ]; then echo $(USERID) > $$(IDIR_$(1))/lib/apk/packages/$(1).rusers; fi;
|
if [ -n "$(USERID)" ]; then echo $(USERID) > $$(IDIR_$(1))/lib/apk/packages/$(1).rusers; fi;
|
||||||
if [ -n "$(ALTERNATIVES)" ]; then echo $(ALTERNATIVES) > $$(IDIR_$(1))/lib/apk/packages/$(1).alternatives; fi;
|
if [ -n "$(ALTERNATIVES)" ]; then echo $(ALTERNATIVES) > $$(IDIR_$(1))/lib/apk/packages/$(1).alternatives; fi;
|
||||||
(cd $$(IDIR_$(1)) && find . -type f,l -printf "/%P\n" > $$(IDIR_$(1))/lib/apk/packages/$(1).list)
|
(cd $$(IDIR_$(1)) && find . -type f,l -printf "/%P\n" > $$(IDIR_$(1))/lib/apk/packages/$(1).list)
|
||||||
if [ -f $$(ADIR_$(1))/conffiles ]; then mv $$(ADIR_$(1))/conffiles $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles; fi;
|
# Move conffiles to IDIR and build conffiles_static with csums
|
||||||
|
if [ -f $$(ADIR_$(1))/conffiles ]; then \
|
||||||
|
mv -f $$(ADIR_$(1))/conffiles $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles; \
|
||||||
|
for file in $$$$(cat $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles); do \
|
||||||
|
[ -f $$(IDIR_$(1))/$$$$file ] || continue; \
|
||||||
|
csum=$$$$($(MKHASH) sha256 $$(IDIR_$(1))/$$$$file); \
|
||||||
|
echo $$$$file $$$$csum >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles_static; \
|
||||||
|
done; \
|
||||||
|
fi
|
||||||
|
|
||||||
# Some package (base-files) manually append stuff to conffiles
|
# Some package (base-files) manually append stuff to conffiles
|
||||||
# Append stuff from it and delete the CONTROL directory since everything else should be migrated
|
# Append stuff from it and delete the CONTROL directory since everything else should be migrated
|
||||||
if [ -f $$(IDIR_$(1))/CONTROL/conffiles ]; then \
|
if [ -f $$(IDIR_$(1))/CONTROL/conffiles ]; then \
|
||||||
cat $$(IDIR_$(1))/CONTROL/conffiles >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles; \
|
echo $$$$(IDIR_$(1))/CONTROL/conffiles >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles; \
|
||||||
|
for file in $$$$(cat $$(IDIR_$(1))/CONTROL/conffiles); do \
|
||||||
|
[ -f $$(IDIR_$(1))/$$$$file ] || continue; \
|
||||||
|
csum=$$$$($(MKHASH) sha256 $$(IDIR_$(1))/$$$$file); \
|
||||||
|
echo $$$$file $$$$csum >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles_static; \
|
||||||
|
done; \
|
||||||
rm -rf $$(IDIR_$(1))/CONTROL/conffiles; \
|
rm -rf $$(IDIR_$(1))/CONTROL/conffiles; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -130,12 +130,20 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
list_conffiles() {
|
list_conffiles() {
|
||||||
awk '
|
if [ -f /usr/lib/opkg/status ]; then
|
||||||
BEGIN { conffiles = 0 }
|
awk '
|
||||||
/^Conffiles:/ { conffiles = 1; next }
|
BEGIN { conffiles = 0 }
|
||||||
!/^ / { conffiles = 0; next }
|
/^Conffiles:/ { conffiles = 1; next }
|
||||||
conffiles == 1 { print }
|
!/^ / { conffiles = 0; next }
|
||||||
' /usr/lib/opkg/status
|
conffiles == 1 { print }
|
||||||
|
' /usr/lib/opkg/status
|
||||||
|
elif [ -d /lib/apk/packages ]; then
|
||||||
|
conffiles=""
|
||||||
|
for file in /lib/apk/packages/*.conffiles_static; do
|
||||||
|
conffiles="$(echo -e "$(cat $file)\n$conffiles")"
|
||||||
|
done
|
||||||
|
echo "$conffiles"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
list_changed_conffiles() {
|
list_changed_conffiles() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user