scripts/addToolVersion.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Feb 02 22:00:18 2009 +0000 (2009-02-02)
changeset 1201 c9967a6e3b25
parent 1174 7710d81d15e7
child 1225 4b065e7e2130
permissions -rwxr-xr-x
Add a patchset for glibc 2_9. Vampirised from the gentoo repository.

/trunk/patches/glibc/2_9/500-ppc-glibc-2.9-atomic.patch | 414 414 0 0 ++++++++++
/trunk/patches/glibc/2_9/140-regex-BZ9697.patch | 111 111 0 0 +++
/trunk/patches/glibc/2_9/190-queue-header-updates.patch | 89 89 0 0 ++
/trunk/patches/glibc/2_9/370-hppa_glibc-2.7-hppa-nptl-carlos.patch | 249 249 0 0 ++++++
/trunk/patches/glibc/2_9/450-alpha-glibc-2.5-no-page-header.patch | 32 32 0 0 +
/trunk/patches/glibc/2_9/270-ldbl-nexttowardf.patch | 68 68 0 0 ++
/trunk/patches/glibc/2_9/330-2.3.3-china.patch | 35 35 0 0 +
/trunk/patches/glibc/2_9/340-new-valencian-locale.patch | 120 120 0 0 +++
/trunk/patches/glibc/2_9/410-2.9-fnmatch.patch | 64 64 0 0 ++
/trunk/patches/glibc/2_9/350-2.4-undefine-__i686.patch | 47 47 0 0 +
/trunk/patches/glibc/2_9/160-i386-x86_64-revert-clone-cfi.patch | 53 53 0 0 +
/trunk/patches/glibc/2_9/420-dont-build-timezone.patch | 19 19 0 0 +
/trunk/patches/glibc/2_9/150-regex-BZ697.patch | 28 28 0 0 +
/trunk/patches/glibc/2_9/290-no-inline-gmon.patch | 38 38 0 0 +
/trunk/patches/glibc/2_9/280-section-comments.patch | 29 29 0 0 +
/trunk/patches/glibc/2_9/180-math-tests.patch | 72 72 0 0 ++
/trunk/patches/glibc/2_9/120-_nss_dns_gethostbyaddr2_r-check-and-adjust-the-buffer-alignment.patch | 35 35 0 0 +
/trunk/patches/glibc/2_9/250-resolv-dynamic.patch | 44 44 0 0 +
/trunk/patches/glibc/2_9/300-2.9-check_native-headers.patch | 22 22 0 0 +
/trunk/patches/glibc/2_9/310-2.3.6-fix-pr631.patch | 50 50 0 0 +
/trunk/patches/glibc/2_9/130-add_prio-macros.patch | 26 26 0 0 +
/trunk/patches/glibc/2_9/260-fadvise64_64.patch | 30 30 0 0 +
/trunk/patches/glibc/2_9/440-alpha-glibc-2.4-xstat.patch | 249 249 0 0 ++++++
/trunk/patches/glibc/2_9/170-2.10-dns-no-gethostbyname4.patch | 35 35 0 0 +
/trunk/patches/glibc/2_9/230-2.3.3-localedef-fix-trampoline.patch | 74 74 0 0 ++
/trunk/patches/glibc/2_9/360-2.8-nscd-one-fork.patch | 45 45 0 0 +
/trunk/patches/glibc/2_9/480-alpha-glibc-2.8-cache-shape.patch | 18 18 0 0 +
/trunk/patches/glibc/2_9/210-2.9-strlen-hack.patch | 109 109 0 0 +++
/trunk/patches/glibc/2_9/320-2.9-assume-pipe2.patch | 59 59 0 0 +
/trunk/patches/glibc/2_9/100-ssp-compat.patch | 193 193 0 0 +++++
/trunk/patches/glibc/2_9/110-respect-env-CPPFLAGS.patch | 30 30 0 0 +
/trunk/patches/glibc/2_9/220-manual-no-perl.patch | 29 29 0 0 +
/trunk/patches/glibc/2_9/390-2.3.3_pre20040117-pt_pax.patch | 35 35 0 0 +
/trunk/patches/glibc/2_9/460-alpha-glibc-2.5-no-asm-elf-header.patch | 38 38 0 0 +
/trunk/patches/glibc/2_9/400-tests-sandbox-libdl-paths.patch | 198 198 0 0 +++++
/trunk/patches/glibc/2_9/240-i386-LOAD_PIC_REG.patch | 23 23 0 0 +
/trunk/patches/glibc/2_9/200-awk-in-C-locale.patch | 23 23 0 0 +
/trunk/patches/glibc/2_9/430-2.7-cross-compile-nptl.patch | 57 57 0 0 +
/trunk/patches/glibc/2_9/380-2.3.6-dl_execstack-PaX-support.patch | 71 71 0 0 ++
/trunk/patches/glibc/2_9/490-ptr-mangling.patch | 114 114 0 0 +++
/trunk/patches/glibc/2_9/470-alpha-glibc-2.8-creat.patch | 19 19 0 0 +
41 files changed, 3094 insertions(+)
yann@1173
     1
#!/bin/sh
yann@1174
     2
