packaging: Support 32bit build for armv8-a CPU
[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#-ffortify=[0-9]*##')"
272 BuildFlags="$(echo $BuildFlags | sed -e 's#-fstack-protector-strong##')"
273 BuildFlags="$(echo $BuildFlags | sed -e 's#-fstack-protector##')"
274 BuildFlags="$(echo $BuildFlags | sed -e 's/-Wa,-mimplicit-it=thumb//g' | sed -e 's/-mthumb//g')"
275 # Turn off all -Wformat enable flags as there are glibc tests that explicitly
276 # append -Wno-format and with enabled Wformat options that produced warnings
277 # that turns into errors. Remove -Wformat=1|2 or -Wformat-..-arg
278 BuildFlags="$(echo $BuildFlags | sed -re 's/-Wformat((=[1-2])|((-\w+)+))?(\s|$)//g')"
279
280 %ifarch %arm
281 # Support DA build with armv8 cpu in 32bit mode: prevent Werror on sqrt function
282 (echo ${BuildFlags} | grep '\-march=armv8') && BuildFlags="${BuildFlags} -Wno-error=unused-variable"
283 %endif
284
285 BuildCC="%__cc"
286 BuildCCplus="%__cxx"
287 add_ons=",libidn"
288
289 BuildFlags="$BuildFlags -g"
290
291 %ifarch %arm
292 # Glibc must have both functions' implementations
293 BuildFlags="$BuildFlags -U_LARGEFILE_SOURCE -U_LARGEFILE64_SOURCE -U_FILE_OFFSET_BITS"
294 %endif
295 %if %{disable_assert}
296         BuildFlags="$BuildFlags -DNDEBUG=1"
297 %endif
298 %ifarch %ix86
299         add_ons=$add_ons
300 %endif
301 %ifarch %arm aarch64
302         add_ons=$add_ons
303 %endif
304 %ifarch mipsel
305         # fails to build otherwise - need to recheck and fix
306         %define enable_stackguard_randomization 0
307 %endif
308
309 configure_and_build_glibc() {
310         local dirname="$1"; shift
311         local cflags="$1"; shift
312         local addons="$1"; shift
313         mkdir "cc-$dirname"
314         cd "cc-$dirname"
315         conf_cflags="$cflags -funwind-tables -fPIC"
316         %{?asan: conf_cflags="$conf_cflags -DASAN_INIT_FIRST "}
317
318         profile="--disable-profile"
319 %if %{build_profile}
320         if [ "$dirname" = "base" ] ; then
321             profile="--enable-profile"
322         fi
323 %endif
324         CFLAGS="$conf_cflags" BUILD_CFLAGS="$conf_cflags" \
325         CC="$BuildCC" CXX="$BuildCCplus"  ../configure \
326                 --prefix=%{_prefix} \
327                 --libexecdir=%{_libexecdir} --infodir=%{_infodir} \
328                 --enable-add-ons=$addons \
329                 $profile \
330                 "$@" \
331 %if %{enable_stackguard_randomization}
332                 --enable-stackguard-randomization \
333 %endif
334                 --build=%{target} --host=%{target} \
335 %ifnarch %{multiarcharches}
336                 --disable-multi-arch \
337 %endif
338 %ifarch %{ix86} x86_64 
339                 --disable-mathvec \
340 %endif
341                 --enable-kernel=%{enablekernel} \
342                 --enable-bind-now  --enable-obsolete-rpc \
343                 --disable-nscd \
344                 --disable-experimental-malloc \
345                 libc_cv_cc_pie_default=yes
346         # explicitly set CFLAGS to use the full CFLAGS (not the reduced one for configure)
347         make %{?_smp_mflags} #CFLAGS="$cflags" BUILD_CFLAGS="$cflags"
348         cd ..
349 }
350
351 configure_flags="--prefix=/usr --without-cvs --without-selinux --enable-stackguard-randomization --enable-obsolete-rpc --disable-mathvec"
352
353 configure_flags="$configure_flags --disable-sanity-checks"
354
355 build_asan() {
356   HERE=%{_builddir}/%{name}-%{version}
357   J=${J:-32}
358   GLIBC=$HERE
359   ASAN_BUILD=$HERE/asan-build
360   unset CXXFLAGS
361   unset CFLAGS
362   unset LDFLAGS
363   #chmod +x $HERE/asan-glibc-gcc-wrapper.py
364   #build static wrapper, because we don't want asan to intercept allocators
365   g++ -o gcc-wrapper gcc-wrapper.cc -O3 -funroll-loops -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-exceptions -static
366
367   rm -rf $ASAN_BUILD
368   mkdir -p $ASAN_BUILD
369   cd $ASAN_BUILD
370 #  CC=$HERE/asan-glibc-gcc-wrapper.py $GLIBC/configure $configure_flags
371   CC=$HERE/gcc-wrapper $GLIBC/configure $configure_flags
372
373   # Quick build - builds only libraries, but does not create symlinks.
374   make -r -j $J -C $GLIBC objdir=`pwd` subdir_lib
375   #make -r -j $J -C $GLIBC objdir=`pwd` install_root=$ASAN_INST install-lib
376   cd $HERE
377 }
378
379         #
380         # Build base glibc
381         #
382         configure_and_build_glibc base "$BuildFlags" "$add_ons"
383
384 %{?asan:
385 %ifarch %{asan_arch}
386 build_asan
387 %endif
388 }
389 #
390 # Build html documentation
391 #
392 %if %{build_html}
393 make -C cc-base html
394 %endif
395
396 #
397 # Build glibc_post_upgrade binary
398 #
399 $BuildCC -static %{optflags} -Os $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgrade \
400      -Lcc-base -Bcc-base/csu \
401     '-DREMOVE_TLS_DIRS' '-DREMOVE_PPC_OPTIMIZE_POWER5' \
402     '-DLIBDIR="/%{_lib}"' '-DGCONV_MODULES_DIR="%{_libdir}/gconv"'
403
404 #
405 # Build testsuite
406 #
407 # #check sections could be redefined/disabled, so keep this inside #build
408
409 %{?glibc_run_tests:
410   export LD_AS_NEEDED=0
411   (make %{?_smp_mflags} -C cc-base check || true) 2>&1 | tee check.log
412 }
413
414
415 #######################################################################
416 ###
417 ### CHECK
418 ###
419 #######################################################################
420
421 %check
422 # The testsuite will fail if asneeded is used
423 export LD_AS_NEEDED=0
424 # This has to pass on all platforms!
425 # Exceptions:
426 # None!
427 make %{?_smp_mflags} -C cc-base check-abi
428
429 #######################################################################
430 ###
431 ### INSTALL
432 ###
433 #######################################################################
434
435 %install
436 # We don't want to strip the .symtab from our libraries in find-debuginfo.sh,
437 # certainly not from libpthread.so.* because it is used by libthread_db to find
438 # some non-exported symbols in order to detect if threading support
439 # should be enabled.  These symbols are _not_ exported, and we can't easily
440 # export them retroactively without changing the ABI.  So we have to
441 # continue to "export" them via .symtab, instead of .dynsym :-(
442 # But we also want to keep .symtab and .strtab of other libraries since some
443 # debugging tools currently require these sections directly inside the main
444 # files - specifically valgrind and PurifyPlus.
445 export STRIP_KEEP_SYMTAB=*.so*
446
447 # Make sure we will create the gconv-modules.cache
448 mkdir -p %{buildroot}%{_libdir}/gconv
449 touch %{buildroot}%{_libdir}/gconv/gconv-modules.cache
450
451 # Install base glibc
452 make %{?_smp_mflags} install_root=%{buildroot} install -C cc-base
453
454 install_optimized_variant() {
455         local dirname="$1"; shift
456         local subdir="$1"; shift
457         local subdir_up="$1"; shift
458
459 cd "cc-$dirname"
460 destdir=$RPM_BUILD_ROOT/%{_lib}/$subdir
461 mkdir -p $destdir
462 # Don't run a complete make install, we know which libraries
463 # we want
464 for lib in libc math/libm nptl/libpthread rt/librt nptl_db/libthread_db
465 do
466   libbase=${lib#*/}
467   libbaseso=$(basename $RPM_BUILD_ROOT/%{_lib}/${libbase}-*.so)
468   # Only install if different from base lib
469   if cmp -s ${lib}.so ../cc-base/${lib}.so; then
470     ln -sf $subdir_up/$libbaseso $destdir/$libbaseso
471   else
472     cp -a ${lib}.so $destdir/$libbaseso
473   fi
474   # Emulate ldconfig
475   ln -sf $libbaseso $destdir/$(basename $RPM_BUILD_ROOT/%{_lib}/${libbase}.so.*)
476 done
477 cd ..
478 }
479
480
481 # Install locales
482 %if %{build_locales}
483         # XXX Do not install locales in parallel!
484         cd cc-base
485         # localedef creates hardlinks to other locales if possible
486         # this will not work if we generate them in parallel.
487         # thus we need to run fdupes on  /usr/lib/locale/
488         # Still, on my system this is a speed advantage:
489         # non-parallel build for install-locales: 9:34mins
490         # parallel build with fdupes: 7:08mins
491         make %{?_smp_mflags} install_root=%{buildroot} localedata/install-locales
492         %fdupes %{buildroot}/usr/lib/locale
493         cd ..
494 %endif
495 # Create file list for glibc-locale package
496 %{find_lang} libc
497
498 # Prepare obsolete/, used only on some architectures:
499 export RPM_BUILD_ROOT
500 %ifarch %ix86
501 mkdir -p %{buildroot}/%{_lib}/obsolete
502 %endif
503
504 # NPTL <bits/stdio-lock.h> is not usable outside of glibc, so include
505 # the generic one (RH#162634)
506 # cp -av bits/stdio-lock.h %{buildroot}%{_includedir}/bits/stdio-lock.h
507
508
509 # Miscelanna:
510
511 install -m 0700 glibc_post_upgrade %{buildroot}%{_sbindir}
512
513 install -m 644 %{SOURCE7} %{buildroot}/etc
514 install -m 644 %{SOURCE5} %{buildroot}/etc
515 install -m 644 posix/gai.conf %{buildroot}/etc
516
517 mkdir -p %{buildroot}/etc/default
518 install -m 644 nis/nss %{buildroot}/etc/default/
519
520 mkdir -p %{buildroot}%{_includedir}/resolv
521 install -m 0644 resolv/mapv4v6addr.h %{buildroot}%{_includedir}/resolv/
522 install -m 0644 resolv/mapv4v6hostent.h %{buildroot}%{_includedir}/resolv/
523
524 %if %{build_html}
525 mkdir -p %{buildroot}%{_datadir}/doc/glibc
526 cp -p cc-base/manual/libc/*.html %{buildroot}%{_datadir}/doc/glibc
527 %endif
528
529
530 #
531 # Create ld.so.conf
532 #
533 cat > %{buildroot}/etc/ld.so.conf <<EOF
534 %if "%{_lib}" == "lib64"
535 /usr/local/lib64
536 %endif
537 /usr/local/lib
538 include /etc/ld.so.conf.d/*.conf
539 # /lib64, /lib, /usr/lib64 and /usr/lib gets added
540 # automatically by ldconfig after parsing this file.
541 # So, they do not need to be listed.
542 EOF
543 # Add ldconfig cache directory for directory ownership
544 mkdir -p %{buildroot}/var/cache/ldconfig
545 # Empty the ld.so.cache:
546 rm -f %{buildroot}/etc/ld.so.cache
547 touch %{buildroot}/etc/ld.so.cache
548
549 # Don't look at ldd! We don't wish a /bin/sh requires
550 chmod 644 %{buildroot}%{_bindir}/ldd
551
552 # Remove timezone data, now coming in standalone package:
553 for i in sbin/sln usr/bin/tzselect usr/sbin/zic usr/sbin/zdump etc/localtime; do
554         rm -f %{buildroot}/$i
555 done
556 rm -rf %{buildroot}%{_datadir}/zoneinfo
557
558 %ifarch armv7hl
559 # Provide compatibility link
560 ln -s ld-%{glibc_major_version}.so %{buildroot}/lib/ld-linux.so.3
561 %endif
562
563 # Move getconf to %{_libexecdir}/getconf/ to avoid cross device link
564 mv %{buildroot}%{_bindir}/getconf %{buildroot}%{_libexecdir}/getconf/getconf
565 ln -s %{_libexecdir}/getconf/getconf %{buildroot}%{_bindir}/getconf
566
567 #######################################################################
568 ###
569 ### ...
570 ###
571 #######################################################################
572
573 %{?asan:
574 %ifarch %{asan_arch}
575 HERE=%{_builddir}/%{name}-%{version}
576 GLIBC=$HERE
577 ASAN_BUILD=$HERE/asan-build
578 cp $ASAN_BUILD/libc.so %{buildroot}/%{_lib}/libc-2.24-asan.so
579 %endif
580 }
581
582 %{?glibc_run_tests:
583   mkdir testresults
584   cp --parents $(find cc-base -name "*tests.sum") testresults/
585   cp check.log testresults/
586   chmod 644 $(find testresults/ -type f)
587 }
588
589 %post -p %{_sbindir}/glibc_post_upgrade
590
591 %postun -p /sbin/ldconfig
592
593 %post locale
594 for l in /usr/share/locale/locale.alias %{_libdir}/gconv/gconv-modules; do
595         [ -d "$l.d" ] || continue
596         echo "###X# The following is autogenerated from extra files in the .d directory:" >>"$l"
597         cat "$l.d"/* >>"$l"
598 done
599 /usr/sbin/iconvconfig
600
601 %post info
602 %install_info --info-dir=%{_infodir} %{_infodir}/libc.info.gz
603
604 %postun info
605 %install_info_delete --info-dir=%{_infodir} %{_infodir}/libc.info.gz
606
607 %files
608 %manifest %{name}.manifest
609 # glibc
610 %defattr(-,root,root)
611 %license LICENSES COPYING COPYING.LIB
612 %config(noreplace) /etc/bindresvport.blacklist
613 %config /etc/ld.so.conf
614 %attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/ld.so.cache
615 %config(noreplace) /etc/rpc
616 %verify(not md5 size mtime) %config(noreplace) /etc/nsswitch.conf
617 %verify(not md5 size mtime) %config(noreplace) /etc/gai.conf
618 %config(noreplace) /etc/default/nss
619 /%{_lib}/ld-%{glibc_major_version}.so
620
621 # Each architecture has a different name for the dynamic linker:
622 %ifarch %arm
623 %ifarch armv7hl
624 /%{_lib}/ld-linux-armhf.so.3
625 # Keep compatibility link
626 /%{_lib}/ld-linux.so.3
627 %else
628 /%{_lib}/ld-linux.so.3
629 %endif
630 %endif
631 %ifarch x86_64
632 /%{_lib}/ld-linux-x86-64.so.2
633 %endif
634 %ifarch %ix86 %sparc
635 /%{_lib}/ld-linux.so.2
636 %endif
637 %ifarch aarch64
638 /lib/ld-linux-aarch64.so.1
639 /%{_lib}/ld-linux-aarch64.so.1
640 %endif
641
642 /%{_lib}/libanl-%{glibc_major_version}.so
643 /%{_lib}/libanl.so.1
644 /%{_lib}/libc-%{glibc_major_version}.so
645 /%{_lib}/libc.so.6*
646 /%{_lib}/libcrypt-%{glibc_major_version}.so
647 /%{_lib}/libcrypt.so.1
648 /%{_lib}/libdl-%{glibc_major_version}.so
649 /%{_lib}/libdl.so.2*
650 /%{_lib}/libm-%{glibc_major_version}.so
651 /%{_lib}/libm.so.6*
652 /%{_lib}/libnsl-%{glibc_major_version}.so
653 /%{_lib}/libnsl.so.1
654 /%{_lib}/libnss_compat-%{glibc_major_version}.so
655 /%{_lib}/libnss_compat.so.2
656 /%{_lib}/libnss_db-%{glibc_major_version}.so
657 /%{_lib}/libnss_db.so.2
658 /%{_lib}/libnss_dns-%{glibc_major_version}.so
659 /%{_lib}/libnss_dns.so.2
660 /%{_lib}/libnss_files-%{glibc_major_version}.so
661 /%{_lib}/libnss_files.so.2
662 /%{_lib}/libnss_optfiles-%{glibc_major_version}.so
663 /%{_lib}/libnss_optfiles.so.2
664 /%{_lib}/libnss_hesiod-%{glibc_major_version}.so
665 /%{_lib}/libnss_hesiod.so.2
666 /%{_lib}/libpthread-%{glibc_major_version}.so
667 /%{_lib}/libpthread.so.0
668 /%{_lib}/libthread_db-1.0.so
669 /%{_lib}/libthread_db.so.1
670 /%{_lib}/libresolv-%{glibc_major_version}.so
671 /%{_lib}/libresolv.so.2
672 /%{_lib}/librt-%{glibc_major_version}.so
673 /%{_lib}/librt.so.1
674 /%{_lib}/libutil-%{glibc_major_version}.so
675 /%{_lib}/libutil.so.1
676 %define optimized_libs() \
677         %dir %attr(0755,root,root) /%{_lib}/%1\
678         /%{_lib}/%1/libc-%{glibc_major_version}.so\
679         /%{_lib}/%1/libc.so.6*\
680         /%{_lib}/%1/libm-%{glibc_major_version}.so\
681         /%{_lib}/%1/libm.so.6*\
682         /%{_lib}/%1/libpthread-%{glibc_major_version}.so\
683         /%{_lib}/%1/libpthread.so.0\
684         /%{_lib}/%1/librt-%{glibc_major_version}.so\
685         /%{_lib}/%1/librt.so.1\
686         /%{_lib}/%1/libthread_db-1.0.so\
687         /%{_lib}/%1/libthread_db.so.1
688
689 %dir %attr(0700,root,root) /var/cache/ldconfig
690 /sbin/ldconfig
691 %{_bindir}/gencat
692 %{_bindir}/getconf
693 %{_bindir}/getent
694 %{_bindir}/iconv
695 %attr(755,root,root) %{_bindir}/ldd
696 %ifarch %ix86 sparc sparcv9
697         %{_bindir}/lddlibc4
698 %endif
699 %{_bindir}/locale
700 %{_bindir}/localedef
701 %dir %attr(0755,root,root) %{_libexecdir}/getconf
702 %{_libexecdir}/getconf/*
703 %{_sbindir}/glibc_post_upgrade
704 %{_sbindir}/iconvconfig
705 /%{_lib}/libBrokenLocale-%{glibc_major_version}.so
706 /%{_lib}/libBrokenLocale.so.1
707
708 %ifarch %ix86
709
710 %files obsolete
711 %manifest %{name}.manifest
712 %license COPYING.LIB
713 %defattr (755,root,root,755)
714 %dir /%{_lib}/obsolete/
715         #%dir /%{_lib}/obsolete/noversion
716         #/%{_lib}/obsolete/noversion/libNoVersion-%{glibc_major_version}.so
717         #/%{_lib}/obsolete/noversion/libNoVersion.so.1
718 %endif
719
720 %files locale -f libc.lang
721 %manifest %{name}.manifest
722 %license COPYING COPYING.LIB
723 %defattr(-,root,root)
724 %{_datadir}/locale/locale.alias
725 %if %{build_locales}
726 /usr/lib/locale/*
727 %endif
728 %{_libdir}/gconv
729
730 %{?asan:
731 %ifarch %{asan_arch}
732 %files asan
733 %manifest %{name}.manifest
734 /%{_lib}/libc-2.24-asan.so
735 %endif
736 }
737
738 %files devel
739 %manifest %{name}.manifest
740 %defattr(-,root,root)
741 %license COPYING COPYING.LIB 
742 %doc NEWS README
743 %{_bindir}/rpcgen
744 %{_includedir}/*
745 %{_libdir}/*.o
746 %{_libdir}/*.so
747 # These static libraries are needed even for shared builds
748 %{_libdir}/libc_nonshared.a
749 %{_libdir}/libg.a
750 %ifarch ppc ppc64 s390 s390x sparc sparcv8 sparcv9 sparcv9v
751 # This is not built on sparc64.
752         %{_libdir}/libnldbl_nonshared.a
753 %endif
754 %{_libdir}/libmcheck.a
755 %{_libdir}/librpcsvc.a
756
757 %files devel-static
758 %manifest %{name}.manifest
759 %defattr(-,root,root)
760 %{_libdir}/libBrokenLocale.a
761 %{_libdir}/libanl.a
762 %{_libdir}/libc.a
763 %{_libdir}/libcrypt.a
764 %{_libdir}/libdl.a
765 %{_libdir}/libm.a
766 %{_libdir}/libpthread.a
767 %{_libdir}/libresolv.a
768 %{_libdir}/librt.a
769 %{_libdir}/libutil.a
770
771 %files info
772 %manifest %{name}.manifest
773 %defattr(-,root,root)
774 %doc %{_infodir}/libc.info.gz
775 %doc %{_infodir}/libc.info-?.gz
776 %doc %{_infodir}/libc.info-??.gz
777
778 %if %{build_html}
779 %files html
780 %manifest %{name}.manifest
781 %defattr(-,root,root)
782 %doc %{_prefix}/share/doc/glibc
783 %endif
784
785 %files i18ndata
786 %manifest %{name}.manifest
787 %defattr(-,root,root)
788 %{_prefix}/share/i18n
789
790 %if %{build_profile}
791 %files profile
792 %manifest %{name}.manifest
793 %license COPYING COPYING.LIB
794 %defattr(-,root,root)
795 %{_libdir}/libc_p.a
796 %{_libdir}/libBrokenLocale_p.a
797 %{_libdir}/libanl_p.a
798 %{_libdir}/libm_p.a
799 %{_libdir}/libcrypt_p.a
800 %{_libdir}/libpthread_p.a
801 %{_libdir}/libresolv_p.a
802 %{_libdir}/librt_p.a
803 %{_libdir}/librpcsvc_p.a
804 %{_libdir}/libutil_p.a
805 %{_libdir}/libdl_p.a
806 %endif
807
808 %files devel-utils
809 %manifest %{name}.manifest
810 %defattr(-,root,root)
811 /%{_lib}/libmemusage.so
812 /%{_lib}/libpcprofile.so
813 /%{_libdir}/libBrokenLocale.so
814 /%{_lib}/libSegFault.so
815 /%{_lib}/libthread_db-1.0.so
816 /%{_lib}/libthread_db.so.1
817 /%{_libdir}/libthread_db.so
818 %dir /%{_libdir}/audit
819 /%{_libdir}/audit/sotruss-lib.so
820 # These need gd-devel for building
821 # %%{_bindir}/memusage
822 # %%{_bindir}/memusagestat
823 %{_bindir}/mtrace
824 %{_bindir}/pcprofiledump
825 %{_bindir}/sotruss
826 %{_bindir}/xtrace
827 %{_bindir}/pldd
828 %{_bindir}/catchsegv
829 %{_bindir}/sprof
830
831 %files extra
832 %manifest %{name}.manifest
833 %license COPYING.LIB
834 %defattr(-,root,root)
835 %{_bindir}/makedb
836 /var/db/Makefile
837
838 %{?glibc_run_tests:
839 %files testresults
840 %defattr(-,root,root)
841 %doc testresults/check.log
842 %doc testresults/*
843 }
844
845 %docs_package