Ticket #939: 0001-lz4-Fix-confused-version-check.patch

File 0001-lz4-Fix-confused-version-check.patch, 2.9 KB (added by David Sommerseth, 2 years ago)

[PATCH] lz4: Fix confused version check

  • configure.ac

    From fe7e92c20b57bb7700a36ba35794182581ce6671 Mon Sep 17 00:00:00 2001
    From: David Sommerseth <davids@openvpn.net>
    Date: Mon, 2 Oct 2017 16:08:28 +0200
    Subject: [PATCH] lz4: Fix confused version check
    
    Older LZ4 library versions used a version number > 100 and not the
    current x.y.z versioning scheme.  This results in version 122 being
    numberically higher than the check we have liblz4 > 1.7.1.  And
    since that old version (122) does not have the LZ4_compress_default(),
    the building explodes later on.
    
    This patch enhances the version check to also ensure the version
    number is lower than 100.  In addition the function checking we
    had was not triggered if system library was found via pkg-config,
    so this have now been reworked to really check if we have at least
    two of the most important LZ4 functions - as long as a system
    library have been found or been accepted via the LZ4_{CFLAGS,LIBS}
    variables.
    
    There are more ways to check for functions in autoconf.  I opted
    for AC_CHECK_LIB() instead of AC_CHECK_FUNC{,S}() as the latter
    ones does not test if a function exists in a specific library. This
    have the downside of needing to tests instead of AC_CHECK_FUNCS()
    which could test for more functions in one go.  We also do not
    overwrite the LZ4_LIBS variable on success, as that could change
    already set library paths (-L)
    
    Finally, a stupid typo got fixed as well.
    
    Trac: 939
    Signed-off-by: David Sommerseth <davids@openvpn.net>
    Tested-by: Richard Bonhomme <fragmentux@gmail.com>
    ---
     configure.ac | 16 ++++++++++------
     1 file changed, 10 insertions(+), 6 deletions(-)
    
    diff --git a/configure.ac b/configure.ac
    index 74443353..394f5b09 100644
    a b if test "$enable_lz4" = "yes" && test "$enable_comp_stub" = "no"; then 
    10911091    if test -z "${LZ4_CFLAGS}" -a -z "${LZ4_LIBS}"; then
    10921092        # if the user did not explicitly specify flags, try to autodetect
    10931093        PKG_CHECK_MODULES([LZ4],
    1094                           [liblz4 >= 1.7.1],
     1094                          [liblz4 >= 1.7.1 liblz4 < 100],
    10951095                          [have_lz4="yes"],
    10961096                          [] # If this fails, we will do another test next
    10971097        )
    if test "$enable_lz4" = "yes" && test "$enable_comp_stub" = "no"; then 
    11311131        fi
    11321132    fi
    11331133
    1134     # if LZ4_LIBS is set, we assume it will work, otherwise test
    1135     if test -z "${LZ4_LIBS}"; then
     1134    # Double check we have a few needed functions
     1135    if test "${have_lz4}" = "yes" ; then
    11361136        AC_CHECK_LIB([lz4],
    1137                      [LZ4_compress],
    1138                      [LZ4_LIBS="-llz4"],
     1137                     [LZ4_compress_default],
     1138                     [],
     1139                     [have_lz4="no"])
     1140        AC_CHECK_LIB([lz4],
     1141                     [LZ4_decompress_safe],
     1142                     [],
    11391143                     [have_lz4="no"])
    11401144    fi
    11411145
    11421146    if test "${have_lz4}" != "yes" ; then
    1143         AC_MSG_RESULT([         usuable LZ4 library or header not found, using version in src/compat/compat-lz4.*])
     1147        AC_MSG_RESULT([         usable LZ4 library or header not found, using version in src/compat/compat-lz4.*])
    11441148        AC_DEFINE([NEED_COMPAT_LZ4], [1], [use copy of LZ4 source in compat/])
    11451149        LZ4_LIBS=""
    11461150    fi