scripts/patch-renumber.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Thu May 26 22:51:03 2011 +0200 (2011-05-26)
changeset 2481 30644208c955
parent 1622 9ad2a3fd1fcc
child 2838 822af73497bf
permissions -rwxr-xr-x
configure: add possibility to set arbitrary variable in check_for

If check_for is able to find the required prog/inc/lib, allow it to
set an arbitrary variable to 'y'. This variable is then pushed down
to the kconfig definition.

For example:
has_or_abort prog=foobar kconfig=has_foobar

If foobar is available, it yields a kconfig variable defaulting to y:
config CONFIGURE_has_foobar
bool
default y

If foobar is missing, it yields a kconfig variable defaulting to n:
config CONFIGURE_has_foobar
bool

Thus it is possible to depends on that variabel to show/hide options:
config SOME_FEATURE
bool
prompt "Some feature"
depends on CONFIGURE_has_foobar

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 #!/bin/sh
     2 # Yes, this intends to be a true POSIX script file.
     3 set -e
     4 
     5 myname="$0"
     6 
     7 # Parse the tools' paths configuration
     8 # It is expected that this script is only to be run from the
     9 # source directory of crosstool-NG, so it is trivial to find
    10 # paths.mk (we can't use  ". paths.mk", as POSIX states that
    11 # $PATH should be searched for, and $PATH most probably doe
    12 # not include "."), hence the "./".
    13 . "./paths.mk"
    14 
    15 doUsage() {
    16   cat <<_EOF_
    17 Usage: ${myname} <src_dir> <dst_dir> <base> <inc> [sed_re]
    18     Renumbers all patches found in 'src_dir', starting at 'base', with an
    19     increment of 'inc', and puts the renumbered patches in 'dst_dir'.
    20     Leading digits are replaced with the new indexes, and a subsequent '_'
    21     is replaced with a '-'.
    22     If 'sed_re' is given, it is interpreted as a valid sed expression, and
    23     is be applied to the patch name.
    24     If the environment variable FAKE is set to 'y', then nothing gets done,
    25     the command to run is only be printed, and not executed (so you can
    26     check beforehand).
    27     'dst_dir' must not yet exist.
    28     Eg.:
    29       patch-renumber.sh patches/gcc/4.2.3 patches/gcc/4.2.4 100 10
    30       patch-renumber.sh /some/dir/my-patches patches/gcc/4.3.1 100 10 's/(all[_-])*(gcc[-_])*//;'
    31 _EOF_
    32 }
    33 
    34 [ $# -lt 4 -o $# -gt 5 ] && { doUsage; exit 1; }
    35 
    36 src="${1}"
    37 dst="${2}"
    38 cpt="${3}"
    39 inc="${4}"
    40 sed_re="${5}"
    41 if [ ! -d "${src}" ]; then
    42     printf "%s: '%s': not a directory\n" "${myname}" "${src}"
    43     exit 1
    44 fi
    45 if [ -d "${dst}" ]; then
    46     printf "%s: '%s': directory already exists\n" "${myname}" "${dst}"
    47     exit 1
    48 fi
    49 
    50 Q=
    51 if [ -n "${FAKE}" ]; then
    52     printf "%s: won't do anything: FAKE='%s'\n" "${myname}" "${FAKE}"
    53     Q="echo"
    54 fi
    55 
    56 ${Q} mkdir -pv "${dst}"
    57 for p in "${src}/"*.patch*; do
    58     [ -e "${p}" ] || { echo "No such file '${p}'"; exit 1; }
    59     newname="$(printf "%03d-%s"                                     \
    60                       "${cpt}"                                      \
    61                       "$( basename "${p}"                           \
    62                           |"${sed}" -r -e 's/^[[:digit:]]+[-_]//'   \
    63                                        -e "${sed_re}"               \
    64                         )"                                          \
    65               )"
    66     ${Q} cp -v "${p}" "${dst}/${newname}"
    67     cpt=$((cpt+inc))
    68 done