diff mbox

[1/1] trousers: fix build issue with musl

Message ID 1471694164-2094-1-git-send-email-rahul.bedarkar@imgtec.com
State Rejected
Headers show

Commit Message

Rahul Bedarkar Aug. 20, 2016, 11:56 a.m. UTC
With musl C library, we get following build error when building trousers:

  tsp_tcsi_param.c:14:28: fatal error: bits/local_lim.h: No such file or directory
   #include <bits/local_lim.h>
                              ^
  compilation terminated.

Header <bits/local_lim.h> is not available in musl. tsp_tcsi_param.c
uses this for macro HOST_NAME_MAX.

This patch add support for checking presence of header <bits/local_lim.h>.
And based on that we include it or define macro HOST_NAME_MAX to 64 if
it is not already defined.

Value 64 is chosen because <bits/local_lim.h> also uses same value.

Fixes:

  http://autobuild.buildroot.net/results/c9b/c9b13ae8d4af9ae6a65921de142c0e8da30664e0/

Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
---
 .../trousers/0003-fix-build-issue-with-musl.patch  | 52 ++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 package/trousers/0003-fix-build-issue-with-musl.patch

Comments

Thomas Petazzoni Aug. 20, 2016, 12:41 p.m. UTC | #1
Hello,

On Sat, 20 Aug 2016 17:26:04 +0530, Rahul Bedarkar wrote:
> With musl C library, we get following build error when building trousers:
> 
>   tsp_tcsi_param.c:14:28: fatal error: bits/local_lim.h: No such file or directory
>    #include <bits/local_lim.h>
>                               ^
>   compilation terminated.
> 
> Header <bits/local_lim.h> is not available in musl. tsp_tcsi_param.c
> uses this for macro HOST_NAME_MAX.
> 
> This patch add support for checking presence of header <bits/local_lim.h>.
> And based on that we include it or define macro HOST_NAME_MAX to 64 if
> it is not already defined.
> 
> Value 64 is chosen because <bits/local_lim.h> also uses same value.

This seems like the wrong approach to fix the problem. Indeed, musl
does have a definition of HOST_NAME_MAX, except it's in <limits.h>.

uClibc and glibc also have HOST_NAME_MAX defined when <limits.h> is
included, so the right fix is to drop completely the <bits/local_lim.h>
inclusion, and include <limits.h> instead.

I've tested the following program:

==
#include <limits.h>
#include <stdio.h>

int main(void)
{
	printf("%d\n", HOST_NAME_MAX);
	return 0;
}
==

and it builds fine with glibc, uClibc and musl.

Could you rework your patch accordingly, and also submit the patch
upstream to the trousers project?

Thanks!

Thomas
Rahul Bedarkar Aug. 22, 2016, 1:52 p.m. UTC | #2
Hi Thomas,

On Saturday 20 August 2016 06:11 PM, Thomas Petazzoni wrote:
> Hello,
>
>
> This seems like the wrong approach to fix the problem. Indeed, musl
> does have a definition of HOST_NAME_MAX, except it's in <limits.h>.
>
> uClibc and glibc also have HOST_NAME_MAX defined when <limits.h> is
> included, so the right fix is to drop completely the <bits/local_lim.h>
> inclusion, and include <limits.h> instead.
>
> I've tested the following program:
>
> ==
> #include <limits.h>
> #include <stdio.h>
>
> int main(void)
> {
> 	printf("%d\n", HOST_NAME_MAX);
> 	return 0;
> }
> ==
>
> and it builds fine with glibc, uClibc and musl.
>
> Could you rework your patch accordingly, and also submit the patch
> upstream to the trousers project?
>

Thanks for comments. Even on Trousers project mailing list someone 
proposed similar patch. 
https://sourceforge.net/p/trousers/mailman/message/35261558/

Since we can't download it and it's based on upstream master branch, I 
will add separate patch here and I don't need to submit it upstream as 
it's likely to get merged.


Thanks,
Rahul
Thomas Petazzoni Aug. 22, 2016, 1:59 p.m. UTC | #3
Hello,

On Mon, 22 Aug 2016 19:22:55 +0530, Rahul Bedarkar wrote:

> Thanks for comments. Even on Trousers project mailing list someone 
> proposed similar patch. 
> https://sourceforge.net/p/trousers/mailman/message/35261558/
> 
> Since we can't download it and it's based on upstream master branch, I 
> will add separate patch here and I don't need to submit it upstream as 
> it's likely to get merged.

Romain has been faster than you:

  https://patchwork.ozlabs.org/patch/661295/

Thomas
diff mbox

Patch

diff --git a/package/trousers/0003-fix-build-issue-with-musl.patch b/package/trousers/0003-fix-build-issue-with-musl.patch
new file mode 100644
index 0000000..c34e6d4
--- /dev/null
+++ b/package/trousers/0003-fix-build-issue-with-musl.patch
@@ -0,0 +1,52 @@ 
+fix build issue with musl
+
+With musl C library, we get following build error when building trousers:
+
+  tsp_tcsi_param.c:14:28: fatal error: bits/local_lim.h: No such file or directory
+   #include <bits/local_lim.h>
+                              ^
+  compilation terminated.
+
+Header <bits/local_lim.h> is not available in musl. tsp_tcsi_param.c
+uses this for macro HOST_NAME_MAX.
+
+This patch add support for checking presence of header <bits/local_lim.h>.
+And based on that we include it or define macro HOST_NAME_MAX to 64 if
+it is not already defined.
+
+Value 64 is chosen because <bits/local_lim.h> also uses same value.
+
+This build issue is found by Buildroot autobuilder
+http://autobuild.buildroot.net/results/c9b/c9b13ae8d4af9ae6a65921de142c0e8da30664e0/
+
+Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
+
+--- trousers-0.3.13/configure.in.old	2016-08-20 16:35:56.887744480 +0530
++++ trousers-0.3.13/configure.in	2016-08-20 16:36:38.643744392 +0530
+@@ -13,7 +13,7 @@ TSS_VER_MINOR=3
+ AC_CANONICAL_TARGET
+ AM_INIT_AUTOMAKE([foreign 1.6])
+ AC_CONFIG_MACRO_DIR([m4])
+-
++AC_CHECK_HEADERS([bits/local_lim.h])
+ # Debugging support
+ AC_ARG_ENABLE([debug],
+     [AC_HELP_STRING([--enable-debug], [turn on all trousers debugging flags [default=off]])],
+--- trousers-0.3.13/./src/tspi/tsp_tcsi_param.c.old	2016-08-20 16:48:26.315742897 +0530
++++ trousers-0.3.13/src/tspi/tsp_tcsi_param.c	2016-08-20 16:51:03.683742564 +0530
+@@ -11,7 +11,15 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <stdio.h>
++
++#ifdef HAVE_BITS_LOCAL_LIM_H
+ #include <bits/local_lim.h>
++#else
++#ifndef HOST_NAME_MAX
++#define HOST_NAME_MAX 64
++#endif
++#endif
++
+ #include "trousers/tss.h"
+ #include "trousers/trousers.h"
+ #include "trousers_types.h"