ct-ng.comp
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Mar 29 00:15:32 2010 +0200 (2010-03-29)
changeset 1864 758d5137fe87
parent 1803 2c0ed9ec9a8c
child 1876 a6a4beab3125
permissions -rw-r--r--
scripts/populate: optimise search loop

Curently, populate will iterate over all ELF (shared objects|executables)
to look for missing NEEDED DSOs, adding to the list at every iterations
of the search loop.

Instead of looking again at previously handled ELF files, recursively
resolve every ELf files.

Also, in case there are a whole lot of files (more than the shell can
accept as arguments list, or creating a command line longer than the
shell can cope with), use a temporary file with the list of files
to search for missing dependencies.
     1 # To be sourced
     2 
     3 _ct-ng () {
     4     local cur prev samples show_samples actions steps start_steps stop_steps ct_ng_opts vars
     5     COMPREPLY=()
     6     cur=$(_get_cword)
     7     prev=${COMP_WORDS[COMP_CWORD-1]}
     8 
     9     samples=$( ${COMP_WORDS[0]} list-samples 2>/dev/null    \
    10                |sed -r -e 's/^(.*) \(host: (.*)\)$/\2,\1/;' \
    11              )
    12     show_samples=$(echo "${samples}" |sed -r -e 's/(^| )/\1show-/g;')
    13     build_samples=$(echo "${samples}" |sed -r -e 's/(^| )/\1build-/g;')
    14 
    15     steps=$(${COMP_WORDS[0]} list-steps 2>/dev/null |awk '$1 == "-" { print $2; }')
    16     start_steps=$(echo "${steps}" |sed -r -e 's/($| )/\1+/;')
    17     stop_steps=$(echo "${steps}" |sed -r -e 's/(^| )/+\1/;')
    18 
    19     actions='help menuconfig oldconfig saveconfig extractconfig
    20              build build. build-all build-all.
    21              list-samples list-steps show-tuple show-all show-config
    22              clean distclean wiki-samples updatetools
    23              tarball version'
    24 
    25     vars="RESTART= STOP="
    26 
    27     ct_ng_opts="${samples} ${show_samples} ${build_samples}
    28                 ${steps} ${start_steps} ${stop_steps}
    29                 ${actions} ${vars}"
    30 
    31     COMPREPLY=($(compgen -W "${ct_ng_opts}" -- "${cur}"))
    32     return 0
    33 }
    34 complete -F _ct-ng ct-ng