This file is indexed.

/usr/bin/undertaker-kconfigdump is in undertaker 1.2-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
#!/bin/bash
set -e

# This script is used for precalculating the configuration models of a
# linux tree. Therefore the config is first dumped with dumpconf to an
# rsf file. This rsf file is piped to rsf2model which calculates the
# model which is used by the undertaker afterwards.
#
# dumpconf and rsf2model can be placed in $PREFIX/lib/undertaker or
# /usr/lib/undertaker or /usr/local/lib/undertaker, because they won't
# be needed anywhere else than here.
#
# Enviroment variables:
# - MODELS: the directory where the models are placed (default:
#           models)
# - DEBUG: give some debug informations


MODELS=${MODELS:-models}
PROCESSORS=${PROCESSORS:-$(getconf _NPROCESSORS_ONLN)}


function debug() {
    if [ -n "$DEBUG" ]; then
        echo -e "$@"
    fi
}

PATH="/usr/lib/undertaker:$PATH"
PYTHONPATH="/usr/lib/python2.6/site-packages"

export PYTHONPATH

debug "PATH=$PATH\n"
debug "PYTHONPATH=$PYTHONPATH\n"

if ! which dumpconf > /dev/null; then
    echo "No dumpconf binary found."
    exit 1
fi

if ! which  rsf2model > /dev/null; then
    echo "No rsf2model binary found."
    exit 1
fi

debug "rsf2model: $(which rsf2model)"
debug "dumpconf: $(which dumpconf)"

if [ ! -f arch/x86/Kconfig ]; then
    echo "Not run in an linux tree. Please run inside an linux tree without arguments"
    exit 1
fi

ARCHS=$(ls arch/*/Kconfig | cut -d '/' -f 2)

mkdir -p "$MODELS"

function pwait() {
    # This functions blocks until less than $1 subprocesses are running
    jobs="$1"
    [ -z "$jobs" ] && jobs=5

    while [ $(jobs -r | wc -l) -ge "$jobs" ]; do
        sleep 0.5
    done
}

function do_convert() {
    ARCH=$1
    UPCASE_ARCH=$(echo $ARCH | tr 'a-z' 'A-Z')
    echo "Calculating model for $ARCH"
    
  # special case for user mode linux
    SUBARCH=$ARCH
    KCONFIG=Kconfig
    if [ x"$ARCH" = x"um" ]; then
        SUBARCH=x86
        KCONFIG=Kconfig.x86
    fi
    
  # dumpconf, remove all the comments because they will confuse rsf2model
    SUBARCH=$SUBARCH ARCH=$ARCH dumpconf arch/$ARCH/$KCONFIG | grep -v '^#' > "$MODELS/kconfig-$ARCH.rsf"
    
  # rsf2model, but CONFIG_$UPCASE_ARCH will be replaced by 
  # a rule that no other architecture can be selected at the same
  # time. E.g. X86 -> !ARM && !S390

    rsf2model "$MODELS/kconfig-$ARCH.rsf" | grep -v '^CONFIG_'"$UPCASE_ARCH"'$' > "$MODELS/$ARCH.model"
  
  # Add CONFIG_$i -> !CONFIG_* for every architecture
    echo $ARCHS | sed "s/ *$ARCH */ /" | tr 'a-z' 'A-Z' | \
        sed 's/$/"/; s/\</!CONFIG_/g; s/ / \&\& /g; s/^/'"CONFIG_$UPCASE_ARCH "'"/;' \
        >> "$MODELS/$ARCH.model"
    
    if [ -z "$DEBUG" ]; then
        rm -f "$MODELS/kconfig-$ARCH.rsf"
    fi

}

for ARCH in $ARCHS um
do
    do_convert $ARCH &
    # run many converting processes in parallel
    pwait ${PROCESSORS}
done