libopkg: don't print unresolved dependencies twice
authorJo-Philipp Wich <jo@mein.io>
Tue, 30 Oct 2018 09:25:11 +0000 (10:25 +0100)
committerJo-Philipp Wich <jo@mein.io>
Tue, 30 Oct 2018 09:42:47 +0000 (09:42 +0000)
Sometimes opkg ends up reporting unresolved dependencies multiple
times while also missing a newline between consecutive error lines,
making the error message output looking garbled and confusing.

Add some logic to skip repeated unresolved dependencies and ensure
that message lines are properly terminated by newlines.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
libopkg/opkg_install.c

index e6f8a1b6276ede518a5c59b2f9347f1de8e5dd7a..d2d919a85651b9af41ca12c4bf518b1f143a9886 100644 (file)
@@ -45,7 +45,7 @@ static int satisfy_dependencies_for(pkg_t * pkg)
        int i, err;
        pkg_vec_t *depends = pkg_vec_alloc();
        pkg_t *dep;
-       char **tmp, **unresolved = NULL;
+       char **tmp, **unresolved = NULL, *prev = NULL;
        int ndepends;
 
        ndepends = pkg_hash_fetch_unsatisfied_dependencies(pkg, depends,
@@ -57,12 +57,17 @@ static int satisfy_dependencies_for(pkg_t * pkg)
                         pkg->name);
                tmp = unresolved;
                while (*unresolved) {
-                       opkg_message(ERROR, "\t%s", *unresolved);
+                       if (!prev || strcmp(*unresolved, prev))
+                               opkg_message(ERROR, "\t%s\n", *unresolved);
+                       prev = *unresolved;
+                       unresolved++;
+               }
+               unresolved = tmp;
+               while (*unresolved) {
                        free(*unresolved);
                        unresolved++;
                }
                free(tmp);
-               opkg_message(ERROR, "\n");
                if (!conf->force_depends) {
                        opkg_msg(INFO,
                                 "This could mean that your package list is out of date or that the packages\n"