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

Revision 12020, 19.6 KB checked in by tomop, 5 years ago (diff)

update toolchain

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