aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2021-06-30 01:38:50 +0100
committerDaniel Golle <daniel@makrotopia.org>2021-06-30 01:40:37 +0100
commit1204cb82f9af803c4045527576bb9f317b9a20b6 (patch)
tree0435a70a80b89b6c971506ea8f0de45ef0f73641
parentdfee9d005dca0c14f03590aad3b64ba8894fe6a7 (diff)
auc: update to version 0.1.8
This fixes support for x86, auc now selects the right combined image depending on the system being booted in EFI mode or not. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-rw-r--r--utils/auc/Makefile2
-rw-r--r--utils/auc/src/auc.c42
2 files changed, 41 insertions, 3 deletions
diff --git a/utils/auc/Makefile b/utils/auc/Makefile
index 58e026a8d..406cb4cf2 100644
--- a/utils/auc/Makefile
+++ b/utils/auc/Makefile
@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=auc
-PKG_VERSION:=0.1.7
+PKG_VERSION:=0.1.8
PKG_RELEASE:=$(AUTORELEASE)
PKG_LICENSE:=GPL-3.0
diff --git a/utils/auc/src/auc.c b/utils/auc/src/auc.c
index ebda3eed8..ea144e4ff 100644
--- a/utils/auc/src/auc.c
+++ b/utils/auc/src/auc.c
@@ -1356,7 +1356,24 @@ static int req_add_selected_packages(struct blob_buf *req)
return 0;
}
-static int select_image(struct blob_attr *images, char **image_name, char **image_sha256)
+#if defined(__amd64__) || defined(__i386__)
+static int system_is_efi(void)
+{
+ const char efidname[] = "/sys/firmware/efi/efivars";
+ int fd = open(efidname, O_DIRECTORY | O_PATH);
+
+ if (fd != -1) {
+ close(fd);
+ return 1;
+ } else {
+ return 0;
+ }
+}
+#else
+static inline int system_is_efi(void) { return 0; }
+#endif
+
+static int get_image_by_type(struct blob_attr *images, const char *typestr, char **image_name, char **image_sha256)
{
struct blob_attr *tb[__IMAGES_MAX];
struct blob_attr *cur;
@@ -1370,7 +1387,7 @@ static int select_image(struct blob_attr *images, char **image_name, char **imag
!tb[IMAGES_SHA256])
continue;
- if (!strcmp(blobmsg_get_string(tb[IMAGES_TYPE]), "sysupgrade")) {
+ if (!strcmp(blobmsg_get_string(tb[IMAGES_TYPE]), typestr)) {
*image_name = strdup(blobmsg_get_string(tb[IMAGES_NAME]));
*image_sha256 = strdup(blobmsg_get_string(tb[IMAGES_SHA256]));
ret = 0;
@@ -1381,6 +1398,27 @@ static int select_image(struct blob_attr *images, char **image_name, char **imag
return ret;
}
+static int select_image(struct blob_attr *images, char **image_name, char **image_sha256)
+{
+ const char *combined_type;
+ int ret;
+
+ if (system_is_efi())
+ combined_type = "combined-efi";
+ else
+ combined_type = "combined";
+
+ DPRINTF("images: %s\n", blobmsg_format_json_indent(images, true, 0));
+
+ ret = get_image_by_type(images, "sysupgrade", image_name, image_sha256);
+ if (!ret)
+ return 0;
+
+ ret = get_image_by_type(images, combined_type, image_name, image_sha256);
+
+ return ret;
+}
+
static bool validate_sha256(char *filename, char *sha256str)
{
char *cmd = calloc(strlen(SHA256SUM) + 1 + strlen(filename) + 1, sizeof(char));