]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
guix: remove redundant glibc patches
authortobtoht <tob@featherwallet.org>
Thu, 7 Sep 2023 08:15:52 +0000 (10:15 +0200)
committertobtoht <tob@featherwallet.org>
Mon, 2 Oct 2023 13:20:00 +0000 (15:20 +0200)
Based on Bitcoin PR #27670

contrib/guix/manifest.scm
contrib/guix/patches/glibc-ldd-x86_64.patch [deleted file]
contrib/guix/patches/glibc-versioned-locpath.patch [deleted file]

index 3d9318b8ee2fe529ba7182a5f262aad13b29d06d..90eb680fd4c6f92627eb7c0fbfad1a0df2b24dab 100644 (file)
@@ -254,9 +254,7 @@ chain for " target " development."))
               (sha256
                (base32
                 "0azpb9cvnbv25zg8019rqz48h8i2257ngyjg566dlnp74ivrs9vq"))
-              (patches (search-our-patches "glibc-ldd-x86_64.patch"
-                                           "glibc-versioned-locpath.patch"
-                                           "glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch"
+              (patches (search-our-patches "glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch"
                                            "glibc-2.27-fcommon.patch"
                                            "glibc-2.27-guix-prefix.patch"))))))
 
diff --git a/contrib/guix/patches/glibc-ldd-x86_64.patch b/contrib/guix/patches/glibc-ldd-x86_64.patch
deleted file mode 100644 (file)
index a23b095..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-By default, 'RTDLLIST' in 'ldd' refers to 'lib64/ld-linux-x86-64.so', whereas
-it's in 'lib/' for us.  This patch fixes that.
-
---- a/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
-+++ b/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
-@@ -1,3 +1,3 @@
- /LD_TRACE_LOADED_OBJECTS=1/a\
- add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out"
--s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[   ]*$_\1"\2\4\6 \264\4-x86-64\6 \2x32\4-x32\6"_
-+s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[   ]*$_\1"\2\4\6 \2\4-x86-64\6 \2x32\4-x32\6"_
diff --git a/contrib/guix/patches/glibc-versioned-locpath.patch b/contrib/guix/patches/glibc-versioned-locpath.patch
deleted file mode 100644 (file)
index bc76521..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-The format of locale data can be incompatible between libc versions, and
-loading incompatible data can lead to 'setlocale' returning EINVAL at best
-or triggering an assertion failure at worst.  See
-https://lists.gnu.org/archive/html/guix-devel/2015-09/msg00717.html
-for background information.
-
-To address that, this patch changes libc to honor a new 'GUIX_LOCPATH'
-variable, and to look for locale data in version-specific sub-directories of
-that variable.  So, if GUIX_LOCPATH=/foo:/bar, locale data is searched for in
-/foo/X.Y and /bar/X.Y, where X.Y is the libc version number.
-
-That way, a single 'GUIX_LOCPATH' setting can work even if different libc
-versions coexist on the system.
-
---- a/locale/newlocale.c
-+++ b/locale/newlocale.c
-@@ -30,6 +30,7 @@
- /* Lock for protecting global data.  */
- __libc_rwlock_define (extern , __libc_setlocale_lock attribute_hidden)
-+extern error_t compute_locale_search_path (char **, size_t *);
- /* Use this when we come along an error.  */
- #define ERROR_RETURN                                                        \
-@@ -48,7 +49,6 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
-   __locale_t result_ptr;
-   char *locale_path;
-   size_t locale_path_len;
--  const char *locpath_var;
-   int cnt;
-   size_t names_len;
-@@ -102,17 +102,8 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
-   locale_path = NULL;
-   locale_path_len = 0;
--  locpath_var = getenv ("LOCPATH");
--  if (locpath_var != NULL && locpath_var[0] != '\0')
--    {
--      if (__argz_create_sep (locpath_var, ':',
--                           &locale_path, &locale_path_len) != 0)
--      return NULL;
--
--      if (__argz_add_sep (&locale_path, &locale_path_len,
--                        _nl_default_locale_path, ':') != 0)
--      return NULL;
--    }
-+  if (compute_locale_search_path (&locale_path, &locale_path_len) != 0)
-+    return NULL;
-   /* Get the names for the locales we are interested in.  We either
-      allow a composite name or a single name.  */
-diff --git a/locale/setlocale.c b/locale/setlocale.c
-index ead030d..0c0e314 100644
---- a/locale/setlocale.c
-+++ b/locale/setlocale.c
-@@ -215,12 +215,65 @@ setdata (int category, struct __locale_data *data)
-     }
- }
-+/* Return in *LOCALE_PATH and *LOCALE_PATH_LEN the locale data search path as
-+   a colon-separated list.  Return ENOMEN on error, zero otherwise.  */
-+error_t
-+compute_locale_search_path (char **locale_path, size_t *locale_path_len)
-+{
-+  char* guix_locpath_var = getenv ("GUIX_LOCPATH");
-+  char *locpath_var = getenv ("LOCPATH");
-+
-+  if (guix_locpath_var != NULL && guix_locpath_var[0] != '\0')
-+    {
-+      /* Entries in 'GUIX_LOCPATH' take precedence over 'LOCPATH'.  These
-+       entries are systematically prefixed with "/X.Y" where "X.Y" is the
-+       libc version.  */
-+      if (__argz_create_sep (guix_locpath_var, ':',
-+                           locale_path, locale_path_len) != 0
-+        || __argz_suffix_entries (locale_path, locale_path_len,
-+                                  "/" VERSION) != 0)
-+      goto bail_out;
-+    }
-+
-+  if (locpath_var != NULL && locpath_var[0] != '\0')
-+    {
-+      char *reg_locale_path = NULL;
-+      size_t reg_locale_path_len = 0;
-+
-+      if (__argz_create_sep (locpath_var, ':',
-+                           &reg_locale_path, &reg_locale_path_len) != 0)
-+      goto bail_out;
-+
-+      if (__argz_append (locale_path, locale_path_len,
-+                       reg_locale_path, reg_locale_path_len) != 0)
-+      goto bail_out;
-+
-+      free (reg_locale_path);
-+    }
-+
-+  if (*locale_path != NULL)
-+    {
-+      /* Append the system default locale directory.  */
-+      if (__argz_add_sep (locale_path, locale_path_len,
-+                        _nl_default_locale_path, ':') != 0)
-+      goto bail_out;
-+    }
-+
-+  return 0;
-+
-+ bail_out:
-+  free (*locale_path);
-+  *locale_path = NULL;
-+  *locale_path_len = 0;
-+
-+  return ENOMEM;
-+}
-+
- char *
- setlocale (int category, const char *locale)
- {
-   char *locale_path;
-   size_t locale_path_len;
--  const char *locpath_var;
-   char *composite;
-   /* Sanity check for CATEGORY argument.  */
-@@ -251,17 +304,10 @@ setlocale (int category, const char *locale)
-   locale_path = NULL;
-   locale_path_len = 0;
--  locpath_var = getenv ("LOCPATH");
--  if (locpath_var != NULL && locpath_var[0] != '\0')
-+  if (compute_locale_search_path (&locale_path, &locale_path_len) != 0)
-     {
--      if (__argz_create_sep (locpath_var, ':',
--                           &locale_path, &locale_path_len) != 0
--        || __argz_add_sep (&locale_path, &locale_path_len,
--                           _nl_default_locale_path, ':') != 0)
--      {
--        __libc_rwlock_unlock (__libc_setlocale_lock);
--        return NULL;
--      }
-+      __libc_rwlock_unlock (__libc_setlocale_lock);
-+      return NULL;
-     }
-   if (category == LC_ALL)
-diff --git a/string/Makefile b/string/Makefile
-index 8424a61..f925503 100644
---- a/string/Makefile
-+++ b/string/Makefile
-@@ -38,7 +38,7 @@ routines     := strcat strchr strcmp strcoll strcpy strcspn          \
-                  swab strfry memfrob memmem rawmemchr strchrnul       \
-                  $(addprefix argz-,append count create ctsep next     \
-                                    delete extract insert stringify    \
--                                   addsep replace)                    \
-+                                   addsep replace suffix)             \
-                  envz basename                                        \
-                  strcoll_l strxfrm_l string-inlines memrchr           \
-                  xpg-strerror strerror_l
-diff --git a/string/argz-suffix.c b/string/argz-suffix.c
-new file mode 100644
-index 0000000..505b0f2
---- /dev/null
-+++ b/string/argz-suffix.c
-@@ -0,0 +1,56 @@
-+/* Copyright (C) 2015 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+   Contributed by Ludovic Courtès <ludo@gnu.org>.
-+
-+   The GNU C Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Lesser General Public
-+   License as published by the Free Software Foundation; either
-+   version 2.1 of the License, or (at your option) any later version.
-+
-+   The GNU C Library is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public
-+   License along with the GNU C Library; if not, see
-+   <http://www.gnu.org/licenses/>.  */
-+
-+#include <argz.h>
-+#include <errno.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+
-+error_t
-+__argz_suffix_entries (char **argz, size_t *argz_len, const char *suffix)
-+
-+{
-+  size_t suffix_len = strlen (suffix);
-+  size_t count = __argz_count (*argz, *argz_len);
-+  size_t new_argz_len = *argz_len + count * suffix_len;
-+  char *new_argz = malloc (new_argz_len);
-+
-+  if (new_argz)
-+    {
-+      char *p = new_argz, *entry;
-+
-+      for (entry = *argz;
-+         entry != NULL;
-+         entry = argz_next (*argz, *argz_len, entry))
-+      {
-+        p = stpcpy (p, entry);
-+        p = stpcpy (p, suffix);
-+        p++;
-+      }
-+
-+      free (*argz);
-+      *argz = new_argz;
-+      *argz_len = new_argz_len;
-+
-+      return 0;
-+    }
-+  else
-+    return ENOMEM;
-+}
-+weak_alias (__argz_suffix_entries, argz_suffix_entries)
-diff --git a/string/argz.h b/string/argz.h
-index bb62a31..d276a35 100644
---- a/string/argz.h
-+++ b/string/argz.h
-@@ -134,6 +134,16 @@ extern error_t argz_replace (char **__restrict __argz,
-                            const char *__restrict __str,
-                            const char *__restrict __with,
-                            unsigned int *__restrict __replace_count);
-+
-+/* Suffix each entry of ARGZ & ARGZ_LEN with SUFFIX.  Return 0 on success,
-+   and ENOMEN if memory cannot be allocated.  */
-+extern error_t __argz_suffix_entries (char **__restrict __argz,
-+                                    size_t *__restrict __argz_len,
-+                                    const char *__restrict __suffix);
-+extern error_t argz_suffix_entries (char **__restrict __argz,
-+                                  size_t *__restrict __argz_len,
-+                                  const char *__restrict __suffix);
-+
\f
- /* Returns the next entry in ARGZ & ARGZ_LEN after ENTRY, or NULL if there
-    are no more.  If entry is NULL, then the first entry is returned.  This