| From d66502532fea652d8743bfb61f9843c796d305cf Mon Sep 17 00:00:00 2001 |
| From: Thomas Petazzoni <thomas.petazzoni@bootlin.com> |
| 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 |
| <linux/mmc/ioctl.h>, 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 <linux/mmc/ioctl.h>. |
| |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> |
| --- |
| 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 |
| |