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
368 $(CPP) $(call flags_nodeps,a_flags) -D__KSYM_DEPS__ $< ;; \368 $(CPP) $(call flags_nodeps,a_flags) -D__KSYM_DEPS__ $< ;; \
369 boot*|build*|cpp_its_S|*cpp_lds_S|dtc|host*|vdso*) : ;; \369 boot*|build*|cpp_its_S|*cpp_lds_S|dtc|host*|vdso*) : ;; \
370 *) echo "Don't know how to preprocess $(1)" >&2; false ;; \370 *) 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'
372 372
373cmd_and_fixdep = \373cmd_and_fixdep = \
374 $(echo-cmd) $(cmd_$(1)); \374 $(echo-cmd) $(cmd_$(1)); \
scripts/Makefile.build+1−1
@@ -314,7 +314,7 @@ endef · 313 unmodified lines
314 314
315# List module undefined symbols (or empty line if not enabled)315# List module undefined symbols (or empty line if not enabled)
316ifdef CONFIG_TRIM_UNUSED_KSYMS316ifdef CONFIG_TRIM_UNUSED_KSYMS
317cmd_undef_syms = $(NM) $@ | sed -n 's/^ \+U //p' | xargs echo317cmd_undef_syms = $(NM) $@ | sed -n 's/^ *U //p' | xargs echo
318else318else
319cmd_undef_syms = echo319cmd_undef_syms = echo
320endif320endif
scripts/adjust_autoksyms.sh+3−1
@@ -60,7 +60,9 @@ cat > "$new_ksyms_file" << EOT · 59 unmodified lines
60 60
61EOT61EOT
62[ "$(ls -A "$MODVERDIR")" ] &&62[ "$(ls -A "$MODVERDIR")" ] &&
63sed -ns -e '3{s/ /\n/g;/^$/!p;}' "$MODVERDIR"/*.mod | sort -u |63for mod in "$MODVERDIR"/*.mod; do
64 sed -n -e '3{s/ /\n/g;/^$/!p;}' "$mod"
65done | sort -u |
64while read sym; do66while read sym; do
65 if [ -n "$CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX" ]; then67 if [ -n "$CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX" ]; then
66 sym="${sym#_}"68 sym="${sym#_}"
scripts/gen_initramfs_list.sh+1−1
@@ -194,7 +194,7 @@ input_file() { · 193 unmodified lines
194 source="$1"194 source="$1"
195 if [ -f "$1" ]; then195 if [ -f "$1" ]; then
196 ${dep_list}header "$1"196 ${dep_list}header "$1"
197 is_cpio="$(echo "$1" | sed 's/^.*\.cpio\(\..*\)\?/cpio/')"197 is_cpio="$(echo "$1" | sed 's/^.*\.cpio\(\..*\)\{0,1\}/cpio/')"
198 if [ $2 -eq 0 -a ${is_cpio} = "cpio" ]; then198 if [ $2 -eq 0 -a ${is_cpio} = "cpio" ]; then
199 cpio_file=$1199 cpio_file=$1
200 echo "$1" | grep -q '^.*\.cpio\..*' && is_cpio_compressed="compressed"200 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
31for i in "$@"31for i in "$@"
32do32do
33 FILE="$(basename "$i")"33 FILE="$(basename "$i")"
34 sed -r \34 sed -E \
35 -e 's/([ \t(])(__user|__force|__iomem)[ \t]/\1/g' \35 -e 's/([[:space:](])(__user|__force|__iomem)[[:space:]]/\1/g' \
36 -e 's/__attribute_const__([ \t]|$)/\1/g' \36 -e 's/__attribute_const__([[:space:]]|$)/\1/g' \
37 -e 's@^#include <linux/compiler(|_types).h>@@' \37 -e 's@^#include <linux/compiler(|_types).h>@@' \
38 -e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \38 -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' \39 -e 's/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g' \
40 -e 's@#(ifndef|define|endif[ \t]*/[*])[ \t]*_UAPI@#\1 @' \40 -e 's@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @' \
41 "$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || exit 141 "$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || exit 1
42 scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \42 scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \
43 > "$OUTDIR/$FILE"43 > "$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