diff options
authorThomas Petazzoni <>2017-02-20 22:43:55 (GMT)
committerThomas Petazzoni <>2017-02-23 21:34:55 (GMT)
commit06b555b6d5baadb6fe73e5d8a9fd640602908251 (patch)
parenta862b53ef953b14dc864f04694e8bf3ebfb29162 (diff)
btrfs-progs: don't use <execinfo.h> with uClibc
This commit adds a patch to btrfs-progs that fixes the build of docker-engine, and possibly other packages including kerncompat.h from btrfs-progs. For the btrfs-progs build itself, a --disable-backtrace option allows to indicate whether backtrace()/<execinfo.h> support should be used or not. However, once btrfs-progs is installed, it simply looks at whether __GLIBC__ is defined or not to decide to use backtrace() or not. However, uClibc defines __GLIBC__ but does not provide backtrace() functionality. The additional patch tweaks the kerncompat.h to look at __UCLIBC__ and not use backtrace() functionality in this case. Fixes: Signed-off-by: Thomas Petazzoni <>
1 files changed, 42 insertions, 0 deletions
diff --git a/package/btrfs-progs/0002-kerncompat.h-define-BTRFS_DISABLE_BACKTRACE-when-bui.patch b/package/btrfs-progs/0002-kerncompat.h-define-BTRFS_DISABLE_BACKTRACE-when-bui.patch
new file mode 100644
index 0000000..9c1173b
--- /dev/null
+++ b/package/btrfs-progs/0002-kerncompat.h-define-BTRFS_DISABLE_BACKTRACE-when-bui.patch
@@ -0,0 +1,42 @@
+From 1fc5444f5620670bb9d293be4f92df59661e1810 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <>
+Date: Mon, 20 Feb 2017 23:31:24 +0100
+Subject: [PATCH] kerncompat.h: define BTRFS_DISABLE_BACKTRACE when building
+ with uClibc
+uClibc does not provide backtrace() nor <execinfo.h>. When building
+btrfs-progs, passing --disable-backtrace is enough to make it build with
+uClibc. But once btrfs-progs is installed and another program/library
+includes kerncompat.h, it fails to build with uClibc, because
+The most correct fix for this would be to have kerncompat.h generated
+from during the btrfs-progs build process, and tuned
+depending on autoconf/automake variables. But as a quick fix that
+follows the current strategy, we simply tweak the existing __GLIBC__
+conditional. Indeed, uClibc pretends to be glibc and defines __GLIBC__,
+but it does not replace it completely, hence the need to define
+BTRFS_DISABLE_BACKTRACE when __GLIBC__ is not defined *or* when
+__UCLIBC__ is defined.
+Signed-off-by: Thomas Petazzoni <>
+ kerncompat.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+diff --git a/kerncompat.h b/kerncompat.h
+index 0f207b7..e47d164 100644
+--- a/kerncompat.h
++++ b/kerncompat.h
+@@ -32,7 +32,7 @@
+ #include <features.h>
+-#ifndef __GLIBC__
++#if !defined(__GLIBC__) || defined(__UCLIBC__)
+ #endif