Skip to contentSkip to conversation

package/at: fix glibcism

PATCH New Yann E. MORIN 3 participants 3 messages May 5, 2015

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 package/at: fix glibcism

at needs __isleap() which is in (e)glibc and uClibc, but not in musl.

Add a patch (from Open Embedded) that removes use of the macros, and directly expands the corresponding code in lieu of the macro calls.

Fixes:

    http://autobuild.buildroot.org/results/6f2/6f25e80e8aedec91323ef9b67576b550d7abee60/
    http://autobuild.buildroot.org/results/da5/da5bb779f3077b079203fcbdb2533dd790963cd4/
    http://autobuild.buildroot.org/results/8a6/8a6ce608c6f46d08ed77049f796e98e6e10a1709/
    ...

Thanks to J?rg for pointing to the OE patch! :-)

---
 .../at/0008-remove-glibc-__isleap-assumption.patch | 59 ++++++++++++++++++++++
 1 file changed, 59 insertions(+)
 create mode 100644 package/at/0008-remove-glibc-__isleap-assumption.patch
package/at/0008-remove-glibc-__isleap-assumption.patch new file +59 -0
new file mode 100644
index 0000000..2152249
@@ -0,0 +1,59 @@
+From 7f811d9c4ebc9444e613e251c31d6bf537a24dc1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <[email protected]>
+Date: Mon, 13 Apr 2015 16:35:30 -0700
+Subject: [PATCH] remove glibc assumption
+
+glibc time.h header has an undocumented __isleap macro
+that we are using anf musl is missing it.
+Since it is undocumented & does not appear
+on any other libc, stop using it and just define the macro in
+locally  instead.
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <[email protected]>
+[patch from: http://patchwork.openembedded.org/patch/91893/ ]
+Signed-off-by: "Yann E. MORIN" <[email protected]>
+
+---
+ parsetime.y | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/parsetime.y b/parsetime.y
+index 7005e88..324e6d3 100644
+--- a/parsetime.y
++++ b/parsetime.y
+@@ -8,6 +8,9 @@
+ 
+ #define YYDEBUG 1
+ 
++#define is_leap_year(y) \
++    ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
++
+ struct tm exectm;
+ static int isgmt;
+ static int yearspec;
+@@ -217,8 +220,8 @@ date            : month_name day_number
+ 				 mnum == 12) && dnum > 31)
+ 			    || ((mnum ==  4 || mnum ==  6 || mnum ==  9 ||
+ 			         mnum == 11) && dnum > 30)
+-			    || (mnum ==  2 && dnum > 29 &&  __isleap(ynum+1900))
+-			    || (mnum ==  2 && dnum > 28 && !__isleap(ynum+1900))
++			    || (mnum ==  2 && dnum > 29 &&  is_leap_year(ynum+1900))
++			    || (mnum ==  2 && dnum > 28 && !is_leap_year(ynum+1900))
+ 			   )
+ 			{
+ 			    yyerror("Error in day of month");
+@@ -261,8 +264,8 @@ date            : month_name day_number
+ 				 mnum == 12) && dnum > 31)
+ 			    || ((mnum ==  4 || mnum ==  6 || mnum ==  9 ||
+ 			         mnum == 11) && dnum > 30)
+-			    || (mnum ==  2 && dnum > 29 &&  __isleap(ynum+1900))
+-			    || (mnum ==  2 && dnum > 28 && !__isleap(ynum+1900))
++			    || (mnum ==  2 && dnum > 29 &&  is_leap_year(ynum+1900))
++			    || (mnum ==  2 && dnum > 28 && !is_leap_year(ynum+1900))
+ 			   )
+ 			{
+ 			    yyerror("Error in day of month");
+-- 
+2.1.4
Signature · 1 line
1.9.1
#1 lore raw

PATCH v2 1/1 package/at: fix glibcism

Hi Yann,

Quoted 97 lines · Yann E. MORIN

at needs __isleap() which is in (e)glibc and uClibc, but not in musl.

Add a patch (from Open Embedded) that removes use of the macros, and directly expands the corresponding code in lieu of the macro calls.

Fixes:

    http://autobuild.buildroot.org/results/6f2/6f25e80e8aedec91323ef9
b67576b550d7abee60/
    http://autobuild.buildroot.org/results/da5/da5bb779f3077b079203fc
bdb2533dd790963cd4/
    http://autobuild.buildroot.org/results/8a6/8a6ce608c6f46d08ed7704
9f796e98e6e10a1709/
    ...

Thanks to J?rg for pointing to the OE patch! :-)

