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.
yann@835
     1
# To be sourced
yann@835
     2
yann@835
     3
_ct-ng () {
yann@835
     4
    local cur prev samples show_samples actions steps start_steps stop_steps ct_ng_opts vars
yann@835
     5
    COMPREPLY=()
yann@835
     6
    cur=$(_get_cword)
yann@835
     7
    prev=${COMP_WORDS[COMP_CWORD-1]}
yann@835
     8
yann@1829
     9
    samples=$( ${COMP_WORDS[0]} list-samples 2>/dev/null    \
yann@1829
    10
               |sed -r -e 's/^(.*) \(host: (.*)\)$/\2,\1/;' \
yann@1829
    11
             )
yann@835
    12
    show_samples=$(echo "${samples}" |sed -r -e 's/(^| )/\1show-/g;')
yann@1025
    13
    build_samples=$(echo "${samples}" |sed -r -e 's/(^| )/\1build-/g;')
yann@835
    14
yann@918
    15
    steps=$(${COMP_WORDS[0]} list-steps 2>/dev/null |awk '$1 == "-" { print $2; }')
yann@934
    16
    start_steps=$(echo "${steps}" |sed -r -e 's/($| )/\1+/;')
yann@835
    17
    stop_steps=$(echo "${steps}" |sed -r -e 's/(^| )/+\1/;')
yann@835
    18
yann@1803
    19
    actions='help menuconfig oldconfig saveconfig extractconfig
yann@1025
    20
             build build. build-all build-all.
yann@1788
    21
             list-samples list-steps show-tuple show-all show-config
yann@1025
    22
             clean distclean wiki-samples updatetools
yann@932
    23
             tarball version'
yann@835
    24
yann@835
    25
    vars="RESTART= STOP="
yann@835
    26
yann@1025
    27
    ct_ng_opts="${samples} ${show_samples} ${build_samples}
yann@835
    28
                ${steps} ${start_steps} ${stop_steps}
yann@835
    29
                ${actions} ${vars}"
yann@835
    30
yann@835
    31
    COMPREPLY=($(compgen -W "${ct_ng_opts}" -- "${cur}"))
yann@835
    32
    return 0
yann@835
    33
}
yann@835
    34
complete -F _ct-ng ct-ng