[openwrt/openwrt] package: add fitblk util to release /dev/fit* devices
LEDE Commits
lede-commits at lists.infradead.org
Thu Feb 15 11:34:52 PST 2024
dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/ddcc8f9f4ed6d8a57107afe4e40d63c794aa59ae
commit ddcc8f9f4ed6d8a57107afe4e40d63c794aa59ae
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Tue Jun 13 15:32:15 2023 +0100
package: add fitblk util to release /dev/fit* devices
Add minimalistic tool to allow releasing /dev/fit* devices which is
needed on sysupgrade when using the fitblk driver.
The package is hidden in menuconfig, it should only be selected by
adding it to the default package selection of boards using it.
Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
package/utils/fitblk/Makefile | 41 +++++++++++++++++++++++++++++++++++
package/utils/fitblk/src/Makefile | 7 ++++++
package/utils/fitblk/src/fitblk.c | 45 +++++++++++++++++++++++++++++++++++++++
3 files changed, 93 insertions(+)
diff --git a/package/utils/fitblk/Makefile b/package/utils/fitblk/Makefile
new file mode 100644
index 0000000000..cb9e7ebb40
--- /dev/null
+++ b/package/utils/fitblk/Makefile
@@ -0,0 +1,41 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=fitblk
+PKG_RELEASE:=1
+PKG_LICENSE:=GPL-2.0-only
+PKG_MAINTAINER:=Daniel Golle <daniel at makrotopia.org>
+
+PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
+
+PKG_FLAGS:=nonshared
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/fitblk
+ HIDDEN:=1
+ SECTION:=base
+ CATEGORY:=Base system
+ TITLE:=fitblk firmware release tool
+ DEPENDS:=@LINUX_6_1
+endef
+
+define Package/fitblk/description
+Release uImage.FIT block devices using ioctl.
+endef
+
+define Build/Configure
+endef
+
+define Build/Compile
+ $(MAKE) -C $(PKG_BUILD_DIR) \
+ CC="$(TARGET_CC)" \
+ CFLAGS="$(TARGET_CFLAGS) -Wall -Werror" \
+ LDFLAGS="$(TARGET_LDFLAGS)"
+endef
+
+define Package/fitblk/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/fitblk $(1)/usr/sbin/
+endef
+
+$(eval $(call BuildPackage,fitblk))
diff --git a/package/utils/fitblk/src/Makefile b/package/utils/fitblk/src/Makefile
new file mode 100644
index 0000000000..064764c17d
--- /dev/null
+++ b/package/utils/fitblk/src/Makefile
@@ -0,0 +1,7 @@
+all: fitblk
+
+fitblk:
+ $(CC) $(CFLAGS) -o $@ fitblk.c $(LDFLAGS)
+
+clean:
+ rm -f fitblk
diff --git a/package/utils/fitblk/src/fitblk.c b/package/utils/fitblk/src/fitblk.c
new file mode 100644
index 0000000000..059ba6098c
--- /dev/null
+++ b/package/utils/fitblk/src/fitblk.c
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include <stdio.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <linux/fitblk.h>
+
+static int fitblk_release(char *device)
+{
+ int fd, ret;
+
+ fd = open(device, O_RDONLY);
+ if (fd == -1)
+ return errno;
+
+ ret = ioctl(fd, FITBLK_RELEASE, NULL);
+ close(fd);
+
+ if (ret == -1)
+ return errno;
+
+ return 0;
+}
+
+int main(int argc, char *argp[])
+{
+ int ret;
+
+ if (argc != 2) {
+ fprintf(stderr, "Release uImage.FIT sub-image block device\n");
+ fprintf(stderr, "Syntax: %s /dev/fitXXX\n", argp[0]);
+ return -EINVAL;
+ }
+
+ ret = fitblk_release(argp[1]);
+ if (ret)
+ fprintf(stderr, "fitblk: error releasing %s: %s\n", argp[1],
+ strerror(ret));
+ else
+ fprintf(stderr, "fitblk: %s released\n", argp[1]);
+
+ return ret;
+}
More information about the lede-commits
mailing list