History

kbuild: Improve portability of some sed invocations

* Use BREs where EREs aren't necessary. * Pass -E instead of -r to use EREs. This will be standardized in the next POSIX revision[0]. GNU sed supports this since 4.2 (May 2009), and busybox since 1.22.0 (Jan 2014). * Use the [:space:] character class instead of ` \t` in bracket expressions. In bracket expressions, POSIX says that <backslash> loses its special meaning, so a conforming implementation cannot expand \t to <tab>[1]. * In BREs, use interval expressions (\{n,m\}) instead of non-standard features like \+ and \?. * Use a loop instead of -s flag. There are still plenty of other cases of non-standard sed invocations (use of ERE features in BREs, in-place editing), but this fixes some core ones. [0] http://austingroupbugs.net/view.php?id=528 [1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_05

Michael Forney committed 8 years ago

Commit 1fe7d2b1 parent ae0c5535 files · +11 −9Browse files

Showing the changes to scripts (5 of 5 files). Show all

Unified · Split

5 files
  1. scripts/Kbuild.include +1 −1
  2. scripts/Makefile.build +1 −1
  3. scripts/adjust_autoksyms.sh +3 −1
  4. scripts/gen_initramfs_list.sh +1 −1
  5. scripts/headers_install.sh +5 −5
scripts/Kbuild.include+1−1
@@ -368,7 +368,7 @@ ksym_dep_filter = \ · 367 unmodified lines
368368 $(CPP) $(call flags_nodeps,a_flags) -D__KSYM_DEPS__ $< ;; \
369369 boot*|build*|cpp_its_S|*cpp_lds_S|dtc|host*|vdso*) : ;; \
370370 *) echo "Don't know how to preprocess $(1)" >&2; false ;; \
371− esac | tr ";" "\n" | sed -rn 's/^.*=== __KSYM_(.*) ===.*$$/KSYM_\1/p'
371+ esac | tr ";" "\n" | sed -n 's/^.*=== __KSYM_\(.*\) ===.*$$/KSYM_\1/p'
372372
373373 cmd_and_fixdep = \
374374 $(echo-cmd) $(cmd_$(1)); \
scripts/Makefile.build+1−1
@@ -314,7 +314,7 @@ endef · 313 unmodified lines
314314
315315 # List module undefined symbols (or empty line if not enabled)
316316 ifdef CONFIG_TRIM_UNUSED_KSYMS
317−cmd_undef_syms = $(NM) $@ | sed -n 's/^ \+U //p' | xargs echo
317+cmd_undef_syms = $(NM) $@ | sed -n 's/^ *U //p' | xargs echo
318318 else
319319 cmd_undef_syms = echo
320320 endif
scripts/adjust_autoksyms.sh+3−1
@@ -60,7 +60,9 @@ cat > "$new_ksyms_file" << EOT · 59 unmodified lines
6060
6161 EOT
6262 [ "$(ls -A "$MODVERDIR")" ] &&
63−sed -ns -e '3{s/ /\n/g;/^$/!p;}' "$MODVERDIR"/*.mod | sort -u |
63+for mod in "$MODVERDIR"/*.mod; do
64+ sed -n -e '3{s/ /\n/g;/^$/!p;}' "$mod"
65+done | sort -u |
6466 while read sym; do
6567 if [ -n "$CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX" ]; then
6668 sym="${sym#_}"
scripts/gen_initramfs_list.sh+1−1
@@ -194,7 +194,7 @@ input_file() { · 193 unmodified lines
194194 source="$1"
195195 if [ -f "$1" ]; then
196196 ${dep_list}header "$1"
197− is_cpio="$(echo "$1" | sed 's/^.*\.cpio\(\..*\)\?/cpio/')"
197+ is_cpio="$(echo "$1" | sed 's/^.*\.cpio\(\..*\)\{0,1\}/cpio/')"
198198 if [ $2 -eq 0 -a ${is_cpio} = "cpio" ]; then
199199 cpio_file=$1
200200 echo "$1" | grep -q '^.*\.cpio\..*' && is_cpio_compressed="compressed"
scripts/headers_install.sh+5−5
@@ -31,13 +31,13 @@ trap 'rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed"' EXIT · 30 unmodified lines
3131 for i in "$@"
3232 do
3333 FILE="$(basename "$i")"
34− sed -r \
35− -e 's/([ \t(])(__user|__force|__iomem)[ \t]/\1/g' \
36− -e 's/__attribute_const__([ \t]|$)/\1/g' \
34+ sed -E \
35+ -e 's/([[:space:](])(__user|__force|__iomem)[[:space:]]/\1/g' \
36+ -e 's/__attribute_const__([[:space:]]|$)/\1/g' \
3737 -e 's@^#include <linux/compiler(|_types).h>@@' \
3838 -e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
39− -e 's/(^|[ \t(])(inline|asm|volatile)([ \t(]|$)/\1__\2__\3/g' \
40− -e 's@#(ifndef|define|endif[ \t]*/[*])[ \t]*_UAPI@#\1 @' \
39+ -e 's/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g' \
40+ -e 's@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @' \
4141 "$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || exit 1
4242 scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \
4343 > "$OUTDIR/$FILE"

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t