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 444dd20545b4515748b6f28ab17f814a68dd6751..0729459c857e4e5ae837eea804b1abbe4414155b 100644 (file)
@@ -40,9 +40,7 @@ IF(ZRAM_TMPFS)
   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})
index 1e31ce6859cd760fb07e43266ab62a1f07db09e8..bb2abe5e527e356fba70a6853ec8a57342311dbc 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 {
-       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
@@ -368,20 +368,20 @@ procd_spawn_upgraded(char *path)
        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;
 
-       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;
 
-       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;
 }
@@ -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),
-
-       /* 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 =
@@ -431,12 +430,8 @@ procd_bcast_event(char *event, struct blob_attr *msg)
 
 void ubus_init_system(struct ubus_context *ctx)
 {
-       struct stat s;
        int ret;
 
-       if (stat("/sbin/upgraded", &s))
-               system_object.n_methods -= 1;
-
        _ctx = ctx;
        ret = ubus_add_object(ctx, &system_object);
        if (ret)