set -e
yann@1
     3
yann@1
     4
# Adds a new version to one of the toolchain component
yann@1
     5
myname="$0"
yann@1
     6
yann@1174
     7
# Parse the tools' paths configuration
yann@1174
     8
. "paths.mk"
yann@1174
     9
yann@1
    10
doHelp() {
yann@1
    11
    cat <<-EOF
yann@1173
    12
Usage: ${myname} <tool> <[options] version [...]> ...
yann@1
    13
  'tool' in one of:
yann@858
    14
    --gcc, --binutils, --glibc, --eglibc, --uClibc, --linux,
yann@245
    15
    --gdb, --dmalloc, --duma, --strace, --ltrace, --libelf
yann@466
    16
    --gmp, --mpfr
yann@1
    17
yann@96
    18
  Valid options for all tools:
yann@1173
    19
    --stable, -s, +x   (default)
yann@1173
    20
      mark the version as being stable (as opposed to experimental)
yann@43
    21
yann@1173
    22
    --experimental, -x, +s
yann@1173
    23
      mark the version as being experimental (as opposed to stable)
yann@1173
    24
yann@1173
    25
    --current, -c, +o   (default)
yann@1173
    26
      mark the version as being cuurent (as opposed to obsolete)
yann@1173
    27
yann@1173
    28
    --obsolete, -o, +c
yann@1173
    29
      mark the version as being obsolete (as opposed to current)
yann@1173
    30
yann@1173
    31
  Note: setting a new tool resets to the defaults: 'stable' and 'current'.
yann@96
    32
yann@1
    33
  'version' is a valid version for the specified tool.
yann@1
    34
yann@1
    35
  Examples:
yann@1173
    36
    add stable current version 2.6.19.2 to linux kernel:
yann@858
    37
      ${myname} --linux 2.6.19.2
yann@1
    38
yann@1173
    39
    add experimental obsolete version 2.3.5 and stable current versions 2.6.1
yann@1173
    40
    and 2.6.2 to glibc, add stable obsolete version 3.3.3 to gcc:
yann@1173
    41
      ${myname} --glibc -x -o 2.3.5 -s -c 2.6.1 2.6.2 --gcc -o 3.3.3
yann@1
    42
EOF
yann@1
    43
}
yann@1
    44
yann@1173
    45
# Effectively add a version to the specified tool
yann@1173
    46
# $cat          : tool category
yann@1173
    47
# $tool         : tool name
yann@1173
    48
# $tool_prefix  : tool directory prefix
yann@1173
    49
# $EXP          : set to non empty if experimental, to empty otherwise
yann@1173
    50
# #OBS          : set to non empty if obsolete, to empty otherwise
yann@1173
    51
# $1            : version string to add
yann@1173
    52
addToolVersion() {
yann@1173
    53
    local version="$1"
yann@1173
    54
    local file
yann@1200
    55
    local config_ver_option
yann@1173
    56
    local exp_obs_prompt
yann@1173
    57
    local deps v ver_M ver_m
yann@1173
    58
    local SedExpr1 SedExpr2
yann@1173
    59
yann@1173
    60
    file="config/${tool_prefix}/${tool}.in"
yann@1174
    61
    v=$(echo "${version}" |"${sed}" -r -e 's/-/_/g; s/\./_/g;')
yann@1173
    62
yann@1200
    63
    config_ver_option="${cat}_V_${v}"
yann@1200
    64
yann@1200
    65
    # Check for existing version: it can be legitimitate for an end-user
yann@1200
    66
    # to try adding a new version if the one he/she wants is not listed.
yann@1200
    67
    # But it can be the case where the version is hidden behind either one
yann@1200
    68
    # of EXPERIMENTAL or OBSOLETE, so warn if the version is already listed.
yann@1200
    69
    if (GREP_OPTIONS= grep -E "^config ${config_ver_option}$" "${file}" >/dev/null 2>&1); then
yann@1200
    70
        echo "'${tool}': version '${version}' already present:"
yann@1200
    71
        GREP_OPTIONS= grep -A3 -B0 -E "^config ${config_ver_option}$" "${file}"
yann@1200
    72
        return 0
yann@1200
    73
    fi
yann@1200
    74
yann@1200
    75
    SedExpr1="${SedExpr1}config ${config_ver_option}\n"
yann@1173
    76
    SedExpr1="${SedExpr1}    bool\n"
yann@1173
    77
    SedExpr1="${SedExpr1}    prompt \"${version}"
yann@1173
    78
    case "${EXP},${OBS}" in
yann@1173
    79
        ,)  ;;
yann@1173
    80
        ,*) exp_obs_prompt="  (OBSOLETE)"
yann@1173
    81
            deps="    depends on OBSOLETE\n"
yann@1173
    82
            ;;
yann@1173
    83
        *,) exp_obs_prompt="  (EXPERIMENTAL)"
yann@1173
    84
            deps="    depends on EXPERIMENTAL\n"
yann@1173
    85
            ;;
yann@1173
    86
        *)  exp_obs_prompt="  (EXPERIMENTAL, OBSOLETE)"
yann@1173
    87
            deps="    depends on EXPERIMENTAL && OBSOLETE\n"
