libxcrypt/libxcrypt.spec

422 lines
14 KiB
RPMSpec
Raw Normal View History

# Build with new api?
#if 0%%{?fedora} >= 30 || 0%%{?rhel} >= 9
#bcond_without new_api
#else
%bcond_with new_api
#endif
2018-01-12 19:49:45 +00:00
# Shared object version of libcrypt.
%if %{with new_api}
%global soc 2
%global sol 0
%global sof 0
%global sov %{soc}.%{sol}.%{sof}
%global csoc 1
%global csol 1
%global csof 0
%global csov %{csoc}.%{csol}.%{csof}
%else
2018-01-12 19:49:45 +00:00
%global soc 1
%global sol 1
%global sof 0
%global sov %{soc}.%{sol}.%{sof}
%endif
# Needed for out-of-tree builds.
%global _configure ../configure
2018-01-12 19:49:45 +00:00
# Add generation of HMAC checksums of the final stripped
# binaries. %%define with lazy globbing is used here
# intentionally, because using %%global does not work.
%define __spec_install_post \
%{?__debug_package:%{__debug_install_post}} \
%{__arch_install_post} \
%{__os_install_post} \
%{_bindir}/fipshmac %{buildroot}/%{_lib}/libcrypt.so.%{sov} \
%{__ln_s} .libcrypt.so.%{sov}.hmac \\\
%{buildroot}/%{_lib}/.libcrypt.so.%{soc}.hmac \
if [[ %{with new_api} == 1 ]]; then \
%{_bindir}/fipshmac %{buildroot}/%{_lib}/libcrypt.so.%{csov} \
%{__ln_s} .libcrypt.so.%{csov}.hmac \\\
%{buildroot}/%{_lib}/.libcrypt.so.%{csoc}.hmac \
fi \
2018-01-12 19:49:45 +00:00
%{nil}
# Needed for shared licensedir.
%global _pkglicensedir %{_defaultlicensedir}/%{name}
2018-01-12 19:49:45 +00:00
Name: libxcrypt
2018-09-29 14:59:00 +00:00
Version: 4.2.1
Release: 2%{?dist}
2018-01-12 19:49:45 +00:00
Summary: Extended crypt library for DES, MD5, Blowfish and others
# For explicit license breakdown, see the
# LICENSING file in the source tarball.
License: LGPLv2+ and BSD and Public Domain
2018-01-12 19:49:45 +00:00
URL: https://github.com/besser82/%{name}
2018-01-27 15:46:57 +00:00
Source0: %{url}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
2018-01-12 19:49:45 +00:00
BuildRequires: fipscheck
BuildRequires: libtool
# We do not need to keep this forever.
%if %{without new_api} && (0%{?fedora} && 0%{?fedora} <= 31) || (0%{?rhel} && 0%{?rhel} <= 10)
# Inherited from former libcrypt package.
Obsoletes: libcrypt-nss <= 2.26.9000-33
2018-01-19 21:34:00 +00:00
# Obsolete former libcrypt properly.
Obsoletes: libcrypt <= 2.26.9000-46
# Provide virtual libcrypt as it has been done
# by former libcrypt{,-nss} packages from glibc.
Provides: libcrypt == 2.26.9000-47
Provides: libcrypt%{?_isa} == 2.26.9000-47
2018-01-19 21:34:00 +00:00
%endif
Requires: glibc%{_isa} >= 2.26.9000-46
Requires: %{name}-common == %{version}-%{release}
2018-01-12 19:49:45 +00:00
%description
libxcrypt is a modern library for one-way hashing of passwords. It
supports a wide variety of both modern and historical hashing methods:
yescrypt, bcrypt, SHA-2-512, SHA-2-256, SHA-1, MD5 (two variants),
DES (three variants), and NTHASH. It provides the traditional Unix
crypt and crypt_r interfaces, as well as a set of extended interfaces
pioneered by Openwall Linux, crypt_rn, crypt_ra, crypt_gensalt,
crypt_gensalt_rn, and crypt_gensalt_ra.
2018-01-12 19:49:45 +00:00
libxcrypt is intended to be used by login(1), passwd(1), and other
similar applications; that is, to hash a small number of passwords
during an interactive authentication dialogue with a human. It is
not suitable for use in bulk password-cracking applications, or in
any other situation where speed is more important than careful
handling of sensitive data. However, it is intended to be fast and
lightweight enough for use in servers that must field thousands of
login attempts per minute.
This version of the library does not provide the legacy API functions
that have been provided by glibc's libcrypt.so.1.
%package common
Summary: Common files for %{name}
BuildArch: noarch
%description common
This package contains common files for %{name}.
%if %{with new_api}
%package compat
Summary: Compatibility library providing legacy API functions
# We do not need to keep this forever.
%if (0%{?fedora} && 0%{?fedora} <= 31) || (0%{?rhel} && 0%{?rhel} <= 10)
# Inherited from former libcrypt package.
Obsoletes: libcrypt-nss <= 2.26.9000-33
# Obsolete former libcrypt properly.
Obsoletes: libcrypt <= 2.26.9000-46
# Provide virtual libcrypt as it has been done
# by former libcrypt{,-nss} packages from glibc.
Provides: libcrypt == 2.26.9000-47
Provides: libcrypt%{?_isa} == 2.26.9000-47
%endif
Requires: glibc%{_isa} >= 2.26.9000-46
Requires: %{name}-common == %{version}-%{release}
%description compat
This package contains the library providing the compatibility API for
applications that are still using the unsafe and deprecated encrypt,
encrypt_r, setkey, setkey_r, and fcrypt functions.
All existing binary executables linked against glibc's libcrypt should
work unmodified with this version of the libxcrypt.
%package compat-devel
Summary: Development files for %{name}-compat
Requires: %{name}-compat%{?_isa} == %{version}-%{release}
Requires: %{name}-devel%{?_isa} == %{version}-%{release}
%description compat-devel
You really do NOT need this package, unless your application needs to
be linked against one of the legacy API functions: encrypt, encrypt_r,
setkey, setkey_r, or fcrypt provided by libcrypt.so.1.
%endif
2018-01-12 19:49:45 +00:00
%package devel
Summary: Development files for %{name}
Conflicts: man-pages < 4.15-3
Requires: %{name}%{?_isa} == %{version}-%{release}
Requires: glibc-devel%{?_isa} >= 2.26.9000-46
Requires: glibc-headers%{?_isa} >= 2.26.9000-46
2018-01-12 19:49:45 +00:00
%description devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.
%package static
Summary: Static library for -static linking with %{name}
Requires: %{name}-compat-devel%{?_isa} == %{version}-%{release}
Requires: %{name}-devel%{?_isa} == %{version}-%{release}
Requires: glibc-static%{?_isa} >= 2.26.9000-46
2018-01-12 19:49:45 +00:00
%description static
This package contains the libxcrypt static libraries for -static
linking.
You don't need this, unless you link statically, which is highly
discouraged.
2018-01-12 19:49:45 +00:00
%prep
2018-01-27 16:14:06 +00:00
%autosetup -p 1
2018-01-12 19:49:45 +00:00
%{_bindir}/autoreconf -fiv
%{__mkdir_p} %{_vpath_builddir}{,-compat}
2018-01-12 19:49:45 +00:00
%build
pushd %{_vpath_builddir}
%if %{with new_api}
%configure \
--libdir=/%{_lib} \
--disable-silent-rules \
--enable-shared \
--enable-static \
--disable-failure-tokens \
--enable-hashes=strong,glibc \
--enable-obsolete-api=no \
--srcdir=.. \
--with-pkgconfigdir=%{_libdir}/pkgconfig
%make_build
popd
pushd %{_vpath_builddir}-compat
%endif
%configure \
--libdir=/%{_lib} \
--disable-silent-rules \
--enable-shared \
--enable-static \
--disable-failure-tokens \
--enable-hashes=all \
--enable-obsolete-api=glibc \
--srcdir=.. \
2018-01-12 19:49:45 +00:00
--with-pkgconfigdir=%{_libdir}/pkgconfig
%make_build
popd
2018-01-12 19:49:45 +00:00
%install
%if %{with new_api}
%make_install -C %{_vpath_builddir}-compat
%{__rm} -fr %{buildroot}%{_bindir} \
%{buildroot}%{_includedir} \
%{buildroot}%{_libdir}/pkgconfig/libcrypt.pc \
%{buildroot}%{_mandir} \
%{buildroot}%{_sbindir}
%{__mv} -f %{buildroot}/%{_lib}/libcrypt.so \
%{buildroot}/%{_lib}/libcrypt%{csoc}.so
%{__mv} -f %{buildroot}/%{_lib}/libcrypt.a \
%{buildroot}/%{_lib}/libcrypt%{csoc}.a
%{__mv} -f %{buildroot}%{_libdir}/pkgconfig/%{name}.pc \
%{buildroot}%{_libdir}/pkgconfig/%{name}%{csoc}.pc
%{__sed} -i -e 's!\-lcrypt!&%{csoc}!g' -e 's!%{name}!&%{csoc}!g' \
%{buildroot}%{_libdir}/pkgconfig/%{name}%{csoc}.pc
%{__ln_s} %{name}%{csoc}.pc \
%{buildroot}%{_libdir}/pkgconfig/libcrypt%{csoc}.pc
%endif
%make_install -C %{_vpath_builddir}
2018-01-12 19:49:45 +00:00
# Get rid of libtool crap.
%{_bindir}/find %{buildroot} -name '*.la' -print -delete
# Install documentation to shared %%_pkgdocdir.
%{__install} -Dpm 0644 -t %{buildroot}%{_pkgdocdir} \
ChangeLog NEWS README THANKS TODO
# Install license files to shared %%_licensedir.
%{__install} -Dpm 0644 -t %{buildroot}%{_pkglicensedir} \
AUTHORS COPYING.LIB LICENSING
2018-01-12 19:49:45 +00:00
%check
%if %{with new_api}
for dir in %{_vpath_builddir} %{_vpath_builddir}-compat; do
%else
for dir in %{_vpath_builddir}; do
%endif
%make_build -C ${dir} check || \
{
rc=$?;
echo "-----BEGIN TESTLOG: ${dir}-----";
%{__cat} ${dir}/test-suite.log;
echo "-----END TESTLOG: ${dir}-----";
exit $rc;
}
done
2018-01-12 19:49:45 +00:00
2018-02-17 08:45:54 +00:00
%ldconfig_scriptlets
%if %{with new_api}
%ldconfig_scriptlets compat
%endif
2018-01-12 19:49:45 +00:00
%files
/%{_lib}/.libcrypt.so.{%{soc},%{sov}}.hmac
/%{_lib}/libcrypt.so.{%{soc},%{sov}}
%files common
2018-01-12 19:49:45 +00:00
%doc %dir %{_pkgdocdir}
%doc %{_pkgdocdir}/NEWS
%doc %{_pkgdocdir}/README
%doc %{_pkgdocdir}/THANKS
%license %dir %{_pkglicensedir}
%license %{_pkglicensedir}/AUTHORS
%license %{_pkglicensedir}/COPYING.LIB
%license %{_pkglicensedir}/LICENSING
2018-01-12 19:49:45 +00:00
%{_mandir}/man5/crypt.5.*
%if %{with new_api}
%files compat
/%{_lib}/.libcrypt.so.{%{csoc},%{csov}}.hmac
/%{_lib}/libcrypt.so.{%{csoc},%{csov}}
%files compat-devel
/%{_lib}/libcrypt%{csoc}.so
%{_libdir}/pkgconfig/libcrypt%{csoc}.pc
%{_libdir}/pkgconfig/%{name}%{csoc}.pc
%endif
2018-01-12 19:49:45 +00:00
%files devel
%doc %{_pkgdocdir}/ChangeLog
%doc %{_pkgdocdir}/TODO
/%{_lib}/libcrypt.so
%{_includedir}/crypt.h
%{_libdir}/pkgconfig/{libcrypt,%{name}}.pc
%{_mandir}/man3/crypt{,_r,_ra,_rn}.3.*
%{_mandir}/man3/crypt_gensalt{,_ra,_rn}.3.*
2018-01-12 19:49:45 +00:00
%files static
/%{_lib}/libcrypt.a
%if %{with new_api}
/%{_lib}/libcrypt%{csoc}.a
%endif
2018-01-12 19:49:45 +00:00
%changelog
* Sun Sep 30 2018 Björn Esser <besser82@fedoraproject.org> - 4.2.1-2
- Build out-of-tree
- Split off noarch-bits into common sub-package
- Update %%description
- Prepare to remove legacy API from library and to provide a compatibilty
package for the legacy API
2018-09-29 14:59:00 +00:00
* Sat Sep 29 2018 Björn Esser <besser82@fedoraproject.org> - 4.2.1-1
- New upstream release
2018-09-29 15:05:25 +00:00
- Add new manpages
2018-09-29 14:59:00 +00:00
2018-09-29 14:24:38 +00:00
* Sat Sep 29 2018 Björn Esser <besser82@fedoraproject.org> - 4.2.0-1
- New upstream release
2018-08-24 10:26:54 +00:00
* Fri Aug 24 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.2-1
- New upstream release
* Wed Aug 08 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.1-4
- Move *.3 manpages to devel subpackage (#1613762)
- Add needed Conflicts: man-pages < 4.15-3
* Wed Aug 08 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.1-3
- Make crypt{,_r} return NULL on failure (#1611784)
* Sat Aug 04 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.1-2
- Add manpages for crypt{,_r,_ra}.3 (#1610307)
2018-08-01 09:54:10 +00:00
* Wed Aug 01 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.1-1
- New upstream release
2018-07-13 18:59:08 +00:00
* Fri Jul 13 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.0-1
- New upstream release
* Fri Jul 13 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.1-6
- Make testsuite fail on error again
- Update patch0 with more upstream fixes
* Fri Jul 13 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.1-5
- Add patch to update to recent development branch
- Re-enable SUNMD5 support as it is BSD licensed now
- Build compatibility symbols for glibc only
2018-07-13 10:07:18 +00:00
- Skip failing testsuite once
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Fri Jun 29 2018 Florian Weimer <fweimer@redhat.com> - 4.0.1-3
- Remove CDDL from license list (#1592445)
2018-06-29 12:45:29 +00:00
* Fri Jun 29 2018 Florian Weimer <fweimer@redhat.com> - 4.0.1-2
- Remove SUNMD5 support (#1592445)
2018-05-16 11:19:53 +00:00
* Wed May 16 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.1-1
- New upstream release
2018-02-17 08:45:54 +00:00
* Sat Feb 17 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-5
- Switch to %%ldconfig_scriptlets
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Feb 01 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-3
- Add patch to fix unintialize value in badsalt test
2018-01-31 00:24:17 +00:00
* Wed Jan 31 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-2
- Add patch to fix bcrypt test with GCC8
2018-01-27 15:46:57 +00:00
* Sat Jan 27 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-1
- New upstream release
* Mon Jan 22 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 4.0.0-0.204.20180120git3436e7b
- Fix Obsoletes
* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.203.20180120git3436e7b
- Update to new snapshot fixing cast-align
2018-01-20 20:21:31 +00:00
* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.202.20180120gitde99d27
- Update to new snapshot (rhbz#1536752)
* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.201.20171109git15447aa
- Use archful Obsoletes for libcrypt
- Add versioned Requires on glibc packages not shipping libcrypt
- Add comments about the packaging logic for replacing former libcrypt
2018-01-12 19:49:45 +00:00
* Fri Jan 12 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.200.20171109git15447aa
- Initial import (rhbz#1532794)
2018-01-19 21:34:00 +00:00
- Add Obsoletes/Provides for libcrypt
2018-01-12 19:49:45 +00:00
* Wed Jan 10 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.101.20171109git15447aa
- Fix style of %%git_{rel,ver}
* Tue Jan 09 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.100.git20171109.15447aa
- Initial rpm release (rhbz#1532794)
- Start revision at 0.100 to superseed builds from COPR