diff mbox

[LEDE-DEV,RFC,02/13] procd: system: always support staged sysupgrade

Message ID 987601aed3408e44c2c4aacca96c2bb1ad931b44.1492991656.git.mschiffer@universe-factory.net
State RFC
Headers show

Commit Message

Matthias Schiffer April 24, 2017, 12:06 a.m. UTC
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>

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 mbox

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.mschiffer@universe-factory.net>
+From: Matthias Schiffer <mschiffer@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 <mschiffer@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
+