Chet Ramey wrote:
On 1/24/14, 4:16 PM, Linda Walsh wrote:
Trying to build,
Get undefined reference to `sh_xfree' In function `write_helpfiles'.
Anyone run into this... was it a mistake to try for separate help
files?
Thanks for the report. It's a simple patch, so I've attached it.
----
FWIW -- my workaround was to remove the "--with-separate-helpfiles" option.
As it seemed to be called in something to do with the helpfiles.
Also of note, a parallel make often fails ...
Should I assume that the bash-make isn't multi-process safe? Or
is that unintentional?
It's just a missing dependency. I wonder why I haven't run into this
before; I run `gmake -j 4' to build bash on every system I use.
----
I often will use "make -j" for most things....
A limit sometimes will improve efficiency on large builds (ex. kernel),
but difference is negligible w/many builds.
Also, haven't begin to look at "why", but something is alot slower
in bash-43...
Noticed it during login.
Added a -x at beginning of profile.sh with a function
to print "SECONDS+a millisecond counter".
To get to beginning of calling my first "personal file"
(~/.bashrc): bash43 shows:
[ 108.973]/etc/profile#356> test -r /home/law/.bashrc
[ 109.999]/etc/profile#356> . /home/law/.bashrc
-------------
bash42 shows:
[ 24.084]/etc/profile#357> test -r /home/law/.bashrc
[ 24.090]/etc/profile#357> . /home/law/.bashrc
....finishes in a bit over 31 seconds...
----
Note--- real login time <1 second max in 4.2 -- including
my personal scripts, the 24 & 31 are w/the tracing overhead, so
divide by ~20 -- bash43 seemed like several seconds -- most of which
was in the suse setup. but haven't narrowed it down anymore
than coming up with the raw data...which I could dump on you
if you wanted it -- up to the point where it starts to call
my .bashrc -- i.e. before that would be all suse's intro scripts.
I've no idea why there is such a large discrepancy at this point.
My build options:
prefix=/
. ~/.config.include
gen_config_ops
declare -a bash_enables=( alias arith-for-command array-variables
brace-expansion casemod-attributes casemod-expansions command-timing
cond-command cond-regexp coprocesses debugger directory-stack
direxpand-default disabled-builtins dparen-arithmetic extended-glob
extended-glob-default glob-asciiranges-default help-builtin
history job-control multibyte net-redirections
process-substitution progcomp prompt-string-decoding readline
restricted select single-help-strings )
# declare -a bash_with=( curses included-ltdl pic gnu-malloc
ltdl-lib=/usr/lib64)
declare -a bash_with=( bash-malloc curses gnu-ld )
export LDFLAGS="-flto -fpie "
for ena in "${bash_enables[@]}" ; do
config_ops+="--enable-$ena "
done
for withs in "${bash_with[@]}" ; do
config_ops+="--with-$withs "
done
------------------
config.include sets the directories and CFLAGS w/CFLAGS set to:
declare -a CFLAGS_AR=(
-g -ggdb -O2 -m64 -fasynchronous-unwind-tables
-fbranch-target-load-optimize -fdelete-null-pointer-checks -fgcse-after-reload
-fgcse-las -fgcse-sm -fgraphite-identity -fipa-pta -fivopts -floop-block
-floop-flatten -floop-interchange -floop-strip-mine -flto
-fmessage-length=0 -fpredictive-commoning -frename-registers
-freorder-blocks-and-partition -ftracer -ftree-loop-linear
-ftree-loop-distribution -ftree-loop-distribute-patterns -ftree-loop-im
-ftree-loop-ivcanon -ftree-vectorize -ftree-slp-vectorize -funswitch-loops
-funwind-tables -fvariable-expansion-in-unroller -fvect-cost-model -fweb
-march=native -pipe
)
(basically all the optimizations from -O3 that don't increase space).
-------
When I noticed the time problem, I made sure bash was
stripped (strip /bin/bash) & made sure it was "prelinked"