Skip to contentSkip to conversation

uclibc: fix getsubopt issues

PATCH New Max Filippov 2 participants 4 messages Mar 16, 2015 – Mar 20, 2015

lore
Share & tools
lore
#0 lore raw

cover uclibc: fix getsubopt issues

Hi,

this series fixes UCLIBC_HAS_GNU_GETSUBOPT handling in uClibc-0.9.33.2, bringing it in sync with uClibc and uClibc-ng tips and enables UCLIBC_HAS_GNU_GETSUBOPT in all uClibc configs, which fixes build of packages that use getsubopt unconoditionally.

Max Filippov (2):
uclibc: Fix getopt implementations conditional compilation
uclibc: enable UCLIBC_HAS_GNU_GETSUBOPT in all configs

 ...t-implementations-conditional-compilation.patch |   58 ++++++++++++++++++++
 package/uclibc/uClibc-0.9.33.config                |    2 +-
 package/uclibc/uClibc-ng.config                    |    2 +-
 package/uclibc/uClibc-snapshot.config              |    2 +-
 4 files changed, 61 insertions(+), 3 deletions(-)
 create mode 100644 package/uclibc/0.9.33.2/0068-Fix-getopt-implementations-conditional-compilation.patch
Signature · 1 line
1.7.7.6
#1 lore raw

PATCH 1/2 uclibc: Fix getopt implementations conditional compilation

There's no way to disable getsubopt in uClibc 0.9.33.2: either GNU or SUSv3 getsubopt is always built.

Properly exclude SUSv3 getsubopt implementation when GNU getopt is selected.
Exclude GNU getsubopt when SUSv3 getopt is selected. Honor getopt_long configuration.

This brings UCLIBC_HAS_GNU_GETOPT, UCLIBC_HAS_GNU_GETSUBOPT and UCLIBC_HAS_GETOPT_LONG handling in sync with uClibc and uClibc-ng tips.

---
 ...t-implementations-conditional-compilation.patch |   58 ++++++++++++++++++++
 1 files changed, 58 insertions(+), 0 deletions(-)
 create mode 100644 package/uclibc/0.9.33.2/0068-Fix-getopt-implementations-conditional-compilation.patch
package/uclibc/0.9.33.2/0068-Fix-getopt-implementations-conditional-compilation.patch new file +58 -0
new file mode 100644
index 0000000..18f6a9f
@@ -0,0 +1,58 @@
+From 5184289b9f453b1e160fbfd2f0922e5ed586d910 Mon Sep 17 00:00:00 2001
+From: Max Filippov <[email protected]>
+Date: Tue, 17 Mar 2015 02:06:52 +0300
+Subject: [PATCH] Fix getopt implementations conditional compilation
+
+Currently there's no way to disable getsubopt: either GNU or SUSv3
+getsubopt is always built.
+
+Properly exclude SUSv3 getsubopt implementation when GNU getopt is
+selected.
+Exclude GNU getsubopt when SUSv3 getopt is selected. Honor getopt_long
+configuration.
+
+This brings UCLIBC_HAS_GNU_GETOPT, UCLIBC_HAS_GNU_GETSUBOPT and
+UCLIBC_HAS_GETOPT_LONG handling in sync with uClibc and uClibc-ng tips.
+
+Signed-off-by: Max Filippov <[email protected]>
+---
+ libc/unistd/Makefile.in | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/libc/unistd/Makefile.in b/libc/unistd/Makefile.in
+index 2704177..ec51631 100644
+--- a/libc/unistd/Makefile.in
++++ b/libc/unistd/Makefile.in
+@@ -19,18 +19,18 @@ CSRC := $(filter-out __exec_alloc.c,$(CSRC))
+ endif
+ 
+ ifeq ($(UCLIBC_HAS_GNU_GETOPT),y)
+-CSRC := $(filter-out getopt-susv3.c getopt_long-simple.c,$(CSRC))
++  CSRC := $(filter-out getopt-susv3.c getsubopt-susv3.c getopt_long-simple.c,$(CSRC))
++  ifneq ($(UCLIBC_HAS_GNU_GETSUBOPT),y)
++    CSRC := $(filter-out getsubopt.c,$(CSRC))
++  endif
+ else
+-CSRC := $(filter-out getopt.c,$(CSRC))
+-ifneq ($(UCLIBC_HAS_GETOPT_LONG),y)
+-CSRC := $(filter-out getopt_long-simple.c,$(CSRC))
+-endif
+-endif
+-
+-ifeq ($(UCLIBC_HAS_GNU_GETSUBOPT),y)
+-CSRC := $(filter-out getsubopt-susv3.c,$(CSRC))
+-else
+-CSRC := $(filter-out getsubopt.c,$(CSRC))
++  CSRC := $(filter-out getopt.c getsubopt.c,$(CSRC))
++  ifneq ($(UCLIBC_HAS_GETOPT_LONG),y)
++    CSRC := $(filter-out getopt_long-simple.c,$(CSRC))
++  endif
++  ifneq ($(UCLIBC_HAS_GNU_GETSUBOPT),y)
++    CSRC := $(filter-out getsubopt-susv3.c,$(CSRC))
++  endif
+ endif
+ 
+ ifneq ($(UCLIBC_SUSV3_LEGACY),y)
+-- 
+1.8.1.4
+
Signature · 1 line
1.7.7.6
#2 lore raw

