From d66502532fea652d8743bfb61f9843c796d305cf Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Fri, 24 Aug 2018 14:30:19 +0200 Subject: [PATCH] build: make eMMC boot partition support optional The eMMC boot partition support, added in commit ea5cc7ff606c65536da218bd1ef6d0ca279c9b17 ("src/update_handler: add support for updating eMMC boot partitions"), requires , only available starting from kernel headers 3.0. Even though it is pretty likely that people are going to use Linux >= 3.0 on their embedded systems these days, RAUC also needs to be built natively on the build machine to produce update artifacts, and the build machine is sometimes using an ancient Linux system, especially in an enterprise contexts. In order to make sure that RAUC builds fine in this context, this commit makes the eMMC boot partition support optional, by verifying the availability of . Signed-off-by: Thomas Petazzoni --- Makefile.am | 5 ++++- configure.ac | 6 ++++++ src/update_handler.c | 6 ++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 23eb2d1..7b4682d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -39,7 +39,6 @@ librauc_la_SOURCES = \ src/checksum.c \ src/config_file.c \ src/context.c \ - src/emmc.c \ src/install.c \ src/manifest.c \ src/mark.c \ @@ -63,6 +62,10 @@ librauc_la_SOURCES = \ include/update_handler.h \ include/utils.h +if WANT_EMMC_BOOT_SUPPORT +librauc_la_SOURCES += src/emmc.c +endif + if WANT_NETWORK librauc_la_SOURCES += src/network.c include/network.h endif diff --git a/configure.ac b/configure.ac index 2d6f940..1ec124b 100644 --- a/configure.ac +++ b/configure.ac @@ -102,6 +102,12 @@ AC_SUBST(DBUS_SYSTEMSERVICEDIR) # Checks for header files. +AC_CHECK_HEADER([linux/mmc/ioctl.h], + AC_DEFINE([ENABLE_EMMC_BOOT_SUPPORT], [1], [Define to 1 to enable eMMC boot support]), + AC_DEFINE([ENABLE_EMMC_BOOT_SUPPORT], [0])) + +AM_CONDITIONAL([WANT_EMMC_BOOT_SUPPORT], [test x$ac_cv_header_linux_mmc_ioctl_h != xno]) + # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. diff --git a/src/update_handler.c b/src/update_handler.c index 62115ec..a9f233a 100644 --- a/src/update_handler.c +++ b/src/update_handler.c @@ -57,6 +57,7 @@ out: return outstream; } +#if ENABLE_EMMC_BOOT_SUPPORT == 1 static gboolean clear_slot(RaucSlot *slot, GError **error) { GError *ierror = NULL; @@ -99,6 +100,7 @@ out: g_clear_object(&outstream); return res; } +#endif static gboolean ubifs_ioctl(RaucImage *image, int fd, GError **error) { @@ -1085,6 +1087,7 @@ out: return res; } +#if ENABLE_EMMC_BOOT_SUPPORT == 1 static gboolean img_to_boot_emmc_handler(RaucImage *image, RaucSlot *dest_slot, const gchar *hook_name, GError **error) { @@ -1245,6 +1248,7 @@ out: return res; } +#endif static gboolean img_to_raw_handler(RaucImage *image, RaucSlot *dest_slot, const gchar *hook_name, GError **error) { @@ -1329,7 +1333,9 @@ RaucUpdatePair updatepairs[] = { {"*.img", "nand", img_to_nand_handler}, {"*.img", "ubivol", img_to_ubivol_handler}, {"*.squashfs", "ubivol", img_to_ubivol_handler}, +#if ENABLE_EMMC_BOOT_SUPPORT == 1 {"*.img", "boot-emmc", img_to_boot_emmc_handler}, +#endif {"*.img", "*", img_to_raw_handler}, /* fallback */ {0} }; -- 2.14.4