eval "$(
  declare -f build | \
    sed '
      /install\( .*\)\? -race /d
    '
  declare -f package_go-pie package | \
    sed '
      s,\(/linux_\)amd64\([_/]\),\1386\2,g
    '
)"

eval "$(
  declare -f build check _package \
    | sed '
      s/\(export GOARCH=\)amd64/\1386 /
    '
)"

# 1.16 dropped non-SSE2 floating point operations, so we must
# use software floating points (see https://github.com/golang/go/issues/40255)
if [ "$CARCH" = 'i686' -o "$CARCH" = 'i486' ]; then
  eval "$(
    declare -f build \
      | sed '
        2 a export GO386='softfloat'
      '
    declare -f check \
      | sed '
        2 a export GO386='softfloat'
      '
  )"
fi

# https://go-review.googlesource.com/c/go/+/257963
source+=('go-x87.patch')
sha256sums+=('8b124eaa7521bd0e3760b514829b1ecce3d3cd169f99c3629ff50b7769303802')
eval "$(
  {
    declare -f prepare || \
    printf 'prepare() { cd "$pkgname" \n}\n'
  } \
  | sed '
    $i patch -Np1 -i ../go-x87.patch
  '
)"