PATCH 1/2 uclibc: Fix getopt implementations conditional compilation

Dear Max Filippov,

Quoted 8 lines · Max Filippov

There's no way to disable getsubopt in uClibc 0.9.33.2: either GNU or SUSv3 getsubopt is always built.

Properly exclude SUSv3 getsubopt implementation when GNU getopt is selected.
Exclude GNU getsubopt when SUSv3 getopt is selected. Honor getopt_long configuration.

Quoted 4 lines

This brings UCLIBC_HAS_GNU_GETOPT, UCLIBC_HAS_GNU_GETSUBOPT and UCLIBC_HAS_GETOPT_LONG handling in sync with uClibc and uClibc-ng tips.

Both patches applied, thanks!

Thomas

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

PATCH 2/2 uclibc: enable UCLIBC_HAS_GNU_GETSUBOPT in all configs

In reply to Max Filippov

This fixes build for applications that use getsubopt unconditionally. Code addition to getopt is negligible.

Fixes:
http://autobuild.buildroot.net/results/90c318e3a9ef5e626d0a80e36695d34eda21f97e/
http://autobuild.buildroot.net/results/cd8e9d9a5f454c321071c21192958aeee9c39e73/

---
 package/uclibc/uClibc-0.9.33.config   |    2 +-
 package/uclibc/uClibc-ng.config       |    2 +-
 package/uclibc/uClibc-snapshot.config |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
package/uclibc/uClibc-0.9.33.config +1 -1
index 88dc7fa..afee4fd 100644
@@ -217,7 +217,7 @@ UCLIBC_HAS_ERRNO_MESSAGES=y
 UCLIBC_HAS_SIGNUM_MESSAGES=y
 # UCLIBC_HAS_SYS_SIGLIST is not set
 UCLIBC_HAS_GNU_GETOPT=y
-# UCLIBC_HAS_GNU_GETSUBOPT is not set
+UCLIBC_HAS_GNU_GETSUBOPT=y
 
 #
 # Big and Tall
package/uclibc/uClibc-ng.config +1 -1
index 9b348d6..2885af6 100644
@@ -221,7 +221,7 @@ UCLIBC_HAS_ERRNO_MESSAGES=y
 UCLIBC_HAS_SIGNUM_MESSAGES=y
 # UCLIBC_HAS_SYS_SIGLIST is not set
 UCLIBC_HAS_GNU_GETOPT=y
-# UCLIBC_HAS_GNU_GETSUBOPT is not set
+UCLIBC_HAS_GNU_GETSUBOPT=y
 
 #
 # Big and Tall
package/uclibc/uClibc-snapshot.config +1 -1
index 1f04561..6f5ebfa 100644
@@ -222,7 +222,7 @@ UCLIBC_HAS_ERRNO_MESSAGES=y
 UCLIBC_HAS_SIGNUM_MESSAGES=y
 # UCLIBC_HAS_SYS_SIGLIST is not set
 UCLIBC_HAS_GNU_GETOPT=y
-# UCLIBC_HAS_GNU_GETSUBOPT is not set
+UCLIBC_HAS_GNU_GETSUBOPT=y
 
 #
 # Big and Tall
Signature · 1 line
1.7.7.6