[Buildroot] [git commit] mtd: add option to install mtd integrity test
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Sat Jul 16 09:49:40 UTC 2016
commit: https://git.buildroot.net/buildroot/commit/?id=77f23c4d66e6cad62ce8a77f6d1b5fd2d109471f
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master
The mtd tests have proven very useful in testing both flash stability
and JFFS2 changes. Adding an option to install the integrity test.
Signed-off-by: Yugendra Sai Babu Nadupuru <yugendra.sai.babu.nadupuru at rockwellcollins.com>
Signed-off-by: Matt Weber <matthew.weber at rockwellcollins.com>
[Thomas: rename Config.in option, misc improvements in .mk file, add
patch to fix build with uClibc/musl.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
---
...y-use-execinfo.h-when-INTEGCK_DEBUG-is-en.patch | 62 ++++++++++++++++++++++
package/mtd/Config.in | 5 ++
package/mtd/mtd.mk | 12 +++++
3 files changed, 79 insertions(+)
diff --git a/package/mtd/0002-integck-only-use-execinfo.h-when-INTEGCK_DEBUG-is-en.patch b/package/mtd/0002-integck-only-use-execinfo.h-when-INTEGCK_DEBUG-is-en.patch
new file mode 100644
index 0000000..0f74a7b
--- /dev/null
+++ b/package/mtd/0002-integck-only-use-execinfo.h-when-INTEGCK_DEBUG-is-en.patch
@@ -0,0 +1,62 @@
+From 30f0cd91b21dbc5d593d61ae44875ad0cb53cb4d Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
+Date: Sat, 16 Jul 2016 11:27:06 +0200
+Subject: [PATCH] integck: only use execinfo.h when INTEGCK_DEBUG is enabled
+
+Guard the usage of execinfo.h by INTEGCK_DEBUG so that by defaut,
+integck builds properly on systems without <execinfo.h> (uClibc and
+musl based systems). As stated in the code, the backtrace()
+functionality of <execinfo.h> will anyway only work properly when
+INTEGCK_DEBUG is defined (it makes all functions non-static, which is
+needed for backtrace to provide some useful information).
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
+---
+ tests/fs-tests/integrity/integck.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c
+index 8badd1f..6ef817e 100644
+--- a/tests/fs-tests/integrity/integck.c
++++ b/tests/fs-tests/integrity/integck.c
+@@ -31,7 +31,9 @@
+ #include <getopt.h>
+ #include <assert.h>
+ #include <mntent.h>
++#ifdef INTEGCK_DEBUG
+ #include <execinfo.h>
++#endif
+ #include <bits/stdio_lim.h>
+ #include <sys/mman.h>
+ #include <sys/vfs.h>
+@@ -248,14 +250,18 @@ static char *random_name_buf;
+ static void check_failed(const char *cond, const char *func, const char *file,
+ int line)
+ {
+- int error = errno, count;
++ int error = errno;
++#ifdef INTEGCK_DEBUG
++ int count;
+ void *addresses[128];
++#endif
+
+ fflush(stdout);
+ fflush(stderr);
+ errmsg("condition '%s' failed in %s() at %s:%d",
+ cond, func, file, line);
+ normsg("error %d (%s)", error, strerror(error));
++#ifdef INTEGCK_DEBUG
+ /*
+ * Note, to make this work well you need:
+ * 1. Make all functions non-static - add "#define static'
+@@ -264,6 +270,7 @@ static void check_failed(const char *cond, const char *func, const char *file,
+ */
+ count = backtrace(addresses, 128);
+ backtrace_symbols_fd(addresses, count, fileno(stdout));
++#endif
+ exit(EXIT_FAILURE);
+ }
+
+--
+2.7.4
+
diff --git a/package/mtd/Config.in b/package/mtd/Config.in
index 6e4346f..eef8129 100644
--- a/package/mtd/Config.in
+++ b/package/mtd/Config.in
@@ -159,4 +159,9 @@ config BR2_PACKAGE_MTD_UBIBLOCK
bool "ubiblock"
default y
+config BR2_PACKAGE_MTD_INTEGCK
+ bool "integck"
+ help
+ Install the integck test program.
+
endif
diff --git a/package/mtd/mtd.mk b/package/mtd/mtd.mk
index bf90212..acf24d5 100644
--- a/package/mtd/mtd.mk
+++ b/package/mtd/mtd.mk
@@ -97,11 +97,22 @@ MTD_TARGETS_UBI_$(BR2_PACKAGE_MTD_UBIBLOCK) += ubiblock
MTD_TARGETS_y += $(addprefix ubi-utils/,$(MTD_TARGETS_UBI_y))
MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSUBIFS) += mkfs.ubifs/mkfs.ubifs
+ifeq ($(BR2_PACKAGE_MTD_INTEGCK),y)
+define MTD_BUILD_INTEGCK
+ $(TARGET_CONFIGURE_OPTS) $(MAKE1) CROSS=$(TARGET_CROSS) \
+ BUILDDIR=$(@D) $(MTD_MAKE_OPTS) -C $(@D)/tests/fs-tests all
+endef
+define MTD_INSTALL_INTEGCK
+ $(INSTALL) -D -m 755 $(@D)/tests/fs-tests/integrity/integck $(TARGET_DIR)/usr/sbin/integck
+endef
+endif
+
define MTD_BUILD_CMDS
$(TARGET_CONFIGURE_OPTS) $(MAKE1) CROSS=$(TARGET_CROSS) \
BUILDDIR=$(@D) $(MTD_MAKE_OPTS) -C $(@D) \
$(addprefix $(@D)/,$(MTD_TARGETS_y)) \
$(addprefix $(@D)/,$(MTD_STAGING_y))
+ $(MTD_BUILD_INTEGCK)
endef
define MTD_INSTALL_STAGING_CMDS
@@ -116,6 +127,7 @@ define MTD_INSTALL_TARGET_CMDS
for f in $(MTD_TARGETS_y) ; do \
$(INSTALL) -D -m 0755 $(@D)/$$f $(TARGET_DIR)/usr/sbin/$${f##*/} ; \
done
+ $(MTD_INSTALL_INTEGCK)
endef
$(eval $(generic-package))
More information about the buildroot
mailing list