diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2012-12-12 14:15:25 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-12-13 14:38:47 +0000 |
commit | fe19d0e01cb1563cf4735ef250f80af20059103b (patch) | |
tree | 07aa1208bfaccdd27d69b523ed82caf0bc75ff0a | |
parent | 648cda68def82fa12b3af599c06caecdc7568668 (diff) | |
download | openembedded-core-fe19d0e01cb1563cf4735ef250f80af20059103b.tar.gz openembedded-core-fe19d0e01cb1563cf4735ef250f80af20059103b.tar.bz2 openembedded-core-fe19d0e01cb1563cf4735ef250f80af20059103b.zip |
eglibc: remove dependency of eglibc-utils on bash
Adapt a patch from Peter Seebach <peter.seebach@windriver.com> to remove
the non-POSIX elements from the tzselect script, and add a separate
patch to work around a bug in the current version of busybox's awk
command. This replaces the /bin/bash reference in the script header with
/bin/sh and thus eliminates the dependency on bash picked up during
packaging.
Fixes [YOCTO #3551].
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/recipes-core/eglibc/eglibc-2.16/tzselect-awk.patch | 42 | ||||
-rw-r--r-- | meta/recipes-core/eglibc/eglibc-2.16/tzselect-sh.patch | 160 | ||||
-rw-r--r-- | meta/recipes-core/eglibc/eglibc_2.16.bb | 4 |
3 files changed, 205 insertions, 1 deletions
diff --git a/meta/recipes-core/eglibc/eglibc-2.16/tzselect-awk.patch b/meta/recipes-core/eglibc/eglibc-2.16/tzselect-awk.patch new file mode 100644 index 0000000000..dc9949bec9 --- /dev/null +++ b/meta/recipes-core/eglibc/eglibc-2.16/tzselect-awk.patch @@ -0,0 +1,42 @@ +tzselect: workaround bug in busybox awk + +busybox's version of awk in version 1.20.2 and lower doesn't support +escape sequences in conjunction with the -F option. Use -v FS= instead +as a workaround until the bug is fixed. + +Reference: +https://bugs.busybox.net/show_bug.cgi?id=5126 + +Upstream-Status: Inappropriate [other] + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + +--- libc/timezone/tzselect.ksh ++++ libc/timezone/tzselect.ksh +@@ -208,7 +208,7 @@ while + TZ_for_date=$TZ;; + *) + # Get list of names of countries in the continent or ocean. +- countries=$($AWK -F'\t' \ ++ countries=$($AWK -v FS="\t" \ + -v continent="$continent" \ + -v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \ + ' +@@ -252,7 +252,7 @@ while + + + # Get list of names of time zone rule regions in the country. +- regions=$($AWK -F'\t' \ ++ regions=$($AWK -v FS="\t" \ + -v country="$country" \ + -v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \ + ' +@@ -289,7 +289,7 @@ while + esac + + # Determine TZ from country and region. +- TZ=$($AWK -F'\t' \ ++ TZ=$($AWK -v FS="\t" \ + -v country="$country" \ + -v region="$region" \ + -v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \ diff --git a/meta/recipes-core/eglibc/eglibc-2.16/tzselect-sh.patch b/meta/recipes-core/eglibc/eglibc-2.16/tzselect-sh.patch new file mode 100644 index 0000000000..c173ae2f84 --- /dev/null +++ b/meta/recipes-core/eglibc/eglibc-2.16/tzselect-sh.patch @@ -0,0 +1,160 @@ +tzselect: eliminate ksh-dependency + +This is an adapted version of a patch originally +by Peter Seebach <peter.seebach@windriver.com> found here: +http://www.eglibc.org/archives/patches/msg00671.html + +Upstream-Status: Pending + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + +--- libc/timezone/tzselect.ksh ++++ libc/timezone/tzselect.ksh +@@ -1,6 +1,6 @@ +-#! @KSH@ ++#!/bin/sh + +-VERSION='@(#)tzselect.ksh 8.2' ++VERSION='@(#)tzselect.sh 8.2' + PKGVERSION='@PKGVERSION@' + REPORT_BUGS_TO='@REPORT_BUGS_TO@' + +@@ -11,19 +11,10 @@ REPORT_BUGS_TO='@REPORT_BUGS_TO@' + + # Porting notes: + # +-# This script requires several features of the Korn shell. +-# If your host lacks the Korn shell, +-# you can use either of the following free programs instead: ++# func_select allows this script to run on shells (such as busybox ash) ++# which lack the ksh "select" builtin. + # +-# <a href=ftp://ftp.gnu.org/pub/gnu/> +-# Bourne-Again shell (bash) +-# </a> +-# +-# <a href=ftp://ftp.cs.mun.ca/pub/pdksh/pdksh.tar.gz> +-# Public domain ksh +-# </a> +-# +-# This script also uses several features of modern awk programs. ++# This script uses several features of modern awk programs. + # If your host lacks awk, or has an old awk that does not conform to Posix.2, + # you can use either of the following free programs instead: + # +@@ -35,6 +26,70 @@ REPORT_BUGS_TO='@REPORT_BUGS_TO@' + # mawk + # </a> + ++# Implement ksh-style select in POSIX shell ++ ++# We need a mostly-portable echo-n. ++case `echo -n "foo\c"` in ++*n*c*) func_echo_n() { echo "$*"; } ;; ++*n*) func_echo_n() { echo "$*\c"; } ;; ++*) func_echo_n() { echo -n "$*"; } ;; ++esac ++ ++# Synopsis: Replace "select foo in list" with "while func_select foo in list" ++# and this works just like ksh, so far as I know. ++func_select () { ++ func_select_args=0 ++ if expr "$1" : "[_a-zA-Z][_a-zA-Z0-9]*$" > /dev/null; then ++ func_select_var=$1 ++ else ++ echo >&2 "func_select: '$1' is not a valid variable name." ++ return 1 ++ fi ++ shift 1 ++ case $1 in ++ in) shift 1;; ++ *) echo >&2 "func_select: usage: func_select var in ... (you must provide ++arguments)"; return 1;; ++ esac ++ case $# in ++ 0) echo >&2 "func_select: usage: func_select var in ..."; return 1;; ++ esac ++ for func_select_arg ++ do ++ func_select_args=`expr $func_select_args + 1` ++ eval func_select_a_$func_select_args=\$func_select_arg ++ done ++ REPLY="" ++ while : ++ do ++ if test -z "$REPLY"; then ++ func_select_i=1 ++ while test $func_select_i -le $func_select_args ++ do ++ eval echo "\"\$func_select_i) \$func_select_a_$func_select_i\"" ++ func_select_i=`expr $func_select_i + 1` ++ done ++ fi ++ func_echo_n "${PS3-#? }" >&2 ++ if read REPLY; then ++ if test -n "${REPLY}"; then ++ if expr "$REPLY" : '[1-9][0-9]*$' > /dev/null; then ++ if test "$REPLY" -ge 1 && test "$REPLY" -le $func_select_args; then ++ eval $func_select_var=\$func_select_a_$REPLY ++ else ++ eval $func_select_var= ++ fi ++ else ++ eval $func_select_var= ++ fi ++ return 0 ++ fi ++ else ++ eval $func_select_var= ++ return 1 ++ fi ++ done ++} + + # Specify default values for environment variables if they are unset. + : ${AWK=awk} +@@ -80,7 +135,7 @@ IFS=$newline + + + # Work around a bug in bash 1.14.7 and earlier, where $PS3 is sent to stdout. +-case $(echo 1 | (select x in x; do break; done) 2>/dev/null) in ++case $(echo 1 | (while func_select x in x; do break; done) 2>/dev/null) in + ?*) PS3= + esac + +@@ -100,7 +155,7 @@ while + + echo >&2 'Please select a continent or ocean.' + +- select continent in \ ++ while func_select continent in \ + Africa \ + Americas \ + Antarctica \ +@@ -180,7 +235,7 @@ while + case $countries in + *"$newline"*) + echo >&2 'Please select a country.' +- select country in $countries ++ while func_select country in $countries + do + case $country in + '') echo >&2 'Please enter a number in range.';; +@@ -219,7 +274,7 @@ while + *"$newline"*) + echo >&2 'Please select one of the following' \ + 'time zone regions.' +- select region in $regions ++ while func_select region in $regions + do + case $region in + '') echo >&2 'Please enter a number in range.';; +@@ -296,7 +351,7 @@ Universal Time is now: $UTdate." + echo >&2 "Is the above information OK?" + + ok= +- select ok in Yes No ++ while func_select ok in Yes No + do + case $ok in + '') echo >&2 'Please enter 1 for Yes, or 2 for No.';; diff --git a/meta/recipes-core/eglibc/eglibc_2.16.bb b/meta/recipes-core/eglibc/eglibc_2.16.bb index e7e15a2044..973be6535f 100644 --- a/meta/recipes-core/eglibc/eglibc_2.16.bb +++ b/meta/recipes-core/eglibc/eglibc_2.16.bb @@ -1,7 +1,7 @@ require eglibc.inc DEPENDS += "gperf-native kconfig-frontends-native" -PR = "r18" +PR = "r19" SRC_URI = "http://downloads.yoctoproject.org/releases/eglibc/eglibc-${PV}-svnr21224.tar.bz2 \ file://eglibc-svn-arm-lowlevellock-include-tls.patch \ @@ -30,6 +30,8 @@ SRC_URI = "http://downloads.yoctoproject.org/releases/eglibc/eglibc-${PV}-svnr21 http://people.linaro.org/~toolchain/openembedded/patches/eglibc/aarch64-0001-glibc-fsf-v1-eaf6f205.patch \ http://people.linaro.org/~toolchain/openembedded/patches/eglibc/aarch64-0002-Synchronize-with-linux-elf.h.patch \ http://people.linaro.org/~toolchain/openembedded/patches/eglibc/aarch64-0003-Adding-AArch64-support-to-elf-elf.h.patch \ + file://tzselect-sh.patch \ + file://tzselect-awk.patch \ " SRC_URI[md5sum] = "88894fa6e10e58e85fbd8134b8e486a8" |