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 <mschif...@universe-factory.net> Note: obviously, this patch should go into the procd repo when it is actually applied; it is provided like this for now to allow easier testing of the whole series. --- ...1-system-always-support-staged-sysupgrade.patch | 112 +++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 package/system/procd/patches/0001-system-always-support-staged-sysupgrade.patch diff --git a/package/system/procd/patches/0001-system-always-support-staged-sysupgrade.patch b/package/system/procd/patches/0001-system-always-support-staged-sysupgrade.patch new file mode 100644 index 0000000000..a7e66e8a78 --- /dev/null +++ b/package/system/procd/patches/0001-system-always-support-staged-sysupgrade.patch @@ -0,0 +1,112 @@ +From 3462ccc0c91964ec92c1c61cde803a6504b2fb24 Mon Sep 17 00:00:00 2001 +Message-Id: <3462ccc0c91964ec92c1c61cde803a6504b2fb24.1492975837.git.mschif...@universe-factory.net> +From: Matthias Schiffer <mschif...@universe-factory.net> +Date: Fri, 21 Apr 2017 20:06:59 +0200 +Subject: [PATCH 1/4] system: always support staged sysupgrade + +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 <mschif...@universe-factory.net> +--- + CMakeLists.txt | 4 +--- + system.c | 31 +++++++++++++------------------ + 2 files changed, 14 insertions(+), 21 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 444dd20..0729459 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -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}) +diff --git a/system.c b/system.c +index 1e31ce6..bb2abe5 100644 +--- 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) +-- +2.12.2 + -- 2.12.2 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev