| #!/bin/sh |
| # Yes, this intends to be a true POSIX script file. |
| set -e |
| |
| myname="$0" |
| |
| # Parse the tools' paths configuration |
| # It is expected that this script is only to be run from the |
| # source directory of crosstool-NG, so it is trivial to find |
| # paths.mk (we can't use ". paths.mk", as POSIX states that |
| # $PATH should be searched for, and $PATH most probably doe |
| # not include "."), hence the "./". |
| . "./paths.mk" |
| |
| doUsage() { |
| cat <<_EOF_ |
| Usage: ${myname} <src_dir> <dst_dir> <base> <inc> [sed_re] |
| Renumbers all patches found in 'src_dir', starting at 'base', with an |
| increment of 'inc', and puts the renumbered patches in 'dst_dir'. |
| Leading digits are replaced with the new indexes, and a subsequent '_' |
| is replaced with a '-'. |
| If 'sed_re' is given, it is interpreted as a valid sed expression, and |
| is be applied to the patch name. |
| If the environment variable FAKE is set to 'y', then nothing gets done, |
| the command to run is only be printed, and not executed (so you can |
| check beforehand). |
| 'dst_dir' must not yet exist. |
| Eg.: |
| patch-renumber.sh patches/gcc/4.2.3 patches/gcc/4.2.4 100 10 |
| patch-renumber.sh /some/dir/my-patches patches/gcc/4.3.1 100 10 's/(all[_-])*(gcc[-_])*//;' |
| _EOF_ |
| } |
| |
| [ $# -lt 4 -o $# -gt 5 ] && { doUsage; exit 1; } |
| |
| src="${1}" |
| dst="${2}" |
| cpt="${3}" |
| inc="${4}" |
| sed_re="${5}" |
| if [ ! -d "${src}" ]; then |
| printf "%s: '%s': not a directory\n" "${myname}" "${src}" |
| exit 1 |
| fi |
| if [ -d "${dst}" ]; then |
| printf "%s: '%s': directory already exists\n" "${myname}" "${dst}" |
| exit 1 |
| fi |
| |
| Q= |
| if [ -n "${FAKE}" ]; then |
| printf "%s: won't do anything: FAKE='%s'\n" "${myname}" "${FAKE}" |
| Q="echo" |
| fi |
| |
| ${Q} mkdir -pv "${dst}" |
| for p in "${src}/"*.patch*; do |
| [ -e "${p}" ] || { echo "No such file '${p}'"; exit 1; } |
| newname="$(printf "%03d-%s" \ |
| "${cpt}" \ |
| "$( basename "${p}" \ |
| |"${sed}" -r -e 's/^[[:digit:]]+[-_]//' \ |
| -e "${sed_re}" \ |
| )" \ |
| )" |
| ${Q} cp -v "${p}" "${dst}/${newname}" |
| cpt=$((cpt+inc)) |
| done |