mirror of
https://abf.rosa.ru/djam/curl.git
synced 2025-02-23 07:43:02 +00:00
Build libcurl-gnutls
This commit is contained in:
parent
0623c4430a
commit
dca161e63b
1 changed files with 110 additions and 9 deletions
119
curl.spec
119
curl.spec
|
@ -1,8 +1,10 @@
|
|||
%define major 4
|
||||
%define libname %mklibname %{name} %{major}
|
||||
%define libname_libressl %mklibname %{name}-libressl %{major}
|
||||
%define libname_gnutls %mklibname %{name}-gnutls %{major}
|
||||
%define devname %mklibname %{name} -d
|
||||
%define devname_libressl %mklibname %{name}-libressl -d
|
||||
%define devname_gnutls %mklibname %{name}-gnutls -d
|
||||
|
||||
%define ssh2 0
|
||||
|
||||
|
@ -11,6 +13,15 @@
|
|||
# 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
|
||||
|
||||
# Important! We perform autoreconf, then change resulting 'configure'
|
||||
# script, this prevents if from regenerating after we have changed it.
|
||||
%define _disable_rebuild_configure 1
|
||||
|
@ -28,11 +39,8 @@
|
|||
%doc _docs/docs/*.md
|
||||
}
|
||||
|
||||
%if %{with libressl}
|
||||
%define ssl_list openssl libressl
|
||||
%else
|
||||
%define ssl_list openssl
|
||||
%endif
|
||||
%define ssl_list openssl %{?with_libressl:libressl} %{?with_gnutls:gnutls}
|
||||
|
||||
%define shell_begin %{expand:for SSL in %%{ssl_list} ; \
|
||||
do \
|
||||
mkdir -p "$SSL" ;\
|
||||
|
@ -42,7 +50,7 @@
|
|||
Summary: Gets a file from a FTP, GOPHER or HTTP server
|
||||
Name: curl
|
||||
Version: 7.75.0
|
||||
Release: 1
|
||||
Release: 2
|
||||
Epoch: 1
|
||||
License: BSD-like
|
||||
Group: Networking/Other
|
||||
|
@ -70,6 +78,9 @@ BuildRequires: pkgconfig(libssh)
|
|||
%if %{with libressl}
|
||||
BuildRequires: pkgconfig(libressl)
|
||||
%endif
|
||||
%if %{with gnutls}
|
||||
BuildRequires: pkgconfig(gnutls)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(openssl)
|
||||
BuildRequires: pkgconfig(zlib)
|
||||
BuildRequires: pkgconfig(krb5-gssapi)
|
||||
|
@ -112,6 +123,25 @@ This version is compiled with LibreSSL and is capable of GOST TLS.
|
|||
%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
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%package -n %{libname}
|
||||
Summary: A library of functions for file transfer
|
||||
Group: Networking/Other
|
||||
|
@ -147,6 +177,25 @@ libcurl-libressl is linked with LibreSSL and is capable of GOST TLS.
|
|||
%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
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%package -n %{devname}
|
||||
Summary: Header files and static libraries for libcurl
|
||||
Group: Development/C
|
||||
|
@ -195,6 +244,29 @@ use libcurl linked with LibreSSL and capable of GOST.
|
|||
%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
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%package examples
|
||||
Summary: Example files for %{name} development
|
||||
Group: Development/C
|
||||
|
@ -240,6 +312,7 @@ rm -fr $(ls -1v | grep -vE "${regexp}|docs|COPYING|CHANGES")
|
|||
ADD_CONF_OPTS=""
|
||||
case "$SSL" in
|
||||
libressl )
|
||||
with_gnutls=without
|
||||
cp libcurl.pc.in.1 libcurl.pc.in
|
||||
# validate that correct file is being used
|
||||
grep -q LIBRESSL_ libcurl.pc.in
|
||||
|
@ -260,12 +333,23 @@ case "$SSL" in
|
|||
"
|
||||
;;
|
||||
openssl )
|
||||
with_gnutls=without
|
||||
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=%{_prefix}
|
||||
ADD_CONF_OPTS=""
|
||||
;;
|
||||
gnutls )
|
||||
with_gnutls=with
|
||||
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 \
|
||||
"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -277,7 +361,7 @@ sed -i configure \
|
|||
%configure \
|
||||
--disable-static \
|
||||
--with-ssl=off \
|
||||
--without-gnutls \
|
||||
--${with_gnutls}-gnutls \
|
||||
--without-bearssl \
|
||||
--with-zlib \
|
||||
--with-lber-lib=lber \
|
||||
|
@ -317,7 +401,7 @@ case "$SSL" in
|
|||
%makeinstall_std
|
||||
;;
|
||||
libressl )
|
||||
tmp="$(mktemp -d -p $(pwd))"
|
||||
tmp="$(mktemp -d -p $PWD)"
|
||||
mkdir -p "$tmp"
|
||||
make DESTDIR="${tmp}" install
|
||||
mv -v ${tmp}%{_bindir}/curl %{buildroot}%{_bindir}/curl-libressl
|
||||
|
@ -333,6 +417,20 @@ case "$SSL" in
|
|||
> %{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
|
||||
;;
|
||||
* ) echo 'Unknown $SSL' && exit 1 ;;
|
||||
esac
|
||||
|
||||
|
@ -359,9 +457,13 @@ readelf -a %{buildroot}%{_bindir}/curl-libressl | grep NEEDED | grep -q libcurl-
|
|||
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 \
|
||||
|
@ -372,4 +474,3 @@ then
|
|||
exit 1
|
||||
fi
|
||||
%endif
|
||||
readelf -a %{buildroot}%{_libdir}/libcurl.so | grep NEEDED | grep -q libgssapi
|
||||
|
|
Loading…
Add table
Reference in a new issue