yann@1173
    88
            ;;
yann@1173
    89
    esac
yann@1173
    90
    [ -n "${exp_obs_prompt}" ] && SedExpr1="${SedExpr1}${exp_obs_prompt}"
yann@1173
    91
    SedExpr1="${SedExpr1}\"\n"
yann@1173
    92
    [ -n "${deps}" ] && SedExpr1="${SedExpr1}${deps}"
yann@1173
    93
    if [ "${tool}" = "gcc" ]; then
yann@1173
    94
        # Extract 'M'ajor and 'm'inor from version string
yann@1173
    95
        ver_M=$(echo "${version}...." |cut -d . -f 1)
yann@1173
    96
        ver_m=$(echo "${version}...." |cut -d . -f 2)
yann@1173
    97
        if [    ${ver_M} -gt 4                          \
yann@1173
    98
             -o \( ${ver_M} -eq 4 -a ${ver_m} -ge 3 \)  ]; then
yann@1173
    99
            SedExpr1="    select CC_GCC_4_3_or_later\n"
yann@1173
   100
        fi
yann@1173
   101
    fi
yann@1173
   102
    SedExpr2="    default \"${version}\" if ${cat}_V_${v}"
yann@1174
   103
    "${sed}" -r -i -e 's/^(# CT_INSERT_VERSION_ABOVE)$/'"${SedExpr1}"'\n\1/;' "${file}"
yann@1174
   104
    "${sed}" -r -i -e 's/^(# CT_INSERT_VERSION_STRING_ABOVE)$/'"${SedExpr2}"'\n\1/;' "${file}"
yann@1173
   105
}
yann@1173
   106
yann@96
   107
cat=
yann@1
   108
tool=
yann@1
   109
tool_prefix=
yann@1
   110
VERSION=
yann@43
   111
EXP=
yann@96
   112
OBS=
yann@1
   113
yann@1173
   114
if [ $# -eq 0 ]; then
yann@1173
   115
    doHelp
yann@1173
   116
    exit 1
yann@1173
   117
fi
yann@1173
   118
yann@1173
   119
while [ $# -gt 0 ]; do
yann@1173
   120
    case "$1" in
yann@96
   121
        # Tools:
yann@1173
   122
        --gcc)      EXP=; OBS=; cat=CC;        tool=gcc;      tool_prefix=cc;;
yann@1173
   123
        --binutils) EXP=; OBS=; cat=BINUTILS;  tool=binutils; tool_prefix=;;
yann@1173
   124
        --glibc)    EXP=; OBS=; cat=LIBC;      tool=glibc;    tool_prefix=libc;;
yann@1173
   125
        --eglibc)   EXP=; OBS=; cat=LIBC;      tool=eglibc;   tool_prefix=libc;;
yann@1173
   126
        --uClibc)   EXP=; OBS=; cat=LIBC;      tool=uClibc;   tool_prefix=libc;;
yann@1173
   127
        --linux)    EXP=; OBS=; cat=KERNEL;    tool=linux;    tool_prefix=kernel;;
yann@1173
   128
        --gdb)      EXP=; OBS=; cat=GDB;       tool=gdb;      tool_prefix=debug;;
yann@1173
   129
        --dmalloc)  EXP=; OBS=; cat=DMALLOC;   tool=dmalloc;  tool_prefix=debug;;
yann@1173
   130
        --duma)     EXP=; OBS=; cat=DUMA;      tool=duma;     tool_prefix=debug;;
yann@1173
   131
        --strace)   EXP=; OBS=; cat=STRACE;    tool=strace;   tool_prefix=debug;;
yann@1173
   132
        --ltrace)   EXP=; OBS=; cat=LTRACE;    tool=ltrace;   tool_prefix=debug;;
yann@1173
   133
        --libelf)   EXP=; OBS=; cat=LIBELF;    tool=libelf;   tool_prefix=tools;;
yann@1173
   134
        --gmp)      EXP=; OBS=; cat=GMP;       tool=gmp;      tool_prefix=gmp_mpfr;;
yann@1173
   135
        --mpfr)     EXP=; OBS=; cat=MPFR;      tool=mpfr;     tool_prefix=gmp_mpfr;;
yann@1173
   136
yann@96
   137
        # Tools options:
yann@1173
   138
        -x|--experimental|+s)   EXP=1;;
yann@1173
   139
        -s|--stable|+x)         EXP=;;
yann@1173
   140
        -o|--obsolete|+c)       OBS=1;;
yann@1173
   141
        -c|--current|+o)        OBS=;;
yann@1173
   142
yann@96
   143
        # Misc:
yann@1173
   144
        -h|--help)  doHelp; exit 0;;
yann@1173
   145
        -*)         echo "Unknown option: '$1' (use -h/--help for help)."; exit 1;;
yann@1173
   146
yann@1173
   147
        # Version string:
yann@1173
   148
        *)  [ -n "${tool}" ] || { doHelp; exit 1; }
yann@1173
   149
            addToolVersion "$1"
yann@1173
   150
            ;;
yann@1
   151
    esac
yann@1173
   152
    shift
yann@1
   153
done