%define glibcsrcdir glibc-2.25-123-gedcf13e25c %define glibcversion 2.25 %define glibcrelease 13%{?dist} # Pre-release tarballs are pulled in from git using a command that is # effectively: # # git archive HEAD --format=tar --prefix=$(git describe --match 'glibc-*')/ \ # > $(git describe --match 'glibc-*').tar # gzip -9 $(git describe --match 'glibc-*').tar # # glibc_release_url is only defined when we have a release tarball. %{lua: if string.match(rpm.expand("%glibcsrcdir"), "^glibc%-[0-9.]+$") then rpm.define("glibc_release_url https://ftp.gnu.org/gnu/glibc/") end} ############################################################################## # We support hte following options: # --with/--without, # * testsuite - Running the testsuite. # * benchtests - Running and building benchmark subpackage. # * bootstrap - Bootstrapping the package. # * werror - Build with -Werror # * docs - Build with documentation and the required dependencies. # * valgrind - Run smoke tests with valgrind to verify dynamic loader. # # You must always run the testsuite for production builds. # Default: Always run the testsuite. %bcond_without testsuite # Default: Always build the benchtests. %bcond_without benchtests # Default: Not bootstrapping. %bcond_with bootstrap # Default: Enable using -Werror %bcond_without werror # Default: Always build documentation. %bcond_without docs # Default: Always run valgrind tests %bcond_without valgrind # Run a valgrind smoke test to ensure that the release is compatible and # doesn't any new feature that might cause valgrind to abort. %if %{with valgrind} %ifarch s390 ppc64 ppc64p7 %{mips} # There is no valgrind support for 31-bit s390, nor for MIPS. # The valgrind test does not work on ppc64, ppc64p7 (bug 1273103). %undefine with_valgrind %endif %endif %if %{with werror} %ifarch s390 s390x # The s390 and s390x builds are not -Werror clean yet. For s390, the # latest problem may be due to questionable code in test-string.h # (upstream bug 19261, rhbz#1283184). %undefine with_werror %endif %endif %if %{with bootstrap} # Disable benchtests, -Werror, docs, and valgrind if we're bootstrapping %undefine with_benchtests %undefine with_werror %undefine with_docs %undefine with_valgrind %endif ############################################################################## # Auxiliary arches are those arches that can be built in addition # to the core supported arches. You either install an auxarch or # you install the base arch, not both. You would do this in order # to provide a more optimized version of the package for your arch. %define auxarches athlon alphaev6 ############################################################################## # Enable lock elision support for these architectures # # At the moment lock elision is disabled on x86_64 until there's a CPU that # would actually benefit from enabling it. Intel released a microcode update # to disable HLE and RTM at boot and the Fedora kernel now applies it early # enough that keeping lock elision enabled should be harmless, but we have # disabled it anyway as a conservative measure. %define lock_elision_arches s390 s390x ############################################################################## # We build a special package for Xen that includes TLS support with # no negative segment offsets for use with Xen guests. This is # purely an optimization for increased performance on those arches. %define xenarches i686 athlon %ifarch %{xenarches} %define buildxen 1 %define xenpackage 0 %else %define buildxen 0 %define xenpackage 0 %endif ############################################################################## # We support only 64-bit POWER with the following runtimes: # 64-bit BE: # - Power 620 / 970 ISA (default runtime, compatile with POWER4 and newer) # - Provided for the large number of PowerPC G5 users. # - IFUNC support provides optimized core routines for POWER6, # POWER7, and POWER8 transparently (if not using specific runtimes # below) # - POWER6 (has power6x symlink to power6, enabled via AT_PLATFORM) # - Legacy for old systems. Should be deprecated at some point soon. # - POWER7 (enabled via AT_PLATFORM) # - Existing deployments. # - POWER8 (enabled via AT_PLATFORM) # - Latest generation. # 64-bit LE: # - POWER8 LE (default) # - Latest generation. # # No 32-bit POWER support is provided. # # There are currently no plans for POWER9 enablement, but as hardware and # upstream support become available this will be reviewed. # %ifarch ppc64 # Build the additional runtimes for 64-bit BE POWER. %define buildpower6 1 %define buildpower7 1 %define buildpower8 1 %else # No additional runtimes for ppc64le or ppc64p7, just the default. %define buildpower6 0 %define buildpower7 0 %define buildpower8 0 %endif ############################################################################## # Any architecture/kernel combination that supports running 32-bit and 64-bit # code in userspace is considered a biarch arch. %define biarcharches %{ix86} x86_64 %{power64} s390 s390x ############################################################################## # If the debug information is split into two packages, the core debuginfo # pacakge and the common debuginfo package then the arch should be listed # here. If the arch is not listed here then a single core debuginfo package # will be created for the architecture. %define debuginfocommonarches %{biarcharches} alpha alphaev6 ############################################################################## # Add -s for a less verbose build output. %define silentrules PARALLELMFLAGS= ############################################################################## # %%package glibc - The GNU C Library (glibc) core package. ############################################################################## Summary: The GNU libc libraries Name: glibc Version: %{glibcversion} Release: %{glibcrelease} # GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries. # Things that are linked directly into dynamically linked programs # and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional # exception which allows linking it into any kind of programs or shared # libraries without restrictions. License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ Group: System Environment/Libraries URL: http://www.gnu.org/software/glibc/ Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.gz Source1: build-locale-archive.c Source2: glibc_post_upgrade.c Source4: nscd.conf Source7: nsswitch.conf Source8: power6emul.c Source9: bench.mk Source10: glibc-bench-compare # A copt of localedata/SUPPORTED in the Source0 tarball. The # SUPPORTED file is used below to generate the list of locale # packages. See the language_list macro definition. Source11: SUPPORTED ############################################################################## # Start of glibc patches ############################################################################## # 0000-0999 for patches which are unlikely to ever go upstream or which # have not been analyzed to see if they ought to go upstream yet. # # 1000-2000 for patches that are already upstream. # # 2000-3000 for patches that are awaiting upstream approval # # Yes, I realize this means some gratutious changes as patches to from # one bucket to another, but I find this scheme makes it easier to track # the upstream divergence and patches needing approval. # # Note that we can still apply the patches in any order we see fit, so # the changes from one bucket to another won't necessarily result in needing # to twiddle the patch because of dependencies on prior patches and the like. ############################################################################## # # Patches that are unlikely to go upstream or not yet analyzed. # ############################################################################## # Configuration twiddle, not sure there's a good case to get upstream to # change this. Patch0001: glibc-fedora-nscd.patch Patch0003: glibc-fedora-ldd.patch Patch0004: glibc-fedora-ppc-unwind.patch # Build info files in the source tree, then move to the build # tree so that they're identical for multilib builds Patch0005: glibc-rh825061.patch # Horrible hack, never to be upstreamed. Can go away once the world # has been rebuilt to use the new ld.so path. Patch0006: glibc-arm-hardfloat-3.patch # Needs to be sent upstream Patch0009: glibc-fedora-include-bits-ldbl.patch # All these were from the glibc-fedora.patch mega-patch and need another # round of reviewing. Ideally they'll either be submitted upstream or # dropped. Patch0012: glibc-fedora-linux-tcsetattr.patch Patch0014: glibc-fedora-nptl-linklibc.patch Patch0015: glibc-fedora-localedef.patch Patch0016: glibc-fedora-i386-tls-direct-seg-refs.patch Patch0019: glibc-fedora-nis-rh188246.patch Patch0020: glibc-fedora-manual-dircategory.patch Patch0024: glibc-fedora-locarchive.patch Patch0025: glibc-fedora-streams-rh436349.patch Patch0028: glibc-fedora-localedata-rh61908.patch Patch0031: glibc-fedora-__libc_multiple_libcs.patch Patch0033: glibc-fedora-elf-ORIGIN.patch # Needs to be sent upstream. # Support mangling and demangling null pointers. Patch0037: glibc-rh952799.patch # ARM: Accept that some objects marked hard ABI are now not because of a # binutils bug. Patch0044: glibc-rh1009145.patch # Allow applications to call pthread_atfork without libpthread.so. Patch0046: glibc-rh1013801.patch Patch0047: glibc-nscd-sysconfig.patch # confstr _CS_PATH should only return /usr/bin on Fedora since /bin is just a # symlink to it. Patch0053: glibc-cs-path.patch # Add C.UTF-8 locale into /usr/lib/locale/ Patch0059: glibc-c-utf8-locale.patch # Build libcrypt twice, with and without NSS. Patch0060: glibc-rh1324623.patch ############################################################################## # # Patches from upstream # ############################################################################## ############################################################################## # # Patches submitted, but not yet approved upstream. # ############################################################################## # # Each should be associated with a BZ. # Obviously we're not there right now, but that's the goal # # http://sourceware.org/ml/libc-alpha/2012-12/msg00103.html Patch2007: glibc-rh697421.patch Patch2013: glibc-rh741105.patch # Upstream BZ 14247 Patch2023: glibc-rh827510.patch # Upstream BZ 14185 Patch2027: glibc-rh819430.patch Patch2031: glibc-rh1070416.patch Patch2033: glibc-aarch64-tls-fixes.patch Patch2034: glibc-aarch64-workaround-nzcv-clobber-in-tlsdesc.patch Patch2036: glibc-gcc-PR69537.patch # extend_alloca removal, BZ 18023 Patch2037: glibc-rh1315108.patch Patch2038: glibc-rh1315108-glob.patch # Upstream BZ 20313 Patch2110: glibc-rh1351108-update-to-unicode-9.0.0.patch # sln implemented by ldconfig, to conserve disk space. Patch2112: glibc-rh1315476-2.patch Patch61: glibc-nscd-reproducible.patch Patch62: glibc-nss_compat.patch Patch63: glibc-rh1416405.patch Patch64: glibc-bits-types-res_state.patch Patch69: glibc-libc_diag.patch Patch77: glibc-alloc_buffer-2.patch Patch79: glibc-rh168253-network-dn_expand-cleanup.patch Patch80: glibc-rh168253-nss_dns-declaration-cleanup.patch Patch81: glibc-rh168253-tst-resolv-canonname.patch Patch82: glibc-rh168253-remove-iquery.patch Patch83: glibc-rh168253-resolv-h-definitions-cleanup.patch Patch85: glibc-rh168253-remove-ends-fallback.patch Patch86: glibc-rh168253-sock_cloexec.patch Patch87: glibc-rh168253-builtin_expect.patch Patch88: glibc-rh168253-builtin_expect-fixup.patch Patch89: glibc-rh168253-res_dflretry.patch Patch94: glibc-rh168253-res_init-tests.patch Patch97: glibc-rh168253-getaddrinfo-malloc-canonname-strdup-3.patch Patch98: glibc-rh168253-res_vinit-hidden.patch Patch99: glibc-rh168253-res_randomid-reorg.patch Patch100: glibc-rh168253-res-close.patch Patch101: glibc-rh168253-res_setoptions-debug-cleanup.patch Patch102: glibc-rh168253-is_sort_mask.patch Patch103: glibc-rh168253-res_vinit-gnu-style.patch Patch104: glibc-rh168253-res_vinit-check-allocations.patch Patch105: glibc-rh168253-res_vinit_1-getline.patch Patch106: glibc-rh168253-tst-inet6_scopeid_pton-getaddrinfo.patch Patch107: glibc-rh168253-inet_pton_length.patch Patch109: glibc-rh168253-inet6_scopeid_pton-node-local.patch Patch110: glibc-rh168253-__res_initstamp-cleanup.patch Patch111: glibc-rh168253-res_libc-gnu-style.patch Patch112: glibc-rh168253-inet_pton-leading-zeros.patch Patch114: glibc-rh168253-getaddrinfo-tests-bug21295.patch Patch115: glibc-rh168253-_-res_vinit-_res_hconf_init.patch Patch116: glibc-rh168253-resolv-tests-timeout.patch Patch117: glibc-rh168253-res_rotate-random.patch Patch118: glibc-rh168253-res_mkquery-debug-cleanup.patch Patch119: glibc-rh168253-res_mkquery-gnu-style.patch Patch120: glibc-rh168253-res_mkquery-reorg.patch Patch121: glibc-rh168253-res_send-debug-cleanup.patch Patch122: glibc-rh168253-res_debug-removal.patch Patch123: glibc-rh168253-fp_nquery-reorg.patch Patch124: glibc-rh168253-_res_opcodes-compat.patch Patch125: glibc-rh168253-res_isourserver-reorg.patch Patch126: glibc-rh168253-res_query-reorg.patch Patch127: glibc-rh168253-res_data-gnu-style.patch Patch128: glibc-rh168253-res_query-debug-cleanup.patch Patch129: glibc-rh168253-res_options-source-cleanup.patch Patch130: glibc-rh168253-tst-resolv-res_init-debugging.patch Patch131: glibc-rh168253-resolv-tests-preinit.patch Patch132: glibc-rh168253-struct-resolv_context.patch Patch133: glibc-rh168253-struct-resolv_conf.patch Patch134: glibc-rh168253-search-list-limit.patch Patch135: glibc-rh168253-resolv_conf-full-config.patch Patch136: glibc-rh168253-resolv-conf-reload.patch Patch137: glibc-rh168253-resolv_conf-free-list.patch Patch138: glibc-rh168253-__resolv_conf_attach-assert.patch Patch139: glibc-rh168253-resolv_conf-_res-matching.patch Patch140: glibc-rh168253-support_chroot.patch Patch141: glibc-rh168253-resolv-tests-no-patching.patch Patch142: glibc-rh168253-resolv-tests-nondeterministic.patch Patch151: glibc-rh168253-tst-res_use_inet6-mapping.patch Patch152: glibc-rh168253-nss_dns-dead-code.patch Patch153: glibc-rh168253-resolv-oom-memory-leak.patch Patch154: glibc-rh168253-__resolv_conf_attach-improper-free.patch ############################################################################## # End of glibc patches. ############################################################################## ############################################################################## # Continued list of core "glibc" package information: ############################################################################## Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Obsoletes: glibc-profile < 2.4 Provides: ldconfig # The dynamic linker supports DT_GNU_HASH Provides: rtld(GNU_HASH) # This is a short term need until everything is rebuilt in the ARM world # to use the new dynamic linker path %ifarch armv7hl armv7hnl Provides: ld-linux.so.3 Provides: ld-linux.so.3(GLIBC_2.4) %endif Requires: glibc-common = %{version}-%{release} %if %{without bootstrap} # Use the NSS-based cryptographic libraries by default. Recommends: libcrypt-nss%{_isa} %endif Requires(pre): basesystem # This is for building auxiliary programs like memusage, nscd # For initial glibc bootstraps it can be commented out BuildRequires: gd-devel libpng-devel zlib-devel %if %{with docs} # Removing texinfo will cause check-safety.sh test to fail because it seems to # trigger documentation generation based on dependencies. We need to fix this # upstream in some way that doesn't depend on generating docs to validate the # texinfo. I expect it's simply the wrong dependency for that target. BuildRequires: texinfo %endif %if %{without bootstrap} BuildRequires: libselinux-devel >= 1.33.4-3 BuildRequires: nss-devel %endif BuildRequires: audit-libs-devel >= 1.1.3, sed >= 3.95, libcap-devel, gettext # We need procps-ng (/bin/ps), util-linux (/bin/kill), and gawk (/bin/awk), # but it is more flexible to require the actual programs and let rpm infer # the packages. However, until bug 1259054 is widely fixed we avoid the # following: # BuildRequires: /bin/ps, /bin/kill, /bin/awk # And use instead (which should be reverted some time in the future): BuildRequires: procps-ng, util-linux, gawk BuildRequires: systemtap-sdt-devel %if %{with valgrind} # Require valgrind for smoke testing the dynamic loader to make sure we # have not broken valgrind. BuildRequires: /usr/bin/valgrind %endif # We use systemd rpm macros for nscd BuildRequires: systemd # We use python for the microbenchmarks BuildRequires: python # This is to ensure that __frame_state_for is exported by glibc # will be compatible with egcs 1.x.y BuildRequires: gcc >= 3.2 %define enablekernel 2.6.32 Conflicts: kernel < %{enablekernel} %define target %{_target_cpu}-redhat-linux %ifarch %{arm} %define target %{_target_cpu}-redhat-linuxeabi %endif %ifarch %{power64} %ifarch ppc64le %define target ppc64le-redhat-linux %else %define target ppc64-redhat-linux %endif %endif BuildRequires: binutils >= 2.25 # Earlier releases have broken support for IRELATIVE relocations Conflicts: prelink < 0.4.2 BuildRequires: gcc >= 3.2.1-5 %ifarch s390 s390x BuildRequires: gcc >= 4.1.0-0.17 %endif %if 0%{?_enable_debug_packages} BuildRequires: elfutils >= 0.72 BuildRequires: rpm >= 4.2-0.56 %endif %if %{without boostrap} %if %{with testsuite} # The testsuite builds static C++ binaries that require a C++ compiler, # static C++ runtime from libstdc++-static, and lastly static glibc. BuildRequires: gcc-c++ BuildRequires: libstdc++-static # A configure check tests for the ability to create static C++ binaries # before glibc is built and therefore we need a glibc-static for that # check to pass even if we aren't going to use any of those objects to # build the tests. BuildRequires: glibc-static %endif %endif # Filter out all GLIBC_PRIVATE symbols since they are internal to # the package and should not be examined by any other tool. %global __filter_GLIBC_PRIVATE 1 # For language packs we have glibc require a virtual dependency # "glibc-langpack" wich gives us at least one installed langpack. # If no langpack providing 'glibc-langpack' was installed you'd # get all of them, and that would make the transition from a # system without langpacks smoother (you'd get all the locales # installed). You would then trim that list, and the trimmed list # is preserved. One problem is you can't have "no" locales installed, # in that case we offer a "glibc-minimal-langpack" sub-pakcage for # this purpose. Requires: glibc-langpack = %{version}-%{release} Suggests: glibc-all-langpacks = %{version}-%{release} %description The glibc package contains standard libraries which are used by multiple programs on the system. In order to save disk space and memory, as well as to make upgrading easier, common system code is kept in one place and shared between programs. This particular package contains the most important sets of shared libraries: the standard C library and the standard math library. Without these two libraries, a Linux system will not function. ############################################################################## # glibc "xen" sub-package ############################################################################## %if %{xenpackage} %package xen Summary: The GNU libc libraries (optimized for running under Xen) Group: System Environment/Libraries Requires: glibc = %{version}-%{release}, glibc-utils = %{version}-%{release} %description xen The standard glibc package is optimized for native kernels and does not perform as well under the Xen hypervisor. This package provides alternative library binaries that will be selected instead when running under Xen. Install glibc-xen if you might run your system under the Xen hypervisor. %endif ###################################################################### # crypt subpackages ###################################################################### %package -n libcrypt Summary: Password hashing library (non-NSS version) Group: System Environment/Libraries Requires: %{name}%{_isa} = %{version}-%{release} Provides: libcrypt%{_isa} Conflicts: libcrypt-nss %description -n libcrypt This package provides the crypt function, which implements password hashing. The glibc implementation of the cryptographic algorithms is used by this package. %post -n libcrypt /sbin/ldconfig %postun -n libcrypt /sbin/ldconfig %if %{without bootstrap} %package -n libcrypt-nss Summary: Password hashing library (NSS version) Group: System Environment/Libraries Requires: %{name}%{_isa} = %{version}-%{release} Provides: libcrypt%{_isa} Conflicts: libcrypt %description -n libcrypt-nss This package provides the crypt function, which implements password hashing. The cryptographic algorithm implementations are provided by the low-level NSS libraries. %post -n libcrypt-nss /sbin/ldconfig %postun -n libcrypt-nss /sbin/ldconfig %endif ############################################################################## # glibc "devel" sub-package ############################################################################## %package devel Summary: Object files for development using standard C libraries. Group: Development/Libraries Requires(pre): /sbin/install-info Requires(pre): %{name}-headers Requires: %{name}-headers = %{version}-%{release} Requires: %{name} = %{version}-%{release} Requires: libgcc%{_isa} Requires: libcrypt%{_isa} %description devel The glibc-devel package contains the object files necessary for developing programs which use the standard C libraries (which are used by nearly all programs). If you are developing programs which will use the standard C libraries, your system needs to have these standard object files available in order to create the executables. Install glibc-devel if you are going to develop programs which will use the standard C libraries. ############################################################################## # glibc "static" sub-package ############################################################################## %package static Summary: C library static libraries for -static linking. Group: Development/Libraries Requires: %{name}-devel = %{version}-%{release} %description static The glibc-static package contains the C library static libraries for -static linking. You don't need these, unless you link statically, which is highly discouraged. ############################################################################## # glibc "headers" sub-package # - The headers package includes all common headers that are shared amongst # the multilib builds. It was created to reduce the download size, and # thus avoid downloading one header package per multilib. The package is # identical both in content and file list, any difference is an error. # Files like gnu/stubs.h which have gnu/stubs-32.h (i686) and gnu/stubs-64.h # are included in glibc-headers, but the -32 and -64 files are in their # respective i686 and x86_64 devel packages. ############################################################################## %package headers Summary: Header files for development using standard C libraries. Group: Development/Libraries Provides: %{name}-headers(%{_target_cpu}) %ifarch x86_64 # If both -m32 and -m64 is to be supported on AMD64, x86_64 glibc-headers # have to be installed, not i586 ones. Obsoletes: %{name}-headers(i586) Obsoletes: %{name}-headers(i686) %endif Requires(pre): kernel-headers Requires: kernel-headers >= 2.2.1, %{name} = %{version}-%{release} BuildRequires: kernel-headers >= 2.6.22 %description headers The glibc-headers package contains the header files necessary for developing programs which use the standard C libraries (which are used by nearly all programs). If you are developing programs which will use the standard C libraries, your system needs to have these standard header files available in order to create the executables. Install glibc-headers if you are going to develop programs which will use the standard C libraries. ############################################################################## # glibc "common" sub-package ############################################################################## %package common Summary: Common binaries and locale data for glibc Requires: %{name} = %{version}-%{release} Requires: tzdata >= 2003a Group: System Environment/Base %description common The glibc-common package includes common binaries for the GNU libc libraries, as well as national language (locale) support. %package locale-source Summary: The sources for the locales Requires: %{name} = %{version}-%{release} Requires: %{name}-common = %{version}-%{release} Group: System Environment/Base %description locale-source The sources for all locales provided in the language packs. If you are building custom locales you will most likely use these sources as the basis for your new locale. %{lua: -- Array of languages (ISO-639 codes). local languages = {} -- Dictionary from language codes (as in the languages array) to arrays -- of regions. local supplements = {} do -- Parse the SUPPORTED file. Eliminate duplicates. local lang_region_seen = {} for line in io.lines(rpm.expand("%{SOURCE11}")) do -- Match lines which contain a language (eo) or language/region -- (en_US) strings. local lang_region = string.match(line, "^([a-z][^/@.]+)") if lang_region ~= nil then if lang_region_seen[lang_region] == nil then lang_region_seen[lang_region] = true -- Split language/region pair. local lang, region = string.match(lang_region, "^(.+)_(.+)") if lang == nil then -- Region is missing, use only the language. lang = lang_region end local suppl = supplements[lang] if suppl == nil then suppl = {} supplements[lang] = suppl -- New language not seen before. languages[#languages + 1] = lang end if region ~= nil then -- New region because of the check against -- lang_region_seen above. suppl[#suppl + 1] = region end end end end -- Sort for determinism. table.sort(languages) for _, supples in pairs(supplements) do table.sort(supplements) end end -- Compute the Supplements: list for a language, based on the regions. local function compute_supplements(lang) result = "langpacks-" .. lang regions = supplements[lang] if regions ~= nil then for i = 1, #regions do result = result .. " or langpacks-" .. lang .. "_" .. regions[i] end end return result end -- Emit the definition of a language pack package. local function lang_package(lang) local suppl = compute_supplements(lang) print(rpm.expand([[ %package langpack-]]..lang..[[ Summary: Locale data for ]]..lang..[[ Provides: glibc-langpack = %{version}-%{release} Requires: %{name} = %{version}-%{release} Requires: %{name}-common = %{version}-%{release} Supplements: (glibc = %{version}-%{release} and (]]..suppl..[[)) %description langpack-]]..lang..[[ The glibc-langpack-]]..lang..[[ package includes the basic information required to support the ]]..lang..[[ language in your applications. %ifnarch %{auxarches} %files -f langpack-]]..lang..[[.filelist langpack-]]..lang..[[ %defattr(-,root,root) %endif ]])) end for i = 1, #languages do lang_package(languages[i]) end } # The glibc-all-langpacks provides the virtual glibc-langpack, # and thus satisfies glibc's requirement for installed locales. # Users can add one more other langauge packs and then eventually # uninstall all-langpacks to save space. %package all-langpacks Summary: All language packs for %{name}. Group: System Environment/Base Requires: %{name} = %{version}-%{release} Requires: %{name}-common = %{version}-%{release} Provides: %{name}-langpack = %{version}-%{release} %description all-langpacks # No %files, this is an empty pacakge. The C/POSIX and # C.UTF-8 files are already installed by glibc. We create # minimal-langpack because the virtual provide of # glibc-langpack needs at least one package installed # to satisfy it. Given that no-locales installed is a valid # use case we support it here with this package. %package minimal-langpack Summary: Minimal language packs for %{name}. Group: System Environment/Base Provides: glibc-langpack = %{version}-%{release} Requires: %{name} = %{version}-%{release} Requires: %{name}-common = %{version}-%{release} %description minimal-langpack This is a Meta package that is used to install minimal language packs. This package ensures you can use C, POSIX, or C.UTF-8 locales, but nothing else. It is designed for assembling a minimal system. %ifnarch %{auxarches} %files minimal-langpack %endif ############################################################################## # glibc "nscd" sub-package ############################################################################## %package -n nscd Summary: A Name Service Caching Daemon (nscd). Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} %if %{without bootstrap} Requires: libselinux >= 1.17.10-1 %endif Requires: audit-libs >= 1.1.3 Requires(pre): /usr/sbin/useradd, coreutils Requires(post): systemd Requires(preun): systemd Requires(postun): systemd, /usr/sbin/userdel %description -n nscd Nscd caches name service lookups and can dramatically improve performance with NIS+, and may help with DNS as well. ############################################################################## # Subpackages for NSS modules except nss_files, nss_dns ############################################################################## %package -n nss_db Summary: Name Service Switch (NSS) module using hash-indexed files Group: System Environment/Base Requires: %{name}%{_isa} = %{version}-%{release} %description -n nss_db The nss_db Name Service Switch module uses hash-indexed files in /var/db to speed up user, group, service, host name, and other NSS-based lookups. %package -n nss_nis Summary: Name Service Switch (NSS) module using NIS Group: System Environment/Base Requires: %{name}%{_isa} = %{version}-%{release} %description -n nss_nis The nss_nis and nss_nisplus Name Service Switch modules uses the Network Information System (NIS) to obtain user, group, host name, and other data. %package -n nss_hesiod Summary: Name Service Switch (NSS) module using Hesiod Group: System Environment/Base Requires: %{name}%{_isa} = %{version}-%{release} %description -n nss_hesiod The nss_hesiod Name Service Switch module uses the Domain Name System (DNS) as a source for user, group, and service information, following the Hesiod convention of Project Athena. %package nss-devel Summary: Development files for directly linking NSS service modules Group: Development/Libraries Requires: nss_db%{_isa} = %{version}-%{release} Requires: nss_nis%{_isa} = %{version}-%{release} Requires: nss_hesiod%{_isa} = %{version}-%{release} %description nss-devel The glibc-nss-devel package contains the object files necessary to compile applications and libraries which directly link against NSS modules supplied by glibc. This is a rare and special use case; regular development has to use the glibc-devel package instead. ############################################################################## # glibc "utils" sub-package ############################################################################## %package utils Summary: Development utilities from GNU C library Group: Development/Tools Requires: %{name} = %{version}-%{release} %description utils The glibc-utils package contains memusage, a memory usage profiler, mtrace, a memory leak tracer and xtrace, a function call tracer which can be helpful during program debugging. If unsure if you need this, don't install this package. ############################################################################## # glibc core "debuginfo" sub-package ############################################################################## %if 0%{?_enable_debug_packages} %define debug_package %{nil} %define __debug_install_post %{nil} %global __debug_package 1 %package debuginfo Summary: Debug information for package %{name} Group: Development/Debug AutoReqProv: no %ifarch %{debuginfocommonarches} Requires: glibc-debuginfo-common = %{version}-%{release} %else %ifarch %{ix86} %{sparc} Obsoletes: glibc-debuginfo-common %endif %endif %description debuginfo This package provides debug information for package %{name}. Debug information is useful when developing applications that use this package or when debugging this package. This package also contains static standard C libraries with debugging information. You need this only if you want to step into C library routines during debugging programs statically linked against one or more of the standard C libraries. To use this debugging information, you need to link binaries with -static -L%{_prefix}/lib/debug%{_libdir} compiler options. ############################################################################## # glibc common "debuginfo-common" sub-package ############################################################################## %ifarch %{debuginfocommonarches} %package debuginfo-common Summary: Debug information for package %{name} Group: Development/Debug AutoReqProv: no %description debuginfo-common This package provides debug information for package %{name}. Debug information is useful when developing applications that use this package or when debugging this package. %endif # %{debuginfocommonarches} %endif # 0%{?_enable_debug_packages} %if %{with benchtests} %package benchtests Summary: Benchmarking binaries and scripts for %{name} Group: Development/Debug %description benchtests This package provides built benchmark binaries and scripts to run microbenchmark tests on the system. %endif ############################################################################## # Prepare for the build. ############################################################################## %prep %setup -q -n %{glibcsrcdir} # Patch order matters. %patch0001 -p1 %patch0003 -p1 %patch0004 -p1 %patch0005 -p1 %patch0006 -p1 %patch2007 -p1 %patch0009 -p1 %patch0012 -p1 %patch2013 -p1 %patch0014 -p1 %patch0015 -p1 %patch0016 -p1 %patch0019 -p1 %patch0020 -p1 %patch2023 -p1 %patch0024 -p1 %patch0025 -p1 %patch2027 -p1 %patch0028 -p1 %patch0031 -p1 %patch0033 -p1 %patch0037 -p1 %patch0044 -p1 %patch0046 -p1 %patch2031 -p1 %patch0047 -p1 %patch2033 -p1 %patch2034 -p1 %patch0053 -p1 %patch0059 -p1 %patch0060 -p1 %patch2036 -p1 %patch2037 -p1 %patch2038 -p1 %patch2110 -p1 %patch2112 -p1 %patch61 -p1 %patch62 -p1 %patch63 -p1 %patch64 -p1 %patch69 -p1 %patch77 -p1 %patch79 -p1 %patch80 -p1 %patch81 -p1 %patch82 -p1 %patch83 -p1 %patch85 -p1 %patch86 -p1 %patch87 -p1 %patch88 -p1 %patch89 -p1 %patch94 -p1 %patch97 -p1 %patch98 -p1 %patch99 -p1 %patch100 -p1 %patch101 -p1 %patch102 -p1 %patch103 -p1 %patch104 -p1 %patch105 -p1 %patch106 -p1 %patch107 -p1 %patch109 -p1 %patch110 -p1 %patch111 -p1 %patch112 -p1 %patch114 -p1 %patch115 -p1 %patch116 -p1 %patch117 -p1 %patch118 -p1 %patch119 -p1 %patch120 -p1 %patch121 -p1 %patch122 -p1 %patch123 -p1 %patch124 -p1 %patch125 -p1 %patch126 -p1 %patch127 -p1 %patch128 -p1 %patch129 -p1 %patch130 -p1 %patch131 -p1 %patch132 -p1 %patch133 -p1 %patch134 -p1 %patch135 -p1 %patch136 -p1 %patch137 -p1 %patch138 -p1 %patch139 -p1 %patch140 -p1 %patch141 -p1 %patch142 -p1 %patch151 -p1 %patch152 -p1 %patch153 -p1 %patch154 -p1 ############################################################################## # %%prep - Additional prep required... ############################################################################## # Make benchmark scripts executable chmod +x benchtests/scripts/*.py scripts/pylint # Remove all files generated from patching. find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \; # Ensure timestamps on configure files are current to prevent # regenerating them. touch `find . -name configure` # Ensure *-kw.h files are current to prevent regenerating them. touch locale/programs/*-kw.h # Verify that our copy of localedata/SUPPORTED matches the glibc # version. # # The separate file copy is used by the language_list macro above. # Patches or new upstream versions may change the list of locales, # which changes the set of langpacks we need to build. Verify the # differences then update the copy of SUPPORTED. This approach has # two purposes: (a) avoid spurious changes to the set of langpacks, # and (b) the language_list macro can use a fully patched-up version # of the localedata/SUPPORTED file. diff -u %{SOURCE11} localedata/SUPPORTED ############################################################################## # Build glibc... ############################################################################## %build # Log system information uname -a cat /proc/cpuinfo cat /proc/meminfo df # We build using the native system compilers. GCC=gcc GXX=g++ ############################################################################## # %%build - x86 options. ############################################################################## # On x86 we build for the specific target cpu rpm is using. %ifarch %{ix86} BuildFlags="-march=%{_target_cpu} -mtune=generic" %endif # We don't support building for i386. The generic i386 architecture lacks the # atomic primitives required for NPTL support. However, when a user asks to # build for i386 we interpret that as "for whatever works on x86" and we # select i686. Thus we treat i386 as an alias for i686. %ifarch i386 i686 BuildFlags="-march=i686 -mtune=generic" %endif %ifarch i486 i586 BuildFlags="$BuildFlags -mno-tls-direct-seg-refs" %endif %ifarch x86_64 BuildFlags="-mtune=generic" %endif ############################################################################## # %%build - s390 options. ############################################################################## %ifarch s390 s390x # The default is to turne for z13 (newer hardware), but build for zEC12. BuildFlags="-march=zEC12 -mtune=z13" %endif ############################################################################## # %%build - SPARC options. ############################################################################## %ifarch sparc BuildFlags="-fcall-used-g6" GCC="$GCC -m32" GXX="$GXX -m32" %endif %ifarch sparcv9 BuildFlags="-mcpu=ultrasparc -fcall-used-g6" GCC="$GCC -m32" GXX="$GXX -m32" %endif %ifarch sparcv9v BuildFlags="-mcpu=niagara -fcall-used-g6" GCC="$GCC -m32" GXX="$GXX -m32" %endif %ifarch sparc64 BuildFlags="-mcpu=ultrasparc -mvis -fcall-used-g6" GCC="$GCC -m64" GXX="$GXX -m64" %endif %ifarch sparc64v BuildFlags="-mcpu=niagara -mvis -fcall-used-g6" GCC="$GCC -m64" GXX="$GXX -m64" %endif ############################################################################## # %%build - POWER options. ############################################################################## %ifarch %{power64} BuildFlags="" GCC="$GCC -m64" GXX="$GXX -m64" %ifarch ppc64p7 GCC="$GCC -mcpu=power7 -mtune=power7" GXX="$GXX -mcpu=power7 -mtune=power7" core_with_options="--with-cpu=power7" %endif %ifarch ppc64le GCC="$GCC -mcpu=power8 -mtune=power8" GXX="$GXX -mcpu=power8 -mtune=power8" core_with_options="--with-cpu=power8" %endif %endif ############################################################################## # %%build - MIPS options. ############################################################################## %ifarch mips mipsel BuildFlags="-march=mips32r2 -mfpxx" %endif %ifarch mips64 mips64el # Without -mrelax-pic-calls ld.so segfaults when built with -O3 BuildFlags="-march=mips64r2 -mabi=64 -mrelax-pic-calls" %endif ############################################################################## # %%build - Generic options. ############################################################################## BuildFlags="$BuildFlags -fasynchronous-unwind-tables" EnableKernel="--enable-kernel=%{enablekernel}" # Save the used compiler and options into the file "Gcc" for use later # by %%install. echo "$GCC" > Gcc AddOns=`echo */configure | sed -e 's!/configure!!g;s!\(nptl\|powerpc-cpu\)\( \|$\)!!g;s! \+$!!;s! !,!g;s!^!,!;/^,\*$/d'` ############################################################################## # build() # Build glibc in `build-%{target}$1', passing the rest of the arguments # as CFLAGS to the build (not the same as configure CFLAGS). Several # global values are used to determine build flags, add-ons, kernel # version, system tap support, etc. ############################################################################## build() { builddir=build-%{target}${1:+-$1} ${1+shift} rm -rf $builddir mkdir $builddir pushd $builddir build_CFLAGS="$BuildFlags -g -O3 $*" # Some configure checks can spuriously fail for some architectures if # unwind info is present configure_CFLAGS="$build_CFLAGS -fno-asynchronous-unwind-tables" ../configure CC="$GCC" CXX="$GXX" CFLAGS="$configure_CFLAGS" \ --prefix=%{_prefix} \ --enable-add-ons=$AddOns \ --with-headers=%{_prefix}/include $EnableKernel --enable-bind-now \ --build=%{target} \ --enable-stack-protector=strong \ --enable-tunables \ --enable-obsolete-rpc \ --enable-systemtap \ ${core_with_options} \ %ifarch %{ix86} --disable-multi-arch \ %endif %ifarch %{lock_elision_arches} --enable-lock-elision \ %endif %if %{without werror} --disable-werror \ %endif --disable-profile \ %if %{with bootstrap} --without-selinux \ --disable-nss-crypt || %else --enable-nss-crypt || %endif { cat config.log; false; } make %{?_smp_mflags} -r CFLAGS="$build_CFLAGS" %{silentrules} popd } ############################################################################## # Build glibc for the default set of options. ############################################################################## build ############################################################################## # Build glibc for xen: # If we support xen build glibc again for xen support. ############################################################################## %if %{buildxen} build nosegneg -mno-tls-direct-seg-refs %endif ############################################################################## # Build glibc for power6: # If we support building a power6 alternate runtime then built glibc again for # power6. # XXX: We build in a sub-shell for no apparent reason. ############################################################################## %if %{buildpower6} ( platform=`LD_SHOW_AUXV=1 /bin/true | sed -n 's/^AT_PLATFORM:[[:blank:]]*//p'` if [ "$platform" != power6 ]; then mkdir -p power6emul/{lib,lib64} $GCC -shared -O2 -fpic -o power6emul/%{_lib}/power6emul.so %{SOURCE8} -Wl,-z,initfirst %ifarch ppc64 gcc -shared -nostdlib -O2 -fpic -m32 -o power6emul/lib/power6emul.so -xc - < /dev/null %endif export LD_PRELOAD=`pwd`/power6emul/\$LIB/power6emul.so fi GCC="$GCC -mcpu=power6" GXX="$GXX -mcpu=power6" core_with_options="--with-cpu=power6" build power6 ) %endif # %{buildpower6} %if %{buildpower7} ( GCC="$GCC -mcpu=power7 -mtune=power7" GXX="$GXX -mcpu=power7 -mtune=power7" core_with_options="--with-cpu=power7" build power7 ) %endif %if %{buildpower8} ( GCC="$GCC -mcpu=power8 -mtune=power8" GXX="$GXX -mcpu=power8 -mtune=power8" core_with_options="--with-cpu=power8" build power8 ) %endif # Build libcrypt with glibc cryptographic implementations. %if %{without bootstrap} make %{?_smpflags} -C build-%{target} subdirs=crypt-glibc \ CFLAGS="$build_CFLAGS" %{silentrules} %endif ############################################################################## # Build the glibc post-upgrade program: # We only build one of these with the default set of options. This program # must be able to run on all hardware for the lowest common denomintor since # we only build it once. ############################################################################## pushd build-%{target} $GCC -static -L. -Os -g %{SOURCE2} \ -o glibc_post_upgrade.%{_target_cpu} \ '-DLIBTLS="/%{_lib}/tls/"' \ '-DGCONV_MODULES_DIR="%{_libdir}/gconv"' \ '-DLD_SO_CONF="/etc/ld.so.conf"' \ '-DICONVCONFIG="%{_sbindir}/iconvconfig.%{_target_cpu}"' popd ############################################################################## # Install glibc... ############################################################################## %install # Ensure the permissions of errlist.c do not change. When the file is # regenerated the Makefile sets the permissions to 444. We set it to 644 # to match what comes out of git. The tarball of the git archive won't have # correct permissions because git doesn't track all of the permissions # accurately (see git-cache-meta if you need that). We also set it to 644 to # match pre-existing rpms. We do this *after* the build because the build # might regenerate the file and set the permissions to 444. chmod 644 sysdeps/gnu/errlist.c # Reload compiler and build options that were used during %%build. GCC=`cat Gcc` # Cleanup any previous installs... rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT make -j1 install_root=$RPM_BUILD_ROOT \ install -C build-%{target} %{silentrules} # If we are not building an auxiliary arch then install all of the supported # locales. %ifnarch %{auxarches} pushd build-%{target} make %{?_smp_mflags} install_root=$RPM_BUILD_ROOT \ install-locales -C ../localedata objdir=`pwd` popd %endif # install_different: # Install all core libraries into DESTDIR/SUBDIR. Either the file is # installed as a copy or a symlink to the default install (if it is the # same). The path SUBDIR_UP is the prefix used to go from # DESTDIR/SUBDIR to the default installed libraries e.g. # ln -s SUBDIR_UP/foo.so DESTDIR/SUBDIR/foo.so. # When you call this function it is expected that you are in the root # of the build directory, and that the default build directory is: # "../build-%{target}" (relatively). # The primary use of this function is to install alternate runtimes # into the build directory and avoid duplicating this code for each # runtime. install_different() { local lib libbase libbaseso dlib local destdir="$1" local subdir="$2" local subdir_up="$3" local libdestdir="$destdir/$subdir" # All three arguments must be non-zero paths. if ! [ "$destdir" \ -a "$subdir" \ -a "$subdir_up" ]; then echo "One of the arguments to install_different was emtpy." exit 1 fi # Create the destination directory and the multilib directory. mkdir -p "$destdir" mkdir -p "$libdestdir" # Walk all of the libraries we installed... for lib in libc math/libm nptl/libpthread rt/librt nptl_db/libthread_db do libbase=${lib#*/} # Take care that `libbaseso' has a * that needs expanding so # take care with quoting. libbaseso=$(basename $RPM_BUILD_ROOT/%{_lib}/${libbase}-*.so) # Only install if different from default build library. if cmp -s ${lib}.so ../build-%{target}/${lib}.so; then ln -sf "$subdir_up"/$libbaseso $libdestdir/$libbaseso else cp -a ${lib}.so $libdestdir/$libbaseso fi dlib=$libdestdir/$(basename $RPM_BUILD_ROOT/%{_lib}/${libbase}.so.*) ln -sf $libbaseso $dlib done } ############################################################################# # Install libcrypt ############################################################################# %if %{without bootstrap} # Move the NSS-based implementation out of the way. libcrypt_found=false for libcrypt in ${RPM_BUILD_ROOT}/%{_lib}/libcrypt-*.so ; do if $libcrypt_found; then # Multiple libcrypt files ls -l ${RPM_BUILD_ROOT}/%{_lib}/libcrypt-*.so exit 1 fi mv "$libcrypt" "$(echo "$libcrypt" | sed s/libcrypt-/libcrypt-nss-/)" done # Install the non-NSS implementation in the original path. install -m 755 build-%{target}/crypt-glibc/libcrypt.so "$libcrypt" unset libcrypt libcrypt_found %endif # This symbolic link will be generated by ldconfig. rm -f ${RPM_BUILD_ROOT}/%{_lib}/libcrypt.so.1 ############################################################################## # Install the xen build files. ############################################################################## %if %{buildxen} %define nosegneg_subdir_base i686 %define nosegneg_subdir i686/nosegneg %define nosegneg_subdir_up ../.. pushd build-%{target}-nosegneg destdir=$RPM_BUILD_ROOT/%{_lib} install_different "$destdir" "%{nosegneg_subdir}" "%{nosegneg_subdir_up}" popd %endif # %{buildxen} ############################################################################## # Install the power6 build files. ############################################################################## %if %{buildpower6} %define power6_subdir power6 %define power6_subdir_up .. %define power6_legacy power6x %define power6_legacy_up .. pushd build-%{target}-power6 destdir=$RPM_BUILD_ROOT/%{_lib} install_different "$destdir" "%{power6_subdir}" "%{power6_subdir_up}" # Make a legacy /usr/lib[64]/power6x directory that is a symlink to the # power6 runtime. # XXX: When can we remove this? What is the history behind this? mkdir -p ${destdir}/%{power6_legacy} pushd ${destdir}/%{power6_legacy} ln -sf %{power6_legacy_up}/%{power6_subdir}/*.so . cp -a %{power6_legacy_up}/%{power6_subdir}/*.so.* . popd popd %endif # %{buildpower6} %if %{buildpower7} %define power7_subdir power7 %define power7_subdir_up .. pushd build-%{target}-power7 destdir=$RPM_BUILD_ROOT/%{_lib} install_different "$destdir" "%{power7_subdir}" "%{power7_subdir_up}" popd %endif %if %{buildpower8} %define power8_subdir power8 %define power8_subdir_up .. pushd build-%{target}-power8 destdir=$RPM_BUILD_ROOT/%{_lib} install_different "$destdir" "%{power8_subdir}" "%{power8_subdir_up}" popd %endif ############################################################################## # Remove the files we don't want to distribute ############################################################################## # Remove the libNoVersion files. # XXX: This looks like a bug in glibc that accidentally installed these # wrong files. We probably don't need this today. rm -f $RPM_BUILD_ROOT%{_libdir}/libNoVersion* rm -f $RPM_BUILD_ROOT/%{_lib}/libNoVersion* # rquota.x and rquota.h are now provided by quota rm -f $RPM_BUILD_ROOT%{_prefix}/include/rpcsvc/rquota.[hx] # In F7+ this is provided by rpcbind rpm rm -f $RPM_BUILD_ROOT%{_sbindir}/rpcinfo # Remove the old nss modules. rm -f ${RPM_BUILD_ROOT}/%{_lib}/libnss1-* rm -f ${RPM_BUILD_ROOT}/%{_lib}/libnss-*.so.1 ############################################################################## # Install info files ############################################################################## %if %{with docs} # Move the info files if glibc installed them into the wrong location. if [ -d $RPM_BUILD_ROOT%{_prefix}/info -a "%{_infodir}" != "%{_prefix}/info" ]; then mkdir -p $RPM_BUILD_ROOT%{_infodir} mv -f $RPM_BUILD_ROOT%{_prefix}/info/* $RPM_BUILD_ROOT%{_infodir} rm -rf $RPM_BUILD_ROOT%{_prefix}/info fi # Compress all of the info files. gzip -9nvf $RPM_BUILD_ROOT%{_infodir}/libc* %else rm -f $RPM_BUILD_ROOT%{_infodir}/dir rm -f $RPM_BUILD_ROOT%{_infodir}/libc.info* %endif ############################################################################## # Create locale sub-package file lists ############################################################################## %ifnarch %{auxarches} olddir=`pwd` pushd ${RPM_BUILD_ROOT}%{_prefix}/lib/locale rm -f locale-archive # Intentionally we do not pass --alias-file=, aliases will be added # by build-locale-archive. $olddir/build-%{target}/elf/ld.so \ --library-path $olddir/build-%{target}/ \ $olddir/build-%{target}/locale/localedef \ --prefix ${RPM_BUILD_ROOT} --add-to-archive \ *_* # Setup the locale-archive template for use by glibc-all-langpacks. mv locale-archive{,.tmpl} # Create the file lists for the language specific sub-packages: for i in eo *_* do lang=${i%%_*} if [ ! -e langpack-${lang}.filelist ]; then echo "%dir %{_prefix}/lib/locale" >> langpack-${lang}.filelist fi echo "%dir %{_prefix}/lib/locale/$i" >> langpack-${lang}.filelist echo "%{_prefix}/lib/locale/$i/*" >> langpack-${lang}.filelist done popd pushd ${RPM_BUILD_ROOT}%{_prefix}/share/locale for i in */LC_MESSAGES/libc.mo do locale=${i%%%%/*} lang=${locale%%%%_*} echo "%lang($lang) %{_prefix}/share/locale/${i}" \ >> ${RPM_BUILD_ROOT}%{_prefix}/lib/locale/langpack-${lang}.filelist done popd mv ${RPM_BUILD_ROOT}%{_prefix}/lib/locale/*.filelist . %endif ############################################################################## # Install configuration files for services ############################################################################## install -p -m 644 %{SOURCE7} $RPM_BUILD_ROOT/etc/nsswitch.conf %ifnarch %{auxarches} mkdir -p $RPM_BUILD_ROOT/etc/default install -p -m 644 nis/nss $RPM_BUILD_ROOT/etc/default/nss # This is for ncsd - in glibc 2.2 install -m 644 nscd/nscd.conf $RPM_BUILD_ROOT/etc mkdir -p $RPM_BUILD_ROOT%{_tmpfilesdir} install -m 644 %{SOURCE4} %{buildroot}%{_tmpfilesdir} mkdir -p $RPM_BUILD_ROOT/lib/systemd/system install -m 644 nscd/nscd.service nscd/nscd.socket $RPM_BUILD_ROOT/lib/systemd/system %endif # Include ld.so.conf echo 'include ld.so.conf.d/*.conf' > $RPM_BUILD_ROOT/etc/ld.so.conf truncate -s 0 $RPM_BUILD_ROOT/etc/ld.so.cache chmod 644 $RPM_BUILD_ROOT/etc/ld.so.conf mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d %ifnarch %{auxarches} mkdir -p $RPM_BUILD_ROOT/etc/sysconfig truncate -s 0 $RPM_BUILD_ROOT/etc/sysconfig/nscd truncate -s 0 $RPM_BUILD_ROOT/etc/gai.conf %endif # Include %{_libdir}/gconv/gconv-modules.cache truncate -s 0 $RPM_BUILD_ROOT%{_libdir}/gconv/gconv-modules.cache chmod 644 $RPM_BUILD_ROOT%{_libdir}/gconv/gconv-modules.cache ############################################################################## # Misc... ############################################################################## # Install the upgrade program install -m 700 build-%{target}/glibc_post_upgrade.%{_target_cpu} \ $RPM_BUILD_ROOT%{_prefix}/sbin/glibc_post_upgrade.%{_target_cpu} # Strip all of the installed object files. strip -g $RPM_BUILD_ROOT%{_libdir}/*.o # XXX: Ugly hack for buggy rpm. What bug? BZ? Is this fixed? ln -f ${RPM_BUILD_ROOT}%{_sbindir}/iconvconfig{,.%{_target_cpu}} ############################################################################## # Install debug copies of unstripped static libraries # - This step must be last in order to capture any additional static # archives we might have added. ############################################################################## # If we are building a debug package then copy all of the static archives # into the debug directory to keep them as unstripped copies. %if 0%{?_enable_debug_packages} mkdir -p $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_libdir} cp -a $RPM_BUILD_ROOT%{_libdir}/*.a \ $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_libdir}/ rm -f $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_libdir}/*_p.a %endif ############################################################################## # Build the file lists used for describing the package and subpackages. ############################################################################## # There are several main file lists (and many more for # the langpack sub-packages (langpack-${lang}.filelist)): # * rpm.fileslist # - Master file list. Eventually, after removing files from this list # we are left with the list of files for the glibc package. # * common.filelist # - Contains the list of flies for the common subpackage. # * utils.filelist # - Contains the list of files for the utils subpackage. # * nscd.filelist # - Contains the list of files for the nscd subpackage. # * devel.filelist # - Contains the list of files for the devel subpackage. # * headers.filelist # - Contains the list of files for the headers subpackage. # * static.filelist # - Contains the list of files for the static subpackage. # * nosegneg.filelist # - Contains the list of files for the xen subpackage. # * libcrypt.filelist, libcrypt-nss.filelist # - Contains the list of files for the crypt-related subpackages # * nss_db.filelist, nss_nis.filelist, nss_hesiod.filelist # - File lists for nss_* NSS module subpackages. # * nss-devel.filelist # - File list with the .so symbolic links for NSS packages. # * debuginfo.filelist # - Contains the list of files for the glibc debuginfo package. # * debuginfocommon.filelist # - Contains the list of files for the glibc common debuginfo package. # { find $RPM_BUILD_ROOT \( -type f -o -type l \) \ \( \ -name etc -printf "%%%%config " -o \ -name gconv-modules \ -printf "%%%%verify(not md5 size mtime) %%%%config(noreplace) " -o \ -name gconv-modules.cache \ -printf "%%%%verify(not md5 size mtime) " \ , \ ! -path "*/lib/debug/*" -printf "/%%P\n" \) # Print all directories with a %%dir prefix. We omit the info directory and # all directories in (and including) /usr/share/locale. find $RPM_BUILD_ROOT -type d \ \( -path '*%{_prefix}/share/locale' -prune -o \ \( -path '*%{_prefix}/share/*' \ %if %{with docs} ! -path '*%{_infodir}' -o \ %endif -path "*%{_prefix}/include/*" \ \) -printf "%%%%dir /%%P\n" \) } | { # primary filelist # Also remove the *.mo entries. We will add them to the # language specific sub-packages. # libnss_ files go into subpackages related to NSS modules. # and .*/share/i18n/charmaps/.*), they go into the sub-package # "locale-source": sed -e '\,.*/share/locale/\([^/_]\+\).*/LC_MESSAGES/.*\.mo,d' \ -e '\,.*/share/i18n/locales/.*,d' \ -e '\,.*/share/i18n/charmaps/.*,d' \ -e '\,/etc/\(localtime\|nsswitch.conf\|ld\.so\.conf\|ld\.so\.cache\|default\|rpc\|gai\.conf\),d' \ -e '\,/%{_lib}/lib\(pcprofile\|memusage\)\.so,d' \ -e '\,bin/\(memusage\|mtrace\|xtrace\|pcprofiledump\),d' } | sort > rpm.filelist touch common.filelist mkdir -p $RPM_BUILD_ROOT%{_libdir} mv -f $RPM_BUILD_ROOT/%{_lib}/lib{pcprofile,memusage}.so $RPM_BUILD_ROOT%{_libdir} # The xtrace and memusage scripts have hard-coded paths that need to be # translated to a correct set of paths using the $LIB token which is # dynamically translated by ld.so as the default lib directory. for i in $RPM_BUILD_ROOT%{_prefix}/bin/{xtrace,memusage}; do sed -e 's~=/%{_lib}/libpcprofile.so~=%{_libdir}/libpcprofile.so~' \ -e 's~=/%{_lib}/libmemusage.so~=%{_libdir}/libmemusage.so~' \ -e 's~='\''/\\\$LIB/libpcprofile.so~='\''%{_prefix}/\\$LIB/libpcprofile.so~' \ -e 's~='\''/\\\$LIB/libmemusage.so~='\''%{_prefix}/\\$LIB/libmemusage.so~' \ -i $i done %if %{with docs} # Put the info files into the devel file list. grep '%{_infodir}' < rpm.filelist | grep -v '%{_infodir}/dir' > devel.filelist %endif # The glibc-headers package includes only common files which are identical # across all multilib packages. We must keep gnu/stubs.h and gnu/lib-names.h # in the glibc-headers package, but the -32, -64, -64-v1, and -64-v2 versions # go into the development packages. grep '%{_prefix}/include/gnu/stubs-.*\.h$' < rpm.filelist >> devel.filelist || : grep '%{_prefix}/include/gnu/lib-names-.*\.h$' < rpm.filelist >> devel.filelist || : # Put the include files into headers file list. grep '%{_prefix}/include' < rpm.filelist \ | egrep -v '%{_prefix}/include/gnu/stubs-.*\.h$' \ | egrep -v '%{_prefix}/include/gnu/lib-names-.*\.h$' \ > headers.filelist # Remove partial (lib*_p.a) static libraries, include files, and info files from # the core glibc package. sed -i -e '\|%{_libdir}/lib.*_p.a|d' \ -e '\|%{_prefix}/include|d' \ -e '\|%{_infodir}|d' \ rpm.filelist # Put some static files into the devel package. grep '%{_libdir}/lib.*\.a' < rpm.filelist \ | grep '/lib\(\(c\|pthread\|nldbl\|mvec\)_nonshared\|g\|ieee\|mcheck\|rpcsvc\)\.a$' \ >> devel.filelist # Put the rest of the static files into the static package. grep '%{_libdir}/lib.*\.a' < rpm.filelist \ | grep -v '/lib\(\(c\|pthread\|nldbl\|mvec\)_nonshared\|g\|ieee\|mcheck\|rpcsvc\)\.a$' \ > static.filelist # Put all of the object files and *.so (not the versioned ones) into the # devel package. grep '%{_libdir}/.*\.o' < rpm.filelist >> devel.filelist grep '%{_libdir}/lib.*\.so' < rpm.filelist >> devel.filelist # Remove all of the static, object, unversioned DSOs, and nscd from the core # glibc package. sed -i -e '\|%{_libdir}/lib.*\.a|d' \ -e '\|%{_libdir}/.*\.o|d' \ -e '\|%{_libdir}/lib.*\.so|d' \ -e '\|nscd|d' rpm.filelist # All of the bin and certain sbin files go into the common package. # We explicitly exclude certain sbin files that need to go into # the core glibc package for use during upgrades. grep '%{_prefix}/bin' < rpm.filelist >> common.filelist grep '%{_prefix}/sbin/[^gi]' < rpm.filelist >> common.filelist # All of the files under share go into the common package since # they should be multilib-independent. grep '%{_prefix}/share' < rpm.filelist | \ grep -v -e '%{_prefix}/share/zoneinfo' -e '%%dir %{prefix}/share' \ >> common.filelist # Remove the bin, locale, some sbin, and share from the # core glibc package. We cheat a bit and use the slightly dangerous # /usr/sbin/[^gi] to match the inverse of the search that put the # files into common.filelist. It's dangerous in that additional files # that start with g, or i would get put into common.filelist and # rpm.filelist. sed -i -e '\|%{_prefix}/bin|d' \ -e '\|%{_prefix}/lib/locale|d' \ -e '\|%{_prefix}/sbin/[^gi]|d' \ -e '\|%{_prefix}/share|d' rpm.filelist ############################################################################## # Build the xen package file list (nosegneg.filelist) ############################################################################## truncate -s 0 nosegneg.filelist %if %{xenpackage} grep '/%{_lib}/%{nosegneg_subdir}' < rpm.filelist >> nosegneg.filelist sed -i -e '\|/%{_lib}/%{nosegneg_subdir}|d' rpm.filelist # TODO: There are files in the nosegneg list which should be in the devel # pacakge, but we leave them instead in the xen subpackage. We may # wish to clean that up at some point. %endif # Add the binary to build locales to the common subpackage. echo '%{_prefix}/sbin/build-locale-archive' >> common.filelist # The nscd binary must go into the nscd subpackage. echo '%{_prefix}/sbin/nscd' > nscd.filelist # The memusage and pcprofile libraries are put back into the core # glibc package even though they are only used by utils package # scripts.. cat >> rpm.filelist < utils.filelist < nss_$module.filelist done # nis includes nisplus cat nss_nisplus.filelist >> nss_nis.filelist # Symlinks go into the nss-devel package (instead of the main devel # package). grep '/libnss_[a-z]*\.so$' devel.filelist > nss-devel.filelist # /var/db/Makefile goes into nss_db, remove the other files from # the main and devel file list. sed -i -e '\,/libnss_.*\.so[0-9.]*$,d' \ -e '\,/var/db/Makefile,d' \ rpm.filelist devel.filelist # Restore the built-in NSS modules. cat nss_files.filelist nss_dns.filelist nss_compat.filelist >> rpm.filelist # Prepare the libcrypt-related file lists. grep '/libcrypt-[0-9.]*.so$' rpm.filelist > libcrypt.filelist test $(wc -l < libcrypt.filelist) -eq 1 %if %{without bootstrap} sed s/libcrypt/libcrypt-nss/ < libcrypt.filelist > libcrypt-nss.filelist %endif sed -i -e '\,/libcrypt,d' rpm.filelist # Remove the zoneinfo files # XXX: Why isn't this don't earlier when we are removing files? # Won't this impact what is shipped? rm -rf $RPM_BUILD_ROOT%{_prefix}/share/zoneinfo # Make sure %config files have the same timestamp across multilib packages. # # XXX: Ideally ld.so.conf should have the timestamp of the spec file, but there # doesn't seem to be any macro to give us that. So we do the next best thing, # which is to at least keep the timestamp consistent. The choice of using # glibc_post_upgrade.c is arbitrary. touch -r %{SOURCE2} $RPM_BUILD_ROOT/etc/ld.so.conf touch -r sunrpc/etc.rpc $RPM_BUILD_ROOT/etc/rpc # We allow undefined symbols in shared libraries because the libraries # referenced at link time here, particularly ld.so, may be different than # the one used at runtime. This is really only needed during the ARM # transition from ld-linux.so.3 to ld-linux-armhf.so.3. pushd build-%{target} $GCC -Os -g -static -o build-locale-archive %{SOURCE1} \ ../build-%{target}/locale/locarchive.o \ ../build-%{target}/locale/md5.o \ -I. -DDATADIR=\"%{_datadir}\" -DPREFIX=\"%{_prefix}\" \ -L../build-%{target} \ -Wl,--allow-shlib-undefined \ -B../build-%{target}/csu/ -lc -lc_nonshared install -m 700 build-locale-archive $RPM_BUILD_ROOT%{_prefix}/sbin/build-locale-archive popd # Lastly copy some additional documentation for the packages. rm -rf documentation mkdir documentation cp crypt/README.ufc-crypt documentation/README.ufc-crypt cp timezone/README documentation/README.timezone cp posix/gai.conf documentation/ %ifarch s390x # Compatibility symlink mkdir -p $RPM_BUILD_ROOT/lib ln -sf /%{_lib}/ld64.so.1 $RPM_BUILD_ROOT/lib/ld64.so.1 %endif # Leave a compatibility symlink for the dynamic loader on armhfp targets, # at least until the world gets rebuilt %ifarch armv7hl armv7hnl ln -sf /lib/ld-linux-armhf.so.3 $RPM_BUILD_ROOT/lib/ld-linux.so.3 %endif %if %{with benchtests} # Build benchmark binaries. Ignore the output of the benchmark runs. pushd build-%{target} make BENCH_DURATION=1 bench-build popd # Copy over benchmark binaries. mkdir -p $RPM_BUILD_ROOT%{_prefix}/libexec/glibc-benchtests cp $(find build-%{target}/benchtests -type f -executable) $RPM_BUILD_ROOT%{_prefix}/libexec/glibc-benchtests/ find build-%{target}/benchtests -type f -executable | while read b; do echo "%{_prefix}/libexec/glibc-benchtests/$(basename $b)" done >> benchtests.filelist # ... and the makefile. for b in %{SOURCE9} %{SOURCE10}; do cp $b $RPM_BUILD_ROOT%{_prefix}/libexec/glibc-benchtests/ echo "%{_prefix}/libexec/glibc-benchtests/$(basename $b)" >> benchtests.filelist done # .. and finally, the comparison scripts. cp benchtests/scripts/benchout.schema.json $RPM_BUILD_ROOT%{_prefix}/libexec/glibc-benchtests/ cp benchtests/scripts/compare_bench.py $RPM_BUILD_ROOT%{_prefix}/libexec/glibc-benchtests/ cp benchtests/scripts/import_bench.py $RPM_BUILD_ROOT%{_prefix}/libexec/glibc-benchtests/ cp benchtests/scripts/validate_benchout.py $RPM_BUILD_ROOT%{_prefix}/libexec/glibc-benchtests/ echo "%{_prefix}/libexec/glibc-benchtests/benchout.schema.json" >> benchtests.filelist echo "%{_prefix}/libexec/glibc-benchtests/compare_bench.py*" >> benchtests.filelist echo "%{_prefix}/libexec/glibc-benchtests/import_bench.py*" >> benchtests.filelist echo "%{_prefix}/libexec/glibc-benchtests/validate_benchout.py*" >> benchtests.filelist %endif ############################################################################### # Rebuild libpthread.a using --whole-archive to ensure all of libpthread # is included in a static link. This prevents any problems when linking # statically, using parts of libpthread, and other necessary parts not # being included. Upstream has decided that this is the wrong approach to # this problem and that the full set of dependencies should be resolved # such that static linking works and produces the most minimally sized # static application possible. ############################################################################### pushd $RPM_BUILD_ROOT%{_prefix}/%{_lib}/ $GCC -r -nostdlib -o libpthread.o -Wl,--whole-archive ./libpthread.a rm libpthread.a ar rcs libpthread.a libpthread.o rm libpthread.o popd ############################################################################### %if 0%{?_enable_debug_packages} # The #line directives gperf generates do not give the proper # file name relative to the build directory. pushd locale ln -s programs/*.gperf . popd pushd iconv ln -s ../locale/programs/charmap-kw.gperf . popd # Print some diagnostic information in the builds about the # getconf binaries. # XXX: Why do we do this? ls -l $RPM_BUILD_ROOT%{_prefix}/bin/getconf ls -l $RPM_BUILD_ROOT%{_prefix}/libexec/getconf eu-readelf -hS $RPM_BUILD_ROOT%{_prefix}/bin/getconf \ $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/* find_debuginfo_args='--strict-build-id -g' %ifarch %{debuginfocommonarches} find_debuginfo_args="$find_debuginfo_args \ -l common.filelist \ -l utils.filelist \ -l nscd.filelist \ -p '.*/(sbin|libexec)/.*' \ -o debuginfocommon.filelist \ -l nss_db.filelist -l nss_nis.filelist -l nss_hesiod.filelist \ -l libcrypt.filelist \ %if %{without bootstrap} -l libcrypt-nss.filelist \ %endif -l rpm.filelist \ %if %{with benchtests} -l nosegneg.filelist -l benchtests.filelist" %else -l nosegneg.filelist" %endif %endif /usr/lib/rpm/find-debuginfo.sh $find_debuginfo_args -o debuginfo.filelist # List all of the *.a archives in the debug directory. list_debug_archives() { local dir=%{_prefix}/lib/debug%{_libdir} find $RPM_BUILD_ROOT$dir -name "*.a" -printf "$dir/%%P\n" } %ifarch %{debuginfocommonarches} # Remove the source files from the common package debuginfo. sed -i '\#^%{_prefix}/src/debug/#d' debuginfocommon.filelist # Create a list of all of the source files we copied to the debug directory. find $RPM_BUILD_ROOT%{_prefix}/src/debug \ \( -type d -printf '%%%%dir ' \) , \ -printf '%{_prefix}/src/debug/%%P\n' > debuginfocommon.sources %ifarch %{biarcharches} # Add the source files to the core debuginfo package. cat debuginfocommon.sources >> debuginfo.filelist %else %ifarch %{ix86} %define basearch i686 %endif %ifarch sparc sparcv9 %define basearch sparc %endif # The auxarches get only these few source files. auxarches_debugsources=\ '/(generic|linux|%{basearch}|nptl(_db)?)/|/%{glibcsrcdir}/build|/dl-osinfo\.h' # Place the source files into the core debuginfo pakcage. egrep "$auxarches_debugsources" debuginfocommon.sources >> debuginfo.filelist # Remove the source files from the common debuginfo package. egrep -v "$auxarches_debugsources" \ debuginfocommon.sources >> debuginfocommon.filelist %endif # %{biarcharches} # Add the list of *.a archives in the debug directory to # the common debuginfo package. list_debug_archives >> debuginfocommon.filelist # It happens that find-debuginfo.sh produces duplicate entries even # though the inputs are unique. Therefore we sort and unique the # entries in the debug file lists. This avoids the following warnings: # ~~~ # Processing files: glibc-debuginfo-common-2.17.90-10.fc20.x86_64 # warning: File listed twice: /usr/lib/debug/usr/sbin/build-locale-archive.debug # warning: File listed twice: /usr/lib/debug/usr/sbin/nscd.debug # warning: File listed twice: /usr/lib/debug/usr/sbin/zdump.debug # warning: File listed twice: /usr/lib/debug/usr/sbin/zic.debug # ~~~ sort -u debuginfocommon.filelist > debuginfocommon2.filelist mv debuginfocommon2.filelist debuginfocommon.filelist %endif # %{debuginfocommonarches} # Remove any duplicates output by a buggy find-debuginfo.sh. sort -u debuginfo.filelist > debuginfo2.filelist mv debuginfo2.filelist debuginfo.filelist # Remove some common directories from the common package debuginfo so that we # don't end up owning them. exclude_common_dirs() { exclude_dirs="%{_prefix}/src/debug" exclude_dirs="$exclude_dirs $(echo %{_prefix}/lib/debug{,/%{_lib},/bin,/sbin})" exclude_dirs="$exclude_dirs $(echo %{_prefix}/lib/debug%{_prefix}{,/%{_lib},/libexec,/bin,/sbin})" for d in $(echo $exclude_dirs | sed 's/ /\n/g'); do sed -i "\|^%%dir $d/\?$|d" $1 done } %ifarch %{debuginfocommonarches} exclude_common_dirs debuginfocommon.filelist %endif exclude_common_dirs debuginfo.filelist %endif # 0%{?_enable_debug_packages} %if %{with docs} # Remove the `dir' info-heirarchy file which will be maintained # by the system as it adds info files to the install. rm -f $RPM_BUILD_ROOT%{_infodir}/dir %endif %ifarch %{auxarches} # Delete files that we do not intended to ship with the auxarch. echo Cutting down the list of unpackaged files sed -e '/%%dir/d;/%%config/d;/%%verify/d;s/%%lang([^)]*) //;s#^/*##' \ common.filelist devel.filelist static.filelist headers.filelist \ utils.filelist nscd.filelist \ %ifarch %{debuginfocommonarches} debuginfocommon.filelist \ %endif | (cd $RPM_BUILD_ROOT; xargs --no-run-if-empty rm -f 2> /dev/null || :) %else mkdir -p $RPM_BUILD_ROOT/var/{db,run}/nscd touch $RPM_BUILD_ROOT/var/{db,run}/nscd/{passwd,group,hosts,services} touch $RPM_BUILD_ROOT/var/run/nscd/{socket,nscd.pid} %endif # %{auxarches} %ifnarch %{auxarches} truncate -s 0 $RPM_BUILD_ROOT/%{_prefix}/lib/locale/locale-archive %endif mkdir -p $RPM_BUILD_ROOT/var/cache/ldconfig truncate -s 0 $RPM_BUILD_ROOT/var/cache/ldconfig/aux-cache ############################################################################## # Run the glibc testsuite ############################################################################## %check %if %{with testsuite} # Run the glibc tests. If any tests fail to build we exit %check with an error # of 1, otherwise we print the test failure list and the failed test output # and exit with 0. In the future we want to compare against a baseline and # exit with 1 if the results deviate from the baseline. run_tests () { truncate -s 0 check.log tail -f check.log & tailpid=$! # Run the make a sub-shell (to avoid %check failing if make fails) # but capture the status for use later. We use the normal sub-shell # trick of printing the status. The actual result of the sub-shell # is the successful execution of the echo. status=$(set +e make %{?_smp_mflags} check %{silentrules} > check.log 2>&1 status=$? echo $status) # Wait for the tail to catch up with the output and then kill it. sleep 10 kill $tailpid # Print the header, so we can find it, but skip the error printing # if there aren't any failrues. echo ===================FAILED TESTS===================== if [ $status -ne 0 ]; then # We are not running with `-k`, therefore a test build failure # terminates the test run and that terminates %check with an # error which terminates the build. We want this behaviour to # ensure that all tests build, and all tests run. # If the test result summary is not present it means one of # tests failed to build. if ! grep 'Summary of test results:' check.log; then echo "FAIL: Some glibc tests failed to build." exit 1 fi # Print out information about all of the failed tests. grep -e ^FAIL -e ^ERROR tests.sum \ | awk '{print $2}' \ | while read testcase; do echo "$testcase" cat $testcase.out echo ------------------------- done fi # If the crypt-glibc test suite fails, something is completely # broken, so fail the build in this case. make %{?_smp_mflags} subdirs=crypt-glibc check %{silentrules} } # Increase timeouts export TIMEOUTFACTOR=16 parent=$$ echo ====================TESTING========================= ############################################################################## # - Test the default runtime. # - Power 620 / 970 ISA for 64-bit POWER BE. # - POWER8 for 64-bit POWER LE. # - ??? for 64-bit x86_64 # - ??? for 32-bit x86 # - ??? for 64-bit AArch64 # - ??? for 32-bit ARM # - zEC12 for 64-bit s390x # - ??? for 32-bit s390 ############################################################################## pushd build-%{target} run_tests popd %if %{buildxen} echo ====================TESTING -mno-tls-direct-seg-refs============= ############################################################################## # - Test the xen runtimes (nosegneg). ############################################################################## pushd build-%{target}-nosegneg run_tests popd %endif %if %{buildpower6} echo ====================TESTING -mcpu=power6============= ############################################################################## # - Test the 64-bit POWER6 BE runtimes. ############################################################################## pushd build-%{target}-power6 if [ -d ../power6emul ]; then export LD_PRELOAD=`cd ../power6emul; pwd`/\$LIB/power6emul.so fi run_tests popd %endif %if %{buildpower7} echo ====================TESTING -mcpu=power7============= ############################################################################## # - Test the 64-bit POWER7 BE runtimes. ############################################################################## pushd build-%{target}-power7 run_tests popd %endif %if %{buildpower8} echo ====================TESTING -mcpu=power8============= ############################################################################## # - Test the 64-bit POWER8 BE runtimes. ############################################################################## pushd build-%{target}-power8 run_tests popd %endif echo ====================TESTING DETAILS================= for i in `sed -n 's|^.*\*\*\* \[\([^]]*\.out\)\].*$|\1|p' build-*-linux*/check.log`; do echo =====$i===== cat $i || : echo ============ done echo ====================TESTING END===================== PLTCMD='/^Relocation section .*\(\.rela\?\.plt\|\.rela\.IA_64\.pltoff\)/,/^$/p' echo ====================PLT RELOCS LD.SO================ readelf -Wr $RPM_BUILD_ROOT/%{_lib}/ld-*.so | sed -n -e "$PLTCMD" echo ====================PLT RELOCS LIBC.SO============== readelf -Wr $RPM_BUILD_ROOT/%{_lib}/libc-*.so | sed -n -e "$PLTCMD" echo ====================PLT RELOCS END================== %if %{with valgrind} # Finally, check if valgrind runs with the new glibc. # We want to fail building if valgrind is not able to run with this glibc so # that we can then coordinate with valgrind to get it fixed before we update # glibc. pushd build-%{target} elf/ld.so --library-path .:elf:nptl:dlfcn /usr/bin/valgrind \ elf/ld.so --library-path .:elf:nptl:dlfcn /usr/bin/true popd %endif %endif # %{run_glibc_tests} %pre -p -- Check that the running kernel is new enough required = '%{enablekernel}' rel = posix.uname("%r") if rpm.vercmp(rel, required) < 0 then error("FATAL: kernel too old", 0) end %post -p %{_prefix}/sbin/glibc_post_upgrade.%{_target_cpu} %postun -p /sbin/ldconfig %posttrans all-langpacks -e -p -- If at the end of the transaction we are still installed -- (have a template of non-zero size), then we rebuild the -- locale cache (locale-archive) from the pre-populated -- locale cache (locale-archive.tmpl) i.e. template. if posix.stat("%{_prefix}/lib/locale/locale-archive.tmpl", "size") > 0 then pid = posix.fork() if pid == 0 then posix.exec("%{_prefix}/sbin/build-locale-archive", "--install-langs", "%%{_install_langs}") elseif pid > 0 then posix.wait(pid) end end %postun all-langpacks -p -- In the postun we always remove the locale cache. -- We are being uninstalled and if this is an upgrade -- then the new packages template will be used to -- recreate a new copy of the cache. os.remove("%{_prefix}/lib/locale/locale-archive") %if %{with docs} %post devel /sbin/install-info %{_infodir}/libc.info.gz %{_infodir}/dir > /dev/null 2>&1 || : %endif %pre headers # this used to be a link and it is causing nightmares now if [ -L %{_prefix}/include/scsi ] ; then rm -f %{_prefix}/include/scsi fi %if %{with docs} %preun devel if [ "$1" = 0 ]; then /sbin/install-info --delete %{_infodir}/libc.info.gz %{_infodir}/dir > /dev/null 2>&1 || : fi %endif %post utils -p /sbin/ldconfig %postun utils -p /sbin/ldconfig %pre -n nscd getent group nscd >/dev/null || /usr/sbin/groupadd -g 28 -r nscd getent passwd nscd >/dev/null || /usr/sbin/useradd -M -o -r -d / -s /sbin/nologin \ -c "NSCD Daemon" -u 28 -g nscd nscd %post -n nscd %systemd_post nscd.service %preun -n nscd %systemd_preun nscd.service %postun -n nscd if test $1 = 0; then /usr/sbin/userdel nscd > /dev/null 2>&1 || : fi %systemd_postun_with_restart nscd.service %if %{xenpackage} %post xen -p /sbin/ldconfig %postun xen -p /sbin/ldconfig %endif %clean rm -rf "$RPM_BUILD_ROOT" rm -f *.filelist* %files -f rpm.filelist %defattr(-,root,root) %dir %{_prefix}/%{_lib}/audit %if %{buildxen} && !%{xenpackage} %dir /%{_lib}/%{nosegneg_subdir_base} %dir /%{_lib}/%{nosegneg_subdir} %endif %if %{buildpower6} %dir /%{_lib}/power6 %dir /%{_lib}/power6x %endif %if %{buildpower7} %dir /%{_lib}/power7 %endif %if %{buildpower8} %dir /%{_lib}/power8 %endif %ifarch s390x /lib/ld64.so.1 %endif %ifarch armv7hl armv7hnl /lib/ld-linux.so.3 %endif %verify(not md5 size mtime) %config(noreplace) /etc/nsswitch.conf %verify(not md5 size mtime) %config(noreplace) /etc/ld.so.conf %verify(not md5 size mtime) %config(noreplace) /etc/rpc %dir /etc/ld.so.conf.d %dir %{_prefix}/libexec/getconf %dir %{_libdir}/gconv %dir %attr(0700,root,root) /var/cache/ldconfig %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/cache/ldconfig/aux-cache %attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/ld.so.cache %attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/gai.conf %doc README NEWS INSTALL BUGS CONFORMANCE elf/rtld-debugger-interface.txt # If rpm doesn't support %license, then use %doc instead. %{!?_licensedir:%global license %%doc} %license COPYING COPYING.LIB LICENSES %if %{xenpackage} %files -f nosegneg.filelist xen %defattr(-,root,root) %dir /%{_lib}/%{nosegneg_subdir_base} %dir /%{_lib}/%{nosegneg_subdir} %endif %ifnarch %{auxarches} %files -f common.filelist common %defattr(-,root,root) %dir %{_prefix}/lib/locale %dir %{_prefix}/lib/locale/C.utf8 %{_prefix}/lib/locale/C.utf8/* %dir %attr(755,root,root) /etc/default %verify(not md5 size mtime) %config(noreplace) /etc/default/nss %doc documentation/README.timezone %doc documentation/gai.conf %files all-langpacks %attr(0644,root,root) %verify(not md5 size mtime) %{_prefix}/lib/locale/locale-archive.tmpl %attr(0644,root,root) %verify(not md5 size mtime mode) %ghost %config(missingok,noreplace) %{_prefix}/lib/locale/locale-archive %files locale-source %defattr(-,root,root) %dir %{_prefix}/share/i18n/locales %{_prefix}/share/i18n/locales/* %dir %{_prefix}/share/i18n/charmaps %{_prefix}/share/i18n/charmaps/* %files -f devel.filelist devel %defattr(-,root,root) %files -f static.filelist static %defattr(-,root,root) %files -f headers.filelist headers %defattr(-,root,root) %files -f utils.filelist utils %defattr(-,root,root) %files -f nscd.filelist -n nscd %defattr(-,root,root) %config(noreplace) /etc/nscd.conf %dir %attr(0755,root,root) /var/run/nscd %dir %attr(0755,root,root) /var/db/nscd /lib/systemd/system/nscd.service /lib/systemd/system/nscd.socket %{_tmpfilesdir}/nscd.conf %attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/nscd.pid %attr(0666,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/socket %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/passwd %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/group %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/hosts %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/services %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/passwd %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/group %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/hosts %attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/services %ghost %config(missingok,noreplace) /etc/sysconfig/nscd %endif %files -f nss_db.filelist -n nss_db /var/db/Makefile %files -f nss_nis.filelist -n nss_nis %files -f nss_hesiod.filelist -n nss_hesiod %doc hesiod/README.hesiod %files -f nss-devel.filelist nss-devel %files -f libcrypt.filelist -n libcrypt %doc documentation/README.ufc-crypt %ghost /%{_lib}/libcrypt.so.1 %if %{without bootstrap} %files -f libcrypt-nss.filelist -n libcrypt-nss %ghost /%{_lib}/libcrypt.so.1 %endif %if 0%{?_enable_debug_packages} %files debuginfo -f debuginfo.filelist %defattr(-,root,root) %ifarch %{debuginfocommonarches} %ifnarch %{auxarches} %files debuginfo-common -f debuginfocommon.filelist %defattr(-,root,root) %endif %endif %endif %if %{with benchtests} %files benchtests -f benchtests.filelist %defattr(-,root,root) %endif %changelog * Wed Jan 17 2018 Florian Weimer - 2.25-13 - PTHREAD_STACK_MIN is too small on x86-64 (#1527887) - CVE-2018-1000001: Make getcwd fail if it cannot obtain an absolute path (#1533837) - CVE-2017-16997: Check for empty tokens before dynamic string token expansion in the dynamic linker (#1526866) - CVE-2017-15804: glob: Fix overflow in GLOB_TILDE unescaping (swbz#22332) - CVE-2017-15670: glob: Fix one-byte overflow (#1504807) - CVE-2017-15671: glob: Fix memory leak (#1504807) - Auto-sync with upstream branch release/2.25/master, commit edcf13e25c1559558a6f12ff5a71d4136a39235e: - nss_files: Avoid large buffers with many host addresses (swbz#22078) - nss_files: Use struct scratch_buffer for gethostbyname (swbz#18023) - posix: Fix improper assert in Linux posix_spawn (BZ#22273) - Don't use IFUNC resolver for longjmp or system in libpthread (swbz#21041) - x86-64: Use fxsave/xsave/xsavec in _dl_runtime_resolve (swbz#21265) * Wed Oct 11 2017 Florian Weimer - 2.25-12 - Support an arbitrary number of search domains (#168253) - Detect and apply /etc/resolv.conf changes in libresolv (#1374239) - CVE-2015-5180: DNS stub resolver crash with crafted record type (#1251403) - Auto-sync with upstream branch release/2.25/master, commit 595f287ae092dd973f6d5fb748cbe31ef7d82b2d. * Mon Oct 09 2017 Florian Weimer - 2.25-11 - Move /var/db/Makefile to nss_db (#1498900) - Move nss_compat to the main glibc package (#1400538) - iconv: Support the IBM858 character set (#1416405) - Auto-sync with upstream branch release/2.25/master, commit 864ea5f6579edfee41f7d4a778807045b5aff66b: - nss: Fix pointer alignment/endianness issue in group merging (#1471985) - elf: Place $(elf-objpfx)sofini.os last (swbz#22051) * Mon Aug 28 2017 Florian Weimer - 2.25-10 - Auto-sync with upstream release/2.25/master, commit bc5ace67fe9823757532e0273f6c1cdfda065433: - mutex: Fix robust mutex lock acquire (#1485900) - rwlock: Fix explicit hand-over (swbz#21298) * Tue Aug 22 2017 Florian Weimer - 2.25-9 - Auto-sync with upstream release/2.25/master, commit 02aaa3c749bf18a3dbafff4c1f0180f135cad7ed: - assert: Support types without operator== (int) (#1483005) * Wed Aug 16 2017 Florian Weimer - 2.25-8 - Disable SSE2 usage on i686 (#1471427) - Auto-sync with upstream release/2.25/master, commit 47db584c74e2bbcf1ba55e62d949c1a738da5e0a: - CVE-2017-12132: Reduce EDNS payload size to 1200 bytes (#1477530) - Call exit directly in clone (swbz#21512) - assert: Suppress pedantic warning caused by statement expression (swbz#21242) - x86-64: Use _dl_runtime_resolve_opt only with AVX512F (swbz#21871) - powerpc: Fix logbl on power7 (swbz#21280) - Avoid .symver on common symbols (swbz#21666) - aarch64: Use hidden __GI__dl_argv in rtld startup code * Thu Jul 06 2017 Florian Weimer - 2.25-7 - Auto-sync with upstream release/2.25/master, commit 49f97e641e4e84a42246655d30adbc4756e67114: - x86-64: Align the stack in __tls_get_addr (#1440287) * Tue Jun 20 2017 Florian Weimer - 2.25-6 - Auto-sync with upstream release/2.25/master, commit adc7e06fb412a2a1ee52f8cb788caf436335b9f3, fixing: - CVE-2017-1000366: Avoid large allocas in the dynamic linker (#1462820) - Ignore and remove LD_HWCAP_MASK for AT_SECURE programs (swbz#21209) - Correct collation rules for Malayalam (swbz#19922, swbz#19919) - fork: Remove bogus parent PID assertions (swbz#21386) * Mon Jun 05 2017 Arjun Shankar - 2.25-5 - Auto-sync with upstream release/2.25/master, commit 34b6f41c14d09fe627c6a6224880d76d0959079e, fixing: - Fix test-math-vector-sincos.h aliasing (ffe308e) * Thu Mar 02 2017 Florian Weimer - 2.25-4 - Auto-sync with upstream release/2.25/master, commit 69e0a87cc4c570e3b7218392fc3e743b5bddcce2, fixing: - Build all DSOs with BIND_NOW (#1406731) * Wed Mar 1 2017 Jakub Hrozek - 2.25-3 - NSS: Prefer sss service for passwd, group databases (#1427646) * Tue Feb 28 2017 Florian Weimer - 2.25-2 - Auto-sync with upstream release/2.25/master, commit 93cf93e06ce123439e41d3d62790601c313134cb, fixing: - sunrpc: Improvements for UDP client timeout handling (#1346406) - sunrpc: Avoid use-after-free read access in clntudp_call (swbz#21115) - Fix getting tunable values on big-endian (swbz#21109) * Wed Feb 08 2017 Carlos O'Donell - 2.25-1 - Update to final released glibc 2.25. * Wed Feb 08 2017 Carlos O'Donell - 2.24.90-31 - Fix builds with GCC 7.0. * Wed Feb 01 2017 Carlos O'Donell - 2.24.90-30 - Optimize IBM z System builds for zEC12. * Wed Jan 25 2017 Florian Weimer - 2.24.90-29 - Use vpath in crypt-glibc/Makefile to obtain the test input file. - Auto-sync with upstream master, commit 5653ab12b4ae15b32d41de7c56b2a4626cd0437a, fixing: - ARM fpu_control.h for assemblers requiring VFP insn names (swbz#21047) - FAIL in test string/tst-xbzero-opt (swbz#21006) - Make soft-float powerpc swapcontext restore the signal mask (swbz#21045) - Clear list of acquired robust mutexes in the child after fork (swbz#19402) * Thu Jan 12 2017 Carlos O'Donell - 2.24.90-28 - Auto-sync with upstream master, commit 468e525c81a4af10f2e613289b6ff7c950773a9e: - Drop rwlock related patches applied upstream. - Fix i686 memchr for large input sizes (swbz#21014) - Fix x86 strncat for large input sizes (swbz#19390) - powerpc: Fix write-after-destroy in lock elision (swbz#20822) - New pthread rwlock that is more scalable. - Fix testsuite build for GCC 7 -Wformat-truncation. * Mon Jan 02 2017 Florian Weimer - 2.24.90-27 - Auto-sync with upstream master, commit 73dfd088936b9237599e4ab737c7ae2ea7d710e1: - Enable tunables. - Drop condvar-related patches applied upstream. - Update DNS RR type definitions (swbz#20593) - CVE-2015-5180: resolv: Fix crash with internal QTYPE (#1249603) - sunrpc: Always obtain AF_INET addresses from NSS (swbz#20964) * Mon Dec 26 2016 Florian Weimer - 2.24.90-26 - Auto-sync with upstream master, commit cecbc7967f0bcac718b6f8f8942b58403c0e917c - Enable stack protector for most of glibc (#1406731) * Fri Dec 23 2016 Carlos O'Donell - 2.24.90-25 - Auto-sync with upstream master, commit 81e0662e5f2c342ffa413826b7b100d56677b613, fixing: - Shared object unload assert when calling dlclose (#1398370, swbz#11941) - Fix nss_nisplus build with mainline GCC (swbz#20978) - Add Intel TSX blacklist for silicon with known errata. - Add fmax, fmin, fmaxf, fminf microbenchmarks. - Robust mutexes: Fix lost wake-up (swbz#20973). - Add fmaxmag, fminmag, roundeven, roundevenf, roundevenl functions. * Sun Dec 18 2016 Florian Weimer - 2.24.90-24 - Auto-sync with upstream master, commit e077349ce589466eecd47213db4fae6b80ec18c4, fixing: - Warn about assignment in assertions (#1105335) - powerpc64/power7 memchr for large input sizes (swbz#20971) - fmax, fmin sNaN handling (swbz#20947) * Mon Dec 12 2016 Florian Weimer - 2.24.90-23 - Auto-sync with upstream master, commit 92dcaa3e2f7bf0f7f1c04cd2fb6a317df1a4e225, fixing: - Add getrandom, getentropy (#1172273) - Add additional compiler barriers to backtrace tests (swbz#20956) * Fri Dec 09 2016 Florian Weimer - 2.24.90-22 - Auto-sync with upstream master, commit 0abbe7cd700951082b314182a0958d65238297ef, changing: - IN6_IS_ADDR_ does not require enabling non-standard extensions (#1138893) - Install libm.a as linker script (swbz#20539) - Fix writes past the allocated array bounds in execvpe (swbz#20847) - Fix hypot sNaN handling (swbz#20940) - Fix x86_64/x86 powl handling of sNaN arguments (swbz#20916) - Fix sysdeps/ieee754 pow handling of sNaN arguments (swbz#20916) - Fix pow (qNaN, 0) result with -lieee (swbz#20919) - Fix --enable-nss-crypt failure of tst-linkall-static (swbz#20918) * Fri Dec 02 2016 Florian Weimer - 2.24.90-21 - Auto-sync with upstream master, commit 01b23a30b42a90b1ebd882a0d81110a1542e504a, fixing: - aarch64: Incorrect dynamic TLS resolution (#1400347) * Wed Nov 30 2016 Florian Weimer - 2.24.90-20 - Auto-sync with upstream master, commit 9e78f6f6e7134a5f299cc8de77370218f8019237, fixing: - stdio buffering with certain network file systems (#1400144) - libpthread initialization breaks ld.so exceptions (#1393909) - x86_64: Use of PLT and GOT in static archives (swbz#20750) - localedata, iconvdata: 0x80->Euro sign mapping for GBK (swbz#20864) - math: x86_64 -mfpmath=387 float_t, double_t (swbz#20787) * Wed Nov 23 2016 Florian Weimer - 2.24.90-19 - Auto-sync with upstream master, commit 7a5e3d9d633c828d84a9535f26b202a6179978e7: - Fix default float_t definition (swbz#20855) - Fix writes past the allocated array bounds in execvpe (swbz#20847) * Tue Nov 22 2016 Florian Weimer - 2.24.90-18 - Auto-sync with upstream master, commit 5ee1a4443a3eb0868cef1fe506ae6fb6af33d4ad. * Wed Nov 16 2016 Carlos O'Donell - 2.24.90-17 * Add new scalable implementation of POSIX read-write locks. * Wed Nov 16 2016 Florian Weimer - 2.24.90-16 - Do not try to link libcrypt statically during tests * Wed Nov 16 2016 Florian Weimer - 2.24.90-15 - Auto-sync with upstream master, commit 530862a63e0929128dc98fbbd463b120934434fb, fixing: - Fix rpcgen buffer overrun (swbz#20790) - Fix ppc64 build failure to swbz#20729 fix attempt * Wed Nov 2 2016 Florian Weimer - 2.24.90-14 - Drop glibc-swbz20019.patch, applied upstream. - dlerror returns NULL after dlsym (RTLD_NEXT) lookup failure (#1333945) (fixed by dropping the revert) - Auto-sync with upstream master, commit 9032070deaa03431921315f973c548c2c403fecc, fixing: - Correct clog10 documentation (swbz#19673) - Fix building with -Os (swbz#20729) - Properly initialize glob structure with GLOB_BRACE|GLOB_DOOFFS (swbz#20707) - powerpc: Fix TOC stub on powerpc64 clone (swbz#20728) - math: Make strtod raise "inexact" exceptions (swbz#19380) - malloc: Remove malloc_get_state, malloc_set_state (swbz#19473) * Sat Oct 22 2016 Florian Weimer - 2.24.90-13 - Auto-sync with upstream master, commit e37208ce86916af9510ffb9ce7b3c187986f07de, changing: - Restore compatbility with extern "C" wrappers * Fri Oct 21 2016 Florian Weimer - 2.24.90-12 - Auto-sync with upstream master, commit b3918c44db615637b26d919ce599cd86592316b3, fixing: - math: Turn iszero into a function template (#1387415) - ARM: Use VSQRT instruction (swbz#20660) - math: Stop powerpc copysignl raising "invalid" for sNaN (swbz#20718) - x86: Fix FMA and AVX2 detection (swbz#20689) - x86: Avoid assertion failure on older Intel CPus (swbz#20647) * Mon Oct 17 2016 Carlos O'Donell - 2.24.90-11 - Add prototype support for detecting invalid IFUNC calls (swbz#20019). - New POSIX thread condition variable implementation (swbz#13165). * Fri Oct 07 2016 Florian Weimer - 2.24.90-10 - Auto-sync with upstream master, commit 5140d036f9c16585448b5908c3a219bd96842161, fixing: - resolv: Remove RES_USEBSTRING and its implementation (swbz#20629) - Refactor ifunc resolvers due to false debuginfo (swbz#20478) * Tue Oct 04 2016 Florian Weimer - 2.24.90-9 - Auto-sync with upstream master, commit ff88ee7edfaa439e23c42fccaf3a36cd5f041894, fixing: - LONG_WIDTH is incorrectly set to the 64 on 32-bit platforms (#1381582) - libio: Multiple fixes for open_{w}memstream (swbz#18241, swbz#20181) - Simplify and test _dl_addr_inside_object (swbz#20292) * Thu Sep 22 2016 Florian Weimer - 2.24.90-8 - Add support for MIPS (#1377795) - Drop glibc-rh1315476-1.patch (sln pre-processor cleanup), it was applied upstream. - Auto-sync with upstream master, commit 17af5da98cd2c9ec958421ae2108f877e0945451, fixing the following bugs: - Fix non-LE TLS in static programs (swbz#19826) - resolv: Remove unsupported hook functions from the API (swbz#20016) - Remove RR type classification macros (swbz#20592) - Remove obsolete DNSSEC support (swbz#20591) - manual: Clarify the documentation of strverscmp (swbz#20524) * Tue Sep 20 2016 Carlos O'Donell - 2.24.90-7 - Auto-sync with upstream master. * Thu Sep 01 2016 Florian Weimer - 2.24.90-6 - Auto-sync with upstream master, commit 4d728087ef8cc826b05bd21d0c74d4eca9b1a27d, fixing: - Base on Linux headers (#1360480) - Simplify static malloc interposition (swbz#20432) * Fri Aug 26 2016 Florian Weimer - 2.24.90-5 - Auto-sync with upstream master, commit 7e625f7e85b4e88f10dbde35a0641742af581806, fixing: - lt_LT locale: use hyphens in d_fmt (swbz#20497) - nptl test time reductions (swbz#19946) * Sun Aug 21 2016 Florian Weimer - 2.24.90-4 - Auto-sync with upstream master, commit 66abf9bfbe24ac1e7207d26ccad725ed938dc52c, fixing: - argp: Do not override GCC keywords with macros (#1366830) * Wed Aug 17 2016 Florian Weimer - 2.24.90-3 - Auto-sync with upstream master, commit d9067fca40b8aac156d73cfa44d6875813555a6c, with these changes: - Avoid duplicating object files already in libc.a (#1352625) - CVE-2016-6323: Backtraces can hang on ARM EABI (32-bit) (swbz#20435) - et_EE: locale has wrong {p,n}_cs_precedes value (swbz#20459 * Thu Aug 11 2016 Florian Weimer - 2.24.90-2 - Auto-sync with upstream master, commit f79211792127f38d5954419bb3784c8eb7f5e4e5 * Mon Aug 08 2016 Carlos O'Donell - 2.24.90-1 - Set version to 2.24.90 to match upstream development. * Mon Aug 08 2016 Carlos O'Donell - 2.23.90-31 - Auto-sync with upstream master. * Thu Jul 21 2016 Florian Weimer - 2.23.90-30 - Drop sendmsg/recvmsg compatibility patch (#1344830) - glibc-devel depends on libgcc%%{_isa} (#1289356) - Drop Requires(pre) on libgcc - Introduce libcrypt and libcrypt-nss (#1324623) - Do not try to install mtrace when bootstrapping * Wed Jul 20 2016 Florian Weimer - 2.23.90-29 - Move NSS modules to subpackages (#1338889) * Wed Jul 13 2016 Florian Weimer - 2.23.90-28 - Auto-sync with upstream master, commit f531f93056b34800383c5154280e7ba5112563c7. - Add de_LI.UTF-8 locale. - Make ldconfig and sln the same binary. (#1315476) * Fri Jul 08 2016 Mike FABIAN - 2.23.90-27 - Unicode 9.0.0 updates (ctype, charmap, transliteration) (#1351108) * Tue Jul 05 2016 Florian Weimer - 2.23.90-26 - Auto-sync with upstream master, up to commit 30e4cc5413f72c2c728a544389da0c48500d9904, fixing these bug: - strcasecmp failure on ppc64le (#nscd breaks initgroups with nis (initgroups are empty) (#1294574) * Fri Jun 24 2016 Carlos O'Donell - 2.23.90-25 - Properly handle more invalid --install-langs arguments (#1349906). * Tue Jun 21 2016 Florian Weimer - 2.23.90-24 - Auto-sync with upstream master, commit a3b473373ee43a292f5ec68a7fda6b9cfb26a9b0, fixing these bugs: - Unnecessary mmap fallback in malloc (#1348620) - pwritev system call passes incorrect offset to kernel (#1346070) * Sat Jun 18 2016 Carlos O'Donell - 2.23.90-23 - Use scriptlet expansion in all-langpacks posttrans script to expand _install_langes macro. * Mon Jun 13 2016 Florian Weimer - 2.23.90-22 - Remove glibc-fedora-uname-getrlimit.patch. This patch was introduced to fix bug rhbz#579086 (Preloading a replacement uname is causing environment to be cleaned if libpthread is loaded). UTS namespaces should now offer a cleaner way yo do this. - Drop sendmmsg/recvmmsg compat symbols on 32-bit architectures (#1344830) * Sat Jun 11 2016 Florian Weimer - 2.23.90-21 - First phase of sendmsg/recvmsg/sendmmsg/recvmmsg ABI revert: GLIBC_2.24 compatibility symbols (#1344830) - Auto-sync with upstream master (commit 31d0a4fa646db8b8c97ce24e0ec0a7b73de4fca1), fixing the following bugs: - Add eo locale - Crash in the nss_db NSS service module during iteration (#1344480) * Thu Jun 09 2016 Florian Weimer - 2.23.90-20 - Auto-sync with upstream master, fixing this bug: - Emacs crashes on startup (#1342976) * Wed Jun 01 2016 Florian Weimer - 2.23.90-19 - Auto-sync with upstream master. - Adjust glibc-rh1315108.patch accordingly. - Fix fork redirection in libpthread (#1326903) - CVE-2016-4429: stack overflow in Sun RPC clntudp_call (#1337140) - Do not disable assertions in release builds (#1338887) * Wed May 11 2016 Carlos O'Donell - 2.23.90-18 - Move support for building GCC 2.96 into compat-gcc-296. * Wed May 11 2016 Florian Weimer - 2.23.90-17 - Temporily revert dlsym (RTLD_NEXT)/dlerror change, to unbreak ASAN until it is fixed (#1335011) * Mon May 9 2016 Florian Weimer - 2.23.90-16 - Drop the “fix” for fork/vfork NULL symbols in libpthread. It does not work because ld.so apparently supports some variant of direct binding. * Mon May 09 2016 Florian Weimer - 2.23.90-15 - Auto-sync with upstream master. - Drop glibc-nsswitch-Add-group-merging-support.patch, applied upstream. - Drop glibc-rh1252570.patch, alternative fixes applied upstream. - Adjust glibc-rh1315108.patch to minor upstream change. - Update SUPPORTED file. - Experimental fix for NULL fork/vfork symbols in libpthread (#1326903) * Tue May 03 2016 Carlos O'Donell - 2.23.90-14 - Require libselinux for nscd in non-bootstrap configuration. * Fri Apr 29 2016 Carlos O'Donell - 2.23.90-13 - Auto-sync with upstream master. * Thu Apr 28 2016 Carlos O'Donell - 2.23.90-12 - Move spec file system information logging to the build stage. * Thu Apr 14 2016 Florian Weimer - 2.23.90-11 - Auto-sync with upstream master. - Unbreak pread/pread64 on armhfp (#1327277) * Thu Apr 14 2016 Florian Weimer - 2.23.90-10 - Auto-sync with upstream master. * Thu Apr 14 2016 Florian Weimer - 2.23.90-9 - Auto-sync with upstream master. Removes type union wait. - Update SUPPORTED locales file. * Fri Apr 08 2016 Florian Weimer - 2.23.90-8 - Auto-sync with upstream master. * Tue Mar 29 2016 Florian Weimer - 2.23.90-7 - Auto-sync with upstream master. - Adjust glibc-rh1252570.patch to partial upstream fix. - Drop glibc-fix-an_ES.patch, now included upstream. * Wed Mar 16 2016 Carlos O'Donell - 2.23.90-6 - Use 'an' as language abbreviation for an_ES. * Mon Mar 07 2016 Carlos O'Donell - 2.23.90-5 - Auto-sync with upstream master. * Sun Mar 6 2016 Florian Weimer - 2.23.90-4 - Remove extend_alloca (#1315108) * Mon Feb 29 2016 Carlos O'Donell - 2.23.90-3 - Enhance support for upgrading from a non-language-pack system. * Fri Feb 26 2016 Mike FABIAN - 2.23.90-2 - Create new language packages for all supported languages. Locales, translations, and locale sources are split into distinct sub-packages. A meta-package is created for users to install all languages. Transparent installation support is provided via dnf langpacks. * Fri Feb 26 2016 Carlos O'Donell - 2.23.90-1 - Upstream development version is now 2.23.90. * Thu Feb 25 2016 Carlos O'Donell - 2.22.90-38 - Auto-sync with upstream master. * Fri Feb 19 2016 Florian Weimer - 2.22.90-37 - Remove stray newline from Serbian locales (#1114591). * Tue Feb 16 2016 CArlos O'Donell - 2.22.90-36 - Fix CVE-2015-7547: getaddrinfo() stack-based buffer overflow (#1308943). * Mon Feb 15 2016 Florian Weimer - 2.22.90-35 - Revert may_alias attribute for struct sockaddr (#1306511). - Revert upstream commit 2212c1420c92a33b0e0bd9a34938c9814a56c0f7 (#1252570). * Sat Feb 13 2016 Florian Weimer - 2.22.90-34 - Auto-sync with upstream master. - Support aliasing with struct sockaddr pointers (#1306511). * Tue Feb 09 2016 Carlos O'Donell - 2.22.90-33 - Use --with-cpu=power8 for ppc64le default runtime (#1227361). * Tue Feb 02 2016 Florian Weimer - 2.22.90-32 - Auto-sync with upstream master. - Add glibc-isinf-cxx11.patch to improve C++11 compatibility. * Thu Jan 28 2016 Florian Weimer - 2.22.90-31 - Add workaround for GCC PR69537. * Thu Jan 28 2016 Florian Weimer - 2.22.90-30 - Auto-sync with upstream master. * Wed Jan 13 2016 Carlos O'Donell - 2.22.90-29 - New pthread_barrier algorithm with improved standards compliance. * Wed Jan 13 2016 Carlos O'Donell - 2.22.90-28 - Add group merging support for distributed management (#1146822). * Tue Jan 12 2016 Carlos O'Donell - 2.22.90-27 - Remove 32-bit POWER support. - Add 64-bit POWER7 BE and 64-bit POWER8 BE optimized libraries. * Mon Dec 21 2015 Florian Weimer - 2.22.90-26 - Auto-sync with upstream master. * Wed Dec 16 2015 Florian Weimer - 2.22.90-25 - Auto-sync with upstream master. - Includes fix for malloc assertion failure in get_free_list. (#1281714) - Drop Unicode 8.0 patches (now merged upstream). * Sat Dec 5 2015 Florian Weimer - 2.22.90-24 - Put libmvec_nonshared.a into the -devel package. (#1288738) * Sat Dec 05 2015 Florian Weimer - 2.22.90-23 - Auto-sync with upstream master. * Thu Nov 26 2015 Carlos O'Donell - 2.22.90-22 - The generic hidden directive support is already used for preinit/init/fini-array symbols so we drop the Fedora-specific patch that does the same thing. Reported by Dmitry V. Levin * Thu Nov 26 2015 DJ Delorie - 2.22.90-22 - Require glibc-static for C++ tests. - Require gcc-c++, libstdc++-static, and glibc-static only when needed. - Fix --without docs to not leave info files. * Fri Nov 20 2015 Florian Weimer - 2.22.90-21 - Auto-sync with upstream master. * Wed Nov 18 2015 Florian Weimer - 2.22.90-20 - Auto-sync with upstream master. * Wed Nov 18 2015 Florian Weimer - 2.22.90-19 - Disable -Werror on s390 (#1283184). * Mon Nov 16 2015 Florian Weimer - 2.22.90-18 - Auto-sync with upstream master. * Mon Nov 16 2015 Florian Weimer - 2.22.90-17 - Revert temporary armhfp build fix. * Mon Nov 9 2015 Florian Weimer - 2.22.90-16 - Apply temporary fix for armhfp build issue. * Mon Nov 09 2015 Florian Weimer - 2.22.90-15 - Auto-sync with upstream master. * Tue Nov 3 2015 Florian Weimer - 2.22.90-14 - Log uname, cpuinfo, meminfo during build (#1276636) * Fri Oct 30 2015 Florian Weimer - 2.22.90-13 - Auto-sync with upstream master. * Fri Oct 30 2015 Florian Weimer - 2.22.90-12 - Revert to upstream implementation of condition variables (#1229659) * Wed Oct 28 2015 Florian Weimer - 2.22.90-11 - Disable valgrind test on ppc64p7, too. * Mon Oct 26 2015 Carlos O'Donell - 2.22.90-10 - Disable valgrind test for ppc64. * Wed Oct 21 2015 Carlos O'Donell - 2.22.90-9 - Sync with upstream master. - Update new condvar implementation. * Fri Oct 9 2015 Carlos O'Donell - 2.22.90-8 - Remove libbsd.a (#1193168). * Wed Sep 16 2015 Mike FABIAN - 2.22.90-7 - Add the C.UTF-8 locale (#902094). * Wed Sep 16 2015 Carlos O'Donell - 2.22.90-6 - Fix GCC 5 and -Werror related build failures. - Fix --install-langs bug which causes SIGABRT (#1262040). * Fri Aug 28 2015 Carlos O'Donell - 2.22.90-5 - Auto-sync with upstream master. * Thu Aug 27 2015 Carlos O'Donell - 2.22.90-4 - Build require gcc-c++ for the C++ tests. - Support --without testsuite option to disable testing after build. - Support --without benchtests option to disable microbenchmarks. - Update --with bootstrap to disable benchtests, valgrind, documentation, selinux, and nss-crypt during bootstrap. - Support --without werror to disable building with -Werror. - Support --without docs to disable build requirement on texinfo. - Support --without valgrind to disable testing with valgrind. - Remove c_stubs add-on and enable fuller support for static binaries. - Remove librtkaio support (#1227855). * Sun Aug 16 2015 Siddhesh Poyarekar - 2.22.90-3 - Auto-sync with upstream master. * Fri Aug 14 2015 Siddhesh Poyarekar - 2.22.90-2 - Remove initgroups from the default nsswitch.conf (#751450). * Fri Aug 14 2015 Siddhesh Poyarekar - 2.22.90-1 - Sync with upstream master. * Tue Jul 28 2015 Siddhesh Poyarekar - 2.21.90-20 - Sync with upstream master. * Thu Jul 23 2015 Mike FABIAN - 2.21.90-19 - some more additions to the translit_neutral file by Marko Myllynen * Tue Jul 14 2015 Mike FABIAN - 2.21.90-18 - Unicode 8.0.0 updates, including the transliteration files (#1238412). * Sun Jun 21 2015 Carlos O'Donell - 2.21.90-17 - Remove all linuxthreads handling from glibc spec file. * Wed Jun 17 2015 Carlos O'Donell - 2.21.90-16 - Move split out architecture-dependent header files into devel package and keep generic variant in headers package, thus keeping headers package content and file list identical across multilib rpms. * Wed Jun 17 2015 Fedora Release Engineering - 2.21.90-15.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Wed Jun 3 2015 Carlos O'Donell - 2.21.90-15 - Remove patch to increase DTV surplus which is no longer needed after upstream commit f8aeae347377f3dfa8cbadde057adf1827fb1d44. * Sat May 30 2015 Siddhesh Poyarekar - 2.21.90-14 - Fix build failure on aarch64 (#1226459). * Mon May 18 2015 Siddhesh Poyarekar - 2.21.90-13 - Sync with upstream master. - Install new condvar implementation. * Fri May 08 2015 Siddhesh Poyarekar - 2.21.90-12 - Add benchmark comparison scripts. * Thu May 07 2015 Siddhesh Poyarekar - 2.21.90-11 - Auto-sync with upstream master. - Revert arena threshold fix to work around #1209451. * Tue Apr 07 2015 Siddhesh Poyarekar - 2.21.90-10 - Revert last auto-sync (#1209451). * Mon Apr 06 2015 Siddhesh Poyarekar - 2.21.90-9 - Auto-sync with upstream master. * Tue Mar 24 2015 Siddhesh Poyarekar - 2.21.90-8 - Auto-sync with upstream master. * Tue Mar 17 2015 Carlos O'Donell - 2.21.90-7 - Use rpm.expand in scripts to reduce set of required RPM features. * Thu Mar 12 2015 Siddhesh Poyarekar - 2.21.90-6 - Auto-sync with upstream master. * Tue Mar 3 2015 Mike Fabian - 2.21.90-5 - Support installing only those locales specified by the RPM macro %%_install_langs (#156477). * Mon Feb 23 2015 Siddhesh Poyarekar - 2.21.90-4 - Auto-sync with upstream master. * Sat Feb 21 2015 Till Maas - 2.21.90-3.1 - Rebuilt for Fedora 23 Change https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code * Thu Feb 12 2015 Carlos O'Donell - 2.21.90-3 - Fix missing clock_* IFUNCs in librtkaio. * Thu Feb 12 2015 Carlos O'Donell - 2.21.90-2 - Auto-sync with upstream master. * Wed Feb 11 2015 Carlos O'Donell - 2.21.90-1 - Add back x86 vDSO support. - Fix rtkaio build to reference clock_* functions from libc. * Wed Jan 21 2015 Siddhesh Poyarekar - 2.20.90-20 - Sync with upstream master. - Disable werror on s390x. - Revert x86 vDSO support since it breaks i686 rtkaio build. * Tue Jan 20 2015 Peter Robinson 2.20.90-19 - Drop large ancient ChangeLogs (rhbz #1169546) * Mon Jan 12 2015 Siddhesh Poyarekar - 2.20.90-18 - Pass address of main_arena.mutex to mutex_lock/unlock. * Thu Jan 08 2015 Siddhesh Poyarekar - 2.20.90-17 - Define a __tls_get_addr macro to avoid a conflicting declaration. * Wed Jan 07 2015 Siddhesh Poyarekar - 2.20.90-16 - Disable -Werror for s390 as well. * Wed Jan 07 2015 Siddhesh Poyarekar - 2.20.90-14 - Sync with upstream master. - Disable -Werror on powerpc and armv7hl. - Temporarily disable valgrind test on ppc64. * Sun Dec 28 2014 Dan Horák - valgrind available only on selected arches (missing on s390) * Wed Dec 10 2014 Kyle McMartin - aarch64: Drop strchrnul.S revert, apply fix from Richard Earnshaw. * Fri Dec 05 2014 Carlos O'Donell - 2.20.90-13 - Fix permission of debuginfo source files to allow multiarch debuginfo packages to be installed and upgraded. * Fri Dec 05 2014 Siddhesh Poyarekar - 2.20.90-12 - Remove LIB_LANG since we don't install locales in /usr/lib/locale anymore. - Don't own any directories in /usr/share/locale (#1167445). - Use the %%find_lang macro to get the *.mo files (#1167445). - Add %%lang tags to language locale files in /usr/share/i18n/locale (#1169044). * Wed Dec 03 2014 Kyle McMartin - 2.20.90-11 - aarch64: revert optimized strchrnul.S implementation (rhbz#1167501) until it can be debugged. * Fri Nov 28 2014 Carlos O'Donell - 2.20.90-10 - Auto-sync with upstream master. * Wed Nov 19 2014 Carlos O'Donell - 2.20.90-9 - Sync with upstream master. * Wed Nov 05 2014 Siddhesh Poyarekar - 2.20.90-8 - Make getconf return only /usr/bin (#1138835). - Sync with upstream master. * Tue Nov 04 2014 Arjun Shankar - 2.20.90-7 - Add patch that modifies several tests to use test-skeleton.c. The patch is accepted but not yet committed upstream. https://sourceware.org/ml/libc-alpha/2014-10/msg00744.html * Tue Sep 30 2014 Siddhesh Poyarekar - 2.20.90-6 - Sync with upstream master. - Disable more Intel TSX usage in rwlocks (#1146967). - Enable lock elision again on s390 and s390x. - Enable Systemtap SDT probes for all architectures (#985109). * Fri Sep 26 2014 Carlos O'Donell - 2.20.90-5 - Disable lock elision support for Intel hardware until microcode updates can be done in early bootup (#1146967). - Fix building test tst-strtod-round for ARM. * Tue Sep 23 2014 Siddhesh Poyarekar - 2.20.90-4 - Sync with upstream master. - Don't own the common debuginfo directories (#1144853). - Run valgrind in the %%check section to ensure that it does not break. * Tue Sep 16 2014 Siddhesh Poyarekar - 2.20.90-3 - Sync with upstream master. - Revert patch for #737223. * Mon Sep 08 2014 Siddhesh Poyarekar - 2.20.90-2 - Build build-locale-archive statically again. * Mon Sep 08 2014 Siddhesh Poyarekar - 2.20.90-1 - Sync with upstream master. * Thu Sep 4 2014 Carlos O'Donell - 2.19.90-36 - Allow up to 32 dlopened modules to use static TLS (#1124987). - Run glibc tests in %%check section of RPM spec file. - Do not run tests with `-k` and fail if any test fails to build. * Tue Aug 26 2014 Siddhesh Poyarekar - 2.19.90-35 - Sync with upstream master. - Use INTERNAL_SYSCALL in TLS_INIT_TP (#1133134). - Remove gconv loadable module transliteration support (CVE-2014-5119, #1119128). * Fri Aug 22 2014 Dennis Gilmore - 2.19.90-34 - add back sss to nsswitch.conf we have added workarounds in the tools * Thu Aug 21 2014 Kevin Fenzi - 2.19.90-33.1 - Rebuild for rpm bug 1131960 * Tue Aug 19 2014 Dennis Gilmore - 2.19.90-33 - remove sss from default nsswitch.conf it causes issues with live image composing * Wed Aug 13 2014 Siddhesh Poyarekar - 2.19.90-32 - Auto-sync with upstream master. - Revert to only defining __extern_always_inline for g++-4.3+. - Fix build failure in compat-gcc-32 (#186410). * Mon Jul 28 2014 Siddhesh Poyarekar - 2.19.90-31 - Auto-sync with upstream master. * Wed Jul 23 2014 Siddhesh Poyarekar - 2.19.90-30 - Undo last master sync to fix up rawhide. * Tue Jul 15 2014 Siddhesh Poyarekar - 2.19.90-29 - Auto-sync with upstream master. * Sat Jul 12 2014 Tom Callaway - 2.19.90-28 - fix license handling * Mon Jul 07 2014 Siddhesh Poyarekar - 2.19.90-27 - Auto-sync with upstream master. * Fri Jul 04 2014 Siddhesh Poyarekar - 2.19.90-26 - Sync with upstream roland/nptl branch. - Improve testsuite failure outputs in build.log * Thu Jul 03 2014 Siddhesh Poyarekar - 2.19.90-25 - Sync with upstream roland/nptl branch. * Wed Jul 02 2014 Siddhesh Poyarekar - 2.19.90-24 - Sync with upstream master. * Tue Jun 24 2014 Siddhesh Poyarekar - 2.19.90-23 - Sync with upstream master. - Add fix to unbreak i386 ABI breakage due to a change in scalbn. * Fri Jun 20 2014 Kyle McMartin - 2.19.90-22 - AArch64: Save & restore NZCV (flags) upon entry to _dl_tlsdesc_dynamic in order to work around GCC reordering compares across the TLS descriptor sequence (GCC PR61545.) Committing a (temporary) fix here allows us to avoid rebuilding the world with gcc 4.9.0-11.fc21. * Mon Jun 16 2014 Kyle McMartin - 2.19.90-21 - Auto-sync with upstream master. * Thu Jun 12 2014 Siddhesh Poyarekar - 2.19.90-20 - Auto-sync with upstream master. * Sat Jun 07 2014 Fedora Release Engineering - 2.19.90-19.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild * Tue Jun 03 2014 Siddhesh Poyarekar - 2.19.90-19 - Sync with upstream master. * Mon May 26 2014 Siddhesh Poyarekar - 2.19.90-18 - Sync with upstream master. - Adjust rtkaio patches to build with upstream master. * Wed May 21 2014 Kyle McMartin - 2.19.90-17 - Backport some upstream-wards patches to fix TLS issues on AArch64. * Wed May 21 2014 Kyle McMartin - 2.19.90-16 - AArch64: Fix handling of nocancel syscall failures (#1098327) * Thu May 15 2014 Siddhesh Poyarekar - 2.19.90-15 - Sync with upstream master. * Wed May 14 2014 Carlos O'Donell - 2.19.90-14 - Add support for displaying all test results in build logs. * Wed May 14 2014 Carlos O'Donell - 2.19.90-13 - Add initial support for ppc64le. * Tue Apr 29 2014 Siddhesh Poyarekar - 2.19.90-12 - Auto-sync with upstream master. - Remove ports addon. * Fri Apr 18 2014 Siddhesh Poyarekar - 2.19.90-11 - Sync with upstream master. * Thu Apr 10 2014 Siddhesh Poyarekar - 2.19.90-10 - Sync with upstream master. * Thu Apr 03 2014 Siddhesh Poyarekar - 2.19.90-9 - Sync with upstream master. * Wed Mar 26 2014 Siddhesh Poyarekar - 2.19.90-8 - Sync with upstream master. * Wed Mar 19 2014 Siddhesh Poyarekar - 2.19.90-7 - Sync with upstream master. - Fix offset computation for append+ mode on switching from read (#1078355). * Wed Mar 12 2014 Carlos O'Donell - 2.19.90-6 - Sync with upstream master. - Use cleaner upstream solution for -ftree-loop-distribute-patterns (#911307). * Tue Mar 04 2014 Siddhesh Poyarekar - 2.19.90-5 - Sync with upstream master. * Thu Feb 27 2014 Siddhesh Poyarekar - 2.19.90-4 - Use nscd service files from glibc sources. - Make nscd service forking in systemd service file. * Tue Feb 25 2014 Siddhesh Poyarekar - 2.19.90-3 - Sync with upstream master. - Separate ftell from fseek logic and avoid modifying FILE data (#1069559). * Mon Feb 24 2014 Carlos O'Donell - 2.19.90-2 - Fix build-locale-archive failure to open default template. * Tue Feb 18 2014 Siddhesh Poyarekar - 2.19.90-1 - Sync with upstream master. * Tue Feb 04 2014 Siddhesh Poyarekar - 2.18.90-27 - Sync with upstream master. * Wed Jan 29 2014 Siddhesh Poyarekar - 2.18.90-26 - Modify regular expressions to include powerpcle stubs-*.h (#1058258). * Wed Jan 29 2014 Siddhesh Poyarekar - 2.18.90-25 - Sync with upstream master. * Sat Jan 25 2014 Ville Skyttä - 2.18.90-24 - Own the %%{_prefix}/lib/locale dir. * Thu Jan 23 2014 Siddhesh Poyarekar - 2.18.90-23 - Sync with upstream master. * Thu Jan 16 2014 Siddhesh Poyarekar - 2.18.90-22 - Back out ftell test case (#1052846). * Tue Jan 14 2014 Siddhesh Poyarekar - 2.18.90-21 - Sync with upstream master. - Fix infinite loop in ftell when writing wide char data (#1052846). * Tue Jan 7 2014 Siddhesh Poyarekar - 2.18.90-20 - Sync with upstream master. - Enable systemtap probes on Power and S/390.