summaryrefslogtreecommitdiffstats
path: root/patches
diff options
context:
space:
mode:
Diffstat (limited to 'patches')
-rw-r--r--patches/03_fix-bad-substitution.patch29
1 files changed, 16 insertions, 13 deletions
diff --git a/patches/03_fix-bad-substitution.patch b/patches/03_fix-bad-substitution.patch
index 5f86556..8211614 100644
--- a/patches/03_fix-bad-substitution.patch
+++ b/patches/03_fix-bad-substitution.patch
@@ -1,23 +1,26 @@
-From: "P. J. McDermott" <pjm@nac.net>
-Description: Fix "bad substitution" errors in shell script
- sysdeps/unix/make-syscalls.sh and sysdeps/unix/Makefile use GNU Bash's
- "${parameter/pattern/string}" parameter expansion. Non-Bash shells (e.g.
- BusyBox ash built with CONFIG_ASH_BASH_COMPAT disabled) don't support this
- syntax:
- .
+Author: "P. J. McDermott" <pjm@nac.net>
+Forwarded: https://sourceware.org/ml/libc-alpha/2013-09/msg00286.html
+Subject: Don't use Bash-specific ${parameter/pattern/string} expansion
+
+sysdeps/unix/make-syscalls.sh and sysdeps/unix/Makefile use GNU Bash's
+${parameter/pattern/string} parameter expansion. Non-Bash shells (e.g.
+dash or BusyBox ash when built with CONFIG_ASH_BASH_COMPAT disabled)
+don't support this expansion syntax. So glibc will fail to build when
+$(SHELL) expands to a path that isn't provided by Bash.
+
+An example build failure:
+
for dir in [...]; do \
test -f $dir/syscalls.list && \
{ sysdirs='[...]' \
asm_CPP='gcc -c -I[...] -D_LIBC_REENTRANT -include include/libc-symbols.h -DASSEMBLER -g -Wa,--noexecstack -E -x assembler-with-cpp' \
/bin/sh sysdeps/unix/make-syscalls.sh $dir || exit 1; }; \
test $dir = sysdeps/unix && break; \
- done > /usr/src/eglibc_2.17~r22751+sip1-1/tmp/libcbuild/sysd-syscallsT
+ done > [build-dir]/sysd-syscallsT
sysdeps/unix/make-syscalls.sh: line 273: syntax error: bad substitution
- .
- The following command will search the upstream source for this non-standard
- expansion:
- .
- grep -ERn '\${[a-zA-Z0-9_]+/[^}]*/[^}]*}' tmp/src/libc
+
+This patch simply replaces the three instances of the Bash-only syntax
+in these files with an echo and sed command substitution.
diff -Naur src.orig/libc/sysdeps/unix/make-syscalls.sh src/libc/sysdeps/unix/make-syscalls.sh
--- src.orig/libc/sysdeps/unix/make-syscalls.sh 2012-12-02 16:11:45.000000000 -0500