opkg-cl: stop preloading package feeds on install
authorJo-Philipp Wich <jo@mein.io>
Thu, 16 Feb 2017 15:44:07 +0000 (16:44 +0100)
committerJo-Philipp Wich <jo@mein.io>
Thu, 16 Feb 2017 16:02:30 +0000 (17:02 +0100)
Instead of unconditionally loading all package feed lists entirely into
memory, let opkg_install_cmd() selectively parse the lists using the new
pkg_hash_load_package_details() helper.

This will result in a slightly longer runtime but dramatically reduces the
memory requirements. On an x86_64 test system, the peak heap memory
consumption during an "opkg install luci" dropped from 3.7 MB to about
360 KB, a decrease of roughly 90%.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
src/opkg-cl.c

index e2f10a11852eca066996f9b0416b96e59354d9a6..47e2056e5a754ba8efb6fa325cb9417e220fd958 100644 (file)
@@ -387,7 +387,8 @@ int main(int argc, char *argv[])
 
        cmd_name = argv[opts++];
 
 
        cmd_name = argv[opts++];
 
-       if (!strcmp(cmd_name, "print-architecture") ||
+       if (!strcmp(cmd_name, "install") ||
+           !strcmp(cmd_name, "print-architecture") ||
            !strcmp(cmd_name, "print_architecture") ||
            !strcmp(cmd_name, "print-installation-architecture") ||
            !strcmp(cmd_name, "print_installation_architecture"))
            !strcmp(cmd_name, "print_architecture") ||
            !strcmp(cmd_name, "print-installation-architecture") ||
            !strcmp(cmd_name, "print_installation_architecture"))
@@ -395,6 +396,7 @@ int main(int argc, char *argv[])
 
        if (!strcmp(cmd_name, "flag") ||
            !strcmp(cmd_name, "configure") ||
 
        if (!strcmp(cmd_name, "flag") ||
            !strcmp(cmd_name, "configure") ||
+           !strcmp(cmd_name, "install") ||
            !strcmp(cmd_name, "remove") ||
            !strcmp(cmd_name, "files") ||
            !strcmp(cmd_name, "search") ||
            !strcmp(cmd_name, "remove") ||
            !strcmp(cmd_name, "files") ||
            !strcmp(cmd_name, "search") ||