Skip to contentSkip to conversation

rauc: add patch to make it build with Linux < 3.0

PATCH New Thomas Petazzoni 3 participants 5 messages Aug 24, 2018 – Aug 26, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 rauc: add patch to make it build with Linux < 3.0

This commit adds a patch to RAUC that makes the eMMC boot partition support optional. This allows RAUC to build successfully on systems using Linux < 3.0.

Fixes:

http://autobuild.buildroot.net/results/7e1cbeb458cb6536a36eae0d24cefb36edb22f55/

---
 ...make-eMMC-boot-partition-support-optional.patch | 116 +++++++++++++++++++++
 1 file changed, 116 insertions(+)
 create mode 100644 package/rauc/0002-build-make-eMMC-boot-partition-support-optional.patch
package/rauc/0002-build-make-eMMC-boot-partition-support-optional.patch new file +116 -0
new file mode 100644
index 0000000000..f6177c9d54
@@ -0,0 +1,116 @@
+From d66502532fea652d8743bfb61f9843c796d305cf Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <[email protected]>
+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 <[email protected]>
+---
+ 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
+
Signature · 1 line
2.14.4
#1 lore raw

PATCH 1/1 rauc: add patch to make it build with Linux < 3.0

Thomas, All,

On 2018-08-24 14:35 +0200, Thomas Petazzoni spake thusly:

Quoted 3 lines

This commit adds a patch to RAUC that makes the eMMC boot partition support optional. This allows RAUC to build successfully on systems using Linux < 3.0.

In your haste in proving me wrong with this emmc in rauc issue, you forgot a very important and crucial point: you are touching configure.ac with this patch, so you need RAUC_AUTORECONF = YES . ;-)

Sarcasm aside, with the above fixed:

    Reviewed-by: "Yann E. MORIN" <[email protected]>
    Tested-by: "Yann E. MORIN" <[email protected]>

To test this, apart the autoreconf change, I also removed that looked-for header from my system, to be sure to have the test fail.

Regards,
Yann E. MORIN.

Quoted 135 lines

Fixes:

http://autobuild.buildroot.net/results/7e1cbeb458cb6536a36eae0d24cefb36edb22f55/

---
 ...make-eMMC-boot-partition-support-optional.patch | 116 +++++++++++++++++++++
 1 file changed, 116 insertions(+)
 create mode 100644 package/rauc/0002-build-make-eMMC-boot-partition-support-optional.patch
package/rauc/0002-build-make-eMMC-boot-partition-support-optional.patch new file +116 -0
new file mode 100644
index 0000000000..f6177c9d54
@@ -0,0 +1,116 @@
+From d66502532fea652d8743bfb61f9843c796d305cf Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <[email protected]>
+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 <[email protected]>
+---
+ 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
+
Signature · 1 line
2.14.4
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#2 lore raw

PATCH 1/1 rauc: add patch to make it build with Linux < 3.0

Hello,

Quoted 8 lines · Yann E. MORIN

On 2018-08-24 14:35 +0200, Thomas Petazzoni spake thusly:

Quoted 3 lines

This commit adds a patch to RAUC that makes the eMMC boot partition support optional. This allows RAUC to build successfully on systems using Linux < 3.0.

In your haste in proving me wrong with this emmc in rauc issue, you forgot a very important and crucial point: you are touching configure.ac with this patch, so you need RAUC_AUTORECONF = YES . ;-)

Gaah, indeed! In fact, I only tested the patch outside of the context of Buildroot, forcing ac_cv_header_linux_mmc_ioctl_h=no to test the Linux < 3.0 case.

Quoted 7 lines

Sarcasm aside, with the above fixed:

    Reviewed-by: "Yann E. MORIN" <[email protected]>
    Tested-by: "Yann E. MORIN" <[email protected]>

To test this, apart the autoreconf change, I also removed that looked-for header from my system, to be sure to have the test fail.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
author Applied
#3 lore raw

PATCH 1/1 rauc: add patch to make it build with Linux < 3.0

In reply to Thomas Petazzoni

Hello,

Quoted 6 lines · Thomas Petazzoni

This commit adds a patch to RAUC that makes the eMMC boot partition support optional. This allows RAUC to build successfully on systems using Linux < 3.0.

Fixes:

Quoted 7 lines

http://autobuild.buildroot.net/results/7e1cbeb458cb6536a36eae0d24cefb36edb22f55/

---
 ...make-eMMC-boot-partition-support-optional.patch | 116 +++++++++++++++++++++
 1 file changed, 116 insertions(+)
 create mode 100644 package/rauc/0002-build-make-eMMC-boot-partition-support-optional.patch

Applied to master after adding the missing AUTORECONF = YES spotted by Yann.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com
#4 lore raw

PATCH 1/1 rauc: add patch to make it build with Linux < 3.0

In reply to Thomas Petazzoni
Quoted 11 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Thomas" == Thomas Petazzoni <[email protected]> writes:

This commit adds a patch to RAUC that makes the eMMC boot partition support optional. This allows RAUC to build successfully on systems using Linux < 3.0.

Fixes:

http://autobuild.buildroot.net/results/7e1cbeb458cb6536a36eae0d24cefb36edb22f55/

Committed to 2018.05.x, thanks.

Signature · 1 line
Bye, Peter Korsgaard