#
# Conditional build:
-%bcond_without static_libs # don't build static library
+%bcond_with dietlibc # don't build static dietlibc library
+%bcond_with libcap # Linux capabilities usage
#
Summary: Cryptographic library based on the code from GnuPG
Summary(es.UTF-8): Libgcrypt es una biblioteca general de desarrole embasada em GnuPG
Summary(pl.UTF-8): Biblioteka kryptograficzna oparta na kodzie GnuPG
Summary(pt_BR.UTF-8): libgcrypt é uma biblioteca de criptografia de uso geral baseada no GnuPG
Name: libgcrypt
-Version: 1.4.0
+Version: 1.8.4
Release: 1
License: LGPL v2.1+
Group: Libraries
-# devel versions:
-#Source0: ftp://ftp.gnupg.org/gcrypt/alpha/libgcrypt/%{name}-%{version}.tar.gz
Source0: ftp://ftp.gnupg.org/gcrypt/libgcrypt/%{name}-%{version}.tar.bz2
-# Source0-md5: b013f798a1088afb07336bce5a9c24c5
+# Source0-md5: fbfdaebbbc6d7e5fbbf6ffdb3e139573
Patch0: %{name}-info.patch
-Patch1: %{name}-sparc64.patch
-Patch2: %{name}-libgcrypt_config.patch
-URL: http://www.gnu.org/directory/security/libgcrypt.html
+Patch1: %{name}-libgcrypt_config.patch
+Patch2: %{name}-poll.patch
+URL: http://directory.fsf.org/wiki/Libgcrypt
BuildRequires: autoconf >= 2.60
-BuildRequires: automake >= 1:1.9.3
+BuildRequires: automake >= 1:1.14
BuildRequires: binutils >= 2:2.12
+%{?with_dietlibc:BuildRequires: dietlibc-static >= 2:0.31-5}
BuildRequires: gcc >= 5:3.2
-BuildRequires: libgpg-error-devel >= 0.5
-BuildRequires: libtool >= 1:1.4.3
+%{?with_libcap:BuildRequires: libcap-devel}
+BuildRequires: libgpg-error-devel >= 1.25
+BuildRequires: libtool >= 2:2.2.6
BuildRequires: texinfo
+Requires: libgpg-error >= 1.25
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+# for some reason known only to rpm there must be "\\|" not "\|" here
+%define dietarch %(echo %{_target_cpu} | sed -e 's/i.86\\|pentium.\\|athlon/i386/;s/amd64/x86_64/;s/armv.*/arm/')
+%define dietlibdir %{_prefix}/lib/dietlibc/lib-%{dietarch}
+
%description
This is a general purpose cryptographic library based on the code from
GnuPG. It provides functions for all cryptograhic building blocks:
Libgcrypt é uma biblioteca de criptografia de uso geral baseada no
GnuPG.
+%package tools
+Summary: Additional binary tools for libgcrypt
+Summary(pl.UTF-8): Dodatkowe narzędzia dla biblioteki libgcrypt
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description tools
+Additional binary tools for libgcrypt.
+
+%description tools -l pl.UTF-8
+Dodatkowe narzędzia dla biblioteki libgcrypt.
+
%package devel
Summary: Header files etc to develop libgcrypt applications
Summary(es.UTF-8): Archivos de desarrollo de libgcrypt
Summary(pt_BR.UTF-8): Arquivos de desenvolvimento da libgcrypt
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
-Requires: libgpg-error-devel >= 0.5
+%{?with_libcap:Requires: libcap-devel}
+Requires: libgpg-error-devel >= 1.25
%description devel
Header files etc to develop libgcrypt applications.
%description static -l pt_BR.UTF-8
Bibliotecas de desenvolvimento para libgcrypt - estático.
+%package dietlibc
+Summary: Static dietlibc libgcrypt library
+Summary(pl.UTF-8): Biblioteka statyczna dietlibc libgcrypt
+Group: Development/Libraries
+Requires: %{name}-devel = %{version}-%{release}
+
+%description dietlibc
+Static dietlibc libgcrypt library.
+
+%description dietlibc -l pl.UTF-8
+Biblioteka statyczna dietlibc libgcrypt.
+
%prep
%setup -q
%patch0 -p1
%patch2 -p1
%build
-rm -f m4/libtool.m4
+%{__rm} m4/libtool.m4
%{__libtoolize}
%{__aclocal} -I m4
%{__autoconf}
%{__automake}
+
+%if %{with dietlibc}
+%configure \
+ CC="diet %{__cc} %{rpmcflags} %{rpmldflags} -Os" \
+ --enable-static \
+ --disable-shared
+
+# libtool sucks, build just the libs
+%{__make} -C compat
+%{__make} -C cipher
+%{__make} -C mpi
+%{__make} -C random
+%{__make} -C src \
+ PROGRAMS=
+mv src/.libs/libgcrypt.a diet-libgcrypt.a
+%{__make} clean
+%endif
+
%configure \
--enable-static \
- %{!?with_static_libs:--disable-static}
+ %{?with_libcap:--with-capabilities}
%{__make}
%install
rm -rf $RPM_BUILD_ROOT
+%{?with_dietlibc:install -d $RPM_BUILD_ROOT%{dietlibdir}}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT \
ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libgcrypt.so.*.*.*) \
$RPM_BUILD_ROOT%{_libdir}/libgcrypt.so
+%{?with_dietlibc:install diet-libgcrypt.a $RPM_BUILD_ROOT%{dietlibdir}/libgcrypt.a}
+
%clean
rm -rf $RPM_BUILD_ROOT
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
-%post devel -p /sbin/postshell
+%post devel -p /sbin/postshell
-/usr/sbin/fix-info-dir -c %{_infodir}
-%postun devel -p /sbin/postshell
+%postun devel -p /sbin/postshell
-/usr/sbin/fix-info-dir -c %{_infodir}
%files
%defattr(644,root,root,755)
%doc AUTHORS ChangeLog NEWS README THANKS TODO
%attr(755,root,root) /%{_lib}/libgcrypt.so.*.*.*
-%attr(755,root,root) %ghost /%{_lib}/libgcrypt.so.11
+%attr(755,root,root) %ghost /%{_lib}/libgcrypt.so.20
+
+%files tools
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/dumpsexp
+%attr(755,root,root) %{_bindir}/hmac256
+%attr(755,root,root) %{_bindir}/mpicalc
+%{_mandir}/man1/hmac256.1*
%files devel
%defattr(644,root,root,755)
%{_includedir}/gcrypt*.h
%{_aclocaldir}/libgcrypt.m4
-%if %{with static_libs}
%files static
%defattr(644,root,root,755)
%{_libdir}/libgcrypt.a
+
+%if %{with dietlibc}
+%files dietlibc
+%defattr(644,root,root,755)
+%{dietlibdir}/libgcrypt.a
%endif