#
# Conditonal build:
-%bcond_without initrd # don't build initrd version
-%bcond_without dietlibc # build initrd version with static glibc instead of dietlibc
-%bcond_without python # Python binding
+%bcond_with initrd # don't build initrd version
+%bcond_with dietlibc # build initrd version with static glibc instead of dietlibc
+%bcond_with gcrypt # use gcrypt for crypto (instead of openssl)
+%bcond_with passwdqc # password quality checking via libpasswdqc [conflicts with pwquality]
+%bcond_with pwquality # password quality checking via libpwquality [conflicts with passwdqc]
+%bcond_without tests # "make check" run
Summary: LUKS for dm-crypt implemented in cryptsetup
Summary(pl.UTF-8): LUKS dla dm-crypta zaimplementowany w cryptsetup
Name: cryptsetup
-Version: 1.4.1
-Release: 2
+Version: 2.7.0
+Release: 1
License: GPL v2
Group: Base
-#Source0Download: http://code.google.com/p/cryptsetup/downloads/list
-Source0: http://cryptsetup.googlecode.com/files/%{name}-%{version}.tar.bz2
-# Source0-md5: 9253b3f29abf5c6f333eb74128b0df1c
-Source1: initramfs-root-conf
-Source2: initramfs-root-hook
-Source3: initramfs-root-local-top
-Source4: initramfs-passdev-hook
-Source5: initramfs-README
+Source0: https://www.kernel.org/pub/linux/utils/cryptsetup/v2.7/%{name}-%{version}.tar.xz
+# Source0-md5: 7210d45a19703bca547e8ba190278cb0
Patch0: diet.patch
-Patch1: dont-drag-more-libs.patch
-URL: http://code.google.com/p/cryptsetup/
+Patch1: no_pty_tests.patch
+URL: https://gitlab.com/cryptsetup/cryptsetup
BuildRequires: autoconf >= 2.67
-BuildRequires: automake
-BuildRequires: device-mapper-devel >= 1.02.03
-BuildRequires: gettext-devel >= 0.15
-BuildRequires: libgcrypt-devel >= 1.1.42
+BuildRequires: automake >= 1:1.12
+BuildRequires: device-mapper-devel >= 1.02.27
+BuildRequires: gettext-tools >= 0.21
+BuildRequires: json-c-devel
+BuildRequires: libargon2-devel >= 20171227
+BuildRequires: libblkid-devel
+%{?with_gcrypt:BuildRequires: libgcrypt-devel >= 1.6.1}
+BuildRequires: libgpg-error-devel
+%{?with_pwquality:BuildRequires: libpwquality-devel >= 1.0.0}
BuildRequires: libselinux-devel
BuildRequires: libsepol-devel
+BuildRequires: libssh-devel
BuildRequires: libtool >= 2:2.0
BuildRequires: libuuid-devel
+BuildRequires: linux-libc-headers >= 7:6.4
+%{!?with_gcrypt:BuildRequires: openssl-devel >= 0.9.8}
+%{?with_passwdqc:BuildRequires: passwdqc-devel}
+BuildRequires: pkgconfig
BuildRequires: popt-devel >= 1.7
-Provides: cryptsetup-luks = %{version}-%{release}
-Obsoletes: cryptsetup-luks < 1.4.1-2
-%if %{with python}
-BuildRequires: python-devel >= 1:2.4
-BuildRequires: rpm-pythonprov
-%endif
+BuildRequires: ruby-asciidoctor
+BuildRequires: tar >= 1:1.22
+BuildRequires: xz
%if %{with initrd}
BuildRequires: libgpg-error-static
%if %{with dietlibc}
-BuildRequires: device-mapper-dietlibc
+BuildRequires: device-mapper-dietlibc >= 1.02.27
BuildRequires: dietlibc-static
-BuildRequires: libgcrypt-dietlibc
+BuildRequires: libgcrypt-dietlibc >= 1.6.1
BuildRequires: libuuid-dietlibc
BuildRequires: popt-dietlibc
%else
-BuildRequires: device-mapper-static >= 1.02.07
-BuildRequires: libgcrypt-static >= 1.1.42
+BuildRequires: device-mapper-static >= 1.02.27
+BuildRequires: libgcrypt-static >= 1.6.1
BuildRequires: libselinux-static
BuildRequires: libsepol-static
BuildRequires: libuuid-static
BuildRequires: popt-static
+BuildRequires: udev-static
%endif
%endif
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+Requires: device-mapper >= 1.02.27
+%{?with_gcrypt:Requires: libgcrypt >= 1.6.1}
+%{?with_pwquality:Requires: libpwquality >= 1.0.0}
Requires: popt >= 1.7
-Provides: cryptsetup = %{version}
-Obsoletes: cryptsetup
+Provides: cryptsetup-luks = %{version}-%{release}
+Obsoletes: cryptsetup-luks < 1.4.1-2
+%{!?with_initrd:Obsoletes: cryptsetup-initrd < %{version}-%{release}}
+Obsoletes: python-pycryptsetup < 2.1.0
Conflicts: udev < 1:118-1
Conflicts: udev-core < 1:115
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
Ten pakiet zawiera implementację LUKS dla dm-crytpa zaimplementowaną w
cryptsetup.
+%package libs
+Summary: cryptsetup shared library
+Summary(pl.UTF-8): Biblioteka współdzielona cryptsetup
+Group: Libraries
+
+%description libs
+cryptsetup shared library.
+
+%description libs -l pl.UTF-8
+Biblioteka współdzielona cryptsetup.
+
%package devel
Summary: Header files for cryptsetup library
Summary(pl.UTF-8): Pliki nagłówkowe biblioteki cryptsetup
Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
-Requires: device-mapper-devel
-Requires: libgcrypt-devel >= 1.1.42
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+Requires: device-mapper-devel >= 1.02.27
+Requires: json-c-devel
+Requires: libargon2-devel >= 20171227
+Requires: libblkid-devel
+%{?with_gcrypt:Requires: libgcrypt-devel >= 1.6.1}
+Requires: libuuid-devel
+%{!?with_gcrypt:Requires: openssl-devel >= 0.9.8}
Provides: cryptsetup-luks-devel = %{version}-%{release}
Obsoletes: cryptsetup-luks-devel < 1.4.1-2
%description static -l pl.UTF-8
Statyczna wersja biblioteki cryptsetup.
-%package -n python-pycryptsetup
-Summary: Python binding for cryptsetup library
-Summary(pl.UTF-8): Wiązanie Pythona do biblioteki cryptsetup
-Group: Libraries/Python
-Requires: %{name}-libs = %{version}-%{release}
-%pyrequires_eq python-libs
-
-%description -n python-pycryptsetup
-Python binding for cryptsetup library.
-
-%description -n python-pycryptsetup -l pl.UTF-8
-Wiązanie Pythona do biblioteki cryptsetup.
-
%package initrd
Summary: LUKS for dm-crypt implemented in cryptsetup - initrd version
Summary(pl.UTF-8): LUKS dla dm-crypta zaimplementowany w cryptsetup - wersja initrd
Ten pakiet zawiera implementację LUKS dla dm-crypta zaimplementowaną w
cryptsetup - wersję statycznie zlinkowaną dla initrd.
-%package initramfs
-Summary: LUKS for dm-crypt implemented in cryptsetup - support scripts for initramfs-tools
-Summary(pl.UTF-8): LUKS dla dm-crypta zaimplementowany w cryptsetup - skrypty dla initramfs-tools
-Group: Base
-Requires: %{name} = %{version}-%{release}
-Requires: initramfs-tools
-Provides: cryptsetup-luks-initramfs = %{version}-%{release}
-Obsoletes: cryptsetup-luks-initramfs < 1.4.1-2
-
-%description initramfs
-LUKS for dm-crypt implemented in cryptsetup - support scripts for
-initramfs-tools.
-
-%description initramfs -l pl.UTF-8
-LUKS dla dm-crypta zaimplementowany w cryptsetup - skrypty dla
-initramfs-tools.
-
%prep
%setup -q
-%patch0 -p1
+%{?with_diet:%patch0 -p1}
%patch1 -p1
-cp -p %{SOURCE5} README.initramfs
-
%{__rm} po/stamp-po
%build
CC="%{__cc}"
%configure \
%if %{with dietlibc}
-%configure \
CC="diet ${CC#ccache } %{rpmcppflags} %{rpmcflags} %{rpmldflags} -Os" \
LIBS="-lcompat" \
ac_cv_lib_popt_poptConfigFileToString=yes \
%if "%{?configure_cache}" == "1"
--cache-file=%{?configure_cache_file}%{!?configure_cache_file:configure}-initrd.cache \
%endif
+ --disable-nls \
--disable-shared \
+ --disable-silent-rules \
--enable-static \
--enable-static-cryptsetup \
- --disable-udev \
- --disable-nls
+ --with-crypto-backend=gcrypt \
+ --with-luks2-lock-path=/var/run/%{name} \
+ --with-tmpfilesdir=%{systemdtmpfilesdir}
%{__make} -C lib
-lpopt -lgcrypt -lgpg-error -ldevmapper -luuid -lcompat
%else
%{__make} -C src
-mv src/cryptsetup cryptsetup-initrd
+%{__mv} src/cryptsetup cryptsetup-initrd
%endif
%{__make} clean
%endif
%configure \
- --enable-udev \
+ --enable-libargon2 \
+ %{?with_passwdqc:--enable-passwdqc=/etc/passwdqc.conf} \
+ %{?with_pwquality:--enable-pwquality} \
+ --disable-silent-rules \
--enable-static \
- %{?with_python:--enable-python}
+ --enable-udev \
+ %{?with_gcrypt:--with-crypto-backend=gcrypt} \
+ --with-luks2-lock-path=/var/run/%{name} \
+ --with-tmpfilesdir=%{systemdtmpfilesdir}
%{__make}
+%{?with_tests:%{__make} check}
+
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{_datadir}/initramfs-tools/{conf-hooks.d,hooks,scripts/local-top}
+
+install -d $RPM_BUILD_ROOT/var/run/cryptsetup
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT/%{_lib}
-mv -f $RPM_BUILD_ROOT%{_libdir}/libcryptsetup.so.* $RPM_BUILD_ROOT/%{_lib}
+%{__mv} $RPM_BUILD_ROOT%{_libdir}/libcryptsetup.so.* $RPM_BUILD_ROOT/%{_lib}
ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libcryptsetup.so.*.*.*) \
$RPM_BUILD_ROOT%{_libdir}/libcryptsetup.so
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/cryptsetup/libcryptsetup-*.{la,a}
+
%if %{with initrd}
install -d $RPM_BUILD_ROOT%{_libdir}/initrd
install -p cryptsetup-initrd $RPM_BUILD_ROOT%{_libdir}/initrd/cryptsetup
%endif
-install -p %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/initramfs-tools/conf-hooks.d/cryptsetup
-install -p %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/initramfs-tools/hooks/cryptroot
-install -p %{SOURCE3} $RPM_BUILD_ROOT%{_datadir}/initramfs-tools/scripts/local-top/cryptroot
-install -p %{SOURCE4} $RPM_BUILD_ROOT%{_datadir}/initramfs-tools/hooks/cryptpassdev
-
-%{?with_python:%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/pycryptsetup.{la,a}}
-
%find_lang %{name}
%clean
rm -rf $RPM_BUILD_ROOT
-%post -p /sbin/ldconfig
-%postun -p /sbin/ldconfig
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
%files -f %{name}.lang
%defattr(644,root,root,755)
-%doc AUTHORS ChangeLog TODO
+%doc AUTHORS FAQ.md README.md docs/{ChangeLog.old,v*-ReleaseNotes,on-disk-format.pdf}
%attr(755,root,root) %{_sbindir}/cryptsetup
-%attr(755,root,root) /%{_lib}/libcryptsetup.so.*.*.*
-%attr(755,root,root) %ghost /%{_lib}/libcryptsetup.so.4
+%attr(755,root,root) %{_sbindir}/cryptsetup-ssh
+%attr(755,root,root) %{_sbindir}/integritysetup
+%attr(755,root,root) %{_sbindir}/veritysetup
+%dir %{_libdir}/cryptsetup
+%attr(755,root,root) %{_libdir}/cryptsetup/libcryptsetup-token-ssh.so
%{_mandir}/man8/cryptsetup.8*
+%{_mandir}/man8/cryptsetup-*.8*
+%{_mandir}/man8/integritysetup.8*
+%{_mandir}/man8/veritysetup.8*
+%{systemdtmpfilesdir}/cryptsetup.conf
+%attr(700,root,root) %dir /var/run/cryptsetup
+
+%files libs
+%defattr(644,root,root,755)
+%attr(755,root,root) /%{_lib}/libcryptsetup.so.*.*.*
+%attr(755,root,root) %ghost /%{_lib}/libcryptsetup.so.12
%files devel
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%{_libdir}/libcryptsetup.a
-%if %{with python}
-%files -n python-pycryptsetup
-%defattr(644,root,root,755)
-%attr(755,root,root) %{py_sitedir}/pycryptsetup.so
-%endif
-
%if %{with initrd}
%files initrd
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/initrd/cryptsetup
%endif
-
-%files initramfs
-%defattr(644,root,root,755)
-%doc README.initramfs
-%attr(755,root,root) %{_datadir}/initramfs-tools/conf-hooks.d/cryptsetup
-%attr(755,root,root) %{_datadir}/initramfs-tools/hooks/cryptroot
-%attr(755,root,root) %{_datadir}/initramfs-tools/hooks/cryptpassdev
-%attr(755,root,root) %{_datadir}/initramfs-tools/scripts/local-top/cryptroot