Edit

kc3-lang/brotli/bootstrap

Branch :

  • Show log

    Commit

  • Author : Ryan Schmidt
    Date : 2022-05-11 11:20:39
    Hash : c9eb8569
    Message : Fix bootstrap on macOS (#965) * bootstrap: Verify functionality of sed Check for the existence of sed by running a simple substitution rather than using the --version flag. This lets us remove the weird exclusion of FreeBSD from checking the sed requirement, and fixes checking the sed requirement on other systems like macOS that use BSD sed, which doesn't support --version. * bootstrap: Detect flag for sed extended RE Detect whether sed needs -E or -r to enable extended regular expressions. Fixes bootstrap on macOS, whose BSD sed does not support -r. GNU sed has supported -E as a synonym for -r since version 4.2 (2009), initially as an undocumented option for compatibility with BSD sed: http://git.savannah.gnu.org/cgit/sed.git/commit/sed/sed.c?id=3a8e165ab02487c372df217c1989e287625ce0ae and later as a documented option after -E became POSIX: http://git.savannah.gnu.org/cgit/sed.git/commit/sed/sed.c?id=8b65e07904384b529a464c89f3739d2e7e4d5135

  • bootstrap
  • #!/bin/sh -e
    
    REQUIRED='is required, but not installed.'
    bc -v >/dev/null 2>&1 || { echo >&2 "'bc' $REQUIRED"; exit 1; }
    [ "x`echo hello | sed s/hello/world/ 2>/dev/null`" = "xworld" ] || { echo >&2 "'sed' $REQUIRED"; exit 1; }
    autoreconf --version >/dev/null 2>&1 || { echo >&2 "'autoconf' $REQUIRED"; exit 1; }
    
    # Determine which flag sed uses for extended regular expressions.
    # -E is POSIX. -r is for GNU sed older than 4.2.
    echo hello | sed -E s/hello/world/ >/dev/null 2>&1 && SED_ERE=-E || SED_ERE=-r
    
    # If libtool is not installed -> "error: Libtool library used but 'LIBTOOL' is undefined"
    
    if [ ! -e "./m4" ]; then
    mkdir m4 2>/dev/null
    fi
    
    BROTLI_ABI_HEX=`sed -n 's/#define BROTLI_ABI_VERSION 0x//p' c/common/version.h`
    BROTLI_ABI_INT=`echo "ibase=16;$BROTLI_ABI_HEX" | bc`
    BROTLI_ABI_CURRENT=`echo "$BROTLI_ABI_INT / 16777216" | bc`
    BROTLI_ABI_REVISION=`echo "$BROTLI_ABI_INT / 4096 % 4096" | bc`
    BROTLI_ABI_AGE=`echo "$BROTLI_ABI_INT % 4096" | bc`
    BROTLI_ABI_INFO="$BROTLI_ABI_CURRENT:$BROTLI_ABI_REVISION:$BROTLI_ABI_AGE"
    
    BROTLI_VERSION_HEX=`sed -n 's/#define BROTLI_VERSION 0x//p' c/common/version.h`
    BROTLI_VERSION_INT=`echo "ibase=16;$BROTLI_VERSION_HEX" | bc`
    BROTLI_VERSION_MAJOR=`echo "$BROTLI_VERSION_INT / 16777216" | bc`
    BROTLI_VERSION_MINOR=`echo "$BROTLI_VERSION_INT / 4096 % 4096" | bc`
    BROTLI_VERSION_PATCH=`echo "$BROTLI_VERSION_INT % 4096" | bc`
    BROTLI_VERSION="$BROTLI_VERSION_MAJOR.$BROTLI_VERSION_MINOR.$BROTLI_VERSION_PATCH"
    
    sed -i.bak "$SED_ERE" "s/[0-9]+:[0-9]+:[0-9]+/$BROTLI_ABI_INFO/" Makefile.am
    sed -i.bak "$SED_ERE" "s/\[[0-9]+\.[0-9]+\.[0-9]+\]/[$BROTLI_VERSION]/" configure.ac
    
    autoreconf --install --force --symlink || exit $