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 e6f8a1b..d2d919a 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"