summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2015-12-07 18:28:56 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-12-14 22:30:56 +0000
commit98dcdcb47c7fd797761703ea27092b4ca2558d62 (patch)
tree5f525cd12fa2ee2b9a2c14468192c8ec4b72f5db /meta
parent28fa3044d5e978de5801cf9fa02ae596e9ebc833 (diff)
downloadpoky-98dcdcb47c7fd797761703ea27092b4ca2558d62.tar.gz
autoconf: Disable macro which causes excessive delays when using dash as sh
At the start of every configure script, the check for solaris 'print' causes significant problems on a linux machine with dash as /bin/sh since it triggers the execution of "print" which on some linux systems is a perl script which is part of mailcap. Worse, this perl script calls "which file" and if successful ignores the path file was found in and just runs "file" without a path. Each execution causes PATH to be searched. In something like gettext with multiple configure scripts, this is worth something like 30,000 syscalls of which 3,000 are execs. Simply assuming the shell's printf function works cuts out all the fork overhead and when parallel tasks are running, this overhead appears to be significant. (From OE-Core rev: 421eb8fce9856c63bf62fc3a61fe39d1e5253ff8) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/performance.patch60
-rw-r--r--meta/recipes-devtools/autoconf/autoconf_2.69.bb1
2 files changed, 61 insertions, 0 deletions
diff --git a/meta/recipes-devtools/autoconf/autoconf/performance.patch b/meta/recipes-devtools/autoconf/autoconf/performance.patch
new file mode 100644
index 0000000000..1842fe92b7
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/performance.patch
@@ -0,0 +1,60 @@
1The check for solaris 'print' causes significant problems on a linux machine
2with dash as /bin/sh since it triggers the execution of "print" which on some
3linux systems is a perl script which is part of mailcap. Worse, this perl
4script calls "which file" and if successful ignores the path file was found
5in and just runs "file" without a path. Each exection causes PATH to be searched.
6
7Simply assuming the shell's printf function works cuts out all the fork overhead
8and when parallel tasks are running, this overhead appears to be significant.
9
10RP
112015/11/28
12Upstream-Status: Inappropriate
13
14Index: autoconf-2.69/lib/m4sugar/m4sh.m4
15===================================================================
16--- autoconf-2.69.orig/lib/m4sugar/m4sh.m4
17+++ autoconf-2.69/lib/m4sugar/m4sh.m4
18@@ -1045,40 +1045,8 @@ m4_defun([_AS_ECHO_PREPARE],
19 [[as_nl='
20 '
21 export as_nl
22-# Printing a long string crashes Solaris 7 /usr/bin/printf.
23-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
24-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
25-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
26-# Prefer a ksh shell builtin over an external printf program on Solaris,
27-# but without wasting forks for bash or zsh.
28-if test -z "$BASH_VERSION$ZSH_VERSION" \
29- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
30- as_echo='print -r --'
31- as_echo_n='print -rn --'
32-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
33- as_echo='printf %s\n'
34- as_echo_n='printf %s'
35-else
36- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
37- as_echo_body='eval /usr/ucb/echo -n "$][1$as_nl"'
38- as_echo_n='/usr/ucb/echo -n'
39- else
40- as_echo_body='eval expr "X$][1" : "X\\(.*\\)"'
41- as_echo_n_body='eval
42- arg=$][1;
43- case $arg in @%:@(
44- *"$as_nl"*)
45- expr "X$arg" : "X\\(.*\\)$as_nl";
46- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
47- esac;
48- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
49- '
50- export as_echo_n_body
51- as_echo_n='sh -c $as_echo_n_body as_echo'
52- fi
53- export as_echo_body
54- as_echo='sh -c $as_echo_body as_echo'
55-fi
56+as_echo='printf %s\n'
57+as_echo_n='printf %s'
58 ]])# _AS_ECHO_PREPARE
59
60
diff --git a/meta/recipes-devtools/autoconf/autoconf_2.69.bb b/meta/recipes-devtools/autoconf/autoconf_2.69.bb
index b9f6883c39..adb6ad7ccf 100644
--- a/meta/recipes-devtools/autoconf/autoconf_2.69.bb
+++ b/meta/recipes-devtools/autoconf/autoconf_2.69.bb
@@ -14,6 +14,7 @@ SRC_URI += "file://autoreconf-include.patch \
14 file://preferbash.patch \ 14 file://preferbash.patch \
15 file://autotest-automake-result-format.patch \ 15 file://autotest-automake-result-format.patch \
16 file://add_musl_config.patch \ 16 file://add_musl_config.patch \
17 file://performance.patch \
17 " 18 "
18 19
19SRC_URI[md5sum] = "82d05e03b93e45f5a39b828dc9c6c29b" 20SRC_URI[md5sum] = "82d05e03b93e45f5a39b828dc9c6c29b"