From: Terry Burton Date: Tue, 8 Dec 2020 18:48:56 +0000 (+0000) Subject: Require cURL >= 7.56.0 for rlm_smtp (#3785) X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0c74d710facd87ccf85cf2bf0d13c310884202db;p=thirdparty%2Ffreeradius-server.git Require cURL >= 7.56.0 for rlm_smtp (#3785) * Require cURL >= 7.56.0 for rlm_smtp Uses rlm_mime_init() el al. * Perform software version comparison for rlm_smtp in GNU Make --- diff --git a/src/lib/curl/all.mk.in b/src/lib/curl/all.mk.in index 85f83a28559..feed07c1f48 100644 --- a/src/lib/curl/all.mk.in +++ b/src/lib/curl/all.mk.in @@ -1,4 +1,5 @@ TARGETNAME := @targetname@ +VERSION := @version@ ifneq "$(TARGETNAME)" "" TARGET := $(TARGETNAME).a diff --git a/src/lib/curl/configure b/src/lib/curl/configure index 7ce5c90fd12..e3c1d68b5a0 100755 --- a/src/lib/curl/configure +++ b/src/lib/curl/configure @@ -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. diff --git a/src/lib/curl/configure.ac b/src/lib/curl/configure.ac index d8b2a7f822f..21c8132dacb 100644 --- a/src/lib/curl/configure.ac +++ b/src/lib/curl/configure.ac @@ -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) diff --git a/src/modules/rlm_smtp/all.mk b/src/modules/rlm_smtp/all.mk index 0d507865313..aee1cc2bd1f 100644 --- a/src/modules/rlm_smtp/all.mk +++ b/src/modules/rlm_smtp/all.mk @@ -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