From 98dcdcb47c7fd797761703ea27092b4ca2558d62 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 7 Dec 2015 18:28:56 +0000 Subject: 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 --- .../autoconf/autoconf/performance.patch | 60 ++++++++++++++++++++++ meta/recipes-devtools/autoconf/autoconf_2.69.bb | 1 + 2 files changed, 61 insertions(+) create mode 100644 meta/recipes-devtools/autoconf/autoconf/performance.patch 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 @@ +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 exection causes PATH to be searched. + +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. + +RP +2015/11/28 +Upstream-Status: Inappropriate + +Index: autoconf-2.69/lib/m4sugar/m4sh.m4 +=================================================================== +--- autoconf-2.69.orig/lib/m4sugar/m4sh.m4 ++++ autoconf-2.69/lib/m4sugar/m4sh.m4 +@@ -1045,40 +1045,8 @@ m4_defun([_AS_ECHO_PREPARE], + [[as_nl=' + ' + export as_nl +-# Printing a long string crashes Solaris 7 /usr/bin/printf. +-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +-# Prefer a ksh shell builtin over an external printf program on Solaris, +-# but without wasting forks for bash or zsh. +-if test -z "$BASH_VERSION$ZSH_VERSION" \ +- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then +- as_echo='print -r --' +- as_echo_n='print -rn --' +-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then +- as_echo='printf %s\n' +- as_echo_n='printf %s' +-else +- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then +- as_echo_body='eval /usr/ucb/echo -n "$][1$as_nl"' +- as_echo_n='/usr/ucb/echo -n' +- else +- as_echo_body='eval expr "X$][1" : "X\\(.*\\)"' +- as_echo_n_body='eval +- arg=$][1; +- case $arg in @%:@( +- *"$as_nl"*) +- expr "X$arg" : "X\\(.*\\)$as_nl"; +- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; +- esac; +- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" +- ' +- export as_echo_n_body +- as_echo_n='sh -c $as_echo_n_body as_echo' +- fi +- export as_echo_body +- as_echo='sh -c $as_echo_body as_echo' +-fi ++as_echo='printf %s\n' ++as_echo_n='printf %s' + ]])# _AS_ECHO_PREPARE + + 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 \ file://preferbash.patch \ file://autotest-automake-result-format.patch \ file://add_musl_config.patch \ + file://performance.patch \ " SRC_URI[md5sum] = "82d05e03b93e45f5a39b828dc9c6c29b" -- cgit v1.2.3-54-g00ecf