Browse Source

base-files: sysupgrade: add saving list of installed packages for APK

Add support for saving list of installed packages for APK in the same way
we do it for OPKG.

Unlike OPKG, we dont generate .control files for packages so lets use .list
files instead.

Fixes: #16947
Link: https://github.com/openwrt/openwrt/pull/17123
Signed-off-by: Robert Marko <[email protected]>
Robert Marko 1 year ago
parent
commit
cee18af704
1 changed files with 13 additions and 5 deletions
  1. 13 5
      package/base-files/files/sbin/sysupgrade

+ 13 - 5
package/base-files/files/sbin/sysupgrade

@@ -279,11 +279,19 @@ create_backup_archive() {
 			if [ "$SAVE_INSTALLED_PKGS" -eq 1 ]; then
 				# Format: pkg-name<TAB>{rom,overlay,unknown}
 				# rom is used for pkgs in /rom, even if updated later
-				tar_print_member "$INSTALLED_PACKAGES" "$(find /usr/lib/opkg/info -name "*.control" \( \
-					\( -exec test -f /rom/{} \; -exec echo {} rom \; \) -o \
-					\( -exec test -f /overlay/upper/{} \; -exec echo {} overlay \; \) -o \
-					\( -exec echo {} unknown \; \) \
-					\) | sed -e 's,.*/,,;s/\.control /\t/')" || ret=1
+				if [ -d "/usr/lib/opkg/info" ]; then
+					tar_print_member "$INSTALLED_PACKAGES" "$(find /usr/lib/opkg/info -name "*.control" \( \
+						\( -exec test -f /rom/{} \; -exec echo {} rom \; \) -o \
+						\( -exec test -f /overlay/upper/{} \; -exec echo {} overlay \; \) -o \
+						\( -exec echo {} unknown \; \) \
+						\) | sed -e 's,.*/,,;s/\.control /\t/')" || ret=1
+				elif [ -d "/lib/apk/packages" ]; then
+					tar_print_member "$INSTALLED_PACKAGES" "$(find /lib/apk/packages -name "*.list" \( \
+						\( -exec test -f /rom/{} \; -exec echo {} rom \; \) -o \
+						\( -exec test -f /overlay/upper/{} \; -exec echo {} overlay \; \) -o \
+						\( -exec echo {} unknown \; \) \
+						\) | sed -e 's,.*/,,;s/\.list /\t/')" || ret=1
+				fi
 			fi
 		fi