3 %bcond_with initrd # don't build initrd version
4 %bcond_with dietlibc # build initrd version with static glibc instead of dietlibc
5 %bcond_with gcrypt # use gcrypt for crypto (instead of openssl)
6 %bcond_with passwdqc # password quality checking via libpasswdqc [conflicts with pwquality]
7 %bcond_with pwquality # password quality checking via libpwquality [conflicts with passwdqc]
8 %bcond_without static_libs # static library
9 %bcond_without tests # "make check" run
11 Summary: LUKS for dm-crypt implemented in cryptsetup
12 Summary(pl.UTF-8): LUKS dla dm-crypta zaimplementowany w cryptsetup
18 Source0: https://www.kernel.org/pub/linux/utils/cryptsetup/v2.7/%{name}-%{version}.tar.xz
19 # Source0-md5: d13fa531c37f05824d67ae92f3c6f73b
21 Patch1: no_pty_tests.patch
22 URL: https://gitlab.com/cryptsetup/cryptsetup
23 BuildRequires: autoconf >= 2.67
24 BuildRequires: automake >= 1:1.12
25 BuildRequires: device-mapper-devel >= 1.02.27
26 BuildRequires: gettext-tools >= 0.21
27 BuildRequires: json-c-devel
28 BuildRequires: libargon2-devel >= 20171227
29 BuildRequires: libblkid-devel
30 %{?with_gcrypt:BuildRequires: libgcrypt-devel >= 1.6.1}
31 BuildRequires: libgpg-error-devel
32 %{?with_pwquality:BuildRequires: libpwquality-devel >= 1.0.0}
33 BuildRequires: libselinux-devel
34 BuildRequires: libsepol-devel
35 BuildRequires: libssh-devel
36 BuildRequires: libtool >= 2:2.0
37 BuildRequires: libuuid-devel
38 BuildRequires: linux-libc-headers >= 7:6.4
39 %{!?with_gcrypt:BuildRequires: openssl-devel >= 0.9.8}
40 %{?with_passwdqc:BuildRequires: passwdqc-devel}
41 BuildRequires: pkgconfig
42 BuildRequires: popt-devel >= 1.7
43 BuildRequires: rpmbuild(macros) >= 1.527
44 BuildRequires: ruby-asciidoctor
45 BuildRequires: tar >= 1:1.22
48 BuildRequires: libgpg-error-static
50 BuildRequires: device-mapper-dietlibc >= 1.02.27
51 BuildRequires: dietlibc-static
52 BuildRequires: libgcrypt-dietlibc >= 1.6.1
53 BuildRequires: libuuid-dietlibc
54 BuildRequires: popt-dietlibc
56 BuildRequires: device-mapper-static >= 1.02.27
57 BuildRequires: libgcrypt-static >= 1.6.1
58 BuildRequires: libselinux-static
59 BuildRequires: libsepol-static
60 BuildRequires: libuuid-static
61 BuildRequires: popt-static
62 BuildRequires: udev-static
65 Requires: %{name}-libs%{?_isa} = %{version}-%{release}
66 Requires: device-mapper >= 1.02.27
67 %{?with_gcrypt:Requires: libgcrypt >= 1.6.1}
68 %{?with_pwquality:Requires: libpwquality >= 1.0.0}
70 Provides: cryptsetup-luks = %{version}-%{release}
71 Obsoletes: cryptsetup-luks < 1.4.1-2
72 %{!?with_initrd:Obsoletes: cryptsetup-initrd < %{version}-%{release}}
73 Obsoletes: python-pycryptsetup < 2.1.0
74 Conflicts: udev < 1:118-1
75 Conflicts: udev-core < 1:115
76 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
78 %define _sbindir /sbin
81 LUKS is the upcoming standard for Linux hard disk encryption. By
82 providing a standard on-disk-format, it does not only facilitate
83 compatibility among distributions, but also provide secure management
84 of multiple user passwords. In contrast to existing solution, LUKS
85 stores all setup necessary setup information in the partition header,
86 enabling the user to transport or migrate his data seamlessly.
88 This package contains implementation of LUKS for dm-crypt implemented
91 %description -l pl.UTF-8
92 LUKS to nadchodzący standard linuksowego szyfrowania twardego dysku.
93 Dostarczając standardowy format danych na dysku nie tylko ułatwia
94 utrzymanie kompatybilności między dystrybucjami, ale także dostarcza
95 bezpieczne zarządzanie wieloma hasłami użytkowników. W przeciwieństwie
96 do istniejącego rozwiązania LUKS przechowuje wszystkie potrzebne
97 informacje o konfiguracji w nagłówku partycji, pozwalając
98 użytkownikowi przenosić lub migrować dane w sposób przezroczysty.
100 Ten pakiet zawiera implementację LUKS dla dm-crytpa zaimplementowaną w
104 Summary: cryptsetup shared library
105 Summary(pl.UTF-8): Biblioteka współdzielona cryptsetup
109 cryptsetup shared library.
111 %description libs -l pl.UTF-8
112 Biblioteka współdzielona cryptsetup.
115 Summary: Header files for cryptsetup library
116 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki cryptsetup
117 Group: Development/Libraries
118 Requires: %{name}-libs%{?_isa} = %{version}-%{release}
119 Requires: device-mapper-devel >= 1.02.27
120 Requires: json-c-devel
121 Requires: libargon2-devel >= 20171227
122 Requires: libblkid-devel
123 %{?with_gcrypt:Requires: libgcrypt-devel >= 1.6.1}
124 Requires: libuuid-devel
125 %{!?with_gcrypt:Requires: openssl-devel >= 0.9.8}
126 Provides: cryptsetup-luks-devel = %{version}-%{release}
127 Obsoletes: cryptsetup-luks-devel < 1.4.1-2
130 Header files for cryptsetup library.
132 %description devel -l pl.UTF-8
133 Pliki nagłówkowe biblioteki cryptsetup.
136 Summary: Static cryptsetup library
137 Summary(pl.UTF-8): Statyczna biblioteka cryptsetup
138 Group: Development/Libraries
139 Requires: %{name}-devel = %{version}-%{release}
140 Provides: cryptsetup-luks-static = %{version}-%{release}
141 Obsoletes: cryptsetup-luks-static < 1.4.1-2
144 Static version of cryptsetup library.
146 %description static -l pl.UTF-8
147 Statyczna wersja biblioteki cryptsetup.
150 Summary: LUKS for dm-crypt implemented in cryptsetup - initrd version
151 Summary(pl.UTF-8): LUKS dla dm-crypta zaimplementowany w cryptsetup - wersja initrd
153 Requires: udev-initrd >= 1:115
154 Provides: cryptsetup-luks-initrd = %{version}-%{release}
155 Obsoletes: cryptsetup-luks-initrd < 1.4.1-2
156 Conflicts: geninitrd < 10000.10
159 This package contains implementation of LUKS for dm-crypt implemented
160 in cryptsetup - statically linked for initrd.
162 %description initrd -l pl.UTF-8
163 Ten pakiet zawiera implementację LUKS dla dm-crypta zaimplementowaną w
164 cryptsetup - wersję statycznie zlinkowaną dla initrd.
168 %{?with_diet:%patch0 -p1}
185 CC="diet ${CC#ccache } %{rpmcppflags} %{rpmcflags} %{rpmldflags} -Os" \
187 ac_cv_lib_popt_poptConfigFileToString=yes \
188 ac_cv_lib_sepol_sepol_bool_set=no \
189 ac_cv_lib_selinux_is_selinux_enabled=no \
191 %if "%{?configure_cache}" == "1"
192 --cache-file=%{?configure_cache_file}%{!?configure_cache_file:configure}-initrd.cache \
196 --disable-silent-rules \
198 --enable-static-cryptsetup \
199 --with-crypto-backend=gcrypt \
200 --with-luks2-lock-path=/var/run/%{name} \
201 --with-tmpfilesdir=%{systemdtmpfilesdir}
206 # we have to do it by hand cause libtool "know better" and forces
207 # static libs from /usr/lib
209 diet ${CC#ccache } %{rpmcppflags} %{rpmcflags} %{rpmldflags} -Os -I. -I./lib -static \
210 -o cryptsetup-initrd src/cryptsetup.c ./lib/.libs/libcryptsetup.a \
211 -lpopt -lgcrypt -lgpg-error -ldevmapper -luuid -lcompat
214 %{__mv} src/cryptsetup cryptsetup-initrd
222 %{?with_passwdqc:--enable-passwdqc=/etc/passwdqc.conf} \
223 %{?with_pwquality:--enable-pwquality} \
224 --disable-silent-rules \
225 %{__enable_disable static_libs static} \
227 %{?with_gcrypt:--with-crypto-backend=gcrypt} \
228 --with-luks2-lock-path=/var/run/%{name} \
229 --with-tmpfilesdir=%{systemdtmpfilesdir}
232 %{?with_tests:%{__make} check}
235 rm -rf $RPM_BUILD_ROOT
237 install -d $RPM_BUILD_ROOT/var/run/cryptsetup
240 DESTDIR=$RPM_BUILD_ROOT
242 install -d $RPM_BUILD_ROOT/%{_lib}
243 %{__mv} $RPM_BUILD_ROOT%{_libdir}/libcryptsetup.so.* $RPM_BUILD_ROOT/%{_lib}
244 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libcryptsetup.so.*.*.*) \
245 $RPM_BUILD_ROOT%{_libdir}/libcryptsetup.so
247 %{__rm} $RPM_BUILD_ROOT%{_libdir}/cryptsetup/libcryptsetup-*.la
248 %{?with_static_libs:%{__rm} $RPM_BUILD_ROOT%{_libdir}/cryptsetup/libcryptsetup-*.a}
251 install -d $RPM_BUILD_ROOT%{_libdir}/initrd
252 install -p cryptsetup-initrd $RPM_BUILD_ROOT%{_libdir}/initrd/cryptsetup
258 rm -rf $RPM_BUILD_ROOT
260 %post libs -p /sbin/ldconfig
261 %postun libs -p /sbin/ldconfig
263 %files -f %{name}.lang
264 %defattr(644,root,root,755)
265 %doc AUTHORS FAQ.md README.md docs/{ChangeLog.old,v*-ReleaseNotes,on-disk-format.pdf}
266 %attr(755,root,root) %{_sbindir}/cryptsetup
267 %attr(755,root,root) %{_sbindir}/cryptsetup-ssh
268 %attr(755,root,root) %{_sbindir}/integritysetup
269 %attr(755,root,root) %{_sbindir}/veritysetup
270 %dir %{_libdir}/cryptsetup
271 %attr(755,root,root) %{_libdir}/cryptsetup/libcryptsetup-token-ssh.so
272 %{_mandir}/man8/cryptsetup.8*
273 %{_mandir}/man8/cryptsetup-*.8*
274 %{_mandir}/man8/integritysetup.8*
275 %{_mandir}/man8/veritysetup.8*
276 %{systemdtmpfilesdir}/cryptsetup.conf
277 %attr(700,root,root) %dir /var/run/cryptsetup
280 %defattr(644,root,root,755)
281 %attr(755,root,root) /%{_lib}/libcryptsetup.so.*.*.*
282 %attr(755,root,root) %ghost /%{_lib}/libcryptsetup.so.12
285 %defattr(644,root,root,755)
286 %attr(755,root,root) %{_libdir}/libcryptsetup.so
287 %{_libdir}/libcryptsetup.la
288 %{_includedir}/libcryptsetup.h
289 %{_pkgconfigdir}/libcryptsetup.pc
291 %if %{with static_libs}
293 %defattr(644,root,root,755)
294 %{_libdir}/libcryptsetup.a
299 %defattr(644,root,root,755)
300 %attr(755,root,root) %{_libdir}/initrd/cryptsetup