wgtpkg-install: Force uninstall 27/21127/1 eel
authorJose Bollo <jose.bollo@iot.bzh>
Mon, 17 Sep 2018 09:06:33 +0000 (11:06 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Tue, 23 Apr 2019 11:44:38 +0000 (13:44 +0200)
This commit forces uninstall of the previous installed
version instead of reinstall to get around a bug in
cynara.

Bug-AGL: SPEC-1230

Cherry-picked from master for EEL version of AGL for
bug SPEC-2286.

Bug-AGL: SPEC-2286

Change-Id: I679b7b51ac978364c660d3275b2b132e99601e3a
Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
src/wgtpkg-install.c

index 2b57a4e..896392a 100644 (file)
@@ -40,6 +40,7 @@
 #include "wgtpkg-permissions.h"
 #include "wgtpkg-digsig.h"
 #include "wgtpkg-install.h"
+#include "wgtpkg-uninstall.h"
 #include "secmgr-wrap.h"
 #include "utils-dir.h"
 #include "wgtpkg-unit.h"
@@ -532,6 +533,16 @@ struct wgt_info *install_widget(const char *wgtfile, const char *root, int force
        if (get_target_directory(installdir, root, desc))
                goto error3;
 
+       if (access(installdir, F_OK) == 0) {
+               if (!force) {
+                       ERROR("widget already installed");
+                       errno = EEXIST;
+                       goto error3;
+               }
+               if (uninstall_widget(desc->idaver, root))
+                       goto error3;
+       }
+
        if (move_widget_to(installdir, force))
                goto error3;