Changeset 29949


Ignore:
Timestamp:
2012-01-29T21:21:46+01:00 (6 years ago)
Author:
jow
Message:

[backfire] scripts: merge r29944 - r29948

Location:
branches/backfire/scripts
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/scripts/download.pl

    r27721 r29949  
    143143                }                
    144144                foreach my $dir (@extra) { 
    145                         push @mirrors, "ftp://ftp.geo.kernel.org/pub/$dir"; 
    146                         push @mirrors, "http://ftp.geo.kernel.org/pub/$dir"; 
    147145                        push @mirrors, "ftp://ftp.all.kernel.org/pub/$dir"; 
    148146                        push @mirrors, "http://ftp.all.kernel.org/pub/$dir"; 
  • branches/backfire/scripts/ext-toolchain.sh

    r29925 r29949  
    198198 
    199199 
     200wrap_bin_cc() { 
     201        local out="$1" 
     202        local bin="$2" 
     203 
     204        echo    '#!/bin/sh'                                                > "$out" 
     205        echo    'for arg in "$@"; do'                                     >> "$out" 
     206        echo    ' case "$arg" in -l*|-L*|-shared|-static)'                >> "$out" 
     207        echo -n '  exec "'"$bin"'" '"$CFLAGS"' ${STAGING_DIR:+'           >> "$out" 
     208        echo -n '-idirafter "$STAGING_DIR/usr/include" '                  >> "$out" 
     209        echo -n '-L "$STAGING_DIR/usr/lib" '                              >> "$out" 
     210        echo    '-Wl,-rpath-link,"$STAGING_DIR/usr/lib"} "$@" ;;'         >> "$out" 
     211        echo    ' esac'                                                   >> "$out" 
     212        echo    'done'                                                    >> "$out" 
     213        echo -n 'exec "'"$bin"'" '"$CFLAGS"' ${STAGING_DIR:+'             >> "$out" 
     214        echo    '-idirafter "$STAGING_DIR/usr/include"} "$@"'             >> "$out" 
     215 
     216        chmod +x "$out" 
     217} 
     218 
     219wrap_bin_ld() { 
     220        local out="$1" 
     221        local bin="$2" 
     222 
     223        echo    '#!/bin/sh'                                                > "$out" 
     224        echo -n 'exec "'"$bin"'" '"$CFLAGS"' ${STAGING_DIR:+'             >> "$out" 
     225        echo -n '-L "$STAGING_DIR/usr/lib" '                              >> "$out" 
     226        echo    '-rpath-link "$STAGING_DIR/usr/lib"} "$@"'                >> "$out" 
     227 
     228        chmod +x "$out" 
     229} 
     230 
     231wrap_bin_other() { 
     232        local out="$1" 
     233        local bin="$2" 
     234 
     235        echo    '#!/bin/sh'                                                > "$out" 
     236        echo    'exec "'"$bin"'" "$@"'                                    >> "$out" 
     237 
     238        chmod +x "$out" 
     239} 
     240 
    200241wrap_bins() { 
    201242        if probe_cc; then 
     
    206247                        if [ -x "$cmd" ]; then 
    207248                                local out="$1/${cmd##*/}" 
    208  
    209                                 echo '#!/bin/sh' > "$out" 
     249                                local bin="$cmd" 
     250 
     251                                if [ -x "$out" ] && ! grep -q STAGING_DIR "$out"; then 
     252                                        mv "$out" "$out.bin" 
     253                                        bin='$(dirname "$0")/'"${out##*/}"'.bin' 
     254                                fi 
     255 
    210256                                case "${cmd##*/}" in 
    211257                                        *-*cc|*-*cc-*|*-*++|*-*++-*|*-cpp) 
    212                                                 echo -n 'exec "'"$cmd"'" '"$CFLAGS"' '         >> "$out" 
    213                                                 echo -n '${STAGING_DIR:+-idirafter '           >> "$out" 
    214                                                 echo -n '"$STAGING_DIR/usr/include" '          >> "$out" 
    215                                                 echo -n '-L "$STAGING_DIR/usr/lib" '           >> "$out" 
    216                                                 echo -n '-Wl,-rpath-link,'                     >> "$out" 
    217                                                 echo    '"$STAGING_DIR/usr/lib"} "$@"'         >> "$out" 
     258                                                wrap_bin_cc "$out" "$bin" 
    218259                                        ;; 
    219260                                        *-ld) 
    220                                                 echo -n 'exec "'"$cmd"'" ${STAGING_DIR:+'      >> "$out" 
    221                                                 echo -n '-L "$STAGING_DIR/usr/lib" '           >> "$out" 
    222                                                 echo -n '-rpath-link '                         >> "$out" 
    223                                                 echo    '"$STAGING_DIR/usr/lib"} "$@"'         >> "$out" 
     261                                                wrap_bin_ld "$out" "$bin" 
    224262                                        ;; 
    225263                                        *) 
    226                                                 echo "exec '$cmd' \"\$@\"" >> "$out" 
     264                                                wrap_bin_other "$out" "$bin" 
    227265                                        ;; 
    228266                                esac 
    229                                 chmod +x "$out" 
    230267                        fi 
    231268                done 
  • branches/backfire/scripts/patch-specs.sh

    r29925 r29949  
    22 
    33DIR="$1" 
    4 FOUND=0 
    54 
    65if [ -d "$DIR" ]; then 
     
    2726fi 
    2827 
    29 for lib in $(STAGING_DIR="$dir" "$CPP" -x c -v /dev/null 2>&1 | sed -ne 's#:# #g; s#^LIBRARY_PATH=##p'); do 
    30         if [ -d "$lib" ]; then 
    31                 grep -qs "STAGING_DIR" "$lib/specs" && rm -f "$lib/specs" 
    32                 if [ $FOUND -lt 1 ]; then 
    33                         echo -n "Patching specs ... " 
    34                         STAGING_DIR="$dir" "$CPP" -dumpspecs | awk ' 
    35                                 mode ~ "link" { 
    36                                         sub("%{L.}", "%{L*} -L %:getenv(STAGING_DIR /usr/lib) -rpath-link %:getenv(STAGING_DIR /usr/lib)") 
    37                                 } 
    38                                 mode ~ "cpp" { 
    39                                         $0 = $0 " -idirafter %:getenv(STAGING_DIR /usr/include)" 
    40                                 } 
    41                                 { 
    42                                         print $0 
    43                                         mode = "" 
    44                                 } 
    45                                 /^\*cpp:/ { 
    46                                         mode = "cpp" 
    47                                 } 
    48                                 /^\*link.*:/ { 
    49                                         mode = "link" 
    50                                 } 
    51                         ' > "$lib/specs" 
     28patch_specs() { 
     29        local found=0 
     30 
     31        for lib in $(STAGING_DIR="$DIR" "$CPP" -x c -v /dev/null 2>&1 | sed -ne 's#:# #g; s#^LIBRARY_PATH=##p'); do 
     32                if [ -d "$lib" ]; then 
     33                        grep -qs "STAGING_DIR" "$lib/specs" && rm -f "$lib/specs" 
     34                        if [ $found -lt 1 ]; then 
     35                                echo -n "Patching specs ... " 
     36                                STAGING_DIR="$DIR" "$CPP" -dumpspecs | awk ' 
     37                                        mode ~ "link" { 
     38                                                sub("%{L.}", "%{L*} -L %:getenv(STAGING_DIR /usr/lib) -rpath-link %:getenv(STAGING_DIR /usr/lib)") 
     39                                        } 
     40                                        mode ~ "cpp" { 
     41                                                $0 = $0 " -idirafter %:getenv(STAGING_DIR /usr/include)" 
     42                                        } 
     43                                        { 
     44                                                print $0 
     45                                                mode = "" 
     46                                        } 
     47                                        /^\*cpp:/ { 
     48                                                mode = "cpp" 
     49                                        } 
     50                                        /^\*link.*:/ { 
     51                                                mode = "link" 
     52                                        } 
     53                                ' > "$lib/specs" 
     54                                echo "ok" 
     55                                found=1 
     56                        fi 
     57                fi 
     58        done 
     59 
     60        [ $found -gt 0 ] 
     61        return $? 
     62} 
     63 
     64 
     65VERSION="$(STAGING_DIR="$DIR" "$CPP" --version | sed -ne 's/^.* (.*) //; s/ .*$//; 1p')" 
     66VERSION="${VERSION:-unknown}" 
     67 
     68case "${VERSION##* }" in 
     69        2.*|3.*|4.0.*|4.1.*|4.2.*) 
     70                echo "The compiler version does not support getenv() in spec files." 
     71                echo -n "Wrapping binaries instead ... " 
     72 
     73                if "${0%/*}/ext-toolchain.sh" --toolchain "$DIR" --wrap "${CPP%/*}"; then 
    5274                        echo "ok" 
    53                         FOUND=1 
     75                        exit 0 
     76                else 
     77                        echo "failed" 
     78                        exit $? 
    5479                fi 
    55         fi 
    56 done 
    57  
    58 if [ $FOUND -lt 1 ]; then 
    59         echo "Failed to locate library directory!" 
    60         exit 1 
    61 else 
    62         echo "Toolchain successfully patched." 
    63         exit 0 
    64 fi 
     80        ;; 
     81        *) 
     82                if patch_specs; then 
     83                        echo "Toolchain successfully patched." 
     84                        exit 0 
     85                else 
     86                        echo "Failed to locate library directory!" 
     87                        exit 1 
     88                fi 
     89        ;; 
     90esac 
Note: See TracChangeset for help on using the changeset viewer.