uclibc: fix getsubopt issues
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
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
@@ -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
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. Honorgetopt_longconfiguration.
Quoted 4 lines
This brings
UCLIBC_HAS_GNU_GETOPT,UCLIBC_HAS_GNU_GETSUBOPTandUCLIBC_HAS_GETOPT_LONGhandling in sync with uClibc and uClibc-ng tips.Signed-off-by Max Filippov <[email protected]>
Both patches applied, thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 2/2 uclibc: enable UCLIBC_HAS_GNU_GETSUBOPT in all configs
In reply to Max FilippovThis 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
@@ -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
@@ -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
@@ -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