REMOVE ME: turn off crti/crtn debug section
[platform/upstream/glibc.git] / packaging / glibc.spec
1 #
2 # spec file for package glibc
3 #
4 # Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
5 #
6 # All modifications and additions to the file contributed by third parties
7 # remain the property of their copyright owners, unless otherwise agreed
8 # upon. The license for this file, and modifications and additions to the
9 # file, is the same license as for the pristine package itself (unless the
10 # license for the pristine package is not an Open Source License, in which
11 # case the license is the MIT License). An "Open Source License" is a
12 # license that conforms to the Open Source Definition (Version 1.9)
13 # published by the Open Source Initiative.
14
15 %if 0%{?run_tests}
16 %define glibc_run_tests 1
17 %endif
18
19 # This will avoid building some parts of glibc
20 %define asan_arch x86_64 armv7l aarch64
21 %bcond_with    fast_build
22 Name:           glibc
23 Summary:        Standard Shared Libraries (from the GNU C Library)
24 License:        LGPL-2.1+ and LGPL-2.1+-with-GCC-exception and GPL-2.0+
25 Group:          Base/Libraries
26 BuildRequires:  fdupes
27 BuildRequires:  makeinfo
28 BuildRequires:  xz
29 BuildRequires:  gcc-c++
30 BuildRequires:  gettext-tools
31 BuildRequires:  libstdc++-devel
32 BuildRequires:  bison
33 BuildRequires:  python3-base
34 %{?asan:
35 %ifarch %asan_arch
36 #BuildRequires:  python
37 BuildRequires:  glibc-devel-static
38 %endif
39 }
40 #BuildRequires:  pkgconfig(systemd)
41 %define _filter_GLIBC_PRIVATE 1
42 %if %_target_cpu == "i686"
43 # For i686 let's only build what's different from i586, so
44 # no need to build documentation
45 %define build_profile 1
46 %define build_locales 0
47 %define build_html 0
48 %else
49 %if %{with fast_build}
50 %define build_profile 0
51 %define build_locales 0
52 %define build_html 0
53 %else
54 # Default:
55 %define build_profile 1
56 %define build_locales 0
57 %define build_html 1
58 %endif
59 %endif
60
61 %define disable_assert 0
62 %define enable_stackguard_randomization 1
63 %define multiarcharches %{ix86} x86_64
64
65 %ifarch x86_64
66 %define enablekernel 2.6.16
67 %else
68 %define enablekernel 2.6.16
69 %endif
70 Conflicts:      kernel < %{enablekernel}
71 %ifarch armv7l armv7hl
72 # The old runtime linker link gets not provided by rpm find.provides, but it exists
73 Provides:       ld-linux.so.3
74 Provides:       ld-linux.so.3(GLIBC_2.4)
75 %endif
76 Version:        2.30
77 Release:        0
78 %define glibc_major_version %{version}
79 %define git_id 0a8262a1b2
80
81 Url:            http://www.gnu.org/software/libc/libc.html
82 Source:         glibc-%{version}.tar.xz
83 Source5:        nsswitch.conf
84 Source7:        bindresvport.blacklist
85 Source8:        glibc_post_upgrade.c
86 Source9:        glibc.rpmlintrc
87 Source10:       baselibs.conf
88 # For systemd 
89 Source1001:     glibc.manifest
90
91 Requires(pre):  filesystem
92 Provides:       rtld(GNU_HASH)
93
94 %description
95 The GNU C Library provides the most important standard libraries used
96 by nearly all programs: the standard C library, the standard math
97 library, and the POSIX thread library. A system is not functional
98 without these libraries.
99
100 %package info
101 Summary:        Info Files for the GNU C Library
102 License:        GFDL-1.1
103 Group:          Documentation
104 BuildArch:      noarch
105
106 %description info
107 This package contains the documentation for the GNU C library stored as
108 info files. Due to a lack of resources, this documentation is not
109 complete and is partially out of date.
110
111 %package html
112 Summary:        HTML Documentation for the GNU C Library
113 License:        GFDL-1.1
114 Group:          Documentation
115 BuildArch:      noarch
116
117 %description html
118 This package contains the HTML documentation for the GNU C library. Due
119 to a lack of resources, this documentation is not complete and is
120 partially out of date.
121
122 %package i18ndata
123 Summary:        Database Sources for 'locale'
124 License:        GPL-2.0+ and MIT
125 Group:          Base/Libraries
126 BuildArch:      noarch
127
128 %description i18ndata
129 This package contains the data needed to build the locale data files to
130 use the internationalization features of the GNU libc. It is normally
131 not necessary to install this packages, the data files are already
132 created.
133
134 %package locale
135 Summary:        Locale Data for Localized Programs
136 License:        GPL-2.0+ and MIT and LGPL-2.1+
137 Requires(post): /usr/bin/cat
138 Requires:       glibc = %{version}
139 %description locale
140 Locale data for the internationalisation features of the GNU C library.
141
142 %package profile
143 Summary:        Libc Profiling and Debugging Versions
144 License:        LGPL-2.1+ and LGPL-2.1+-with-GCC-exception and GPL-2.0+
145 Group:          Base/Utilities
146 Requires:       glibc = %{version}
147
148 %description profile
149 This package contains special versions of the GNU C library which are
150 necessary for profiling and debugging.
151
152 %package devel
153 Summary:        Include Files and Libraries Mandatory for Development
154 License:        BSD-3-Clause and LGPL-2.1+ and LGPL-2.1+-with-GCC-exception and GPL-2.0+
155 Requires:       glibc = %{version}
156 Requires:       linux-kernel-headers
157
158 %description devel
159 These libraries are needed to develop programs which use the standard C
160 library.
161
162 %package devel-static
163 Summary:        C library static libraries for -static linking
164 License:        BSD-3-Clause and LGPL-2.1+ and LGPL-2.1+-with-GCC-exception and GPL-2.0+
165 Requires:       %{name}-devel = %{version}
166 # Provide Fedora name for package to make packaging easier
167 Provides:       %{name}-static = %version
168
169 %description devel-static
170 The glibc-devel-static package contains the C library static libraries
171 for -static linking.  You don't need these, unless you link statically,
172 which is highly discouraged.
173
174 %package devel-utils
175 Summary:        Development utilities from GNU C library
176 License:        LGPL-2.1+
177 Requires:       glibc = %{version}
178
179 %description devel-utils
180 The glibc-devel-utils package contains various binaries which can be helpful during program
181 debugging.
182
183 If you are unsure if you need this, don't install this package.
184
185 %package extra
186 Summary:        Extra binaries from GNU C Library
187 License:        LGPL-2.1+
188 Requires:       glibc = %{version}
189
190 %description extra
191 The glibc-extra package contains some extra binaries for glibc that
192 are not essential but recommend to use.
193
194 makedb: A program to create a database for nss
195
196 %package obsolete
197 Summary:        Obsolete Shared Libraries from the GNU C Library
198 License:        LGPL-2.0+
199 Requires:       glibc = %{version}
200
201 %description obsolete
202 This package provides some old libraries from the GNU C Library which
203 are no longer supported. Additional it provides a compatibility library
204 for old binaries linked against glibc 2.0.
205
206 Install this package if you need one of this libraries to get old
207 binaries working, but since this libraries are not supported and there
208 is no gurantee that they work for you, you should try to get newer
209 versions of your software.
210
211 %package testresults
212 Summary:       Testsuite results
213 License:       LGPL-2.1+
214 Group:         Development/Languages
215 %description testresults
216 Results from running the glibc testsuites.
217
218 %{?asan:
219 %ifarch %asan_arch
220 %package asan
221 Summary:     glibc with ASan instrumentation
222 License:     LGPL-2.1+ and LGPL-2.1+-with-GCC-exception and GPL-2.0+
223 Requires:    glibc = %{version}
224
225 %description asan
226 This package provides glibc with ASan instrumentation
227
228 %post asan
229 ln -s --force /%{_lib}/libc-2.24-asan.so /%{_lib}/libc.so.6
230
231 %preun asan
232 ln -s --force /%{_lib}/libc-2.24.so /%{_lib}/libc.so.6
233
234 %endif
235 }
236
237 %prep
238 %setup -n glibc-%{version} -q 
239 cp %{SOURCE1001} .
240
241 %build
242 %{?asan:%gcc_unforce_options}
243 if [ -x /bin/uname.bin ]; then
244         /bin/uname.bin -a
245 else
246         uname -a
247 fi
248 uptime || :
249 ulimit -a
250 nice
251 # We do not want configure to figure out the system its building one
252 # to support a common ground and thus set build and host to the
253 # target_cpu.
254 %ifarch %arm
255 %define target %{_target_cpu}-tizen-linux-gnueabi
256 %else
257 %define target %{_target_cpu}-tizen-linux
258 %endif
259 # Don't use as-needed, it breaks glibc assumptions
260 # Before enabling it, run the testsuite and verify that it
261 # passes completely
262 export LD_AS_NEEDED=0
263 # Adjust glibc version.h
264 echo "#define CONFHOST \"%{target}\"" >> version.h
265 echo "#define GITID \"%{git_id}\"" >> version.h
266 #
267 # Default CFLAGS and Compiler
268 #
269 BuildFlags=$(echo %{optflags} | sed -e "s/-Wp,-D_FORTIFY_SOURCE=2//g" | sed -e "s/-ffast-math//" | sed -e "s/atom/i686/g" | sed -e "s/-fexceptions//" | sed -e "s/-fno-omit-frame-pointer//" )
270 BuildFlags="$BuildFlags -O2 -g -U_FORTIFY_SOURCE"
271 BuildFlags="$(echo $BuildFlags | sed -e 's#-fstack-protector##' -e 's#-ffortify=[0-9]*##')"
272 BuildFlags="$(echo $BuildFlags | sed -e 's/-Wa,-mimplicit-it=thumb//g' | sed -e 's/-mthumb//g')"
273 # Turn off all -Wformat enable flags as there are glibc tests that explicitly
274 # append -Wno-format and with enabled Wformat options that produced warnings
275 # that turns into errors. Remove -Wformat=1|2 or -Wformat-..-arg
276 BuildFlags="$(echo $BuildFlags | sed -re 's/-Wformat((=[1-2])|((-\w+)+))?(\s|$)//g')"
277
278 BuildCC="%__cc"
279 BuildCCplus="%__cxx"
280 add_ons=",libidn"
281
282 BuildFlags="$BuildFlags -g"
283
284 %ifarch %arm
285 # Glibc must have both functions' implementations
286 BuildFlags="$BuildFlags -U_LARGEFILE_SOURCE -U_LARGEFILE64_SOURCE -U_FILE_OFFSET_BITS"
287 %endif
288 %if %{disable_assert}
289         BuildFlags="$BuildFlags -DNDEBUG=1"
290 %endif
291 %ifarch %ix86
292         add_ons=$add_ons
293 %endif
294 %ifarch %arm aarch64
295         add_ons=$add_ons
296 %endif
297 %ifarch mipsel
298         # fails to build otherwise - need to recheck and fix
299         %define enable_stackguard_randomization 0
300 %endif
301
302 configure_and_build_glibc() {
303         local dirname="$1"; shift
304         local cflags="$1"; shift
305         local addons="$1"; shift
306         mkdir "cc-$dirname"
307         cd "cc-$dirname"
308         conf_cflags="$cflags -funwind-tables -fPIC"
309         %{?asan: conf_cflags="$conf_cflags -DASAN_INIT_FIRST "}
310
311         profile="--disable-profile"
312 %if %{build_profile}
313         if [ "$dirname" = "base" ] ; then
314             profile="--enable-profile"
315         fi
316 %endif
317         CFLAGS="$conf_cflags" BUILD_CFLAGS="$conf_cflags" \
318         CC="$BuildCC" CXX="$BuildCCplus"  ../configure \
319                 --prefix=%{_prefix} \
320                 --libexecdir=%{_libexecdir} --infodir=%{_infodir} \
321                 --enable-add-ons=$addons \
322                 $profile \
323                 "$@" \
324 %if %{enable_stackguard_randomization}
325                 --enable-stackguard-randomization \
326 %endif
327                 --build=%{target} --host=%{target} \
328 %ifnarch %{multiarcharches}
329                 --disable-multi-arch \
330 %endif
331 %ifarch %{ix86} x86_64 
332                 --disable-mathvec \
333 %endif
334                 --enable-kernel=%{enablekernel} \
335                 --enable-bind-now  --enable-obsolete-rpc \
336                 --disable-nscd \
337                 --disable-experimental-malloc \
338                 libc_cv_pie_default=yes
339         # explicitly set CFLAGS to use the full CFLAGS (not the reduced one for configure)
340         make %{?_smp_mflags} #CFLAGS="$cflags" BUILD_CFLAGS="$cflags"
341         cd ..
342 }
343
344 configure_flags="--prefix=/usr --without-cvs --without-selinux --enable-stackguard-randomization --enable-obsolete-rpc --disable-mathvec"
345
346 configure_flags="$configure_flags --disable-sanity-checks"
347
348 build_asan() {
349   HERE=%{_builddir}/%{name}-%{version}
350   J=${J:-32}
351   GLIBC=$HERE
352   ASAN_BUILD=$HERE/asan-build
353   unset CXXFLAGS
354   unset CFLAGS
355   unset LDFLAGS
356   #chmod +x $HERE/asan-glibc-gcc-wrapper.py
357   #build static wrapper, because we don't want asan to intercept allocators
358   g++ -o gcc-wrapper gcc-wrapper.cc -O3 -funroll-loops -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-exceptions -static
359
360   rm -rf $ASAN_BUILD
361   mkdir -p $ASAN_BUILD
362   cd $ASAN_BUILD
363 #  CC=$HERE/asan-glibc-gcc-wrapper.py $GLIBC/configure $configure_flags
364   CC=$HERE/gcc-wrapper $GLIBC/configure $configure_flags
365
366   # Quick build - builds only libraries, but does not create symlinks.
367   make -r -j $J -C $GLIBC objdir=`pwd` subdir_lib
368   #make -r -j $J -C $GLIBC objdir=`pwd` install_root=$ASAN_INST install-lib
369   cd $HERE
370 }
371
372         #
373         # Build base glibc
374         #
375         configure_and_build_glibc base "$BuildFlags" "$add_ons"
376
377 %{?asan:
378 %ifarch %{asan_arch}
379 build_asan
380 %endif
381 }
382 #
383 # Build html documentation
384 #
385 %if %{build_html}
386 make -C cc-base html
387 %endif
388
389 #
390 # Build glibc_post_upgrade binary
391 #
392 $BuildCC -static %{optflags} -Os $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgrade \
393      -Lcc-base -Bcc-base/csu \
394     '-DREMOVE_TLS_DIRS' '-DREMOVE_PPC_OPTIMIZE_POWER5' \
395     '-DLIBDIR="/%{_lib}"' '-DGCONV_MODULES_DIR="%{_libdir}/gconv"'
396
397 #
398 # Build testsuite
399 #
400 # #check sections could be redefined/disabled, so keep this inside #build
401
402 %{?glibc_run_tests:
403   export LD_AS_NEEDED=0
404   (make %{?_smp_mflags} -C cc-base check || true) 2>&1 | tee check.log
405 }
406
407
408 #######################################################################
409 ###
410 ### CHECK
411 ###
412 #######################################################################
413
414 %check
415 # The testsuite will fail if asneeded is used
416 export LD_AS_NEEDED=0
417 # This has to pass on all platforms!
418 # Exceptions:
419 # None!
420 make %{?_smp_mflags} -C cc-base check-abi
421
422 #######################################################################
423 ###
424 ### INSTALL
425 ###
426 #######################################################################
427
428 %install
429 # We don't want to strip the .symtab from our libraries in find-debuginfo.sh,
430 # certainly not from libpthread.so.* because it is used by libthread_db to find
431 # some non-exported symbols in order to detect if threading support
432 # should be enabled.  These symbols are _not_ exported, and we can't easily
433 # export them retroactively without changing the ABI.  So we have to
434 # continue to "export" them via .symtab, instead of .dynsym :-(
435 # But we also want to keep .symtab and .strtab of other libraries since some
436 # debugging tools currently require these sections directly inside the main
437 # files - specifically valgrind and PurifyPlus.
438 export STRIP_KEEP_SYMTAB=*.so*
439
440 # Make sure we will create the gconv-modules.cache
441 mkdir -p %{buildroot}%{_libdir}/gconv
442 touch %{buildroot}%{_libdir}/gconv/gconv-modules.cache
443
444 # Install base glibc
445 make %{?_smp_mflags} install_root=%{buildroot} install -C cc-base
446
447 #######################################################################
448 ###
449 ###     REMOVE ME #### REMOVE ME #### REMOVE ME #### REMOVE ME      ###
450 ###
451 #######################################################################
452 # Strip out debug sections from crti.o and crtn.o to compensate bug of
453 # binutils < 2.31.2
454 find %{buildroot} \( -name 'crti.o' -o -name 'crtn.o' \) -exec strip {} \;
455 #######################################################################
456
457
458 install_optimized_variant() {
459         local dirname="$1"; shift
460         local subdir="$1"; shift
461         local subdir_up="$1"; shift
462
463 cd "cc-$dirname"
464 destdir=$RPM_BUILD_ROOT/%{_lib}/$subdir
465 mkdir -p $destdir
466 # Don't run a complete make install, we know which libraries
467 # we want
468 for lib in libc math/libm nptl/libpthread rt/librt nptl_db/libthread_db
469 do
470   libbase=${lib#*/}
471   libbaseso=$(basename $RPM_BUILD_ROOT/%{_lib}/${libbase}-*.so)
472   # Only install if different from base lib
473   if cmp -s ${lib}.so ../cc-base/${lib}.so; then
474     ln -sf $subdir_up/$libbaseso $destdir/$libbaseso
475   else
476     cp -a ${lib}.so $destdir/$libbaseso
477   fi
478   # Emulate ldconfig
479   ln -sf $libbaseso $destdir/$(basename $RPM_BUILD_ROOT/%{_lib}/${libbase}.so.*)
480 done
481 cd ..
482 }
483
484
485 # Install locales
486 %if %{build_locales}
487         # XXX Do not install locales in parallel!
488         cd cc-base
489         # localedef creates hardlinks to other locales if possible
490         # this will not work if we generate them in parallel.
491         # thus we need to run fdupes on  /usr/lib/locale/
492         # Still, on my system this is a speed advantage:
493         # non-parallel build for install-locales: 9:34mins
494         # parallel build with fdupes: 7:08mins
495         make %{?_smp_mflags} install_root=%{buildroot} localedata/install-locales
496         %fdupes %{buildroot}/usr/lib/locale
497         cd ..
498 %endif
499 # Create file list for glibc-locale package
500 %{find_lang} libc
501
502 # Prepare obsolete/, used only on some architectures:
503 export RPM_BUILD_ROOT
504 %ifarch %ix86
505 mkdir -p %{buildroot}/%{_lib}/obsolete
506 %endif
507
508 # NPTL <bits/stdio-lock.h> is not usable outside of glibc, so include
509 # the generic one (RH#162634)
510 # cp -av bits/stdio-lock.h %{buildroot}%{_includedir}/bits/stdio-lock.h
511
512
513 # Miscelanna:
514
515 install -m 0700 glibc_post_upgrade %{buildroot}%{_sbindir}
516
517 install -m 644 %{SOURCE7} %{buildroot}/etc
518 install -m 644 %{SOURCE5} %{buildroot}/etc
519 install -m 644 posix/gai.conf %{buildroot}/etc
520
521 mkdir -p %{buildroot}/etc/default
522 install -m 644 nis/nss %{buildroot}/etc/default/
523
524 mkdir -p %{buildroot}%{_includedir}/resolv
525 install -m 0644 resolv/mapv4v6addr.h %{buildroot}%{_includedir}/resolv/
526 install -m 0644 resolv/mapv4v6hostent.h %{buildroot}%{_includedir}/resolv/
527
528 %if %{build_html}
529 mkdir -p %{buildroot}%{_datadir}/doc/glibc
530 cp -p cc-base/manual/libc/*.html %{buildroot}%{_datadir}/doc/glibc
531 %endif
532
533
534 #
535 # Create ld.so.conf
536 #
537 cat > %{buildroot}/etc/ld.so.conf <<EOF
538 %if "%{_lib}" == "lib64"
539 /usr/local/lib64
540 %endif
541 /usr/local/lib
542 include /etc/ld.so.conf.d/*.conf
543 # /lib64, /lib, /usr/lib64 and /usr/lib gets added
544 # automatically by ldconfig after parsing this file.
545 # So, they do not need to be listed.
546 EOF
547 # Add ldconfig cache directory for directory ownership
548 mkdir -p %{buildroot}/var/cache/ldconfig
549 # Empty the ld.so.cache:
550 rm -f %{buildroot}/etc/ld.so.cache
551 touch %{buildroot}/etc/ld.so.cache
552
553 # Don't look at ldd! We don't wish a /bin/sh requires
554 chmod 644 %{buildroot}%{_bindir}/ldd
555
556 # Remove timezone data, now coming in standalone package:
557 for i in sbin/sln usr/bin/tzselect usr/sbin/zic usr/sbin/zdump etc/localtime; do
558         rm -f %{buildroot}/$i
559 done
560 rm -rf %{buildroot}%{_datadir}/zoneinfo
561
562 %ifarch armv7hl
563 # Provide compatibility link
564 ln -s ld-%{glibc_major_version}.so %{buildroot}/lib/ld-linux.so.3
565 %endif
566
567 # Move getconf to %{_libexecdir}/getconf/ to avoid cross device link
568 mv %{buildroot}%{_bindir}/getconf %{buildroot}%{_libexecdir}/getconf/getconf
569 ln -s %{_libexecdir}/getconf/getconf %{buildroot}%{_bindir}/getconf
570
571 #######################################################################
572 ###
573 ### ...
574 ###
575 #######################################################################
576
577 %{?asan:
578 %ifarch %{asan_arch}
579 HERE=%{_builddir}/%{name}-%{version}
580 GLIBC=$HERE
581 ASAN_BUILD=$HERE/asan-build
582 cp $ASAN_BUILD/libc.so %{buildroot}/%{_lib}/libc-2.24-asan.so
583 %endif
584 }
585
586 %{?glibc_run_tests:
587   mkdir testresults
588   cp --parents $(find cc-base -name "*tests.sum") testresults/
589   cp check.log testresults/
590   chmod 644 $(find testresults/ -type f)
591 }
592
593 %post -p %{_sbindir}/glibc_post_upgrade
594
595 %postun -p /sbin/ldconfig
596
597 %post locale
598 for l in /usr/share/locale/locale.alias %{_libdir}/gconv/gconv-modules; do
599         [ -d "$l.d" ] || continue
600         echo "###X# The following is autogenerated from extra files in the .d directory:" >>"$l"
601         cat "$l.d"/* >>"$l"
602 done
603 /usr/sbin/iconvconfig
604
605 %post info
606 %install_info --info-dir=%{_infodir} %{_infodir}/libc.info.gz
607
608 %postun info
609 %install_info_delete --info-dir=%{_infodir} %{_infodir}/libc.info.gz
610
611 %files
612 %manifest %{name}.manifest
613 # glibc
614 %defattr(-,root,root)
615 %license LICENSES COPYING COPYING.LIB
616 %config(noreplace) /etc/bindresvport.blacklist
617 %config /etc/ld.so.conf
618 %attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/ld.so.cache
619 %config(noreplace) /etc/rpc
620 %verify(not md5 size mtime) %config(noreplace) /etc/nsswitch.conf
621 %verify(not md5 size mtime) %config(noreplace) /etc/gai.conf
622 %config(noreplace) /etc/default/nss
623 /%{_lib}/ld-%{glibc_major_version}.so
624
625 # Each architecture has a different name for the dynamic linker:
626 %ifarch %arm
627 %ifarch armv7hl
628 /%{_lib}/ld-linux-armhf.so.3
629 # Keep compatibility link
630 /%{_lib}/ld-linux.so.3
631 %else
632 /%{_lib}/ld-linux.so.3
633 %endif
634 %endif
635 %ifarch x86_64
636 /%{_lib}/ld-linux-x86-64.so.2
637 %endif
638 %ifarch %ix86 %sparc
639 /%{_lib}/ld-linux.so.2
640 %endif
641 %ifarch aarch64
642 /lib/ld-linux-aarch64.so.1
643 /%{_lib}/ld-linux-aarch64.so.1
644 %endif
645
646 /%{_lib}/libanl-%{glibc_major_version}.so
647 /%{_lib}/libanl.so.1
648 /%{_lib}/libc-%{glibc_major_version}.so
649 /%{_lib}/libc.so.6*
650 /%{_lib}/libcrypt-%{glibc_major_version}.so
651 /%{_lib}/libcrypt.so.1
652 /%{_lib}/libdl-%{glibc_major_version}.so
653 /%{_lib}/libdl.so.2*
654 /%{_lib}/libm-%{glibc_major_version}.so
655 /%{_lib}/libm.so.6*
656 /%{_lib}/libnsl-%{glibc_major_version}.so
657 /%{_lib}/libnsl.so.1
658 /%{_lib}/libnss_compat-%{glibc_major_version}.so
659 /%{_lib}/libnss_compat.so.2
660 /%{_lib}/libnss_db-%{glibc_major_version}.so
661 /%{_lib}/libnss_db.so.2
662 /%{_lib}/libnss_dns-%{glibc_major_version}.so
663 /%{_lib}/libnss_dns.so.2
664 /%{_lib}/libnss_files-%{glibc_major_version}.so
665 /%{_lib}/libnss_files.so.2
666 /%{_lib}/libnss_optfiles-%{glibc_major_version}.so
667 /%{_lib}/libnss_optfiles.so.2
668 /%{_lib}/libnss_hesiod-%{glibc_major_version}.so
669 /%{_lib}/libnss_hesiod.so.2
670 /%{_lib}/libpthread-%{glibc_major_version}.so
671 /%{_lib}/libpthread.so.0
672 /%{_lib}/libthread_db-1.0.so
673 /%{_lib}/libthread_db.so.1
674 /%{_lib}/libresolv-%{glibc_major_version}.so
675 /%{_lib}/libresolv.so.2
676 /%{_lib}/librt-%{glibc_major_version}.so
677 /%{_lib}/librt.so.1
678 /%{_lib}/libutil-%{glibc_major_version}.so
679 /%{_lib}/libutil.so.1
680 %define optimized_libs() \
681         %dir %attr(0755,root,root) /%{_lib}/%1\
682         /%{_lib}/%1/libc-%{glibc_major_version}.so\
683         /%{_lib}/%1/libc.so.6*\
684         /%{_lib}/%1/libm-%{glibc_major_version}.so\
685         /%{_lib}/%1/libm.so.6*\
686         /%{_lib}/%1/libpthread-%{glibc_major_version}.so\
687         /%{_lib}/%1/libpthread.so.0\
688         /%{_lib}/%1/librt-%{glibc_major_version}.so\
689         /%{_lib}/%1/librt.so.1\
690         /%{_lib}/%1/libthread_db-1.0.so\
691         /%{_lib}/%1/libthread_db.so.1
692
693 %dir %attr(0700,root,root) /var/cache/ldconfig
694 /sbin/ldconfig
695 %{_bindir}/gencat
696 %{_bindir}/getconf
697 %{_bindir}/getent
698 %{_bindir}/iconv
699 %attr(755,root,root) %{_bindir}/ldd
700 %ifarch %ix86 sparc sparcv9
701         %{_bindir}/lddlibc4
702 %endif
703 %{_bindir}/locale
704 %{_bindir}/localedef
705 %dir %attr(0755,root,root) %{_libexecdir}/getconf
706 %{_libexecdir}/getconf/*
707 %{_sbindir}/glibc_post_upgrade
708 %{_sbindir}/iconvconfig
709 /%{_lib}/libBrokenLocale-%{glibc_major_version}.so
710 /%{_lib}/libBrokenLocale.so.1
711
712 %ifarch %ix86
713
714 %files obsolete
715 %manifest %{name}.manifest
716 %license COPYING.LIB
717 %defattr (755,root,root,755)
718 %dir /%{_lib}/obsolete/
719         #%dir /%{_lib}/obsolete/noversion
720         #/%{_lib}/obsolete/noversion/libNoVersion-%{glibc_major_version}.so
721         #/%{_lib}/obsolete/noversion/libNoVersion.so.1
722 %endif
723
724 %files locale -f libc.lang
725 %manifest %{name}.manifest
726 %license COPYING COPYING.LIB
727 %defattr(-,root,root)
728 %{_datadir}/locale/locale.alias
729 %if %{build_locales}
730 /usr/lib/locale/*
731 %endif
732 %{_libdir}/gconv
733
734 %{?asan:
735 %ifarch %{asan_arch}
736 %files asan
737 %manifest %{name}.manifest
738 /%{_lib}/libc-2.24-asan.so
739 %endif
740 }
741
742 %files devel
743 %manifest %{name}.manifest
744 %defattr(-,root,root)
745 %license COPYING COPYING.LIB 
746 %doc NEWS README
747 %{_bindir}/rpcgen
748 %{_includedir}/*
749 %{_libdir}/*.o
750 %{_libdir}/*.so
751 # These static libraries are needed even for shared builds
752 %{_libdir}/libc_nonshared.a
753 %{_libdir}/libg.a
754 %ifarch ppc ppc64 s390 s390x sparc sparcv8 sparcv9 sparcv9v
755 # This is not built on sparc64.
756         %{_libdir}/libnldbl_nonshared.a
757 %endif
758 %{_libdir}/libmcheck.a
759 %{_libdir}/librpcsvc.a
760
761 %files devel-static
762 %manifest %{name}.manifest
763 %defattr(-,root,root)
764 %{_libdir}/libBrokenLocale.a
765 %{_libdir}/libanl.a
766 %{_libdir}/libc.a
767 %{_libdir}/libcrypt.a
768 %{_libdir}/libdl.a
769 %{_libdir}/libm.a
770 %{_libdir}/libpthread.a
771 %{_libdir}/libresolv.a
772 %{_libdir}/librt.a
773 %{_libdir}/libutil.a
774
775 %files info
776 %manifest %{name}.manifest
777 %defattr(-,root,root)
778 %doc %{_infodir}/libc.info.gz
779 %doc %{_infodir}/libc.info-?.gz
780 %doc %{_infodir}/libc.info-??.gz
781
782 %if %{build_html}
783 %files html
784 %manifest %{name}.manifest
785 %defattr(-,root,root)
786 %doc %{_prefix}/share/doc/glibc
787 %endif
788
789 %files i18ndata
790 %manifest %{name}.manifest
791 %defattr(-,root,root)
792 %{_prefix}/share/i18n
793
794 %if %{build_profile}
795 %files profile
796 %manifest %{name}.manifest
797 %license COPYING COPYING.LIB
798 %defattr(-,root,root)
799 %{_libdir}/libc_p.a
800 %{_libdir}/libBrokenLocale_p.a
801 %{_libdir}/libanl_p.a
802 %{_libdir}/libm_p.a
803 %{_libdir}/libcrypt_p.a
804 %{_libdir}/libpthread_p.a
805 %{_libdir}/libresolv_p.a
806 %{_libdir}/librt_p.a
807 %{_libdir}/librpcsvc_p.a
808 %{_libdir}/libutil_p.a
809 %{_libdir}/libdl_p.a
810 %endif
811
812 %files devel-utils
813 %manifest %{name}.manifest
814 %defattr(-,root,root)
815 /%{_lib}/libmemusage.so
816 /%{_lib}/libpcprofile.so
817 /%{_libdir}/libBrokenLocale.so
818 /%{_lib}/libSegFault.so
819 /%{_lib}/libthread_db-1.0.so
820 /%{_lib}/libthread_db.so.1
821 /%{_libdir}/libthread_db.so
822 %dir /%{_libdir}/audit
823 /%{_libdir}/audit/sotruss-lib.so
824 # These need gd-devel for building
825 # %%{_bindir}/memusage
826 # %%{_bindir}/memusagestat
827 %{_bindir}/mtrace
828 %{_bindir}/pcprofiledump
829 %{_bindir}/sotruss
830 %{_bindir}/xtrace
831 %{_bindir}/pldd
832 %{_bindir}/catchsegv
833 %{_bindir}/sprof
834
835 %files extra
836 %manifest %{name}.manifest
837 %license COPYING.LIB
838 %defattr(-,root,root)
839 %{_bindir}/makedb
840 /var/db/Makefile
841
842 %{?glibc_run_tests:
843 %files testresults
844 %defattr(-,root,root)
845 %doc testresults/check.log
846 %doc testresults/*
847 }
848
849 %docs_package