mirror of
https://abf.rosa.ru/djam/curl.git
synced 2025-02-23 15:52:59 +00:00
760 lines
23 KiB
RPMSpec
760 lines
23 KiB
RPMSpec
%define major 4
|
|
%define libname %mklibname %{name} %{major}
|
|
%define libname_libressl %mklibname %{name}-libressl %{major}
|
|
%define libname_gnutls %mklibname %{name}-gnutls %{major}
|
|
%define libname_mbedtls %mklibname %{name}-mbedtls %{major}
|
|
%define libname_wolfssl %mklibname %{name}-wolfssl %{major}
|
|
%define devname %mklibname %{name} -d
|
|
%define devname_libressl %mklibname %{name}-libressl -d
|
|
%define devname_gnutls %mklibname %{name}-gnutls -d
|
|
%define devname_mbedtls %mklibname %{name}-mbedtls -d
|
|
%define devname_wolfssl %mklibname %{name}-wolfssl -d
|
|
|
|
%define ssh2 0
|
|
|
|
# HTTP/3 / QUIC
|
|
%bcond_without quic
|
|
|
|
%bcond_without openssl
|
|
|
|
# Using libressl allows to support GOST TLS without pain
|
|
# test: curl https://www.cryptopro.ru:4444/test/tls-cli.asp
|
|
# Building a separate curl with libressl
|
|
%bcond_without libressl
|
|
|
|
# Quite a lot of third-party software is compiled on Debian/Ubuntu
|
|
# and is linked with libcurl dynamically, Debian's invention libcurl-gnutls.so
|
|
# becomes a runtime dependency. Build the same crap to satisfy runtime dependencies.
|
|
# Examples of such software:
|
|
# - OnlyOffice DesktopEditors (and probably R7 Office)
|
|
# - SberPro https://www.sberbank.ru/ru/legal/new/sbrfbusiness
|
|
# GnuTLS, btw, is also capable of GOST.
|
|
%bcond_without gnutls
|
|
|
|
# alternaatives SSL
|
|
# v5.7.0-stable https://github.com/wolfSSL/wolfssl
|
|
%bcond_without wolfssl
|
|
|
|
# Embedded TLS
|
|
%bcond_without mbedtls
|
|
|
|
# RusTLS
|
|
%bcond_with rustls
|
|
|
|
# Important! We perform autoreconf, then change resulting 'configure'
|
|
# script, this prevents if from regenerating after we have changed it.
|
|
%define _disable_rebuild_configure 1
|
|
|
|
#define _docs %{expand:
|
|
#doc _docs/CHANGES.md \
|
|
#doc _docs/COPYING \
|
|
#doc _docs/README \
|
|
#doc _docs/README.md \
|
|
#doc _docs/RELEASE-NOTES \
|
|
#doc _docs/SECURITY.md \
|
|
#doc _docs/docs/*.md
|
|
#}
|
|
|
|
%define ssl_list %{?with_openssl:openssl} %{?with_mbedtls:mbedtls} %{?with_libressl:libressl} %{?with_gnutls:gnutls} %{?with_wolfssl:wolfssl} %{?with_rustls:rustls}
|
|
|
|
%define shell_begin %{expand:for SSL in %%{ssl_list} ; \
|
|
do \
|
|
mkdir -p "$SSL" ;\
|
|
pushd "$SSL"}
|
|
%define shell_end popd; done
|
|
|
|
Summary: Gets a file from a FTP, GOPHER or HTTP server
|
|
Name: curl
|
|
Version: 8.12.1
|
|
Release: 1
|
|
Epoch: 1
|
|
License: BSD-like
|
|
Group: Networking/Other
|
|
URL: https://curl.se
|
|
# Release tarball does not have some useful docs
|
|
#Source0: https://curl.haxx.se/download/%{name}-%{version}.tar.xz
|
|
Source0: https://github.com/curl/curl/archive/curl-%(echo %{version} | sed -e 's,\.,_,g').tar.gz?/%{name}-%{version}.tar.gz
|
|
Source1000: %{name}.rpmlintrc
|
|
Patch0: %{name}-7.59.0-multilib.patch
|
|
Patch3: %{name}-libressl.patch
|
|
# mbedtls, check version for cipher id #13749 (https://github.com/curl/curl/pull/13749)
|
|
Patch4: https://github.com/curl/curl/commit/2afeacd27e5877000c205c255816aa62e5eeaa32.diff
|
|
BuildRequires: groff
|
|
BuildRequires: rsync
|
|
BuildRequires: stunnel
|
|
BuildRequires: openldap-devel
|
|
BuildRequires: pkgconfig(krb5)
|
|
BuildRequires: pkgconfig(libcares)
|
|
BuildRequires: pkgconfig(com_err)
|
|
#BuildRequires: pkgconfig(libidn)
|
|
BuildRequires: pkgconfig(libidn2)
|
|
%if 0%{?ssh2}
|
|
BuildRequires: pkgconfig(libssh2)
|
|
%else
|
|
BuildRequires: pkgconfig(libssh)
|
|
%endif
|
|
%if %{with libressl}
|
|
BuildRequires: pkgconfig(libressl)
|
|
%endif
|
|
%if %{with gnutls}
|
|
BuildRequires: pkgconfig(gnutls) >= 3.7.5
|
|
%endif
|
|
%if %{with wolfssl}
|
|
BuildRequires: pkgconfig(wolfssl) >= 5.7.0
|
|
%endif
|
|
%if %{with mbedtls}
|
|
BuildRequires: pkgconfig(mbedtls)
|
|
%endif
|
|
%if %{with rustls}
|
|
BuildRequires: pkgconfig(rustls)
|
|
%endif
|
|
|
|
#BuildRequires: pkgconfig(openssl)
|
|
#BuildRequires: openssl-devel
|
|
#BuildRequires: openssl
|
|
BuildRequires: pkgconfig(openssl3.3)
|
|
BuildRequires: pkgconfig(zlib)
|
|
BuildRequires: pkgconfig(krb5-gssapi)
|
|
BuildRequires: pkgconfig(libbrotlidec)
|
|
BuildRequires: pkgconfig(librtmp)
|
|
BuildRequires: pkgconfig(libnghttp2)
|
|
BuildRequires: pkgconfig(libgsasl)
|
|
BuildRequires: pkgconfig(libzstd)
|
|
BuildRequires: pkgconfig(libngtcp2)
|
|
# TODO: Package and enable libpsl support
|
|
Requires: %{libname} = %{EVRD}
|
|
Provides: webfetch = %{EVRD}
|
|
|
|
%description
|
|
curl is a client to get documents/files from servers, using any of the
|
|
supported protocols. The command is designed to work without user interaction
|
|
or any kind of interactivity.
|
|
It offers a busload of useful tricks like proxy support, user authentication,
|
|
ftp upload, HTTP post, file transfer resume and more.
|
|
This version is compiled with SSL (https) support.
|
|
|
|
%files
|
|
#_docs
|
|
%{_bindir}/%{name}
|
|
%{_mandir}/man1/%{name}.1*
|
|
|
|
#----------------------------------------------------------------------------
|
|
%if %{with libressl}
|
|
%package -n curl-libressl
|
|
Summary: Gets a file from a FTP, GOPHER or HTTP server
|
|
Group: Networking/Other
|
|
Provides: curl-gost = %{EVRD}
|
|
|
|
%description -n curl-libressl
|
|
curl is a client to get documents/files from servers, using any of the
|
|
supported protocols. The command is designed to work without user interaction
|
|
or any kind of interactivity.
|
|
It offers a busload of useful tricks like proxy support, user authentication,
|
|
ftp upload, HTTP post, file transfer resume and more.
|
|
This version is compiled with LibreSSL and is capable of GOST TLS.
|
|
|
|
%files -n curl-libressl
|
|
#_docs
|
|
%{_bindir}/curl-libressl
|
|
%{_bindir}/curl-gost
|
|
%endif
|
|
#----------------------------------------------------------------------------
|
|
|
|
%if %{with gnutls}
|
|
%package -n curl-gnutls
|
|
Summary: Gets a file from a FTP, GOPHER or HTTP server
|
|
Group: Networking/Other
|
|
|
|
%description -n curl-gnutls
|
|
curl is a client to get documents/files from servers, using any of the
|
|
supported protocols. The command is designed to work without user interaction
|
|
or any kind of interactivity.
|
|
It offers a busload of useful tricks like proxy support, user authentication,
|
|
ftp upload, HTTP post, file transfer resume and more.
|
|
This version is compiled with GnuTLS library.
|
|
|
|
%files -n curl-gnutls
|
|
#_docs
|
|
%{_bindir}/curl-gnutls
|
|
%endif
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%if %{with mbedtls}
|
|
%package -n curl-mbedtls
|
|
Summary: Gets a file from a FTP, GOPHER or HTTP server
|
|
Group: Networking/Other
|
|
|
|
%description -n curl-mbedtls
|
|
curl is a client to get documents/files from servers, using any of the
|
|
supported protocols. The command is designed to work without user interaction
|
|
or any kind of interactivity.
|
|
It offers a busload of useful tricks like proxy support, user authentication,
|
|
ftp upload, HTTP post, file transfer resume and more.
|
|
This version is compiled with MbedTLS library.
|
|
|
|
%files -n curl-mbedtls
|
|
#_docs
|
|
%{_bindir}/curl-mbedtls
|
|
%endif
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%if %{with wolfssl}
|
|
%package -n curl-wolfssl
|
|
Summary: Gets a file from a FTP, GOPHER or HTTP server
|
|
Group: Networking/Other
|
|
|
|
%description -n curl-wolfssl
|
|
curl is a client to get documents/files from servers, using any of the
|
|
supported protocols. The command is designed to work without user interaction
|
|
or any kind of interactivity.
|
|
It offers a busload of useful tricks like proxy support, user authentication,
|
|
ftp upload, HTTP post, file transfer resume and more.
|
|
This version is compiled with WolfSSL library.
|
|
|
|
%files -n curl-wolfssl
|
|
#_docs
|
|
%{_bindir}/curl-wolfssl
|
|
%endif
|
|
#----------------------------------------------------------------------------
|
|
|
|
%package -n %{libname}
|
|
Summary: A library of functions for file transfer
|
|
Group: Networking/Other
|
|
Requires: rootcerts
|
|
|
|
%description -n %{libname}
|
|
libcurl is a library of functions for sending and receiving files through
|
|
various protocols, including http and ftp.
|
|
You should install this package if you plan to use any applications that
|
|
use libcurl.
|
|
|
|
%files -n %{libname}
|
|
#_docs
|
|
%{_libdir}/libcurl.so.%{major}*
|
|
|
|
#----------------------------------------------------------------------------
|
|
%if %{with libressl}
|
|
%package -n %{libname_libressl}
|
|
Summary: A library of functions for file transfer
|
|
Group: Networking/Other
|
|
Requires: rootcerts
|
|
|
|
%description -n %{libname_libressl}
|
|
libcurl is a library of functions for sending and receiving files through
|
|
various protocols, including http and ftp.
|
|
You should install this package if you plan to use any applications that
|
|
use libcurl.
|
|
libcurl-libressl is linked with LibreSSL and is capable of GOST TLS.
|
|
|
|
%files -n %{libname_libressl}
|
|
#_docs
|
|
%{_libdir}/libcurl-libressl.so.%{major}*
|
|
%endif
|
|
#----------------------------------------------------------------------------
|
|
|
|
%if %{with gnutls}
|
|
%package -n %{libname_gnutls}
|
|
Summary: A library of functions for file transfer
|
|
Group: Networking/Other
|
|
Requires: rootcerts
|
|
|
|
%description -n %{libname_gnutls}
|
|
libcurl is a library of functions for sending and receiving files through
|
|
various protocols, including http and ftp.
|
|
You should install this package if you plan to use any applications that
|
|
use libcurl.
|
|
libcurl-gnutls is linked with GnuTLS library.
|
|
|
|
%files -n %{libname_gnutls}
|
|
#_docs
|
|
%{_libdir}/libcurl-gnutls.so.%{major}*
|
|
%endif
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%if %{with mbedtls}
|
|
%package -n %{libname_mbedtls}
|
|
Summary: A library of functions for file transfer
|
|
Group: Networking/Other
|
|
Requires: rootcerts
|
|
|
|
%description -n %{libname_mbedtls}
|
|
libcurl is a library of functions for sending and receiving files through
|
|
various protocols, including http and ftp.
|
|
You should install this package if you plan to use any applications that
|
|
use libcurl.
|
|
libcurl-mbedtls is linked with MbedTLS library.
|
|
|
|
%files -n %{libname_mbedtls}
|
|
#_docs
|
|
%{_libdir}/libcurl-mbedtls.so.%{major}*
|
|
%endif
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%if %{with wolfssl}
|
|
%package -n %{libname_wolfssl}
|
|
Summary: A library of functions for file transfer
|
|
Group: Networking/Other
|
|
Requires: rootcerts
|
|
|
|
%description -n %{libname_wolfssl}
|
|
libcurl is a library of functions for sending and receiving files through
|
|
various protocols, including http and ftp.
|
|
You should install this package if you plan to use any applications that
|
|
use libcurl.
|
|
libcurl-wolfssl is linked with WolfSSL library.
|
|
|
|
%files -n %{libname_wolfssl}
|
|
#_docs
|
|
%{_libdir}/libcurl-wolfssl.so.%{major}*
|
|
%endif
|
|
#----------------------------------------------------------------------------
|
|
|
|
%package -n %{devname}
|
|
Summary: Header files and static libraries for libcurl
|
|
Group: Development/C
|
|
Requires: %{libname} = %{EVRD}
|
|
Provides: %{name}-devel = %{EVRD}
|
|
|
|
%description -n %{devname}
|
|
libcurl is a library of functions for sending and receiving files through
|
|
various protocols, including http and ftp.
|
|
You should install this package if you wish to develop applications that
|
|
use libcurl.
|
|
|
|
%files -n %{devname}
|
|
#_docs
|
|
%{_bindir}/%{name}-config
|
|
%{_libdir}/libcurl.so
|
|
%{_includedir}/%{name}
|
|
#exclude %{_includedir}/curl-libressl
|
|
%{_libdir}/pkgconfig/libcurl.pc
|
|
%{_datadir}/aclocal/*.m4
|
|
#{_mandir}/man1/%{name}-config.1*
|
|
%{_mandir}/man3/*
|
|
|
|
#----------------------------------------------------------------------------
|
|
%if %{with libressl}
|
|
|
|
%package -n %{devname_libressl}
|
|
Summary: Header files and devel libraries for libcurl with LibreSSL
|
|
Group: Development/C
|
|
Requires: %{libname_libressl} = %{EVRD}
|
|
Provides: %{name}-libressl-devel = %{EVRD}
|
|
Provides: %{name}-gost-devel = %{EVRD}
|
|
|
|
%description -n %{devname_libressl}
|
|
libcurl is a library of functions for sending and receiving files through
|
|
various protocols, including http and ftp.
|
|
You should install this package if you wish to develop applications that
|
|
use libcurl linked with LibreSSL and capable of GOST.
|
|
|
|
%files -n %{devname_libressl}
|
|
#_docs
|
|
%{_includedir}/curl-libressl
|
|
%{_libdir}/pkgconfig/libcurl-libressl.pc
|
|
%{_libdir}/libcurl-libressl.so
|
|
|
|
%endif
|
|
#----------------------------------------------------------------------------
|
|
|
|
%if %{with gnutls}
|
|
|
|
%package -n %{devname_gnutls}
|
|
Summary: Header files and devel libraries for libcurl with gnutls
|
|
Group: Development/C
|
|
Requires: %{libname_gnutls} = %{EVRD}
|
|
Provides: %{name}-gnutls-devel = %{EVRD}
|
|
|
|
%description -n %{devname_gnutls}
|
|
libcurl is a library of functions for sending and receiving files through
|
|
various protocols, including http and ftp.
|
|
You should install this package if you wish to develop applications that
|
|
use libcurl linked with gnutls and capable of GOST.
|
|
|
|
%files -n %{devname_gnutls}
|
|
#_docs
|
|
%{_includedir}/curl-gnutls
|
|
%{_libdir}/pkgconfig/libcurl-gnutls.pc
|
|
%{_libdir}/libcurl-gnutls.so
|
|
|
|
%endif
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%if %{with mbedtls}
|
|
|
|
%package -n %{devname_mbedtls}
|
|
Summary: Header files and devel libraries for libcurl with mbedtls
|
|
Group: Development/C
|
|
Requires: %{libname_mbedtls} = %{EVRD}
|
|
Provides: %{name}-mbedtls-devel = %{EVRD}
|
|
|
|
%description -n %{devname_mbedtls}
|
|
libcurl is a library of functions for sending and receiving files through
|
|
various protocols, including http and ftp.
|
|
You should install this package if you wish to develop applications that
|
|
use libcurl linked with gnutls and capable of GOST.
|
|
|
|
%files -n %{devname_mbedtls}
|
|
#_docs
|
|
%{_includedir}/curl-mbedtls
|
|
%{_libdir}/pkgconfig/libcurl-mbedtls.pc
|
|
%{_libdir}/libcurl-mbedtls.so
|
|
|
|
%endif
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%if %{with wolfssl}
|
|
|
|
%package -n %{devname_wolfssl}
|
|
Summary: Header files and devel libraries for libcurl with wolfssl
|
|
Group: Development/C
|
|
Requires: %{libname_wolfssl} = %{EVRD}
|
|
Provides: %{name}-wolfssl-devel = %{EVRD}
|
|
|
|
%description -n %{devname_wolfssl}
|
|
libcurl is a library of functions for sending and receiving files through
|
|
various protocols, including http and ftp.
|
|
You should install this package if you wish to develop applications that
|
|
use libcurl linked with gnutls and capable of GOST.
|
|
|
|
%files -n %{devname_wolfssl}
|
|
#_docs
|
|
%{_includedir}/curl-wolfssl
|
|
%{_libdir}/pkgconfig/libcurl-wolfssl.pc
|
|
%{_libdir}/libcurl-wolfssl.so
|
|
|
|
%endif
|
|
#----------------------------------------------------------------------------
|
|
|
|
%package examples
|
|
Summary: Example files for %{name} development
|
|
Group: Development/C
|
|
Requires: %{name}-devel = %{EVRD}
|
|
BuildArch: noarch
|
|
|
|
%description examples
|
|
Example files for %{name} development.
|
|
|
|
%files examples
|
|
%doc docs/examples
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%prep
|
|
%setup -q -n curl-curl-%(echo %{version} | sed -e 's,\.,_,g')
|
|
cp libcurl.pc.in libcurl.pc.in.0
|
|
|
|
#patch3 -p1
|
|
#patch4 -p1
|
|
#apply_patches
|
|
|
|
# Prevent configure script from discarding -g in CFLAGS
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=496778
|
|
for i in flags_dbg_all flags_opt_all flags_opt_yes flags_dbg_yes
|
|
do
|
|
sed -i'' -E -e "s,flags_dbg_yes=.+,flags_dbg_yes=''," m4/curl-compilers.m4
|
|
done
|
|
# after Patch3 curl-libressl.patch
|
|
# 0 - original (OpenSSL), 1 - patched (LibreSSL)
|
|
cp libcurl.pc.in libcurl.pc.in.1
|
|
regexp="$(echo %{ssl_list} | sed -e 's, ,|,g')"
|
|
for i in %{ssl_list}; do
|
|
mkdir -p "$i"
|
|
cp -r $(ls -1v | grep -vE "$regexp") "$i"/
|
|
done
|
|
|
|
# remove "-DEV" from useragent ("curl/7.74.0-DEV" -> "curl/7.74.0")
|
|
sed -i -e 's,-DEV\",\",' include/curl/curlver.h
|
|
|
|
# %%_docs copy docs/*.md, remove odd ones
|
|
#rm -fv docs/README.md
|
|
# build scripts seem to remove useful files, backup them
|
|
#mkdir -p _docs/
|
|
#rsync -av --relative --progress $(echo "%_docs" | sed -e 's,%doc,,g' -e 's,_docs/,,g') _docs/
|
|
|
|
#rm -fr $(ls -1v | grep -vE "${regexp}|docs|COPYING|CHANGES")
|
|
|
|
%build
|
|
%setup_compile_flags
|
|
%shell_begin
|
|
|
|
ADD_CONF_OPTS=""
|
|
case "$SSL" in
|
|
libressl )
|
|
libressl_prefix=/opt/libressl/
|
|
with_gnutls=without
|
|
with_openssl=with
|
|
with_quic=without
|
|
cp libcurl.pc.in.1 libcurl.pc.in
|
|
export PREFIX_OPENSSL=/opt/openssl3.3
|
|
# validate that correct file is being used
|
|
grep -q LIBRESSL_ libcurl.pc.in
|
|
new_libname=libcurl-libressl
|
|
sed -i'' m4/curl-openssl.m4 \
|
|
-e 's,openssl.pc,libressl.pc,g' \
|
|
-e 's,PKGCONFIG(openssl,PKGCONFIG(libressl,g' \
|
|
-e 's,$PREFIX_OPENSSL/lib$libsuff,$PREFIX_OPENSSL/lib,g'
|
|
# $LIBS apply to libcurl.so only, so there will not be overlinking
|
|
# even if to add -lxxx here
|
|
export LIBS="$(pkg-config --cflags-only-I --libs-only-L libressl)"
|
|
export CFLAGS="$LIBS"
|
|
# export PREFIX_OPENSSL=%{libressl_prefix}
|
|
# It will be /usr/include/curl-libressl/curl
|
|
# to allow '#include <curl/xxx.h> to work with -I/usr/include/curl-libressl
|
|
ADD_CONF_OPTS="\
|
|
--includedir=%{_includedir}/curl-libressl \
|
|
--with-openssl \
|
|
--without-wolfssl \
|
|
--without-gnutls \
|
|
--without-mbedtls \
|
|
--without-nghttp3 \
|
|
--with-libressl \
|
|
"
|
|
;;
|
|
openssl )
|
|
with_gnutls=without
|
|
with_openssl=with
|
|
with_quic=with
|
|
cp libcurl.pc.in.0 libcurl.pc.in
|
|
! grep -q LIBRESSL_ libcurl.pc.in
|
|
new_libname=libcurl
|
|
export LIBS="$(pkg-config --cflags-only-I --libs-only-L openssl)"
|
|
export CFLAGS="$LIBS"
|
|
export PREFIX_OPENSSL=/opt/openssl3.3
|
|
ADD_CONF_OPTS="\
|
|
--with-openssl=/opt/openssl3.3 \
|
|
--without-libressl \
|
|
--without-wolfssl \
|
|
--without-gnutls \
|
|
--without-mbedtls \
|
|
--with-nghttp3 \
|
|
--with-openssl-quic \
|
|
--without-ngtcp2 \
|
|
--without-quiche \
|
|
--without-msh3 \
|
|
"
|
|
;;
|
|
gnutls )
|
|
with_gnutls=with
|
|
with_openssl=without
|
|
with_quic=without
|
|
export PREFIX_OPENSSL=/opt/openssl3.3
|
|
new_libname=libcurl-gnutls
|
|
# It will be /usr/include/curl-libressl/gnutls
|
|
# to allow '#include <curl/xxx.h> to work with -I/usr/include/curl-gnuttls
|
|
ADD_CONF_OPTS="\
|
|
--includedir=%{_includedir}/curl-gnutls \
|
|
--with-gnutls \
|
|
--without-nghttp3 \
|
|
--without-libressl \
|
|
--without-wolfssl \
|
|
--without-mbedtls \
|
|
PREFIX_OPENSSL=/opt/openssl3.3 \
|
|
"
|
|
;;
|
|
mbedtls )
|
|
with_gnutls=without
|
|
with_openssl=without
|
|
with_quic=without
|
|
new_libname=libcurl-mbedtls
|
|
# It will be /usr/include/curl-libressl/gnutls
|
|
# to allow '#include <curl/xxx.h> to work with -I/usr/include/curl-gnuttls
|
|
ADD_CONF_OPTS="\
|
|
--includedir=%{_includedir}/curl-mbedtls \
|
|
--with-mbedtls \
|
|
--without-wolfssl \
|
|
--without-nghttp3 \
|
|
--without-openssl \
|
|
--without-libressl \
|
|
"
|
|
;;
|
|
wolfssl )
|
|
with_gnutls=without
|
|
with_openssl=without
|
|
with_quic=without
|
|
new_libname=libcurl-wolfssl
|
|
# It will be /usr/include/curl-libressl/gnutls
|
|
# to allow '#include <curl/xxx.h> to work with -I/usr/include/curl-gnuttls
|
|
ADD_CONF_OPTS="\
|
|
--includedir=%{_includedir}/curl-wolfssl \
|
|
--with-wolfssl \
|
|
--without-mbedtls \
|
|
--without-openssl \
|
|
--without-nghttp3 \
|
|
"
|
|
;;
|
|
* ) echo 'Unknown $SSL' && exit 1 ;;
|
|
esac
|
|
|
|
autoreconf -fiv
|
|
sed -i configure \
|
|
-e "s,\$libname,${new_libname},g" \
|
|
-e "s,\${libname},${new_libname},g"
|
|
|
|
#configure --help
|
|
#exit 1
|
|
|
|
%configure \
|
|
--disable-static \
|
|
--${with_openssl}-openssl \
|
|
--${with_gnutls}-gnutls \
|
|
--without-bearssl \
|
|
--with-zlib \
|
|
--with-lber-lib=lber \
|
|
--with-libidn2 \
|
|
%if 0%{?ssh2}
|
|
--with-ssh2 \
|
|
%else
|
|
--with-libssh \
|
|
%endif
|
|
--with-random \
|
|
--enable-hidden-symbols \
|
|
--enable-optimize \
|
|
--enable-nonblocking \
|
|
--enable-thread \
|
|
--enable-crypto-auth \
|
|
--enable-libgcc \
|
|
--enable-ldaps \
|
|
--enable-ipv6 \
|
|
--with-ca-bundle=%{_openssldir}/certs/ca-bundle.crt \
|
|
--with-gssapi=%{_prefix} \
|
|
--enable-ares \
|
|
--enable-tls-srp \
|
|
--without-libpsl \
|
|
--with-brotli \
|
|
--with-librtmp \
|
|
--with-nghttp2 \
|
|
--enable-websockets \
|
|
$ADD_CONF_OPTS --
|
|
|
|
#--enable-ech
|
|
#--with-hyper
|
|
|
|
%make
|
|
|
|
# we don't want them in curl-examples:
|
|
rm -r docs/examples/.deps ||:
|
|
find docs/examples -name .gitignore -print -delete
|
|
|
|
%shell_end
|
|
|
|
%install
|
|
install -d %{buildroot}%{_bindir} \
|
|
%{buildroot}%{_libdir}/pkgconfig \
|
|
%{buildroot}%{_includedir}
|
|
|
|
%shell_begin
|
|
case "$SSL" in
|
|
openssl )
|
|
%makeinstall_std
|
|
;;
|
|
libressl )
|
|
tmp="$(mktemp -d -p $PWD)"
|
|
mkdir -p "$tmp"
|
|
make DESTDIR="${tmp}" install
|
|
mv -v ${tmp}%{_bindir}/curl %{buildroot}%{_bindir}/curl-libressl
|
|
mv -v ${tmp}%{_libdir}/libcurl-libressl* %{buildroot}%{_libdir}
|
|
mv -v ${tmp}%{_includedir}/curl-libressl %{buildroot}%{_includedir}/
|
|
cat ${tmp}%{_libdir}/pkgconfig/libcurl.pc | \
|
|
sed -r \
|
|
-e 's,^Name:.+,Name: libcurl-libressl,g' \
|
|
-e 's,-lcurl,-lcurl-libressl,g' \
|
|
-e "s,@LIBRESSL_LIBS@,$(pkg-config --libs-only-L libressl),g" \
|
|
-e "s,@LIBRESSL_LIBS_PRIVATE@,,g" \
|
|
-e "s,@LIBRESSL_CFLAGS@,$(pkg-config --cflags-only-I libressl),g" \
|
|
> %{buildroot}%{_libdir}/pkgconfig/libcurl-libressl.pc
|
|
#rm -fr "$tmp"
|
|
;;
|
|
gnutls )
|
|
tmp="$(mktemp -d -p $PWD)"
|
|
mkdir -p "$tmp"
|
|
make DESTDIR="${tmp}" install
|
|
mv -v ${tmp}%{_bindir}/curl %{buildroot}%{_bindir}/curl-gnutls
|
|
mv -v ${tmp}%{_libdir}/libcurl-gnutls* %{buildroot}%{_libdir}
|
|
mv -v ${tmp}%{_includedir}/curl-gnutls %{buildroot}%{_includedir}/
|
|
cat ${tmp}%{_libdir}/pkgconfig/libcurl.pc | \
|
|
sed -r \
|
|
-e 's,^Name:.+,Name: libcurl-gnutls,g' \
|
|
-e 's,-lcurl,-lcurl-gnutls,g' \
|
|
-e 's,-I$\{includedir\},-I$\{includedir\} -I$\{includedir\}/curl-gnutls,' \
|
|
> %{buildroot}%{_libdir}/pkgconfig/libcurl-gnutls.pc
|
|
;;
|
|
mbedtls )
|
|
tmp="$(mktemp -d -p $PWD)"
|
|
mkdir -p "$tmp"
|
|
make DESTDIR="${tmp}" install
|
|
mv -v ${tmp}%{_bindir}/curl %{buildroot}%{_bindir}/curl-mbedtls
|
|
mv -v ${tmp}%{_libdir}/libcurl-mbedtls* %{buildroot}%{_libdir}
|
|
mv -v ${tmp}%{_includedir}/curl-mbedtls %{buildroot}%{_includedir}/
|
|
cat ${tmp}%{_libdir}/pkgconfig/libcurl.pc | \
|
|
sed -r \
|
|
-e 's,^Name:.+,Name: libcurl-mbedtls,g' \
|
|
-e 's,-lcurl,-lcurl-mbedtls,g' \
|
|
-e 's,-I$\{includedir\},-I$\{includedir\} -I$\{includedir\}/curl-mbedtls,' \
|
|
> %{buildroot}%{_libdir}/pkgconfig/libcurl-mbedtls.pc
|
|
;;
|
|
wolfssl )
|
|
tmp="$(mktemp -d -p $PWD)"
|
|
mkdir -p "$tmp"
|
|
make DESTDIR="${tmp}" install
|
|
mv -v ${tmp}%{_bindir}/curl %{buildroot}%{_bindir}/curl-wolfssl
|
|
mv -v ${tmp}%{_libdir}/libcurl-wolfssl* %{buildroot}%{_libdir}
|
|
mv -v ${tmp}%{_includedir}/curl-wolfssl %{buildroot}%{_includedir}/
|
|
cat ${tmp}%{_libdir}/pkgconfig/libcurl.pc | \
|
|
sed -r \
|
|
-e 's,^Name:.+,Name: libcurl-wolfssl,g' \
|
|
-e 's,-lcurl,-lcurl-wolfssl,g' \
|
|
-e 's,-I$\{includedir\},-I$\{includedir\} -I$\{includedir\}/curl-wolfssl,' \
|
|
> %{buildroot}%{_libdir}/pkgconfig/libcurl-wolfssl.pc
|
|
;;
|
|
* ) echo 'Unknown $SSL' && exit 1 ;;
|
|
esac
|
|
|
|
%shell_end
|
|
|
|
# [july 2008] HACK. to be replaced by a real fix
|
|
#sed -i -e 's!-Wl,--as-needed!!' -e 's!-Wl,--no-undefined!!' %{buildroot}%{_bindir}/%{name}-config
|
|
#sed -i -e 's!-Wl,--as-needed!!' -e 's!-Wl,--no-undefined!!' %{buildroot}%{_libdir}/pkgconfig/*.pc
|
|
|
|
# (tpg) use rootcerts's certificates #35917
|
|
find %{buildroot} -name ca-bundle.crt -exec rm -f '{}' \;
|
|
|
|
# we don't package mk-ca-bundle so we don't need man for it
|
|
rm -f %{buildroot}%{_mandir}/man1/mk-ca-bundle.1*
|
|
|
|
%if %{with libressl}
|
|
( cd %{buildroot}%{_bindir} ; ln -s curl-libressl curl-gost )
|
|
%endif
|
|
|
|
%check
|
|
export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
|
|
%if %{with libressl}
|
|
readelf -a %{buildroot}%{_bindir}/curl-libressl | grep NEEDED | grep -q libcurl-libressl
|
|
readelf -a %{buildroot}%{_libdir}/libcurl-libressl.so | grep SONAME | grep -q libcurl-libressl
|
|
readelf -a %{buildroot}%{_libdir}/libcurl-libressl.so | grep NEEDED | grep -q 'libssl.so.%{libressl_libssl_sover}'
|
|
readelf -a %{buildroot}%{_libdir}/libcurl-libressl.so | grep NEEDED | grep -q 'libcrypto.so.%{libressl_libcrypto_sover}'
|
|
#readelf -a %{buildroot}%{_libdir}/libcurl-gnutls.so | grep NEEDED | grep -q 'libgnutls.so.'
|
|
#! readelf -a %{buildroot}%{_libdir}/libcurl.so | grep SONAME | grep -q libcurl-libressl
|
|
#readelf -a %{buildroot}%{_libdir}/libcurl-gnutls.so | grep SONAME | grep -q libcurl-gnutls
|
|
# Check that GSS-API has been enabled
|
|
#readelf -a %{buildroot}%{_libdir}/libcurl.so | grep NEEDED | grep -q libgssapi
|
|
readelf -a %{buildroot}%{_libdir}/libcurl-libressl.so | grep NEEDED | grep -q libgssapi
|
|
#readelf -a %{buildroot}%{_libdir}/libcurl-gnutls.so | grep NEEDED | grep -q libgssapi
|
|
# This test will not fail if there is no connection with internet
|
|
# --insecure to ignore missing SSL certificate
|
|
if %{buildroot}%{_bindir}/curl-libressl --insecure \
|
|
"https://www.cryptopro.ru:4444/test/tls-cli.asp" 2>&1 | \
|
|
grep -q ':unsupported algorithm$' ;
|
|
then
|
|
echo "GOST is not supported"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
%endif
|