---
 .../at/0008-remove-glibc-__isleap-assumption.patch | 59 
++++++++++++++++++++++
 1 file changed, 59 insertions(+)
 create mode 100644 package/at/0008-remove-glibc-__isleap
(quoted diff) +0 -1
-assumption.patch
package/at/0008-remove-glibc-__isleap-assumption.patch new file +1 -0
new file mode 100644
index 0000000..2152249
@@ -0,0 +1,59 @@
+From 7f811d9c4ebc9444e613e251c31d6bf537a24dc1 Mon Sep 17 00:00:00 

2001

package/at/0008-remove-glibc-__isleap-assumption.patch new file +37 -0
+From: Khem Raj <[email protected]>
+Date: Mon, 13 Apr 2015 16:35:30 -0700
+Subject: [PATCH] remove glibc assumption
+
+glibc time.h header has an undocumented __isleap macro
+that we are using anf musl is missing it.
+Since it is undocumented & does not appear
+on any other libc, stop using it and just define the macro in
+locally  instead.
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <[email protected]>
+[patch from: http://patchwork.openembedded.org/patch/91893/ ]
+Signed-off-by: "Yann E. MORIN" <[email protected]>
+
+---
+ parsetime.y | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/parsetime.y b/parsetime.y
+index 7005e88..324e6d3 100644
+--- a/parsetime.y
++++ b/parsetime.y
+@@ -8,6 +8,9 @@
+ 
+ #define YYDEBUG 1
+ 
++#define is_leap_year(y) \
++    ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
++
+ struct tm exectm;
+ static int isgmt;
+ static int yearspec;
+@@ -217,8 +220,8 @@ date            : month_name day_number
+                              mnum == 12) && dnum > 31)
+                         || ((mnum ==  4 || mnum ==  6 || mnum 

== 9 ||
+ mnum == 11) && dnum > 30)
+- || (mnum == 2 && dnum > 29 &&
__isleap(ynum+1900))
+- || (mnum == 2 && dnum > 28 &&
!__isleap(ynum+1900))
++ || (mnum == 2 && dnum > 29 &&
is_leap_year(ynum+1900))
++ || (mnum == 2 && dnum > 28 &&
!is_leap_year(ynum+1900))

package/at/0008-remove-glibc-__isleap-assumption.patch new file +6 -0
+                        )
+                     {
+                         yyerror("Error in day of month");
+@@ -261,8 +264,8 @@ date            : month_name day_number
+                              mnum == 12) && dnum > 31)
+                         || ((mnum ==  4 || mnum ==  6 || mnum 

== 9 ||
+ mnum == 11) && dnum > 30)
+- || (mnum == 2 && dnum > 29 &&
__isleap(ynum+1900))
+- || (mnum == 2 && dnum > 28 &&
!__isleap(ynum+1900))
++ || (mnum == 2 && dnum > 29 &&
is_leap_year(ynum+1900))
++ || (mnum == 2 && dnum > 28 &&
!is_leap_year(ynum+1900))

package/at/0008-remove-glibc-__isleap-assumption.patch line 59

Quoted 5 lines
package/at/0008-remove-glibc-__isleap-assumption.patch new file +5 -0
+                        )
+                     {
+                         yyerror("Error in day of month");
+-- 
+2.1.4

Builds without errors for me using Buildroot internal musl toolchain.

#2 lore raw

PATCH v2 1/1 package/at: fix glibcism

In reply to Yann E. MORIN

Dear Yann E. MORIN,

Quoted 11 lines · Yann E. MORIN

at needs __isleap() which is in (e)glibc and uClibc, but not in musl.

Add a patch (from Open Embedded) that removes use of the macros, and directly expands the corresponding code in lieu of the macro calls.

Fixes:

    http://autobuild.buildroot.org/results/6f2/6f25e80e8aedec91323ef9b67576b550d7abee60/
    http://autobuild.buildroot.org/results/da5/da5bb779f3077b079203fcbdb2533dd790963cd4/
    http://autobuild.buildroot.org/results/8a6/8a6ce608c6f46d08ed77049f796e98e6e10a1709/
    ...
Quoted 8 lines

Thanks to J?rg for pointing to the OE patch! :-)

---
 .../at/0008-remove-glibc-__isleap-assumption.patch | 59 ++++++++++++++++++++++
 1 file changed, 59 insertions(+)
 create mode 100644 package/at/0008-remove-glibc-__isleap-assumption.patch

Applied, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com