system: always support staged sysupgrade
authorMatthias Schiffer <mschiffer@universe-factory.net>
Fri, 21 Apr 2017 18:06:59 +0000 (20:06 +0200)
committerMatthias Schiffer <mschiffer@universe-factory.net>
Mon, 29 May 2017 19:43:54 +0000 (21:43 +0200)
In preparation for switching all targets to the staged sysupgrade
mechanism, upgraded is always built, and the "nandupgrade" ubus method is
renamed to "sysupgrade".

To make the migration easier, support for the old name "nandupgrade" and
the "upgrade" method that will become unused with the staged sysupgrade is
retained for now.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
CMakeLists.txt
system.c

index 444dd20..0729459 100644 (file)
@@ -40,9 +40,7 @@ IF(ZRAM_TMPFS)
   SET(SOURCES_ZRAM initd/zram.c)
 ENDIF()
 
   SET(SOURCES_ZRAM initd/zram.c)
 ENDIF()
 
-IF(BUILD_UPGRADED)
-  add_subdirectory(upgraded)
-ENDIF()
+add_subdirectory(upgraded)
 
 ADD_EXECUTABLE(procd ${SOURCES})
 TARGET_LINK_LIBRARIES(procd ${LIBS})
 
 ADD_EXECUTABLE(procd ${SOURCES})
 TARGET_LINK_LIBRARIES(procd ${LIBS})
index 1e31ce6..bb2abe5 100644 (file)
--- a/system.c
+++ b/system.c
@@ -344,12 +344,12 @@ static int proc_signal(struct ubus_context *ctx, struct ubus_object *obj,
 }
 
 enum {
 }
 
 enum {
-       NAND_PATH,
-       __NAND_MAX
+       SYSUPGRADE_PATH,
+       __SYSUPGRADE_MAX
 };
 
 };
 
-static const struct blobmsg_policy nand_policy[__NAND_MAX] = {
-       [NAND_PATH] = { .name = "path", .type = BLOBMSG_TYPE_STRING },
+static const struct blobmsg_policy sysupgrade_policy[__SYSUPGRADE_MAX] = {
+       [SYSUPGRADE_PATH] = { .name = "path", .type = BLOBMSG_TYPE_STRING },
 };
 
 static void
 };
 
 static void
@@ -368,20 +368,20 @@ procd_spawn_upgraded(char *path)
        execvp(argv[0], argv);
 }
 
        execvp(argv[0], argv);
 }
 
-static int nand_set(struct ubus_context *ctx, struct ubus_object *obj,
-                       struct ubus_request_data *req, const char *method,
-                       struct blob_attr *msg)
+static int sysupgrade(struct ubus_context *ctx, struct ubus_object *obj,
+                     struct ubus_request_data *req, const char *method,
+                     struct blob_attr *msg)
 {
 {
-       struct blob_attr *tb[__NAND_MAX];
+       struct blob_attr *tb[__SYSUPGRADE_MAX];
 
        if (!msg)
                return UBUS_STATUS_INVALID_ARGUMENT;
 
 
        if (!msg)
                return UBUS_STATUS_INVALID_ARGUMENT;
 
-       blobmsg_parse(nand_policy, __NAND_MAX, tb, blob_data(msg), blob_len(msg));
-       if (!tb[NAND_PATH])
+       blobmsg_parse(sysupgrade_policy, __SYSUPGRADE_MAX, tb, blob_data(msg), blob_len(msg));
+       if (!tb[SYSUPGRADE_PATH])
                return UBUS_STATUS_INVALID_ARGUMENT;
 
                return UBUS_STATUS_INVALID_ARGUMENT;
 
-       procd_spawn_upgraded(blobmsg_get_string(tb[NAND_PATH]));
+       procd_spawn_upgraded(blobmsg_get_string(tb[SYSUPGRADE_PATH]));
        fprintf(stderr, "Yikees, something went wrong. no /sbin/upgraded ?\n");
        return 0;
 }
        fprintf(stderr, "Yikees, something went wrong. no /sbin/upgraded ?\n");
        return 0;
 }
@@ -400,9 +400,8 @@ static const struct ubus_method system_methods[] = {
        UBUS_METHOD_NOARG("reboot", system_reboot),
        UBUS_METHOD("watchdog", watchdog_set, watchdog_policy),
        UBUS_METHOD("signal", proc_signal, signal_policy),
        UBUS_METHOD_NOARG("reboot", system_reboot),
        UBUS_METHOD("watchdog", watchdog_set, watchdog_policy),
        UBUS_METHOD("signal", proc_signal, signal_policy),
-
-       /* must remain at the end as it ia not always loaded */
-       UBUS_METHOD("nandupgrade", nand_set, nand_policy),
+       UBUS_METHOD("nandupgrade", sysupgrade, sysupgrade_policy),
+       UBUS_METHOD("sysupgrade", sysupgrade, sysupgrade_policy),
 };
 
 static struct ubus_object_type system_object_type =
 };
 
 static struct ubus_object_type system_object_type =
@@ -431,12 +430,8 @@ procd_bcast_event(char *event, struct blob_attr *msg)
 
 void ubus_init_system(struct ubus_context *ctx)
 {
 
 void ubus_init_system(struct ubus_context *ctx)
 {
-       struct stat s;
        int ret;
 
        int ret;
 
-       if (stat("/sbin/upgraded", &s))
-               system_object.n_methods -= 1;
-
        _ctx = ctx;
        ret = ubus_add_object(ctx, &system_object);
        if (ret)
        _ctx = ctx;
        ret = ubus_add_object(ctx, &system_object);
        if (ret)