]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Require cURL >= 7.56.0 for rlm_smtp (#3785)
authorTerry Burton <tez@terryburton.co.uk>
Tue, 8 Dec 2020 18:48:56 +0000 (18:48 +0000)
committerGitHub <noreply@github.com>
Tue, 8 Dec 2020 18:48:56 +0000 (11:48 -0700)
* Require cURL >= 7.56.0 for rlm_smtp

Uses rlm_mime_init() el al.

* Perform software version comparison for rlm_smtp in GNU Make

src/lib/curl/all.mk.in
src/lib/curl/configure
src/lib/curl/configure.ac
src/modules/rlm_smtp/all.mk

index 85f83a28559068953b2de17a60ad00b0d6ccadc7..feed07c1f4830caa18cb21e6c5570606507ed1d6 100644 (file)
@@ -1,4 +1,5 @@
 TARGETNAME     := @targetname@
+VERSION                := @version@
 
 ifneq "$(TARGETNAME)" ""
 TARGET         := $(TARGETNAME).a
index 7ce5c90fd12ab62b347c07ed68789ac5a5107f14..e3c1d68b5a070504b492660c764da91b4a8643fb 100755 (executable)
@@ -586,6 +586,7 @@ ac_unique_file="base.c"
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 targetname
+version
 mod_ldflags
 mod_cflags
 LIBCURL
@@ -3272,6 +3273,8 @@ $as_echo "$as_me: Sanitized cflags are \"$(echo "${LIBCURL_CPPFLAGS}" | sed 's/-
        fi
 
        targetname=libfreeradius-curl
+       version="$libcurl_cv_lib_curl_version"
+
 else
        targetname=
        echo \*\*\* module libfreeradius-curl is disabled.
index d8b2a7f822f51df608e8ba10710ca36e6f1b27a7..21c8132dacbee9a0b8fcff727384a6782bd9fc0f 100644 (file)
@@ -40,6 +40,8 @@ if test x$with_[]modname != xno; then
        fi
 
        targetname=modname
+       version="$libcurl_cv_lib_curl_version"
+
 else
        targetname=
        echo \*\*\* module modname is disabled.
@@ -62,6 +64,7 @@ mod_cflags="$LIBCURL_CPPFLAGS"
 AC_SUBST(mod_cflags)
 AC_SUBST(mod_ldflags)
 
+AC_SUBST(version)
 
 AC_SUBST(targetname)
 AC_OUTPUT(all.mk)
index 0d50786531333eb31961ee62b5b906d9ba036a9d..aee1cc2bd1f6c07393843149b0be1a6f6a237c34 100644 (file)
@@ -1,12 +1,36 @@
+#
+#  Functions for comparing versions, taken from:
+#
+#    https://stackoverflow.com/a/15637871/2568535
+#
+S              :=
+SP             := $S $S
+str.eq         = $(if $(subst $1,,$2),$S,T)
+str.le         = $(call str.eq,$(word 1,$(sort $1 $2)),$1)
+mklist         = $(eval __tmp := $1)$(foreach i,0 1 2 3 4 5 6 7 8 9,$(eval __tmp := $$(subst $$i,$$i ,$(__tmp))))$(__tmp)
+shift          = $(wordlist 2, $(words $1), $1)
+num.le         = $(eval __tmp1 := $(call mklist,$1))$(eval __tmp2 := $(call mklist,$2))$(if $(call str.eq,$(words $(__tmp1)),$(words $(__tmp2))),$(call str.le,$1,$2),$(call str.le,$(words $(__tmp1)),$(words $(__tmp2))))
+list.strip     = $(eval __flag := 1)$(foreach d,$1,$(if $(__flag),$(if $(subst 0,,$d),$(eval __flag :=)$d,$S),$d))
+gen.cmpstr     = $(eval __Tmp1 := $(subst ., ,$1))$(eval __Tmp2 := $(subst ., ,$2))$(foreach i,$(__Tmp1),$(eval j := $(word 1,$(__Tmp2)))$(if $j,$(if $(call str.eq,$i,$j),0,$(if $(call num.le,$i,$j),L,G)),G)$(eval __Tmp2 := $$(call shift,$(__Tmp2))))$(if $(__Tmp2), L)
+ver.lt                 = $(call str.eq,$(word 1,$(call list.strip,$(call gen.cmpstr,$1,$2))),L)
+
 #  Check to see if we libfreeradius-curl, as that's a hard dependency
 #  which in turn depends on json-c.
 TARGETNAME     :=
+VERSION                :=
 -include $(top_builddir)/src/lib/curl/all.mk
 TARGET         :=
 
 ifneq "$(TARGETNAME)" ""
+
+#  Require cURL >= 7.56.0
+CURL_TOO_OLD := $(call ver.lt,$(VERSION),7.56.0)
+
+ifneq "$(CURL_TOO_OLD)" "T"
 TARGET         := rlm_smtp.a
 TGT_PREREQS    += libfreeradius-curl.a
 endif
 
+endif
+
 SOURCES                := rlm_smtp.c