| #!/usr/bin/env bash | 
|   | 
| # This is a script to find, and correct, a problem with old versions of | 
| # configure that affect powerpc64 and powerpc64le. | 
|   | 
| # The issue causes configure to incorrectly determine that shared library | 
| # support is not present in the linker. This causes the package to build a | 
| # static library rather than a dynamic one and although the build will succeed, | 
| # it may cause packages that link with the static library it to fail due to | 
| # undefined symbols. | 
|   | 
| # This script searches for files named 'configure' that appear to have this | 
| # issue (by searching for a known bad pattern) and patching them. | 
|   | 
| set -e | 
|   | 
| if [ $# -ne 1 ]; then | 
|     echo "Usage: $0 <package build directory>" | 
|     exit 2 | 
| fi | 
|   | 
| srcdir="$1" | 
| files=$(cd "$srcdir" && find . -name configure \ | 
| -exec grep -qF 'Generated by GNU Autoconf' {} \; \ | 
| -exec grep -qF 'ppc*-*linux*|powerpc*-*linux*)' {} \; -print) | 
|   | 
| # --ignore-whitespace is needed because some packages have included | 
| # copies of configure scripts where tabs have been replaced with spaces. | 
| for c in $files; do | 
|     patch --ignore-whitespace "$srcdir"/"$c" <<'EOF' | 
| --- a/configure    2016-11-16 15:31:46.097447271 +1100 | 
| +++ b/configure    2008-07-21 12:17:23.000000000 +1000 | 
| @@ -4433,7 +4433,10 @@ | 
|          x86_64-*linux*) | 
|            LD="${LD-ld} -m elf_x86_64" | 
|            ;; | 
| -        ppc*-*linux*|powerpc*-*linux*) | 
| +      powerpcle-*linux*) | 
| +        LD="${LD-ld} -m elf64lppc" | 
| +        ;; | 
| +      powerpc-*linux*) | 
|            LD="${LD-ld} -m elf64ppc" | 
|            ;; | 
|          s390*-*linux*) | 
| EOF | 
| done |