From 7f47f9fa899a90f98c9655994f6ea161d181d75a Mon Sep 17 00:00:00 2001 From: Juan RP Date: Wed, 12 Oct 2011 14:10:16 +0200 Subject: [PATCH] glibc: update to 2.14.1. --- srcpkgs/glibc/files/libc-locales | 27 ++++ srcpkgs/glibc/glibc-devel.template | 1 - srcpkgs/glibc/glibc-locales.INSTALL | 39 ++++++ srcpkgs/glibc/glibc-locales.template | 8 +- srcpkgs/glibc/nscd.template | 2 - .../patches/glibc-2.14-libdl-crash.patch | 132 ------------------ .../patches/glibc-2.14-revert-4462fad3.patch | 36 ----- srcpkgs/glibc/template | 17 ++- 8 files changed, 84 insertions(+), 178 deletions(-) create mode 100644 srcpkgs/glibc/files/libc-locales create mode 100644 srcpkgs/glibc/glibc-locales.INSTALL delete mode 100644 srcpkgs/glibc/patches/glibc-2.14-libdl-crash.patch delete mode 100644 srcpkgs/glibc/patches/glibc-2.14-revert-4462fad3.patch diff --git a/srcpkgs/glibc/files/libc-locales b/srcpkgs/glibc/files/libc-locales new file mode 100644 index 00000000000..934f2d3b088 --- /dev/null +++ b/srcpkgs/glibc/files/libc-locales @@ -0,0 +1,27 @@ +# +# List of GNU libc locales regenerated by the glibc-locales package. +# All libc locales are available in /usr/share/i18n/locales. +# +# If you add new locales you can regenerate them with: +# ``xbps-bin -f reconfigure glibc-locales´´ +# +# By default we enable de, fr, it, en (US and GB) and es locales +# for ISO-8859-1[5] and UTF-8. +# +en_US ISO-8859-1 +en_US.UTF-8 UTF-8 +en_GB ISO-8859-1 +en_GB.UTF-8 UTF-8 +de_DE ISO-8859-1 +de_DE@euro ISO-8859-15 +de_DE.UTF-8 UTF-8 +it_IT ISO-8859-1 +it_IT@euro ISO-8859-15 +it_IT.UTF-8 UTF-8 +fr_FR ISO-8859-1 +fr_FR@euro ISO-8859-15 +fr_FR.UTF-8 UTF-8 +es_ES ISO-8859-1 +es_ES@euro ISO-8859-15 +es_ES.UTF-8 UTF-8 + diff --git a/srcpkgs/glibc/glibc-devel.template b/srcpkgs/glibc/glibc-devel.template index f3ac7bb27c4..5ec9156823a 100644 --- a/srcpkgs/glibc/glibc-devel.template +++ b/srcpkgs/glibc/glibc-devel.template @@ -5,7 +5,6 @@ long_desc="${long_desc} This package contains files for development: headers, static libs, etc." -revision=2 Add_dependency run kernel-libc-headers Add_dependency run glibc diff --git a/srcpkgs/glibc/glibc-locales.INSTALL b/srcpkgs/glibc/glibc-locales.INSTALL new file mode 100644 index 00000000000..44dce6c1afe --- /dev/null +++ b/srcpkgs/glibc/glibc-locales.INSTALL @@ -0,0 +1,39 @@ +# Rebuild locales set in /etc/default/libc-locales. +# +case "${ACTION}" in +post) + LOCALE_ARCHIVEDIR=usr/lib/locale + LOCALE_ARCHIVE=${LOCALE_ARCHIVEDIR}/locale-archive + LOCALES_CONF=etc/default/libc-locales + LOCALES=usr/share/i18n/locales + LOCALE_ALIAS=usr/share/locale/locale.alias + + [ -n "$POSIXLY_CORRECT" ] && unset POSIXLY_CORRECT + [ -f $LOCALE_ARCHIVE ] && rm -f $LOCALE_ARCHIVE + [ ! -d $LOCALE_ARCHIVEDIR ] && mkdir -p $LOCALE_ARCHIVEDIR + + echo "Generating GNU libc locales..." + while read locale charset; do + case $locale in + \#*) continue;; + "") continue;; + esac + if [ -n "$locale" -a -n "$charset" ]; then + echo -n " $(echo $locale | sed 's/\([^.\@]*\).*/\1/')" + echo -n ".$charset" + echo -n $(echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/') + echo -n '...' + if [ -f $LOCALES/$locale ]; then + input=$locale + else + input=$(echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/') + fi + localedef --prefix=. \ + -i $input -c -f $charset -A $LOCALE_ALIAS $locale + echo ' done.' + else + echo "Ignoring wrong locale: $locale $charset..." + fi + done < $LOCALES_CONF + ;; +esac diff --git a/srcpkgs/glibc/glibc-locales.template b/srcpkgs/glibc/glibc-locales.template index 276cd342675..dd26d76e165 100644 --- a/srcpkgs/glibc/glibc-locales.template +++ b/srcpkgs/glibc/glibc-locales.template @@ -5,11 +5,13 @@ long_desc="${long_desc} This package contains the ${sourcepkg} locale files, for non US users." +conf_files="/etc/default/libc-locales" noarch=yes do_install() { - mkdir -p ${DESTDIR}/usr/share - mv ${SRCPKGDESTDIR}/usr/share/i18n ${DESTDIR}/usr/share - mv ${SRCPKGDESTDIR}/usr/share/locale ${DESTDIR}/usr/share + #vinstall ${FILESDIR}/localegen.sh 755 usr/sbin localegen + vmove etc/default etc + vmove usr/share/i18n usr/share + vmove usr/share/locale usr/share } diff --git a/srcpkgs/glibc/nscd.template b/srcpkgs/glibc/nscd.template index 35da5c29d5e..fb36de7c12c 100644 --- a/srcpkgs/glibc/nscd.template +++ b/srcpkgs/glibc/nscd.template @@ -5,8 +5,6 @@ long_desc=" This package contains nscd, a daemon that provides a cache for the most common name service requests." -revision=1 - systemd_services="nscd.service" conf_files="/etc/nscd.conf" diff --git a/srcpkgs/glibc/patches/glibc-2.14-libdl-crash.patch b/srcpkgs/glibc/patches/glibc-2.14-libdl-crash.patch deleted file mode 100644 index 64c29728335..00000000000 --- a/srcpkgs/glibc/patches/glibc-2.14-libdl-crash.patch +++ /dev/null @@ -1,132 +0,0 @@ -diff --git a/elf/dl-close.c b/elf/dl-close.c -index 73b2a2f..9bd91e3 100644 ---- elf/dl-close.c -+++ elf/dl-close.c -@@ -1,5 +1,5 @@ - /* Close a shared object opened by `_dl_open'. -- Copyright (C) 1996-2007, 2009, 2010, 2011 Free Software Foundation, Inc. -+ Copyright (C) 1996-2007, 2009, 2010 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -119,17 +119,8 @@ _dl_close_worker (struct link_map *map) - if (map->l_direct_opencount > 0 || map->l_type != lt_loaded - || dl_close_state != not_pending) - { -- if (map->l_direct_opencount == 0) -- { -- if (map->l_type == lt_loaded) -- dl_close_state = rerun; -- else if (map->l_type == lt_library) -- { -- struct link_map **oldp = map->l_initfini; -- map->l_initfini = map->l_orig_initfini; -- _dl_scope_free (oldp); -- } -- } -+ if (map->l_direct_opencount == 0 && map->l_type == lt_loaded) -+ dl_close_state = rerun; - - /* There are still references to this object. Do nothing more. */ - if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0)) -diff --git a/elf/dl-deps.c b/elf/dl-deps.c -index 9e30594..3890d00 100644 ---- elf/dl-deps.c -+++ elf/dl-deps.c -@@ -478,6 +478,7 @@ _dl_map_object_deps (struct link_map *map, - nneeded * sizeof needed[0]); - atomic_write_barrier (); - l->l_initfini = l_initfini; -+ l->l_free_initfini = 1; - } - - /* If we have no auxiliary objects just go on to the next map. */ -@@ -681,6 +682,7 @@ Filters not supported with LD_TRACE_PRELINKING")); - l_initfini[nlist] = NULL; - atomic_write_barrier (); - map->l_initfini = l_initfini; -+ map->l_free_initfini = 1; - if (l_reldeps != NULL) - { - atomic_write_barrier (); -@@ -689,5 +691,5 @@ Filters not supported with LD_TRACE_PRELINKING")); - _dl_scope_free (old_l_reldeps); - } - if (old_l_initfini != NULL) -- map->l_orig_initfini = old_l_initfini; -+ _dl_scope_free (old_l_initfini); - } -diff --git a/elf/dl-libc.c b/elf/dl-libc.c -index 7be9483..a13fce3 100644 ---- elf/dl-libc.c -+++ elf/dl-libc.c -@@ -265,13 +265,13 @@ libc_freeres_fn (free_mem) - - for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns) - { -- /* Remove all additional names added to the objects. */ - for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next) - { - struct libname_list *lnp = l->l_libname->next; - - l->l_libname->next = NULL; - -+ /* Remove all additional names added to the objects. */ - while (lnp != NULL) - { - struct libname_list *old = lnp; -@@ -279,6 +279,10 @@ libc_freeres_fn (free_mem) - if (! old->dont_free) - free (old); - } -+ -+ /* Free the initfini dependency list. */ -+ if (l->l_free_initfini) -+ free (l->l_initfini); - } - - if (__builtin_expect (GL(dl_ns)[ns]._ns_global_scope_alloc, 0) != 0 -diff --git a/elf/rtld.c b/elf/rtld.c -index 4a9109e..617e30e 100644 ---- elf/rtld.c -+++ elf/rtld.c -@@ -2251,6 +2251,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", - lnp->dont_free = 1; - lnp = lnp->next; - } -+ l->l_free_initfini = 0; - - if (l != &GL(dl_rtld_map)) - _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0, -diff --git a/include/link.h b/include/link.h -index e877104..051b99a 100644 ---- include/link.h -+++ include/link.h -@@ -1,6 +1,6 @@ - /* Data structure for communication from the run-time dynamic linker for - loaded ELF shared objects. -- Copyright (C) 1995-2006, 2007, 2009, 2010, 2011 Free Software Foundation, Inc. -+ Copyright (C) 1995-2006, 2007, 2009, 2010 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -192,6 +192,9 @@ struct link_map - during LD_TRACE_PRELINKING=1 - contains any DT_SYMBOLIC - libraries. */ -+ unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be -+ freed, ie. not allocated with -+ the dummy malloc in ld.so. */ - - /* Collected information about own RPATH directories. */ - struct r_search_path_struct l_rpath_dirs; -@@ -240,9 +243,6 @@ struct link_map - - /* List of object in order of the init and fini calls. */ - struct link_map **l_initfini; -- /* The init and fini list generated at startup, saved when the -- object is also loaded dynamically. */ -- struct link_map **l_orig_initfini; - - /* List of the dependencies introduced through symbol binding. */ - struct link_map_reldeps diff --git a/srcpkgs/glibc/patches/glibc-2.14-revert-4462fad3.patch b/srcpkgs/glibc/patches/glibc-2.14-revert-4462fad3.patch deleted file mode 100644 index 54189da7962..00000000000 --- a/srcpkgs/glibc/patches/glibc-2.14-revert-4462fad3.patch +++ /dev/null @@ -1,36 +0,0 @@ ---- resolv/res_send.c 2011-06-10 18:59:03.041436996 +1000 -+++ resolv/res_send.c 2011-06-10 19:08:09.379309323 +1000 -@@ -549,7 +549,7 @@ - ns, ansp, ansp2, nansp2, resplen2); - if (n < 0) - return (-1); -- if (n == 0 && (buf2 == NULL || resplen2 == 0)) -+ if (n == 0) - goto next_ns; - } else { - /* Use datagrams. */ -@@ -559,7 +559,7 @@ - ansp2, nansp2, resplen2); - if (n < 0) - return (-1); -- if (n == 0 && (buf2 == NULL || resplen2 == 0)) -+ if (n == 0) - goto next_ns; - if (v_circuit) - // XXX Check whether both requests failed or -@@ -1275,14 +1275,10 @@ - (*thisresplenp > *thisanssizp) - ? *thisanssizp : *thisresplenp); - -- if (recvresp1 || (buf2 != NULL && recvresp2)) { -- *resplen2 = 0; -+ if (recvresp1 || (buf2 != NULL && recvresp2)) - return resplen; -- } - if (buf2 != NULL) - { -- /* No data from the first reply. */ -- resplen = 0; - /* We are waiting for a possible second reply. */ - if (hp->id == anhp->id) - recvresp1 = 1; diff --git a/srcpkgs/glibc/template b/srcpkgs/glibc/template index eb45db27c18..e258031793e 100644 --- a/srcpkgs/glibc/template +++ b/srcpkgs/glibc/template @@ -1,14 +1,13 @@ # Template file for 'glibc' pkgname=glibc -version=2.14 -revision=5 +version=2.14.1 distfiles="http://ftp.gnu.org/gnu/glibc/glibc-${version}.tar.bz2" build_style=custom-install short_desc="The GNU C library" maintainer="Juan RP " homepage="http://www.gnu.org/software/libc" license="GPL-2, LGPL-2.1, BSD" -checksum=8404b54651d42133d9a2ab17d30d698e53c5f250b2ad8e5f3d9a208ea7c75d6c +checksum=6e85a2fa3ebe6b28103361f09d27eeda37a021f24dab73f34064456d5a715b3b long_desc=" The GNU C Library is the standard system C library for all GNU systems, and is an important part of what makes up a GNU system. It provides the @@ -69,7 +68,17 @@ do_install() mkdir -p ${DESTDIR}/etc echo "include /etc/ld.so.conf.d/*.conf" > ${DESTDIR}/etc/ld.so.conf - cd ${wrksrc}/build && make SHELL=/bin/bash install_root=${DESTDIR} install + cd ${wrksrc}/build + make SHELL=/bin/bash install_root=${DESTDIR} install + + # create /etc/default/libc-locales + vinstall ${FILESDIR}/libc-locales 644 etc/default + cp ${wrksrc}/localedata/SUPPORTED ${wrksrc}/build + sed -i -e "s|/| |g" \ + -e 's|\\| |g' \ + -e "s|SUPPORTED-LOCALES=||" \ + -e "s|^|#|g" ${wrksrc}/build/SUPPORTED + cat ${wrksrc}/build/SUPPORTED >> ${DESTDIR}/etc/default/libc-locales # ldd is a bash script, so make it run as such. . $XBPS_HELPERSDIR/replace-interpreter.sh