/[packages]/cauldron/glibc/current/SPECS/glibc.spec
ViewVC logotype

Contents of /cauldron/glibc/current/SPECS/glibc.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 816251 - (show annotations) (download)
Sat Feb 21 20:29:13 2015 UTC (9 years, 2 months ago) by tmb
File size: 48743 byte(s)
- sync with upstream glibc-2.20 maintenance branch:
  * Update Russian translation
  * Revert to defining __extern_inline only for gcc-4.3+ (BZ #17266)
  * Update French translation
  * BZ#17460: Fix buffer overrun in nscd --help
  * MIPS: Avoid a dangling `vfork@GLIBC_2.0' reference
  * AArch64: End frame record chain correctly
  * Make __extern_always_inline usable on clang++ again
  * Move findidx nested functions to top-level
  * Fix memory handling in strxfrm_l [BZ #16009] (CVE pending)
  * Use AVX unaligned memcpy only if AVX2 is available


1 # RH 2.2.4-20, SuSE 2.3.1-32
2
3 # <epoch>:<version>-<release> tags for glibc main package
4 %define glibcversion 2.20
5 %define __glibcrelease 15
6 %define glibcepoch 6
7
8 # CVS snapshots of glibc
9 %define RELEASE 1
10 %if %{RELEASE}
11 %define source_package glibc-%{glibcversion}
12 %define source_dir glibc-%{glibcversion}
13 %define _glibcrelease %{__glibcrelease}
14 %else
15 %define snapshot 20081113
16 %define source_package glibc-%{glibcversion}-%{snapshot}
17 %define source_dir glibc-%{glibcversion}
18 %define _glibcrelease 0.%{snapshot}.%{__glibcrelease}
19 %endif
20
21 %define glibcrelease %mkrel %{_glibcrelease}
22
23 # crypt blowfish support
24 %define crypt_bf_ver 1.2
25
26 # Define "cross" to an architecture to which glibc is to be
27 # cross-compiled
28 %define build_cross 0
29 %{expand: %{?cross: %%global build_cross 1}}
30
31 %if %{build_cross}
32 %define target_cpu %{cross}
33 %define cross_prefix cross-%{target_cpu}-
34 %define _prefix /usr/%{target_cpu}-%{_real_vendor}-linux%{gnuext}
35 %define cross_program_prefix %{target_cpu}-%{_real_vendor}-linux%{gnuext}-
36 %define _exec_prefix %{_prefix}
37 # brain damage alert: should not be needed imho
38 # overriding _prefix and _exec_prefix should be enough
39 %define _bindir %{_exec_prefix}/bin
40 %define _sbindir %{_exec_prefix}/sbin
41 %define _libexecdir %{_exec_prefix}/libexec
42 %define _datadir %{_prefix}/share
43 %define _sharedstatedir %{_prefix}/com
44 %define _localstatedir %{_prefix}/var
45 %define _lib lib
46 %define _libdir %{_exec_prefix}/%{_lib}
47 %define _slibdir %{_exec_prefix}/%{_lib}
48 %define _slibdir32 %{_exec_prefix}/lib
49 %define _includedir %{_prefix}/include
50 %else
51 %define gnuext %{_gnu}
52 %define target_cpu %{_target_cpu}
53 %define cross_prefix %{nil}
54 %define cross_program_prefix %{nil}
55 %define _slibdir /%{_lib}
56 %define _slibdir32 /lib
57 %endif
58
59 # Define target (base) architecture
60 %define arch %(echo %{target_cpu}|sed -e "s/\\(i.86\\|athlon\\)/i386/" -e "s/amd64/x86_64/")
61 %define isarch() %(case " %* " in (*" %{arch} "*) echo 1;; (*) echo 0;; esac)
62
63 %if %{build_cross}
64 %if %isarch %arm
65 %define gnuext -gnueabi
66 %else
67 %define gnuext -gnu
68 %endif
69 %endif
70
71 # Define Xen arches to build with -mno-tls-direct-direct-seg-refs
72 %define xenarches %{ix86} x86_64
73
74 # arches which requires glibc-port
75 %define ports_arch %arm %mips
76
77 # Define to build nscd with selinux support
78 %define build_selinux 0
79
80 # Flag for build_pdf_doc:
81 # 1 build glibc with PDF documentation
82 # 0 don't build PDF glibc documentation (e.g. for bootstrap build)
83 %define build_pdf_doc 0
84
85 # Enable checking by default for arches where we know tests all pass
86 %define build_check 0
87
88 # Allow make check to fail only when running kernels where we know
89 # tests must pass (no missing features or bugs in the kernel)
90 %define check_min_kver 2.6.32
91
92 # Define to build a biarch package
93 %define build_biarch 0
94 %if %isarch x86_64 mips64 mips64el
95 %define build_biarch 1
96 %endif
97
98 # Define to build glibc-debug package
99 %define build_debug 1
100 %define _enable_debug_packages 1
101 %if "%{_enable_debug_packages}" == "1"
102 %define build_debug 0
103 %endif
104
105 # Define to bootstrap new glibc
106 %define build_bootstrap 0
107 %{expand: %{!?build_cross_bootstrap: %global build_cross_bootstrap 0}}
108
109 %define build_profile 1
110 %define build_nscd 1
111 %define build_doc 1
112 %define build_utils 1
113 %define build_i18ndata 1
114 %define build_timezone 0
115
116 # Disable a few defaults when cross-compiling a glibc
117 %if %{build_cross}
118 %define build_doc 0
119 %define build_pdf_doc 0
120 %define build_biarch 0
121 %define build_check 0
122 %define build_debug 0
123 %define build_nscd 0
124 %define build_profile 0
125 %define build_utils 0
126 %define build_i18ndata 0
127 %define build_timezone 0
128 %endif
129
130 # Allow --with[out] <feature> at rpm command line build
131 %{expand: %{?_without_PDF: %%global build_pdf_doc 0}}
132 %{expand: %{?_without_CHECK: %%global build_check 0}}
133 %{expand: %{?_without_UTILS: %%global build_utils 0}}
134 %{expand: %{?_without_BOOTSTRAP:%%global build_bootstrap 0}}
135 %{expand: %{?_with_PDF: %%global build_pdf_doc 1}}
136 %{expand: %{?_with_CHECK: %%global build_check 1}}
137 %{expand: %{?_with_UTILS: %%global build_utils 1}}
138 %{expand: %{?_with_BOOTSTRAP: %%global build_bootstrap 1}}
139
140 Summary: The GNU libc libraries
141 Name: %{cross_prefix}glibc
142 Version: %{glibcversion}
143 Release: %{glibcrelease}
144 Epoch: %{glibcepoch}
145 License: LGPL
146 Group: System/Libraries
147 Url: http://www.gnu.org/software/libc/
148
149 # FSF source
150 Source0: http://ftp.gnu.org/gnu/glibc/%{source_package}.tar.xz
151 %if %{RELEASE}
152 Source1: http://ftp.gnu.org/gnu/glibc/%{source_package}.tar.xz.sig
153 %endif
154 Source2: libc-lock.h
155
156 Source4: glibc-find-requires.sh
157 Source5: glibc-check.sh
158 Source6: nscd.service
159 Source7: nscd.socket
160 Source8: nsswitch.conf
161 Source9: nscd.conf
162
163 # wrapper to avoid rpm circular dependencies
164 Source14: glibc-post-wrapper.c
165
166 # Blowfish support
167 Source16: http://www.openwall.com/crypt/crypt_blowfish-%{crypt_bf_ver}.tar.gz
168 Source17: http://www.openwall.com/crypt/crypt_blowfish-%{crypt_bf_ver}.tar.gz.sign
169 Source18: http://cvsweb.openwall.com/cgi/cvsweb.cgi/~checkout~/Owl/packages/glibc/crypt_freesec.c
170 Source19: http://cvsweb.openwall.com/cgi/cvsweb.cgi/~checkout~/Owl/packages/glibc/crypt_freesec.h
171
172 %if %{build_cross}
173 Autoreq: false
174 Autoprov: false
175 %else
176 Provides: glibc-crypt_blowfish = %{crypt_bf_ver}
177 Provides: should-restart = system
178 %if %isarch %{xenarches}
179 Obsoletes: %{name}-xen
180 Provides: %{name}-xen
181 %endif
182 # The dynamic linker supports DT_GNU_HASH
183 Provides: rtld(GNU_HASH)
184 Autoreq: false
185 %endif
186 BuildRequires: patch
187 BuildRequires: gettext
188 BuildRequires: perl
189 BuildRequires: kernel-userspace-headers
190 BuildRequires: libstdc++-static-devel
191 BuildRequires: hardlink
192 %if %{build_selinux}
193 BuildRequires: libselinux-devel >= 1.17.10
194 %endif
195 # (tmb) force latest binutils
196 BuildRequires: %{cross_prefix}binutils >= 2.20
197 # we need the static dash
198 %define ash_bin /usr/bin/dash.static
199 Requires(post): dash-static
200 Requires: filesystem >= 2.1.9-18
201 # (tmb) force fixed gcc-4.9.1-2
202 BuildRequires: %{cross_prefix}gcc >= 4.9.1-2
203 %if !%{build_cross}
204 %ifarch mips mipsel
205 Provides: ld.so.1
206 %endif
207 %endif
208
209 # Old prelink versions brakes the system with glibc 2.11
210 Conflicts: prelink < 1:0.4.2-1.20091104.1
211
212 BuildRequires: texinfo
213 BuildRequires: texinfo-tex
214 %if %{build_pdf_doc}
215 BuildRequires: texlive
216 %endif
217 %if %{build_utils}
218 BuildRequires: gd-devel
219 %endif
220 BuildRequires: autoconf2.5
221 BuildRequires: libcap-devel
222 BuildRequires: rpm-mageia-setup-build >= 1.147
223 BuildRequires: spec-helper >= 0.31.2
224
225 # make "localedef --add-to-archive" to follow symlink
226 # safe to send ustream, need to be kept for locales
227 Patch00: glibc-2.11.1-localedef-archive-follow-symlinks.patch
228
229 # various path fix, according to usrmove
230 Patch01: glibc-2.17-fhs-usrmove.patch
231 Patch02: glibc-2.9-ldd-non-exec.patch
232 # try to fallback on loading /lib/libnss_*.so.X.Y when the loading
233 # of /lib/libnss_*.so.X failed. Should be dropped, IMHO.
234 Patch04: glibc-2.17-nss-upgrade.patch
235
236 Patch06: glibc-2.20-share-locale.patch
237 # use xvt instead of xterm in xtrace.sh
238 # cannot be pushed upstream as xvt is Ma* specific
239 Patch09: glibc-2.2.4-xterm-xvt.patch
240
241 # add transliteration for "COLON SIGN"
242 # ( used for the money of money of san salvador )
243 Patch11: glibc-2.19-compat-EUR-currencies.patch
244
245 # fix the chkconfig header, should be sent upstream
246 Patch13: glibc-2.3.3-nscd-enable.patch
247
248 # disable cache for hosts on nscd, as this is seen as insecure
249 # if the system relie on reverse dns for security
250 Patch14: glibc-2.9-nscd-no-host-cache.patch
251
252 Patch17: glibc-2.18-i386-hwcapinfo.patch
253
254 # add some new timezone for various cities
255 # Halifax, Montreal, Johannesburg
256 # should be sent upstream ( I guess )
257 Patch23: glibc-2.3.4-timezone.patch
258 Patch24: glibc-2.10.1-biarch-cpp-defines.patch
259 Patch26: glibc-2.17-nice_fix.patch
260
261 # fix a typo, safe to send upstream
262 Patch27: glibc-2.20-ENOTTY-fr-translation.patch
263 Patch29: glibc-2.3.5-biarch-utils.patch
264
265 # remove multiarch header, Ma* specific patch
266 # check if still needed or if the work was finished
267 Patch30: glibc-2.17-multiarch.patch
268 Patch31: glibc-2.20-i586-hptiming.patch
269
270 # do not use i686 optimised library if the processor do not support
271 # cmov ( some i686 cpu don't, from VIA iirc )
272 # shuld be sent upstream, IMHO
273 Patch32: glibc-2.3.4-i586-if-no-cmov.patch
274
275 # translation fixes, need to be checked with some i18n team member
276 # should be safe to send upstream once checked
277 Patch33: glibc-2.3.6-pt_BR-i18nfixes.patch
278 Patch35: glibc-2.16.0-force-gb18030-for-zh_CN.patch
279
280 # disable parallel testsuite of rt on powerpc with SMT
281 Patch38: glibc-2.18-testsuite-rt-notparallel.patch
282 # freesec crypt
283 Patch39: glibc-2.17-mga-owl-crypt_freesec.patch
284 Patch40: glibc-2.14.1-avx-relocate_fcrypt.patch
285 Patch41: glibc-2.14.1-avx-increase_BF_FRAME.patch
286 Patch42: glibc-2.20-mga-avx-owl-crypt.patch
287
288 # add support for sha256 and sha512 in crypt
289 # likely coming from owl
290 Patch43: glibc-2.16.0-mga-wrapper_handle_sha.patch
291
292 # check for libcap, even if selinux is disabled
293 # should be sent upstream
294 Patch44: glibc-2.19-dont-tie-libcap-with-selinux.patch
295
296 # change page size to 16k. mandatory for loongson
297 # but not necessary a good idea for other socs
298 Patch46: glibc-2.20-mips_16k_page_size.patch
299
300 Patch50: crypt_blowfish_arm.patch
301
302 ### upstream glibc 2.20 branch fixes
303 Patch101: 101-Update-Russian-translation.patch
304 Patch102: 102-Add-new-Linux-3.16-constants-to-netinet-udp.h.patch
305 Patch103: 103-Handle-zero-prefix-length-in-getifaddrs-BZ-17371.patch
306 Patch104: 104-Revert-to-defining-__extern_inline-only-for-gcc-4.3-.patch
307 Patch105: 105-Fix-memory-leak-in-libio-wfileops.c-do_ftell_wide-BZ.patch
308 Patch106: 106-Fix-memory-leak-in-error-path-of-do_ftell_wide-BZ-17.patch
309 Patch107: 107-Update-French-translation.patch
310 Patch108: 108-BZ-17460-Fix-buffer-overrun-in-nscd-help.patch
311 Patch109: 109-MIPS-Avoid-a-dangling-vfork-GLIBC_2.0-reference.patch
312 Patch110: 110-AArch64-End-frame-record-chain-correctly.patch
313 Patch111: 111-CVE-2014-7817-wordexp-fails-to-honour-WRDE_NOCMD.patch
314 Patch112: 112-Make-__extern_always_inline-usable-on-clang-again.patch
315 Patch113: 113-CVE-2012-3406-Stack-overflow-in-vfprintf-BZ-16617.patch
316 Patch114: 114-CVE-2014-9402-Avoid-infinite-loop-in-nss_dns-getnetbyname-BZ-17630.patch
317 Patch115: 115-Move-findidx-nested-functions-to-top-level.patch
318 # CVE pending for this one
319 Patch116: 116-Fix-memory-handling-in-strxfrm_l-BZ-16009.patch
320 Patch117: 117-Use-AVX-unaligned-memcpy-only-if-AVX2-is-available.patch
321 Patch118: 118-CVE-2015-1472-wscanf-allocates-too-little-memory.patch
322
323 ### upstream fixes from glibc master branch
324 Patch201: glibc-2.20-malloc-additional-unlink-hardening-for-non-small-bin.patch
325 # disable elision as glibc breaks on intel microcode udate
326 Patch202: glibc-2.20-disable-all-lock-elision-unless--enable-lock-elision-is-yes.patch
327 # upstream (BZ #12926)
328 Patch203: glibc-2.20-Fix-infinite-loop-in-check_pf.patch
329 # upstream [BZ #15378]
330 Patch204: glibc-2.20-elf-dl-load.c-open_path-Avoid-writing-to-env_path_list-when-none-of-search-dir-exists.patch
331
332
333 # Determine minium kernel versions
334 %define enablekernel 2.6.32
335 Conflicts: kernel < %{enablekernel}
336
337 # conflict nicrocode that breaks lock elision
338 Conflicts: microcode < 0.20140913-2
339
340 # People changed location of rpm scripts...
341 %define rpmscripts /usr/lib/rpm/%{_real_vendor}
342
343 # Don't try to explicitly provide GLIBC_PRIVATE versioned libraries
344 %define __find_provides %{_builddir}/%{source_dir}/find_provides.sh
345 %define __find_requires %{_builddir}/%{source_dir}/find_requires.sh
346
347 %if !%{build_cross}
348 Obsoletes: ld.so
349 Provides: ld.so
350 %endif
351
352 Obsoletes: ldconfig
353 Provides: ldconfig = %{glibcepoch}:%{glibcversion}-%{glibcrelease} /sbin/ldconfig
354 # obsolete nss_db as it got merged again in 2.15
355 Obsoletes: nss_db <= 2.2.3-0.pre1.9
356
357 %description
358 The glibc package contains standard libraries which are used by
359 multiple programs on the system. In order to save disk space and
360 memory, as well as to make upgrading easier, common system code is
361 kept in one place and shared between programs. This particular package
362 contains the most important sets of shared libraries: the standard C
363 library and the standard math library. Without these two libraries, a
364 Linux system will not function. The glibc package also contains
365 national language (locale) support.
366
367 This package now also provides ldconfig which was package seperately in
368 the past. Ldconfig is a basic system program which determines run-time
369 link bindings between ld.so and shared libraries. Ldconfig scans a running
370 system and sets up the symbolic links that are used to load shared
371 libraries properly. It also creates a cache (/etc/ld.so.cache) which
372 speeds the loading of programs which use shared libraries.
373
374 %package devel
375 Summary: Header and object files for development using standard C libraries
376 Group: Development/C
377 Requires(post): info-install
378 Requires(preun): info-install
379 Requires(post): coreutils
380 Requires(postun): coreutils, awk
381 Obsoletes: libc-debug, libc-headers, libc-devel, linuxthreads-devel, nptl-devel
382 %if !%{build_debug}
383 Obsoletes: %{name}-debug < 6:2.3.2-15
384 %endif
385 Requires: %{name} = %{glibcepoch}:%{glibcversion}-%{glibcrelease}
386 %if !%{build_cross}
387 Requires: linux-userspace-headers
388 %endif
389 %if %{build_cross}
390 Autoreq: false
391 Autoprov: false
392 %else
393 Autoreq: true
394 %endif
395 Provides: glibc-crypt_blowfish-devel = %{crypt_bf_ver}
396
397 %description devel
398 The glibc-devel package contains the header and object files necessary
399 for developing programs which use the standard C libraries (which are
400 used by nearly all programs). If you are developing programs which
401 will use the standard C libraries, your system needs to have these
402 standard header and object files available in order to create the
403 executables.
404
405 This package also includes the C header files for the Linux kernel.
406 The header files define structures and constants that are needed for
407 building most standard programs. The header files are also needed for
408 rebuilding the kernel.
409
410 Install glibc-devel if you are going to develop programs which will
411 use the standard C libraries.
412
413 %package static-devel
414 Summary: Static libraries for GNU C library
415 Group: Development/C
416 Requires: %{name}-devel = %{glibcepoch}:%{glibcversion}-%{glibcrelease}
417
418 %description static-devel
419 The glibc-static-devel package contains the static libraries necessary
420 for developing programs which use the standard C libraries. Install
421 glibc-static-devel if you need to statically link your program or
422 library.
423
424 %package profile
425 Summary: The GNU libc libraries, including support for gprof profiling
426 Group: Development/C
427 Obsoletes: libc-profile
428 Provides: libc-profile = %{glibcversion}-%{glibcrelease}
429 Autoreq: true
430
431 %description profile
432 The glibc-profile package includes the GNU libc libraries and support
433 for profiling using the gprof program. Profiling is analyzing a
434 program's functions to see how much CPU time they use and determining
435 which functions are calling other functions during execution. To use
436 gprof to profile a program, your program needs to use the GNU libc
437 libraries included in glibc-profile (instead of the standard GNU libc
438 libraries included in the glibc package).
439
440 If you are going to use the gprof program to profile a program, you'll
441 need to install the glibc-profile program.
442
443 %package -n nscd
444 Summary: A Name Service Caching Daemon (nscd)
445 Group: System/Servers
446 Requires(post): systemd >= %{systemd_required_version}
447 Requires(post): rpm-helper >= 0.24.8-1
448 Requires(preun): rpm-helper >= 0.24.8-1
449 Autoreq: true
450
451 %description -n nscd
452 Nscd caches name service lookups and can dramatically improve
453 performance with NIS+, and may help with DNS as well. Note that you
454 can't use nscd with 2.0 kernels because of bugs in the kernel-side
455 thread support. Unfortunately, nscd happens to hit these bugs
456 particularly hard.
457
458 Install nscd if you need a name service lookup caching daemon, and
459 you're not using a version 2.0 kernel.
460
461 %if %{build_debug}
462 %package debug
463 Summary: Shared standard C libraries with debugging information
464 Group: System/Libraries
465 Requires: %{name} = %{glibcepoch}:%{glibcversion}-%{glibcrelease}
466 Autoreq: false
467
468 %description debug
469 The glibc-debug package contains shared standard C libraries with
470 debugging information. You need this only if you want to step into C
471 library routines during debugging.
472
473 To use these libraries, you need to add %{_libdir}/debug to your
474 LD_LIBRARY_PATH variable prior to starting the debugger.
475 %endif
476
477 %package utils
478 Summary: Development utilities from GNU C library
479 Group: Development/Other
480 Requires: %{name} = %{glibcepoch}:%{glibcversion}-%{glibcrelease}
481
482 %description utils
483 The glibc-utils package contains memusage, a memory usage profiler,
484 mtrace, a memory leak tracer and xtrace, a function call tracer which
485 can be helpful during program debugging.
486
487 If unsure if you need this, don't install this package.
488
489 %if %{build_i18ndata}
490 %package i18ndata
491 Summary: Database sources for 'locale'
492 Group: System/Libraries
493
494 %description i18ndata
495 This package contains the data needed to build the locale data files
496 to use the internationalization features of the GNU libc.
497 %endif
498
499 %if %{build_timezone}
500 %package -n timezone
501 Summary: Time zone descriptions
502 Group: System/Base
503
504 %description -n timezone
505 These are configuration files that describe possible
506 time zones.
507 %endif
508
509 %package doc
510 Summary: GNU C library documentation
511 Group: Development/Other
512 BuildArch: noarch
513
514 %description doc
515 The glibc-doc package contains documentation for the GNU C library in
516 info format.
517
518 %if %{build_pdf_doc}
519 %package doc-pdf
520 Summary: GNU C library documentation
521 Group: Development/Other
522 BuildArch: noarch
523
524 %description doc-pdf
525 The glibc-doc-pdf package contains the printable documentation for the
526 GNU C library in PDF format.
527 %endif
528
529 %prep
530 %setup -q -n %{source_dir} -a 16
531
532 # upstream fixes from glibc 2.20 branch
533 %patch101 -p1 -b .p101
534 %patch102 -p1 -b .p102
535 %patch103 -p1 -b .p103
536 %patch104 -p1 -b .p104
537 %patch105 -p1 -b .p105
538 %patch106 -p1 -b .p106
539 %patch107 -p1 -b .p107
540 %patch108 -p1 -b .p108
541 %patch109 -p1 -b .p109
542 %patch110 -p1 -b .p110
543 %patch111 -p1 -b .p111
544 %patch112 -p1 -b .p112
545 %patch113 -p1 -b .p113
546 %patch114 -p1 -b .p114
547 %patch115 -p1 -b .p115
548 %patch116 -p1 -b .p116
549 %patch117 -p1 -b .p117
550 %patch118 -p1 -b .p118
551
552 # upstream fixes from glibc master branch
553 %patch201 -p1 -b .p201
554 %patch202 -p1 -b .p202
555 %patch203 -p1 -b .p203
556 %patch204 -p1 -b .p204
557
558 # other patches
559 %patch00 -p1 -b .localedef-archive-follow-symlinks
560 %patch01 -p1 -b .fhs
561 %patch02 -p1 -b .ldd-non-exec
562 %patch04 -p1 -b .nss-upgrade
563 %patch06 -p1 -b .share-locale
564 %patch09 -p1 -b .xterm-xvt
565 %patch11 -p1 -b .compat-EUR-currencies
566 %patch13 -p1 -b .nscd-enable
567 %patch14 -p1 -b .nscd-no-host-cache
568 %patch17 -p1 -b .i386-hwcapinfo
569 %patch23 -p1 -b .timezone
570 %patch24 -p1 -b .biarch-cpp-defines
571 %patch26 -p1 -b .nice-fix
572 %patch27 -p1 -b .ENOTTY-fr-translation
573 %patch29 -p1 -b .biarch-utils
574 %patch30 -p1 -b .multiarch-check
575 %patch31 -p1 -b .i586-hptiming
576 %patch32 -p1 -b .i586-if-no-cmov
577 %patch33 -p1 -b .pt_BR-i18nfixes
578 %patch35 -p1 -b .zh_CN-charset-fixes
579 %patch38 -p1 -b .testsuite-rt-notparallel
580 %patch44 -p1 -b .dont-tie-libcap-with-selinux
581 %patch46 -p1 -b .pagesize
582
583 # copy freesec source
584 cp %{_sourcedir}/crypt_freesec.[ch] crypt/
585 echo "Applying crypt_blowfish patch:"
586 %patch42 -p1 -b .mga-avx-owl-crypt
587 mv crypt/crypt.h crypt/gnu-crypt.h
588 cp -a crypt_blowfish-%{crypt_bf_ver}/*.[chS] crypt/
589
590 # FreeSec support for extended/new-style/BSDI hashes in crypt(3)
591 %patch39 -p1 -b .mga-owl-crypt_freesec
592 %patch40 -p1 -b .avx-relocate_fcrypt
593 %patch41 -p1 -b .avx-increase_BF_FRAME
594 # add sha256-crypt and sha512-crypt support to the Openwall wrapper
595 %patch43 -p1 -b .mga-wrapper_handle_sha
596 %patch50 -p1 -b .crypt_arm_asm
597
598 %if %{build_selinux}
599 # XXX kludge to build nscd with selinux support as it added -nostdinc
600 # so /usr/include/selinux is not found
601 ln -s %{_includedir}/selinux selinux
602 %endif
603
604 find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \;
605
606 # \\(Anssi 03/2008\\) FIXME: use __provides_exclude
607 cat > find_provides.sh << EOF
608 #!/bin/sh
609 %{rpmscripts}/find-provides | grep -v GLIBC_PRIVATE
610 exit 0
611 EOF
612 chmod +x find_provides.sh
613
614 cat > find_requires.bootstrap.sh << EOF
615 /bin/sh %{SOURCE4} %{buildroot} %{_target_cpu} | grep -v "\(GLIBC_PRIVATE\|linux-gate\|linux-vdso\)"
616 exit 0
617 EOF
618 chmod +x find_requires.bootstrap.sh
619
620 # XXX: use better way later to avoid LD_LIBRARY_PATH issue
621 cat %{rpmscripts}/find-requires | sed '/.*LD_LIBRARY_PATH.*/d;' > find_requires
622 chmod +x find_requires
623 # \\(Anssi 03/2008\\) FIXME: use __requires_exclude
624 cat > find_requires.noprivate.sh << EOF
625 %{_builddir}/%{source_dir}/find_requires %{buildroot} %{_target_cpu} | \
626 grep -v GLIBC_PRIVATE
627 exit 0
628 EOF
629 chmod +x find_requires.noprivate.sh
630
631 # FIXME: fix system rpm find-requires to use the prefix cross version
632 %if %{build_bootstrap} || "%{_target_cpu}" != "%{target_cpu}"
633 ln -s find_requires.bootstrap.sh find_requires.sh
634 %else
635 ln -s find_requires.noprivate.sh find_requires.sh
636 %endif
637
638 # Remove patch backups from files we ship in glibc packages
639 rm -f ChangeLog.[^0-9]*
640 rm -f localedata/locales/{???_??,??_??}.*
641 rm -f localedata/locales/[a-z_]*.*
642
643 %build
644 # Prepare test matrix in the next function
645 CheckList=$PWD/Check.list
646 rm -f $CheckList
647 touch $CheckList
648
649 #
650 # CompareKver <kernel version>
651 # function to compare the desired kernel version with running kernel
652 # version (package releases not taken into account in comparison). The
653 # function returns:
654 # -1 = <kernel version> is lesser than current running kernel
655 # 0 = <kernel version> is equal to the current running kernel
656 # 1 = <kernel version> is greater than current running kernel
657 #
658 function CompareKver() {
659 v1=`echo $1 | sed 's/\.\?$/./'`
660 v2=`uname -r | sed 's/[^.0-9].*//' | sed 's/\.\?$/./'`
661 n=1
662 s=0
663 while true; do
664 c1=`echo "$v1" | cut -d "." -f $n`
665 c2=`echo "$v2" | cut -d "." -f $n`
666 if [ -z "$c1" -a -z "$c2" ]; then
667 break
668 elif [ -z "$c1" ]; then
669 s=-1
670 break
671 elif [ -z "$c2" ]; then
672 s=1
673 break
674 elif [ "$c1" -gt "$c2" ]; then
675 s=1
676 break
677 elif [ "$c2" -gt "$c1" ]; then
678 s=-1
679 break
680 fi
681 n=$((n + 1))
682 done
683 echo $s
684 }
685
686 #
687 # BuildGlibc <arch> [<extra_configure_options>+]
688 #
689 function BuildGlibc() {
690 arch="$1"
691 shift 1
692
693 # PowerPC CPU add-on
694 case $arch in
695 cpu-addon,*)
696 cpu=` echo "$arch" | sed -n "/.*,\([^,]*\),.*$/s//\1/p"`
697 arch=`echo "$arch" | sed -n "/.*,.*,\([^,]*\)$/s//\1/p"`
698 ;;
699 *)
700 cpu=$arch
701 ;;
702 esac
703
704 # Select optimization flags and compiler to use
705 BuildAltArch="no"
706 BuildCompFlags=""
707 BuildFlags=""
708 case $arch in
709 i[3456]86 | athlon)
710 BuildFlags="-march=$arch -mtune=generic"
711 if [[ "`uname -m`" = "x86_64" ]]; then
712 BuildAltArch="yes"
713 BuildCompFlags="-m32"
714 fi
715 ;;
716 x86_64)
717 BuildFlags="-mtune=generic"
718 ;;
719 mips|mipsel)
720 BuildFlags="-march=mips3"
721 BuildCompFlags="-march=mips3"
722 ;;
723 mips32|mips32el)
724 BuildFlags="-march=mips3 -mabi=n32"
725 BuildCompFlags="-march=mips3 -mabi=n32"
726 ;;
727 mips64|mips64el)
728 BuildFlags="-march=mips3 -mabi=64"
729 BuildCompFlags="-march=mips3 -mabi=64"
730 ;;
731 armv4t*)
732 BuildFlags="-march=armv4t"
733 BuildCompFlags="-march=armv4t"
734 ;;
735 armv5t*)
736 BuildFlags="-march=armv5t"
737 BuildCompFlags="-march=armv5t"
738 ;;
739 # to check
740 armv7*)
741 BuildFlags="-march=armv7-a"
742 BuildCompFlags="-march=armv7-a"
743 ;;
744 esac
745
746 # Choose multiarch support
747 MultiArchFlags=
748 case $arch in
749 i686 | x86_64)
750 MultiArchFlags="--enable-multi-arch"
751 ;;
752 esac
753
754 # Determine C & C++ compilers
755 BuildCC="%{__cc} $BuildCompFlags"
756 BuildCXX="%{__cxx} $BuildCompFlags"
757
758 # Are we supposed to cross-compile?
759 if [[ "%{target_cpu}" != "%{_target_cpu}" ]]; then
760 # Can't use BuildCC anymore with previous changes.
761 BuildCC="%{cross_program_prefix}gcc $BuildCompFlags"
762 BuildCXX="%{cross_program_prefix}g++ $BuildCompFlags"
763 BuildCross="--build=%{_target_platform}"
764 export libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes
765 fi
766
767 BuildFlags="$BuildFlags -DNDEBUG=1 -O2 -finline-functions -g"
768
769 # Do not use direct references against %gs when accessing tls data
770 # XXX make it the default in GCC? (for other non glibc specific usage)
771 case $arch in
772 i[3456]86 | x86_64)
773 BuildFlags="$BuildFlags -mno-tls-direct-seg-refs"
774 ;;
775 esac
776
777 # Arch specific compilation flags
778 if [[ "$arch" = "ppc64" ]]; then
779 BuildFlags="$BuildFlags -fno-inline-functions -mno-minimal-toc"
780 fi
781
782 # Extra configure flags
783 ExtraFlags=
784 if [[ "%{build_profile}" != "0" ]]; then
785 ExtraFlags="$ExtraFlags --enable-profile"
786 fi
787
788 # NPTL+TLS are now the default
789 # check for other arches
790 %if %isarch %ports_arch
791 Pthreads="ports nptl"
792 %else
793 Pthreads="nptl"
794 %endif
795
796 # Add-ons
797 AddOns="libidn"
798 if [[ "$cpu" != "$arch" ]]; then
799 AddOns="$AddOns,powerpc-cpu"
800 BuildFlags="$BuildFlags -mcpu=$cpu"
801 ExtraFlags="$ExtraFlags --with-cpu=$cpu"
802 fi
803
804 # Build with selinux support?
805 %if %{build_selinux}
806 SElinuxFlags="--with-selinux"
807 %else
808 SElinuxFlags="--without-selinux"
809 %endif
810
811 # Kernel headers directory
812 KernelHeaders=%{_includedir}
813
814 # Determine library name
815 glibc_cv_cc_64bit_output=no
816 if echo ".text" | $BuildCC -c -o test.o -xassembler -; then
817 case `/usr/bin/file test.o` in
818 *"ELF 64"*)
819 glibc_cv_cc_64bit_output=yes
820 ;;
821 esac
822 fi
823 rm -f test.o
824
825 # Force a separate and clean object dir
826 rm -rf build-$cpu-linux
827 mkdir build-$cpu-linux
828 pushd build-$cpu-linux
829 [[ "$BuildAltArch" = "yes" ]] && touch ".alt" || touch ".main"
830 CC="$BuildCC" CXX="$BuildCXX" CFLAGS="$BuildFlags" ../configure \
831 $arch-%{_real_vendor}-linux%{gnuext} $BuildCross \
832 --prefix=%{_prefix} \
833 --libexecdir=%{_prefix}/libexec \
834 --infodir=%{_infodir} \
835 --enable-add-ons="$AddOns" --without-cvs \
836 $ExtraFlags $MultiArchFlags $SElinuxFlags \
837 --enable-kernel=%{enablekernel} \
838 --with-headers=$KernelHeaders ${1+"$@"} \
839 --enable-obsolete-rpc
840 %make -r -s
841 popd
842
843 # All tests are expected to pass on certain platforms, depending also
844 # on the version of the kernel running
845 case $arch in
846 athlon | ia64 | ppc | ppc64)
847 if [ "`CompareKver %{check_min_kver}`" -lt 0 ]; then
848 check_flags=""
849 else
850 check_flags="-k"
851 fi
852 ;;
853 *)
854 check_flags="-k"
855 ;;
856 esac
857
858 # Generate test matrix
859 [[ -d "build-$arch-linux" ]] || {
860 echo "ERROR: PrepareGlibcTest: build-$arch-linux does not exist!"
861 return 1
862 }
863 local BuildJobs="-j`getconf _NPROCESSORS_ONLN`"
864 echo "$BuildJobs -d build-$arch-linux $check_flags" >> $CheckList
865
866 case $cpu in
867 i686|athlon) base_arch=i586;;
868 power*) base_arch=$arch;;
869 *) base_arch=none;;
870 esac
871
872 [[ -d "build-$base_arch-linux" ]] && {
873 check_flags="$check_flags -l build-$base_arch-linux/elf/ld.so"
874 echo "$BuildJobs -d build-$arch-linux $check_flags" >> $CheckList
875 }
876 return 0
877 }
878
879 # Build main glibc
880 BuildGlibc %{target_cpu}
881
882 %if %{build_biarch}
883 %if %isarch x86_64
884 BuildGlibc i686
885 %endif
886 %endif
887 %if %isarch mips
888 BuildGlibc mips64
889 BuildGlibc mips32
890 %endif
891 %if %isarch mipsel
892 BuildGlibc mips64el
893 BuildGlibc mips32el
894 %endif
895 %if %isarch mips64
896 BuildGlibc mips
897 BuildGlibc mips32
898 %endif
899 %if %isarch mips64el
900 BuildGlibc mipsel
901 BuildGlibc mips32el
902 %endif
903
904 # Build i686 libraries if not already building for i686/athlon
905 case %{target_cpu} in
906 i686 | athlon)
907 ;;
908 i[3-6]86)
909 BuildGlibc i686 --disable-profile
910 ;;
911 esac
912
913 make -C crypt_blowfish-%{crypt_bf_ver} man
914
915 %if %{build_check}
916 export TMPDIR=/tmp
917 export TIMEOUTFACTOR=16
918 Check="$PWD/glibc-check.sh"
919 cat %{SOURCE5} > $Check
920 chmod +x $Check
921 while read arglist; do
922 $Check $arglist || exit 1
923 done < $CheckList
924 %endif
925
926 %install
927 # force use of _NPROCESSORS_ONLN jobs since RPM_BUILD_NCPUS could be
928 # greater for icecream
929 BuildJobs="-j`getconf _NPROCESSORS_ONLN`"
930
931 make install_root=$RPM_BUILD_ROOT install -C build-%{target_cpu}-linux
932 %if %{build_i18ndata}
933 (cd build-%{target_cpu}-linux;
934 make $BuildJobs -C ../localedata objdir=`pwd` \
935 install_root=$RPM_BUILD_ROOT \
936 install-locales
937 )
938 install -m 0644 localedata/SUPPORTED $RPM_BUILD_ROOT/%{_datadir}/i18n/
939 %endif
940
941 # Empty filelist for non i686/athlon targets
942 > extralibs.filelist
943
944 # Install biarch libraries
945 %if %{build_biarch} || %isarch mips mipsel
946 %if %isarch x86_64
947 ALT_ARCHES=i686-linux
948 %endif
949 %if %isarch mips
950 ALT_ARCHES="mips64-linux mips32-linux"
951 %endif
952 %if %isarch mipsel
953 ALT_ARCHES="mips64el-linux mips32el-linux"
954 %endif
955 %if %isarch mips64
956 ALT_ARCHES="mips-linux mips32-linux"
957 %endif
958 %if %isarch mips64el
959 ALT_ARCHES="mipsel-linux mips32el-linux"
960 %endif
961
962 for ALT_ARCH in $ALT_ARCHES; do
963 mkdir -p $RPM_BUILD_ROOT/$ALT_ARCH
964 make install_root=$RPM_BUILD_ROOT/$ALT_ARCH install -C build-$ALT_ARCH
965
966 # Dispatch */lib only
967 case "$ALT_ARCH" in
968 mips32*)
969 LIB="%{_slibdir}32"
970 ;;
971 mips64*)
972 LIB="%{_slibdir}64"
973 ;;
974 *)
975 LIB=/lib
976 ;;
977 esac
978 %if !%{build_cross}
979 mv $RPM_BUILD_ROOT/$ALT_ARCH/$LIB $RPM_BUILD_ROOT/$LIB
980 mv $RPM_BUILD_ROOT/$ALT_ARCH%{_prefix}/libexec/getconf/* \
981 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/
982 [ ! -d $RPM_BUILD_ROOT/%{_prefix}/$LIB/ ] && mkdir -p $RPM_BUILD_ROOT/%{_prefix}/$LIB/
983 mv $RPM_BUILD_ROOT/$ALT_ARCH/%{_prefix}/$LIB/* $RPM_BUILD_ROOT/%{_prefix}/$LIB/
984 %else
985 mv $RPM_BUILD_ROOT/$ALT_ARCH/%{_prefix}/lib $RPM_BUILD_ROOT/$LIB
986 sed -i $RPM_BUILD_ROOT/$LIB/libc.so -e "s!%{_slibdir}!$LIB!g"
987 %endif
988
989 rm -rf $RPM_BUILD_ROOT/$ALT_ARCH
990 # XXX Dispatch 32-bit stubs
991 (sed '/^@/d' include/stubs-prologue.h; LC_ALL=C sort $(find build-$ALT_ARCH -name stubs)) \
992 > $RPM_BUILD_ROOT%{_includedir}/gnu/stubs-32.h
993 done
994 %endif
995
996 # Install extra glibc libraries
997 function InstallGlibc() {
998 local BuildDir="$1"
999 local SubDir="$2"
1000 local LibDir="$3"
1001
1002 case $BuildDir in
1003 *) Pthreads=nptl ;;
1004 esac
1005
1006 [[ -z "$LibDir" ]] && LibDir="%{_slibdir}"
1007
1008 pushd $BuildDir
1009 mkdir -p $RPM_BUILD_ROOT$LibDir/$SubDir/
1010 install -m755 libc.so $RPM_BUILD_ROOT$LibDir/$SubDir/`basename $RPM_BUILD_ROOT$LibDir/libc-*.so`
1011 ln -sf `basename $RPM_BUILD_ROOT$LibDir/libc-*.so` $RPM_BUILD_ROOT$LibDir/$SubDir/`basename $RPM_BUILD_ROOT$LibDir/libc.so.*`
1012 install -m755 math/libm.so $RPM_BUILD_ROOT$LibDir/$SubDir/`basename $RPM_BUILD_ROOT$LibDir/libm-*.so`
1013 ln -sf `basename $RPM_BUILD_ROOT$LibDir/libm-*.so` $RPM_BUILD_ROOT$LibDir/$SubDir/`basename $RPM_BUILD_ROOT$LibDir/libm.so.*`
1014 install -m755 $Pthreads/libpthread.so $RPM_BUILD_ROOT$LibDir/$SubDir/`basename $RPM_BUILD_ROOT$LibDir/libpthread-*.so`
1015 ln -sf `basename $RPM_BUILD_ROOT$LibDir/libpthread-*.so` $RPM_BUILD_ROOT$LibDir/$SubDir/`basename $RPM_BUILD_ROOT$LibDir/libpthread.so.*`
1016 install -m755 ${Pthreads}_db/libthread_db.so $RPM_BUILD_ROOT$LibDir/$SubDir/`basename $RPM_BUILD_ROOT$LibDir/libthread_db-*.so`
1017 ln -sf `basename $RPM_BUILD_ROOT$LibDir/libthread_db-*.so` $RPM_BUILD_ROOT$LibDir/$SubDir/`basename $RPM_BUILD_ROOT$LibDir/libthread_db.so.*`
1018 install -m755 rt/librt.so $RPM_BUILD_ROOT$LibDir/$SubDir/`basename $RPM_BUILD_ROOT$LibDir/librt-*.so`
1019 ln -sf `basename $RPM_BUILD_ROOT$LibDir/librt-*.so` $RPM_BUILD_ROOT$LibDir/$SubDir/`basename $RPM_BUILD_ROOT$LibDir/librt.so.*`
1020 echo "%dir $LibDir/$SubDir" >> ../extralibs.filelist
1021 find $RPM_BUILD_ROOT$LibDir/$SubDir -maxdepth 1 -type f -o -type l | sed -e "s|$RPM_BUILD_ROOT||" >> ../extralibs.filelist
1022 popd
1023 }
1024
1025 # Install arch-specific optimized libraries
1026 %if %isarch %{ix86}
1027 case %{target_cpu} in
1028 i[3-5]86)
1029 InstallGlibc build-i686-linux i686
1030 ;;
1031 esac
1032 %endif
1033
1034 # NPTL <bits/stdio-lock.h> is not usable outside of glibc, so include
1035 # the generic one (RH#162634)
1036 install -m644 bits/stdio-lock.h $RPM_BUILD_ROOT%{_includedir}/bits/stdio-lock.h
1037 # And <bits/libc-lock.h> needs sanitizing as well.
1038 install -m644 %{SOURCE2} $RPM_BUILD_ROOT%{_includedir}/bits/libc-lock.h
1039
1040 # Compatibility hack: this locale has vanished from glibc, but some other
1041 # programs are still using it. Normally we would handle it in the %pre
1042 # section but with glibc that is simply not an option
1043 mkdir -p $RPM_BUILD_ROOT%{_datadir}/locale/ru_RU/LC_MESSAGES
1044
1045 # Remove the files we don't want to distribute
1046 rm -f $RPM_BUILD_ROOT%{_libdir}/libNoVersion*
1047 rm -f $RPM_BUILD_ROOT%{_slibdir}/libNoVersion*
1048
1049 %if "%{name}" == "glibc"
1050 install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/nsswitch.conf
1051 %endif
1052
1053 # This is for ncsd - in glibc 2.2
1054 %if %{build_nscd}
1055 install -m 644 nscd/nscd.conf $RPM_BUILD_ROOT%{_sysconfdir}
1056 install -d -m 755 %{buildroot}%{_unitdir}
1057 install -m 644 %{SOURCE6} %{buildroot}%{_unitdir}/nscd.service
1058 install -m 644 %{SOURCE7} %{buildroot}%{_unitdir}/nscd.socket
1059 install -D -m 644 %{SOURCE9} %{buildroot}%{_tmpfilesdir}/nscd.conf
1060 %endif
1061
1062 # These man pages require special attention
1063 mkdir -p %{buildroot}%{_mandir}/man3
1064 install -p -m 0644 crypt_blowfish-%{crypt_bf_ver}/*.3 %{buildroot}%{_mandir}/man3/
1065
1066 # Useless and takes place
1067 rm -rf %buildroot/%{_datadir}/zoneinfo/{posix,right}
1068
1069 # Include ld.so.conf
1070 %if "%{name}" == "glibc"
1071 %if %isarch mips mipsel
1072 # needed to get a ldd which understands o32, n32, 64
1073 install -m 755 $RPM_BUILD_DIR/%{source_dir}/build-mips64el-linux/elf/ldd $RPM_BUILD_ROOT/%{_bindir}/ldd
1074 %endif
1075 echo "include /etc/ld.so.conf.d/*.conf" > $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf
1076 chmod 644 $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf
1077 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.conf.d
1078
1079 # ldconfig cache
1080 mkdir -p $RPM_BUILD_ROOT%{_var}/cache/ldconfig
1081 touch $RPM_BUILD_ROOT%{_var}/cache/ldconfig/aux-cache
1082
1083 # automatic ldconfig cache update on rpm installs/removals
1084 # (see http://wiki.mandriva.com/en/Rpm_filetriggers)
1085 install -d %buildroot%{_var}/lib/rpm/filetriggers
1086 cat > %buildroot%{_var}/lib/rpm/filetriggers/00-ldconfig.filter << EOF
1087 ^.((/lib|/usr/lib)(32|64)?/[^/]*\.so\.|/etc/ld.so.conf.d/[^/]*\.conf)
1088 EOF
1089 cat > %buildroot%{_var}/lib/rpm/filetriggers/00-ldconfig.script << EOF
1090 #!/bin/sh
1091 ldconfig -X
1092 EOF
1093 chmod 0755 %buildroot%{_var}/lib/rpm/filetriggers/00-ldconfig.script
1094 %endif
1095
1096 # Include %{_libdir}/gconv/gconv-modules.cache
1097 > $RPM_BUILD_ROOT%{_libdir}/gconv/gconv-modules.cache
1098 chmod 644 $RPM_BUILD_ROOT%{_libdir}/gconv/gconv-modules.cache
1099
1100 %if "%{name}" == "glibc"
1101 touch $RPM_BUILD_ROOT%{_sysconfdir}/ld.so.cache
1102 %endif
1103
1104 # Add libraries to debug sub-package
1105 %if %{build_debug}
1106 mkdir $RPM_BUILD_ROOT%{_libdir}/debug
1107 #cp -a $RPM_BUILD_ROOT%{_libdir}/*.a $RPM_BUILD_ROOT%{_libdir}/debug/
1108 #rm -f $RPM_BUILD_ROOT%{_libdir}/debug/*_p.a
1109 cp -a $RPM_BUILD_ROOT%{_slibdir}/lib*.so* $RPM_BUILD_ROOT%{_libdir}/debug/
1110
1111 pushd $RPM_BUILD_ROOT%{_libdir}/debug
1112 for lib in *.so*; do
1113 [[ -f "$lib" ]] && DEBUG_LIBS="$DEBUG_LIBS %{_libdir}/debug/$lib"
1114 done
1115 popd
1116 %endif
1117
1118 # Are we cross-compiling?
1119 Strip="strip"
1120 if [[ "%{_target_cpu}" != "%{target_cpu}" ]]; then
1121 Strip="%{cross_program_prefix}$Strip"
1122 fi
1123
1124 # Strip debugging info from all static libraries
1125 pushd $RPM_BUILD_ROOT%{_slibdir}
1126 for i in *.a; do
1127 if [ -f "$i" ]; then
1128 case "$i" in
1129 *_p.a) ;;
1130 *) $Strip -g -R .comment $i ;;
1131 esac
1132 fi
1133 done
1134 popd
1135
1136 # post install wrapper
1137 %__cc -Os -DSLIBDIR="\"%{_slibdir}\"" -DASH_BIN="\"%{ash_bin}\"" %{SOURCE14} -static \
1138 -L $RPM_BUILD_ROOT%{_libdir}/ \
1139 -o $RPM_BUILD_ROOT%{_sbindir}/glibc-post-wrapper
1140 chmod 700 $RPM_BUILD_ROOT%{_sbindir}/glibc-post-wrapper
1141
1142 # rquota.x and rquota.h are now provided by quota
1143 rm -f $RPM_BUILD_ROOT%{_includedir}/rpcsvc/rquota.[hx]
1144
1145 # Hardlink identical locale files together
1146 %if %{build_i18ndata}
1147 %{_sbindir}/hardlink -vc $RPM_BUILD_ROOT%{_datadir}/locale
1148 %endif
1149
1150 rm -rf $RPM_BUILD_ROOT%{_includedir}/netatalk/
1151
1152 # Build file list for devel package
1153 find $RPM_BUILD_ROOT%{_includedir} -type f -or -type l > devel.filelist
1154 find $RPM_BUILD_ROOT%{_includedir} -type d | sed "s/^/%dir /" | \
1155 grep -v "%{_libdir}/libnss1.*.so$" | \
1156 grep -v "%{_includedir}$" | >> devel.filelist
1157 find $RPM_BUILD_ROOT%{_libdir} -maxdepth 1 -name "*.so" -o -name "*.o" | egrep -v "(libmemusage.so|libpcprofile.so)" >> devel.filelist
1158 # biarch libs
1159 %if %{build_biarch}
1160 find $RPM_BUILD_ROOT%{_prefix}/lib -maxdepth 1 -name "*.so" -o -name "*.o" | egrep -v "(libmemusage.so|libpcprofile.so)" >> devel.filelist
1161 %endif
1162 %if %isarch mips mipsel
1163 find $RPM_BUILD_ROOT%{_libdir}32 -maxdepth 1 -name "*.so" -o -name "*.o" | egrep -v "(libmemusage.so|libpcprofile.so)" >> devel.filelist
1164 find $RPM_BUILD_ROOT%{_libdir}64 -maxdepth 1 -name "*.so" -o -name "*.o" | egrep -v "(libmemusage.so|libpcprofile.so)" >> devel.filelist
1165 %endif
1166 perl -pi -e "s|$RPM_BUILD_ROOT||" devel.filelist
1167
1168 # /etc/localtime - we're proud of our timezone #Well we may put Paris
1169 %if %{build_timezone}
1170 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/localtime
1171 cp -f $RPM_BUILD_ROOT%{_datadir}/zoneinfo/US/Eastern $RPM_BUILD_ROOT%{_sysconfdir}/localtime
1172 #ln -sf ..%{_datadir}/zoneinfo/US/Eastern $RPM_BUILD_ROOT%{_sysconfdir}/localtime
1173 %endif
1174
1175 # [gg] build PDF documentation
1176 %if %{build_pdf_doc}
1177 (cd manual; texi2dvi -p -t @afourpaper -t @finalout libc.texinfo)
1178 %endif
1179
1180 # the last bit: more documentation
1181 rm -rf documentation
1182 mkdir documentation
1183 cp timezone/README documentation/README.timezone
1184 cp ChangeLog* documentation
1185 gzip -9 documentation/ChangeLog*
1186 mkdir documentation/crypt_blowfish-%{crypt_bf_ver}
1187 install -m 644 crypt_blowfish-%{crypt_bf_ver}/{README,LINKS,PERFORMANCE} \
1188 documentation/crypt_blowfish-%{crypt_bf_ver}
1189
1190 # Generate final rpm filelist, with localized libc.mo files
1191 rm -f rpm.filelist
1192 %if "%{name}" == "glibc"
1193 %find_lang libc
1194 perl -ne '/^\s*$/ or print' libc.lang > rpm.filelist
1195 %endif
1196 cat extralibs.filelist >> rpm.filelist
1197
1198 # Remove unpackaged files
1199 rm -f $RPM_BUILD_ROOT%{_infodir}/dir.old*
1200 rm -rf $RPM_BUILD_ROOT%{_includedir}/asm-*/mach-*/
1201 rm -f $RPM_BUILD_ROOT%{_datadir}/locale/locale-archive*
1202 rm -f $RPM_BUILD_ROOT%{_var}/db/Makefile
1203
1204 %if !%{build_utils}
1205 %if %{build_biarch}
1206 rm -f $RPM_BUILD_ROOT%{_slibdir32}/libmemusage.so
1207 rm -f $RPM_BUILD_ROOT%{_slibdir32}/libpcprofile.so
1208 %endif
1209 %if %isarch mips mipsel
1210 rm -f $RPM_BUILD_ROOT%{_slibdir}32/libmemusage.so
1211 rm -f $RPM_BUILD_ROOT%{_slibdir}32/libpcprofile.so
1212 rm -f $RPM_BUILD_ROOT%{_slibdir}64/libmemusage.so
1213 rm -f $RPM_BUILD_ROOT%{_slibdir}64/libpcprofile.so
1214 %endif
1215 rm -f $RPM_BUILD_ROOT%{_slibdir}/libmemusage.so
1216 rm -f $RPM_BUILD_ROOT%{_slibdir}/libpcprofile.so
1217 rm -f $RPM_BUILD_ROOT%{_bindir}/memusage
1218 rm -f $RPM_BUILD_ROOT%{_bindir}/memusagestat
1219 rm -f $RPM_BUILD_ROOT%{_bindir}/mtrace
1220 rm -f $RPM_BUILD_ROOT%{_bindir}/pcprofiledump
1221 rm -f $RPM_BUILD_ROOT%{_bindir}/xtrace
1222 %endif
1223
1224 %if !%{build_timezone}
1225 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/localtime
1226 rm -f $RPM_BUILD_ROOT%{_sbindir}/zdump
1227 rm -f $RPM_BUILD_ROOT%{_sbindir}/zic
1228 rm -rf $RPM_BUILD_ROOT%{_datadir}/zoneinfo
1229 %endif
1230
1231 %if !%{build_i18ndata}
1232 rm -rf $RPM_BUILD_ROOT%{_datadir}/i18n
1233 %endif
1234
1235 %if "%{name}" != "glibc"
1236 rm -rf $RPM_BUILD_ROOT/boot
1237 rm -rf $RPM_BUILD_ROOT/sbin
1238 rm -rf $RPM_BUILD_ROOT/usr/share
1239 rm -rf $RPM_BUILD_ROOT%{_bindir}
1240 rm -rf $RPM_BUILD_ROOT%{_sbindir}
1241 rm -rf $RPM_BUILD_ROOT%{_datadir}
1242 rm -rf $RPM_BUILD_ROOT%{_infodir}
1243 rm -rf $RPM_BUILD_ROOT%{_prefix}/etc
1244 rm -rf $RPM_BUILD_ROOT%{_libdir}/gconv
1245 %endif
1246
1247 # In case we are cross-compiling, don't bother to remake symlinks and
1248 # fool spec-helper when stripping files
1249 %if "%{name}" != "glibc"
1250 export DONT_SYMLINK_LIBS=1
1251 export PATH=%{_bindir}:$PATH
1252 %endif
1253
1254 %if %build_debug
1255 export EXCLUDE_FROM_STRIP="$DEBUG_LIBS"
1256 %endif
1257
1258 # This will make the '-g' argument to be passed to eu-strip for these
1259 # libraries, so that only debug symbols are stripped and gdb/valgrind continue
1260 # to work without needing glibc-debug package to be installed.
1261 export EXCLUDE_FROM_FULL_STRIP="ld-%{glibcversion}.so libpthread libc-%{glibcversion}.so"
1262
1263 %if "%{name}" == "glibc"
1264 %define upgradestamp %{_slibdir}/glibc.upgraded
1265 %define broken_link %{_slibdir}/libnss_nis.so.1 %{_slibdir}/libnss_files.so.1 %{_slibdir}/libnss_dns.so.1 %{_slibdir}/libnss_compat.so.1
1266
1267
1268 %pre -p <lua>
1269 if posix.stat("/usr%{_slibdir}", "type") == 'directory' then
1270 if not posix.stat("/usr%{_slibdir}/libnss_files-%{glibcversion}.so") then
1271 io.open("%{upgradestamp}", "w"):close()
1272 end
1273 end
1274
1275 %post -p %{_sbindir}/glibc-post-wrapper
1276 export LC_ALL=C
1277
1278 if [ "$1" -gt 1 ]; then
1279 # migrate /etc/ld.so.conf to include the new /etc/ld.so.conf.d/
1280 # without external commands but for removing the temporary file
1281 ldso_conf=/etc/ld.so.conf
1282 while read i; do
1283 [ "$i" = "include /etc/ld.so.conf.d/*.conf" ] && keep=1
1284 # Remove previously used include line without absolute path
1285 [ "$i" = "include ld.so.conf.d/*.conf" ] || echo $i
1286 done < $ldso_conf > $ldso_conf-
1287 if [ -z "$keep" ]; then
1288 echo "include /etc/ld.so.conf.d/*.conf" > $ldso_conf
1289 while read i; do
1290 echo $i
1291 done < $ldso_conf- >> $ldso_conf
1292 fi
1293 [ -x /bin/rm ] && /bin/rm -f $ldso_conf-
1294 fi
1295 /sbin/ldconfig
1296
1297 if [ "$1" -gt 1 ]; then
1298 # On upgrade the services doesn't work because libnss couldn't be
1299 # loaded anymore.
1300 if [ -f %{upgradestamp} ]; then
1301 if /usr/bin/readlink /proc/1/exe >/dev/null && \
1302 /usr/bin/readlink /proc/1/root >/dev/null; then
1303 if [ -x /sbin/telinit -a -p /dev/initctl ]; then
1304 /sbin/telinit u
1305 fi
1306 if [ -x /etc/init.d/sshd -a \
1307 -x /usr/sbin/sshd -a \
1308 -x /bin/bash ]; then
1309 /etc/init.d/sshd condrestart
1310 fi
1311 fi
1312 fi
1313 if [ -f /bin/rm ]; then
1314 for i in %broken_link; do
1315 if [ -e $i ] && [ ! -L $i ]; then
1316 /bin/rm -f $i
1317 fi
1318 done
1319 fi
1320 fi
1321 [ -x /bin/rm ] && /bin/rm -f %{upgradestamp}
1322
1323 # always generate the gconv-modules.cache
1324 %{_sbindir}/iconvconfig -o %{_libdir}/gconv/gconv-modules.cache --nostdlib %{_libdir}/gconv
1325
1326 %endif
1327
1328 %pre devel
1329 if [ -L %{_includedir}/scsi ]; then
1330 rm -f %{_includedir}/scsi
1331 fi
1332 if [ -L %{_includedir}/sound ]; then
1333 rm -f %{_includedir}/sound
1334 fi
1335 if [ -L %{_includedir}/linux ]; then
1336 rm -f %{_includedir}/linux
1337 fi
1338 if [ -L %{_includedir}/asm ]; then
1339 rm -f %{_includedir}/asm
1340 fi
1341 if [ -L %{_includedir}/asm-generic ]; then
1342 rm -f %{_includedir}/asm-generic
1343 fi
1344 %if %isarch x86_64
1345 if [ -L %{_includedir}/asm-x86_64 ]; then
1346 rm -f %{_includedir}/asm-x86_64
1347 fi
1348 if [ -L %{_includedir}/asm-i386 ]; then
1349 rm -f %{_includedir}/asm-i386
1350 fi
1351 %endif
1352 %if %isarch %mips
1353 if [ -L %{_includedir}/asm-mips ]; then
1354 rm -f %{_includedir}/asm-mips
1355 fi
1356 %endif
1357 %if %isarch %arm
1358 if [ -L %{_includedir}/asm-arm ]; then
1359 rm -f %{_includedir}/asm-arm
1360 fi
1361 %endif
1362 exit 0
1363
1364 %if %{build_doc}
1365 %post doc
1366 %_install_info libc.info
1367
1368 %preun doc
1369 %_remove_install_info libc.info
1370 %endif
1371
1372 %if %{build_nscd}
1373 %pre -n nscd
1374 %_pre_useradd nscd / /bin/false
1375
1376 %post -n nscd
1377 %_tmpfilescreate nscd
1378 %_post_service nscd
1379
1380 %preun -n nscd
1381 %_preun_service nscd
1382
1383 %postun -n nscd
1384 %_postun_userdel nscd
1385
1386 if [ "$1" -ge "1" ]; then
1387 /sbin/service nscd condrestart > /dev/null 2>&1 || :
1388 fi
1389 %endif
1390
1391 %clean
1392 #rm -rf "$RPM_BUILD_ROOT"
1393 #rm -f *.filelist*
1394
1395 #
1396 # glibc
1397 #
1398 %files -f rpm.filelist
1399 %if "%{name}" == "glibc"
1400 %if %{build_timezone}
1401 %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/localtime
1402 %endif
1403 %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/nsswitch.conf
1404 %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/ld.so.conf
1405 %dir %{_sysconfdir}/ld.so.conf.d
1406 %config(noreplace) %{_sysconfdir}/rpc
1407 %doc nis/nss
1408 %doc posix/gai.conf
1409 %{_datadir}/locale/locale.alias
1410 /sbin/sln
1411 %dir %{_prefix}/libexec/getconf
1412 %{_prefix}/libexec/getconf/*
1413 %endif
1414 %{_slibdir}/ld-%{glibcversion}.so
1415 %if %isarch i386
1416 %{_slibdir}/ld-linux.so.2
1417 %endif
1418 %if %isarch %arm
1419 %{_slibdir}/ld-linux.so.3
1420 %endif
1421 %if %isarch x86_64
1422 %{_slibdir}/ld-linux-x86-64.so.2
1423 %endif
1424 %if %isarch %mips
1425 %{_slibdir}/ld.so.1
1426 %endif
1427 %{_slibdir}/lib*-[.0-9]*.so
1428 %{_slibdir}/lib*.so.[0-9]*
1429 %{_slibdir}/libSegFault.so
1430 %if "%{name}" == "glibc"
1431 %dir %{_libdir}/audit
1432 %{_libdir}/audit/sotruss-lib.so
1433 %dir %{_libdir}/gconv
1434 %{_libdir}/gconv/*.so
1435 %{_libdir}/gconv/gconv-modules
1436 %ghost %{_libdir}/gconv/gconv-modules.cache
1437 %{_bindir}/catchsegv
1438 %{_bindir}/gencat
1439 %{_bindir}/getconf
1440 %{_bindir}/getent
1441 %{_bindir}/iconv
1442 %{_bindir}/ldd
1443 %if %isarch i386
1444 %{_bindir}/lddlibc4
1445 %endif
1446 %{_bindir}/locale
1447 %{_bindir}/localedef
1448 %{_bindir}/makedb
1449 %{_bindir}/pldd
1450 %{_bindir}/rpcgen
1451 %{_bindir}/sotruss
1452 %{_bindir}/sprof
1453 %{_bindir}/tzselect
1454 %{_sbindir}/iconvconfig
1455 %{_sbindir}/glibc-post-wrapper
1456 %endif
1457
1458 %if %{build_biarch}
1459 %{_slibdir32}/ld-%{glibcversion}.so
1460 %{_slibdir32}/ld-linux*.so.2
1461 %{_slibdir32}/lib*-[.0-9]*.so
1462 %{_slibdir32}/lib*.so.[0-9]*
1463 %{_slibdir32}/libSegFault.so
1464 %dir %{_prefix}/lib/audit
1465 %{_prefix}/lib/audit/sotruss-lib.so
1466 %dir %{_prefix}/lib/gconv
1467 %{_prefix}/lib/gconv/*
1468 %endif
1469 %if %isarch mips mipsel
1470 %{_slibdir}32/ld-%{glibcversion}.so
1471 %{_slibdir}32/ld.so.1
1472 %{_slibdir}32/lib*-[.0-9]*.so
1473 %{_slibdir}32/lib*.so.[0-9]*
1474 %{_slibdir}32/libSegFault.so
1475 %dir %{_libdir}32/gconv
1476 %{_libdir}32/gconv/*
1477 %{_slibdir}64/ld-%{glibcversion}.so
1478 %{_slibdir}64/ld.so.1
1479 %{_slibdir}64/lib*-[.0-9]*.so
1480 %{_slibdir}64/lib*.so.[0-9]*
1481 %{_slibdir}64/libSegFault.so
1482 %dir %{_libdir}64/gconv
1483 %{_libdir}64/gconv/*
1484 %endif
1485
1486 #
1487 # ldconfig
1488 #
1489 %if "%{name}" == "glibc"
1490 /sbin/ldconfig
1491 %ghost %{_sysconfdir}/ld.so.cache
1492 %dir %{_var}/cache/ldconfig
1493 %ghost %{_var}/cache/ldconfig/aux-cache
1494 %{_var}/lib/rpm/filetriggers/00-ldconfig.*
1495 %endif
1496
1497 #
1498 # glibc-devel
1499 #
1500 %files devel -f devel.filelist
1501 %doc README NEWS INSTALL BUGS PROJECTS CONFORMANCE
1502 %doc COPYING COPYING.LIB
1503 %doc documentation/*
1504 %doc hesiod/README.hesiod
1505 %doc crypt/README.ufc-crypt
1506 %if "%{name}" == "glibc"
1507 %{_mandir}/man3/*
1508 %endif
1509 %{_libdir}/libc_nonshared.a
1510 %{_libdir}/libg.a
1511 %{_libdir}/libieee.a
1512 %{_libdir}/libmcheck.a
1513 %{_libdir}/libpthread_nonshared.a
1514 %if "%{name}" == "glibc"
1515 %{_libdir}/librpcsvc.a
1516 %endif
1517
1518 %if %{build_biarch}
1519 %{_prefix}/lib/libc_nonshared.a
1520 %{_prefix}/lib/libg.a
1521 %{_prefix}/lib/libieee.a
1522 %{_prefix}/lib/libmcheck.a
1523 %{_prefix}/lib/libpthread_nonshared.a
1524 %{_prefix}/lib/librpcsvc.a
1525 %endif
1526
1527 %if %isarch mips mipsel
1528 %{_libdir}32/libc_nonshared.a
1529 %{_libdir}32/libg.a
1530 %{_libdir}32/libieee.a
1531 %{_libdir}32/libmcheck.a
1532 %{_libdir}32/libpthread_nonshared.a
1533 %if "%{name}" == "glibc"
1534 %{_libdir}32/librpcsvc.a
1535 %endif
1536 %{_libdir}64/libc_nonshared.a
1537 %{_libdir}64/libg.a
1538 %{_libdir}64/libieee.a
1539 %{_libdir}64/libmcheck.a
1540 %{_libdir}64/libpthread_nonshared.a
1541 %if "%{name}" == "glibc"
1542 %{_libdir}64/librpcsvc.a
1543 %endif
1544 %endif
1545
1546 #
1547 # glibc-static-devel
1548 #
1549 %files static-devel
1550 %doc COPYING COPYING.LIB
1551 %{_libdir}/libBrokenLocale.a
1552 %{_libdir}/libanl.a
1553 %{_libdir}/libc.a
1554 %{_libdir}/libcrypt.a
1555 %{_libdir}/libdl.a
1556 %{_libdir}/libm.a
1557 %{_libdir}/libnsl.a
1558 %{_libdir}/libpthread.a
1559 %{_libdir}/libresolv.a
1560 %{_libdir}/librt.a
1561 %{_libdir}/libutil.a
1562
1563 %if %{build_biarch}
1564 %{_prefix}/lib/libBrokenLocale.a
1565 %{_prefix}/lib/libanl.a
1566 %{_prefix}/lib/libc.a
1567 %{_prefix}/lib/libcrypt.a
1568 %{_prefix}/lib/libdl.a
1569 %{_prefix}/lib/libm.a
1570 %{_prefix}/lib/libnsl.a
1571 %{_prefix}/lib/libpthread.a
1572 %{_prefix}/lib/libresolv.a
1573 %{_prefix}/lib/librt.a
1574 %{_prefix}/lib/libutil.a
1575 %endif
1576
1577 %if %isarch mips mipsel
1578 %{_libdir}32/libBrokenLocale.a
1579 %{_libdir}32/libanl.a
1580 %{_libdir}32/libc.a
1581 %{_libdir}32/libcrypt.a
1582 %{_libdir}32/libdl.a
1583 %{_libdir}32/libm.a
1584 %{_libdir}32/libnsl.a
1585 %{_libdir}32/libpthread.a
1586 %{_libdir}32/libresolv.a
1587 %{_libdir}32/librt.a
1588 %{_libdir}32/libutil.a
1589
1590 %{_libdir}64/libBrokenLocale.a
1591 %{_libdir}64/libanl.a
1592 %{_libdir}64/libc.a
1593 %{_libdir}64/libcrypt.a
1594 %{_libdir}64/libdl.a
1595 %{_libdir}64/libm.a
1596 %{_libdir}64/libnsl.a
1597 %{_libdir}64/libpthread.a
1598 %{_libdir}64/libresolv.a
1599 %{_libdir}64/librt.a
1600 %{_libdir}64/libutil.a
1601 %endif
1602
1603 #
1604 # glibc-doc
1605 #
1606 %if %{build_doc}
1607 %files doc
1608 %{_infodir}/libc.info*
1609 %endif
1610
1611 #
1612 # glibc-doc-pdf
1613 #
1614 %if %{build_pdf_doc}
1615 %files doc-pdf
1616 %doc manual/libc.pdf
1617 %endif
1618
1619 #
1620 # glibc-debug
1621 #
1622 %if %{build_debug}
1623 %files debug
1624 %dir %{_libdir}/debug
1625 %{_libdir}/debug/*.so
1626 %{_libdir}/debug/*.so.*
1627 %if %isarch mips mipsel
1628 %dir %{_libdir}/debug/lib32
1629 %{_libdir}/debug/lib32/*.so
1630 %{_libdir}/debug/lib32/*.so.*
1631 %dir %{_libdir}/debug/lib64
1632 %{_libdir}/debug/lib64/*.so
1633 %{_libdir}/debug/lib64/*.so.*
1634 %endif
1635 %endif
1636
1637 #
1638 # glibc-profile
1639 #
1640 %if %{build_profile}
1641 %files profile
1642 %{_libdir}/lib*_p.a
1643 %if %{build_biarch}
1644 %{_prefix}/lib/lib*_p.a
1645 %endif
1646 %if %isarch mips mipsel
1647 %{_libdir}32/lib*_p.a
1648 %{_libdir}64/lib*_p.a
1649 %endif
1650 %endif
1651
1652 #
1653 # glibc-utils
1654 #
1655 %if %{build_utils}
1656 %files utils
1657 %if %{build_biarch}
1658 %{_slibdir32}/libmemusage.so
1659 %{_slibdir32}/libpcprofile.so
1660 %endif
1661 %{_slibdir}/libmemusage.so
1662 %{_slibdir}/libpcprofile.so
1663 %{_bindir}/memusage
1664 %{_bindir}/memusagestat
1665 %{_bindir}/mtrace
1666 %{_bindir}/pcprofiledump
1667 %{_bindir}/xtrace
1668 %if %isarch mips mipsel
1669 %{_slibdir}32/libmemusage.so
1670 %{_slibdir}32/libpcprofile.so
1671 %{_slibdir}64/libmemusage.so
1672 %{_slibdir}64/libpcprofile.so
1673 %endif
1674 %endif
1675
1676 #
1677 # nscd
1678 #
1679 %if %{build_nscd}
1680 %files -n nscd
1681 %config(noreplace) %{_sysconfdir}/nscd.conf
1682 %{_sbindir}/nscd
1683 %{_unitdir}/nscd.service
1684 %{_unitdir}/nscd.socket
1685 %{_tmpfilesdir}/nscd.conf
1686 %endif
1687
1688 #
1689 # timezone
1690 #
1691 %if %{build_timezone}
1692 %files -n timezone
1693 %{_sbindir}/zdump
1694 %{_sbindir}/zic
1695 %dir %{_datadir}/zoneinfo
1696 %{_datadir}/zoneinfo/*
1697 %endif
1698
1699 #
1700 # glibc-i18ndata
1701 #
1702 %if %{build_i18ndata}
1703 %files i18ndata
1704 %dir %{_datadir}/i18n
1705 %dir %{_datadir}/i18n/charmaps
1706 %{_datadir}/i18n/charmaps/*
1707 %dir %{_datadir}/i18n/locales
1708 %{_datadir}/i18n/locales/*
1709 %{_datadir}/i18n/SUPPORTED
1710 %endif

  ViewVC Help
Powered by ViewVC 1.1.30