source: projects/specs/trunk/lib/libx/libxcrypt/libxcrypt-vl.spec @ 12356

Revision 12356, 19.4 KB checked in by tomop, 4 years ago (diff)

updated 8 packages

device-mapper-multipath-0.8.2-1

dmraid-1.0.0.rc16-4

jansson-2.12-2

libbsd-0.10.0-1

libedit-3.1-4.20191231

libnsl2-1.2.0-2

libxcrypt-4.4.15-1

sgpio-1.2.1-1

Line 
1%bcond_with fipstest
2
3%define build_compat32 %{?_with_compat32:1}%{!?_with_compat32:0}
4
5# Build with new api?
6%bcond_without new_api
7
8# Build the compat package?
9%bcond_without compat_pkg
10
11# Run memcheck?
12# Valgrind does not work well on %%{power64} arches.
13%ifnarch %{power64}
14%bcond_without memcheck
15%else
16%bcond_with    memcheck
17%endif
18
19
20# Shared object version of libcrypt.
21%if %{with new_api}
22%global soc  2
23%global sol  0
24%global sof  0
25%global sov  %{soc}.%{sol}.%{sof}
26%if %{with compat_pkg}
27%global csoc 1
28%global csol 1
29%global csof 0
30%global csov %{csoc}.%{csol}.%{csof}
31%endif
32%else
33%global soc  1
34%global sol  1
35%global sof  0
36%global sov  %{soc}.%{sol}.%{sof}
37%endif
38
39
40# Hash methods and API supported by libcrypt.
41# NEVER EVER touch this, if you do NOT know what you are doing!
42%if %{with new_api}
43%global hash_methods   fedora,glibc,strong
44%global obsolete_api   no
45%if %{with compat_pkg}
46%global compat_methods glibc
47%global compat_api     glibc
48%endif
49%else
50%global hash_methods   all
51%global obsolete_api   glibc
52%endif
53
54
55# Needed for the distribution README file.
56%global distname .vine
57
58# Needed for out-of-tree builds.
59%global _configure ../"configure"
60
61
62# Common configure options.
63%global common_configure_options           \\\
64  --libdir=/%{_lib}                        \\\
65  --disable-failure-tokens                 \\\
66  --disable-silent-rules                   \\\
67  --enable-shared                          \\\
68  --enable-static                          \\\
69%if %{with memcheck}                       \
70  --enable-valgrind                        \\\
71%else                                      \
72  --disable-valgrind                       \\\
73%endif                                     \
74  --srcdir=..                              \\\
75  --with-pkgconfigdir=%{_libdir}/pkgconfig
76
77
78%if %{with fipstest}
79# Add generation of HMAC checksums of the final stripped
80# binaries.  %%define with lazy globbing is used here
81# intentionally, because using %%global does not work.
82BuildRequires:  fipscheck
83
84%define __spec_install_post                                    \
85%{?__debug_package:%{__debug_install_post}}                    \
86%{__arch_install_post}                                         \
87%{__os_install_post}                                           \
88%{_bindir}/fipshmac %{buildroot}/%{_lib}/libcrypt.a            \
89%{__ln_s} .libcrypt.a.hmac                                     \\\
90  %{buildroot}/%{_lib}/.libxcrypt.a.hmac                       \
91%{_bindir}/fipshmac %{buildroot}/%{_lib}/libcrypt.so.%{sov}    \
92%{__ln_s} .libcrypt.so.%{sov}.hmac                             \\\
93  %{buildroot}/%{_lib}/.libcrypt.so.%{soc}.hmac                \
94if [[ %{with new_api} == 1 && %{with compat_pkg} == 1 ]]; then \
95  %{_bindir}/fipshmac %{buildroot}/%{_lib}/libcrypt.so.%{csov} \
96  %{__ln_s} .libcrypt.so.%{csov}.hmac                          \\\
97    %{buildroot}/%{_lib}/.libcrypt.so.%{csoc}.hmac             \
98fi                                                             \
99%{nil}
100%endif
101
102Name:           libxcrypt
103Version:        4.4.15
104Release:        1%{?_dist_release}
105Summary:        Extended crypt library for descrypt, md5crypt, bcrypt, and others
106
107Group:          System Environment/Libraries
108Vendor:         Project Vine
109Distribution:   Vine Linux
110
111# For explicit license breakdown, see the
112# LICENSING file in the source tarball.
113License:        LGPLv2+ and BSD and Public Domain
114URL:            https://github.com/besser82/%{name}
115Source0:        %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
116
117# Patch 0000 - 2999: Backported patches from upstream.
118
119# Patch 3000 - 5999: Backported patches from pull requests.
120
121# Patch 6000 - 9999: Downstream patches.
122
123BuildRequires:  libtool
124%if %{with memcheck}
125BuildRequires:  valgrind
126%endif
127
128# We do not need to keep this forever.
129# We need a version of glibc, that doesn't build libcrypt anymore.
130Requires:       glibc%{?_isa}           >= 2.26.9000-46
131
132%if 0%{?fedora} >= 30
133Recommends:     mkpasswd
134%endif
135
136%description
137libxcrypt is a modern library for one-way hashing of passwords.  It
138supports a wide variety of both modern and historical hashing methods:
139yescrypt, gost-yescrypt, scrypt, bcrypt, sha512crypt, sha256crypt,
140%if %{with new_api}
141md5crypt, and descrypt.
142%else
143md5crypt, SunMD5, sha1crypt, NT, bsdicrypt, bigcrypt, and descrypt.
144%endif
145It provides the traditional Unix crypt and crypt_r interfaces, as well
146as a set of extended interfaces pioneered by Openwall Linux, crypt_rn,
147crypt_ra, crypt_gensalt, crypt_gensalt_rn, and crypt_gensalt_ra.
148
149libxcrypt is intended to be used by login(1), passwd(1), and other
150similar programs; that is, to hash a small number of passwords during
151an interactive authentication dialogue with a human. It is not suitable
152for use in bulk password-cracking applications, or in any other situation
153where speed is more important than careful handling of sensitive data.
154However, it is intended to be fast and lightweight enough for use in
155servers that must field thousands of login attempts per minute.
156%if %{with new_api}
157
158This version of the library does not provide the legacy API functions
159that have been provided by glibc's libcrypt.so.1.
160%endif
161
162
163%if %{with new_api} && %{with compat_pkg}
164%package        compat
165Summary:        Compatibility library providing legacy API functions
166
167Requires:       %{name}%{?_isa}         == %{version}-%{release}
168
169%description    compat
170This package contains the library providing the compatibility API
171for applications that are linked against glibc's libxcrypt, or that
172are still using the unsafe and deprecated, encrypt, encrypt_r,
173setkey, setkey_r, and fcrypt functions, which are still required by
174recent versions of POSIX, the Single UNIX Specification, and various
175other standards.
176
177All existing binary executables linked against glibc's libcrypt should
178work unmodified with the library supplied by this package.
179%endif
180
181
182%package        devel
183Summary:        Development files for %{name}
184Group:          Development/Libraries
185
186Conflicts:      man-pages               < 4.15-3
187
188Requires:       %{name}%{?_isa}        == %{version}-%{release}
189Requires:       glibc-devel%{?_isa}
190
191%description    devel
192The %{name}-devel package contains libraries and header files for
193developing applications that use %{name}.
194
195
196%package        static
197Summary:        Static library for -static linking with %{name}
198Group:          Development/Libraries
199
200Requires:       %{name}-devel%{?_isa}  == %{version}-%{release}
201Requires:       glibc-static%{?_isa}
202
203%description    static
204This package contains the libxcrypt static library for -static
205linking.
206
207You don't need this, unless you link statically, which is highly
208discouraged.
209
210
211%package -n     compat32-%{name}
212Summary:        Extended crypt library for descrypt, md5crypt, bcrypt, and others
213
214Group:          System Environment/Libraries
215
216%description -n compat32-%{name}
217libxcrypt is a modern library for one-way hashing of passwords.  It
218supports a wide variety of both modern and historical hashing methods:
219yescrypt, gost-yescrypt, scrypt, bcrypt, sha512crypt, sha256crypt,
220%if %{with new_api}
221md5crypt, and descrypt.
222%else
223md5crypt, SunMD5, sha1crypt, NT, bsdicrypt, bigcrypt, and descrypt.
224%endif
225It provides the traditional Unix crypt and crypt_r interfaces, as well
226as a set of extended interfaces pioneered by Openwall Linux, crypt_rn,
227crypt_ra, crypt_gensalt, crypt_gensalt_rn, and crypt_gensalt_ra.
228
229libxcrypt is intended to be used by login(1), passwd(1), and other
230similar programs; that is, to hash a small number of passwords during
231an interactive authentication dialogue with a human. It is not suitable
232for use in bulk password-cracking applications, or in any other situation
233where speed is more important than careful handling of sensitive data.
234However, it is intended to be fast and lightweight enough for use in
235servers that must field thousands of login attempts per minute.
236%if %{with new_api}
237
238This version of the library does not provide the legacy API functions
239that have been provided by glibc's libcrypt.so.1.
240%endif
241
242
243%package -n     compat32-%{name}-devel
244Summary:        Development files for cpmpat32-%{name}
245Group:          Development/Libraries
246
247Requires:       %{name}-devel        == %{version}-%{release}
248Requires:       compat32-glibc-devel
249
250%description -n compat32-%{name}-devel
251The compat32-%{name}-devel package contains libraries and header files for
252developing applications that use compat32-%{name}.
253
254
255%prep
256%autosetup -p 1
257./autogen.sh
258%if %{with new_api}
259%{__cat} << EOF >> README%{distname}
260This version of the %{name} package ships the libcrypt.so.2
261library and does not provide the legacy API functions that have
262been provided by glibc's libcrypt.so.1.  The removed functions
263by name are encrypt, encrypt_r, setkey, setkey_r, and fcrypt.
264%if %{with compat_pkg}
265
266If you are using a third-party application that links against
267those functions, or that is linked against glibc's libcrypt,
268you may need to install the %{name}-compat package manually.
269
270All existing binary executables linked against glibc's libcrypt
271should work unmodified with the libcrypt.so.1 library supplied
272by the %{name}-compat package.
273%endif
274EOF
275%endif
276%{__mkdir_p} %{_vpath_builddir}{,-compat}
277
278
279%build
280# Build the default system library.
281pushd %{_vpath_builddir}
282%configure                              \
283  %{common_configure_options}           \
284  --enable-hashes=%{hash_methods}       \
285  --enable-obsolete-api=%{obsolete_api}
286%make_build
287popd
288
289%if %{with new_api} && %{with compat_pkg}
290# Build the compatibility library.
291pushd %{_vpath_builddir}-compat
292%configure                              \
293  %{common_configure_options}           \
294  --enable-hashes=%{compat_methods}     \
295  --enable-obsolete-api=%{compat_api}
296%make_build
297popd
298%endif
299
300
301%install
302rm -rf %{buildroot}
303%if %{with new_api} && %{with compat_pkg}
304# Install the compatibility library.
305%make_install -C %{_vpath_builddir}-compat
306
307# Cleanup everything we do not need from the compatibility library.
308%{__rm} -fr %{buildroot}%{_bindir}                   \
309            %{buildroot}%{_includedir}               \
310            %{buildroot}/%{_lib}/lib{,x}crypt.{a,so} \
311            %{buildroot}%{_libdir}/pkgconfig         \
312            %{buildroot}%{_mandir}                   \
313            %{buildroot}%{_sbindir}
314%endif
315
316# Install the default system library.
317%make_install -C %{_vpath_builddir}
318
319# Get rid of libtool crap.
320%{_bindir}/find %{buildroot} -name '*.la' -print -delete
321
322
323%check
324%if %{with new_api} && %{with compat_pkg}
325for dir in %{_vpath_builddir} %{_vpath_builddir}-compat; do
326%else
327for dir in %{_vpath_builddir}; do
328%endif
329  %make_build -C ${dir} check || \
330    {
331      rc=$?;
332      echo "-----BEGIN TESTLOG: ${dir}-----";
333      %{__cat} ${dir}/test-suite.log;
334      echo "-----END TESTLOG: ${dir}-----";
335      exit $rc;
336    }
337%if %{with memcheck}
338  %make_build -C ${dir} check-valgrind-memcheck || \
339    {
340      rc=$?;
341      echo "-----BEGIN TESTLOG: ${dir}-----";
342      %{__cat} ${dir}/test-suite-memcheck.log;
343      echo "-----END TESTLOG: ${dir}-----";
344      exit $rc;
345    }
346%endif
347done
348
349
350%post -p /sbin/ldconfig
351
352%postun -p /sbin/ldconfig
353
354%if %{with new_api} && %{with compat_pkg}
355%post compat -p /sbin/ldconfig
356
357%postun compat -p /sbin/ldconfig
358
359%endif
360
361%if 0%{?build_compat32}
362%post -n compat32-%{name} -p /sbin/ldconfig
363
364%postun -n compat32-%{name} -p /sbin/ldconfig
365
366%endif
367
368
369%files
370%doc NEWS README* THANKS
371%license AUTHORS COPYING.LIB LICENSING
372%if %{with fipstest}
373/%{_lib}/.libcrypt.so.%{soc}.hmac
374/%{_lib}/.libcrypt.so.%{sov}.hmac
375%endif
376/%{_lib}/libcrypt.so.%{soc}
377/%{_lib}/libcrypt.so.%{sov}
378%{_mandir}/man5/crypt.5.*
379
380
381%if %{with new_api} && %{with compat_pkg}
382%files          compat
383%if %{with fipstest}
384/%{_lib}/.libcrypt.so.%{csoc}.hmac
385/%{_lib}/.libcrypt.so.%{csov}.hmac
386%endif
387/%{_lib}/libcrypt.so.%{csoc}
388/%{_lib}/libcrypt.so.%{csov}
389%endif
390
391
392%files          devel
393%doc ChangeLog TODO
394/%{_lib}/lib*crypt.so
395%{_includedir}/*crypt.h
396%{_libdir}/pkgconfig/libcrypt.pc
397%{_libdir}/pkgconfig/%{name}.pc
398%{_mandir}/man3/crypt*.3*
399
400
401%files          static
402%if %{with fipstest}
403/%{_lib}/.lib*crypt.a.hmac
404%endif
405/%{_lib}/lib*crypt.a
406
407
408%if 0%{?build_compat32}
409%files -n       compat32-%{name}
410%if %{with fipstest}
411/%{_lib}/.libcrypt.so.%{soc}.hmac
412/%{_lib}/.libcrypt.so.%{sov}.hmac
413%endif
414/%{_lib}/libcrypt.so.%{soc}
415/%{_lib}/libcrypt.so.%{sov}
416
417
418%files -n       compat32-%{name}-devel
419/%{_lib}/lib*crypt.so
420%{_libdir}/pkgconfig/libcrypt.pc
421%{_libdir}/pkgconfig/%{name}.pc
422%endif
423
424
425%changelog
426* Sat Mar 28 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 4.4.15-1
427- new upstream release.
428
429* Sat Jan 19 2019 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 4.4.2-6
430- initial build for Vine Linux.
431
432* Mon Jan 14 2019 Björn Esser <besser82@fedoraproject.org> - 4.4.2-5
433- Build the compat package with glibc hashing methods only
434- Add an option to disable the compat-package for future use
435
436* Mon Jan 14 2019 Björn Esser <besser82@fedoraproject.org> - 4.4.2-4
437- Bump SO-name for Fedora >= 30 and enable compat package (#1666033)
438- Add distribution README file
439- Update description of the compat package
440- Conditionally remove non-built hashing methods from description
441
442* Sun Dec 23 2018 Björn Esser <besser82@fedoraproject.org> - 4.4.2-3
443- Remove architecture bits from Recommends
444
445* Sun Dec 23 2018 Björn Esser <besser82@fedoraproject.org> - 4.4.2-2
446- Update summary
447
448* Sat Dec 22 2018 Björn Esser <besser82@fedoraproject.org> - 4.4.2-1
449- New upstream release
450
451* Thu Dec 06 2018 Björn Esser <besser82@fedoraproject.org> - 4.4.1-1
452- New upstream release
453
454* Tue Dec 04 2018 Björn Esser <besser82@fedoraproject.org> - 4.4.0-5
455- Sync -fno-plt patch with upstream commit
456
457* Tue Dec 04 2018 Björn Esser <besser82@fedoraproject.org> - 4.4.0-4
458- Backport upstream commit to fix a memory leak from a static pointer
459
460* Tue Dec 04 2018 Björn Esser <besser82@fedoraproject.org> - 4.4.0-3
461- Backport upstream PR to build with -fno-plt optimization
462
463* Mon Nov 26 2018 Björn Esser <besser82@fedoraproject.org> - 4.4.0-2
464- Backport upstream commit to use a safer strcpy for the NT method
465- Backport upstream generating base64 encoded output for NT gensalt
466- Backport upstream commit to require less rbytes for NT gensalt
467- Backport upstream commit to test incremental hmac-sha256 computation
468- Add Recommends: mkpasswd for Fedora >= 30
469
470* Tue Nov 20 2018 Björn Esser <besser82@fedoraproject.org> - 4.4.0-1
471- New upstream release
472
473* Wed Nov 14 2018 Björn Esser <besser82@fedoraproject.org> - 4.3.4-1
474- New upstream release
475
476* Wed Nov 14 2018 Björn Esser <besser82@fedoraproject.org> - 4.3.3-4
477- Bump release for proper obsoletion of former common sub-package
478
479* Wed Nov 14 2018 Björn Esser <besser82@fedoraproject.org> - 4.3.3-3
480- Add two upstream patches with minor fixes
481- Add HMAC checksum file for the static library
482- Drop the common sub-package
483- Some spec-file optimizations
484
485* Tue Nov 13 2018 Björn Esser <besser82@fedoraproject.org> - 4.3.3-2
486- Add a patch to define crypt_gensalt_r as macro, so applications
487  link the identical crypt_gensalt_rn directly
488
489* Sun Nov 11 2018 Björn Esser <besser82@fedoraproject.org> - 4.3.3-1
490- New upstream release
491
492* Sun Nov 11 2018 Björn Esser <besser82@fedoraproject.org> - 4.3.2-1
493- New upstream release
494
495* Sun Nov 11 2018 Björn Esser <besser82@fedoraproject.org> - 4.3.1-2
496- Backport two patches from upstream fixing the gensalt function for
497  NT to properly terminate its returned output
498
499* Sat Nov 10 2018 Björn Esser <besser82@fedoraproject.org> - 4.3.1-1
500- New upstream release
501
502* Sat Nov 10 2018 Björn Esser <besser82@fedoraproject.org> - 4.3.0-1
503- New upstream release
504
505* Fri Oct 26 2018 Björn Esser <besser82@fedoraproject.org> - 4.2.3-1
506- New upstream release
507
508* Thu Oct 25 2018 Björn Esser <besser82@fedoraproject.org> - 4.2.2-2
509- Add patch updating to recent development version
510- Run valgrind-memcheck
511- Use bootstrap script
512
513* Thu Oct 18 2018 Björn Esser <besser82@fedoraproject.org> - 4.2.2-1
514- New upstream release
515
516* Mon Oct 01 2018 Björn Esser <besser82@fedoraproject.org> - 4.2.1-3
517- Drop compat-devel package
518- Set configure options from globals
519
520* Sun Sep 30 2018 Björn Esser <besser82@fedoraproject.org> - 4.2.1-2
521- Build out-of-tree
522- Split off noarch-bits into common sub-package
523- Update %%description
524- Prepare to remove legacy API from library and to provide a compatibilty
525  package for the legacy API
526
527* Sat Sep 29 2018 Björn Esser <besser82@fedoraproject.org> - 4.2.1-1
528- New upstream release
529- Add new manpages
530
531* Sat Sep 29 2018 Björn Esser <besser82@fedoraproject.org> - 4.2.0-1
532- New upstream release
533
534* Fri Aug 24 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.2-1
535- New upstream release
536
537* Wed Aug 08 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.1-4
538- Move *.3 manpages to devel subpackage (#1613762)
539- Add needed Conflicts: man-pages < 4.15-3
540
541* Wed Aug 08 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.1-3
542- Make crypt{,_r} return NULL on failure (#1611784)
543
544* Sat Aug 04 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.1-2
545- Add manpages for crypt{,_r,_ra}.3 (#1610307)
546
547* Wed Aug 01 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.1-1
548- New upstream release
549
550* Fri Jul 13 2018 Björn Esser <besser82@fedoraproject.org> - 4.1.0-1
551- New upstream release
552
553* Fri Jul 13 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.1-6
554- Make testsuite fail on error again
555- Update patch0 with more upstream fixes
556
557* Fri Jul 13 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.1-5
558- Add patch to update to recent development branch
559- Re-enable SUNMD5 support as it is BSD licensed now
560- Build compatibility symbols for glibc only
561- Skip failing testsuite once
562
563* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.1-4
564- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
565
566* Fri Jun 29 2018 Florian Weimer <fweimer@redhat.com> - 4.0.1-3
567- Remove CDDL from license list (#1592445)
568
569* Fri Jun 29 2018 Florian Weimer <fweimer@redhat.com> - 4.0.1-2
570- Remove SUNMD5 support (#1592445)
571
572* Wed May 16 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.1-1
573- New upstream release
574
575* Sat Feb 17 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-5
576- Switch to %%ldconfig_scriptlets
577
578* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.0-4
579- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
580
581* Thu Feb 01 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-3
582- Add patch to fix unintialize value in badsalt test
583
584* Wed Jan 31 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-2
585- Add patch to fix bcrypt test with GCC8
586
587* Sat Jan 27 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-1
588- New upstream release
589
590* Mon Jan 22 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 4.0.0-0.204.20180120git3436e7b
591- Fix Obsoletes
592
593* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.203.20180120git3436e7b
594- Update to new snapshot fixing cast-align
595
596* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.202.20180120gitde99d27
597- Update to new snapshot (rhbz#1536752)
598
599* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.201.20171109git15447aa
600- Use archful Obsoletes for libcrypt
601- Add versioned Requires on glibc packages not shipping libcrypt
602- Add comments about the packaging logic for replacing former libcrypt
603
604* Fri Jan 12 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.200.20171109git15447aa
605- Initial import (rhbz#1532794)
606- Add Obsoletes/Provides for libcrypt
607
608* Wed Jan 10 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.101.20171109git15447aa
609- Fix style of %%git_{rel,ver}
610
611* Tue Jan 09 2018 Björn Esser <besser82@fedoraproject.org> - 4.0.0-0.100.git20171109.15447aa
612- Initial rpm release (rhbz#1532794)
613- Start revision at 0.100 to superseed builds from COPR
Note: See TracBrowser for help on using the repository browser.