grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2 4/4] Update gnulib version and drop all gnulib patches


From: Robbie Harwood
Subject: [PATCH v2 4/4] Update gnulib version and drop all gnulib patches
Date: Wed, 26 Jan 2022 17:09:12 -0500

In addition to the changes carried in our gnulib patches, several
Coverity and code hygiene fixes that were previously downstream are also
included in this 3-year gnulib increment.

Bump minimum autoconf version from 2.63 to 2.64 as required by gnulib.

Sync bootstrap script itself with gnulib.

Update regexp module for new dynarray dependency.

Signed-off-by: Robbie Harwood <rharwood@redhat.com>
---
 bootstrap                                     | 297 ++++++++++--------
 bootstrap.conf                                |  13 +-
 conf/Makefile.extra-dist                      |   8 -
 config.h.in                                   |  17 +
 configure.ac                                  |   2 +-
 grub-core/Makefile.core.def                   |   1 +
 .../lib/gnulib-patches/fix-null-deref.patch   |  13 -
 .../gnulib-patches/fix-null-state-deref.patch |  12 -
 .../fix-regcomp-uninit-token.patch            |  15 -
 .../fix-regexec-null-deref.patch              |  12 -
 .../gnulib-patches/fix-uninit-structure.patch |  11 -
 .../lib/gnulib-patches/fix-unused-value.patch |  14 -
 grub-core/lib/gnulib-patches/fix-width.patch  | 217 -------------
 13 files changed, 188 insertions(+), 444 deletions(-)
 delete mode 100644 grub-core/lib/gnulib-patches/fix-null-deref.patch
 delete mode 100644 grub-core/lib/gnulib-patches/fix-null-state-deref.patch
 delete mode 100644 grub-core/lib/gnulib-patches/fix-regcomp-uninit-token.patch
 delete mode 100644 grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch
 delete mode 100644 grub-core/lib/gnulib-patches/fix-uninit-structure.patch
 delete mode 100644 grub-core/lib/gnulib-patches/fix-unused-value.patch
 delete mode 100644 grub-core/lib/gnulib-patches/fix-width.patch

diff --git a/bootstrap b/bootstrap
index 5b08e7e2d..63e76deeb 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Print a version string.
-scriptversion=2019-01-04.17; # UTC
+scriptversion=2021-04-11.09; # UTC
 
 # Bootstrap this package from checked-out sources.
 
-# Copyright (C) 2003-2019 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -47,7 +47,7 @@ PERL="${PERL-perl}"
 
 me=$0
 
-default_gnulib_url=git://git.sv.gnu.org/gnulib
+default_gnulib_url=https://git.savannah.gnu.org/git/gnulib.git
 
 usage() {
   cat <<EOF
@@ -71,7 +71,9 @@ Options:
  --no-git                 do not use git to update gnulib.  Requires that
                           --gnulib-srcdir point to a correct gnulib snapshot
  --skip-po                do not download po files
-
+EOF
+  bootstrap_print_option_usage_hook
+  cat <<EOF
 If the file $me.conf exists in the same directory as this script, its
 contents are read as shell variables to configure the bootstrap.
 
@@ -113,6 +115,12 @@ Running without arguments will suffice in most cases.
 EOF
 }
 
+copyright_year=`echo "$scriptversion" | sed -e 's/[^0-9].*//'`
+copyright="Copyright (C) ${copyright_year} Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law."
+
 # warnf_ FORMAT-STRING ARG1...
 warnf_ ()
 {
@@ -154,6 +162,18 @@ gnulib_files=
 : ${AUTOPOINT=autopoint}
 : ${AUTORECONF=autoreconf}
 
+# A function to be called for each unrecognized option.  Returns 0 if
+# the option in $1 has been processed by the function.  Returns 1 if
+# the option has not been processed by the function.  Override it via
+# your own definition in bootstrap.conf
+
+bootstrap_option_hook() { return 1; }
+
+# A function to be called in order to print the --help information
+# corresponding to user-defined command-line options.
+
+bootstrap_print_option_usage_hook() { :; }
+
 # A function to be called right after gnulib-tool is run.
 # Override it via your own definition in bootstrap.conf.
 bootstrap_post_import_hook() { :; }
@@ -166,11 +186,11 @@ bootstrap_epilogue() { :; }
 # specified directory.  Fill in the first %s with the destination
 # directory and the second with the domain name.
 po_download_command_format=\
-"wget --mirror --level=1 -nd -q -A.po -P '%s' \
+"wget --mirror --level=1 -nd -nv -A.po -P '%s' \
  https://translationproject.org/latest/%s/";
 
 # Prefer a non-empty tarname (4th argument of AC_INIT if given), else
-# fall back to the package name (1st argument with munging)
+# fall back to the package name (1st argument with munging).
 extract_package_name='
   /^AC_INIT(\[*/{
      s///
@@ -187,8 +207,11 @@ extract_package_name='
      p
   }
 '
-package=$(sed -n "$extract_package_name" configure.ac) \
-  || die 'cannot find package name in configure.ac'
+package=$(${AUTOCONF:-autoconf} --trace AC_INIT:\$4 configure.ac 2>/dev/null)
+if test -z "$package"; then
+  package=$(sed -n "$extract_package_name" configure.ac) \
+      || die 'cannot find package name in configure.ac'
+fi
 gnulib_name=lib$package
 
 build_aux=build-aux
@@ -290,62 +313,6 @@ find_tool ()
   eval "export $find_tool_envvar"
 }
 
-# Override the default configuration, if necessary.
-# Make sure that bootstrap.conf is sourced from the current directory
-# if we were invoked as "sh bootstrap".
-case "$0" in
-  */*) test -r "$0.conf" && . "$0.conf" ;;
-  *) test -r "$0.conf" && . ./"$0.conf" ;;
-esac
-
-if test "$vc_ignore" = auto; then
-  vc_ignore=
-  test -d .git && vc_ignore=.gitignore
-  test -d CVS && vc_ignore="$vc_ignore .cvsignore"
-fi
-
-if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then
-  use_gnulib=false
-else
-  use_gnulib=true
-fi
-
-# Translate configuration into internal form.
-
-# Parse options.
-
-for option
-do
-  case $option in
-  --help)
-    usage
-    exit;;
-  --gnulib-srcdir=*)
-    GNULIB_SRCDIR=${option#--gnulib-srcdir=};;
-  --skip-po)
-    SKIP_PO=t;;
-  --force)
-    checkout_only_file=;;
-  --copy)
-    copy=true;;
-  --bootstrap-sync)
-    bootstrap_sync=true;;
-  --no-bootstrap-sync)
-    bootstrap_sync=false;;
-  --no-git)
-    use_git=false;;
-  *)
-    die "$option: unknown option";;
-  esac
-done
-
-$use_git || test -d "$GNULIB_SRCDIR" \
-  || die "Error: --no-git requires --gnulib-srcdir"
-
-if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
-  die "Bootstrapping from a non-checked-out distribution is risky."
-fi
-
 # Strip blank and comment lines to leave significant entries.
 gitignore_entries() {
   sed '/^#/d; /^$/d' "$@"
@@ -387,6 +354,137 @@ insert_vc_ignore() {
   insert_if_absent "$vc_ignore_file" "$pattern"
 }
 
+symlink_to_dir()
+{
+  src=$1/$2
+  dst=${3-$2}
+
+  test -f "$src" && {
+
+    # If the destination directory doesn't exist, create it.
+    # This is required at least for "lib/uniwidth/cjk.h".
+    dst_dir=$(dirname "$dst")
+    if ! test -d "$dst_dir"; then
+      mkdir -p "$dst_dir"
+
+      # If we've just created a directory like lib/uniwidth,
+      # tell version control system(s) it's ignorable.
+      # FIXME: for now, this does only one level
+      parent=$(dirname "$dst_dir")
+      for dot_ig in x $vc_ignore; do
+        test $dot_ig = x && continue
+        ig=$parent/$dot_ig
+        insert_vc_ignore $ig "${dst_dir##*/}"
+      done
+    fi
+
+    if $copy; then
+      {
+        test ! -h "$dst" || {
+          echo "$me: rm -f $dst" &&
+          rm -f "$dst"
+        }
+      } &&
+      test -f "$dst" &&
+      cmp -s "$src" "$dst" || {
+        echo "$me: cp -fp $src $dst" &&
+        cp -fp "$src" "$dst"
+      }
+    else
+      # Leave any existing symlink alone, if it already points to the source,
+      # so that broken build tools that care about symlink times
+      # aren't confused into doing unnecessary builds.  Conversely, if the
+      # existing symlink's timestamp is older than the source, make it afresh,
+      # so that broken tools aren't confused into skipping needed builds.  See
+      # <https://lists.gnu.org/r/bug-gnulib/2011-05/msg00326.html>.
+      test -h "$dst" &&
+      src_ls=$(ls -diL "$src" 2>/dev/null) && set $src_ls && src_i=$1 &&
+      dst_ls=$(ls -diL "$dst" 2>/dev/null) && set $dst_ls && dst_i=$1 &&
+      test "$src_i" = "$dst_i" &&
+      both_ls=$(ls -dt "$src" "$dst") &&
+      test "X$both_ls" = "X$dst$nl$src" || {
+        dot_dots=
+        case $src in
+        /*) ;;
+        *)
+          case /$dst/ in
+          *//* | */../* | */./* | /*/*/*/*/*/)
+             die "invalid symlink calculation: $src -> $dst";;
+          /*/*/*/*/)    dot_dots=../../../;;
+          /*/*/*/)      dot_dots=../../;;
+          /*/*/)        dot_dots=../;;
+          esac;;
+        esac
+
+        echo "$me: ln -fs $dot_dots$src $dst" &&
+        ln -fs "$dot_dots$src" "$dst"
+      }
+    fi
+  }
+}
+
+# Override the default configuration, if necessary.
+# Make sure that bootstrap.conf is sourced from the current directory
+# if we were invoked as "sh bootstrap".
+case "$0" in
+  */*) test -r "$0.conf" && . "$0.conf" ;;
+  *) test -r "$0.conf" && . ./"$0.conf" ;;
+esac
+
+if test "$vc_ignore" = auto; then
+  vc_ignore=
+  test -d .git && vc_ignore=.gitignore
+  test -d CVS && vc_ignore="$vc_ignore .cvsignore"
+fi
+
+if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then
+  use_gnulib=false
+else
+  use_gnulib=true
+fi
+
+# Translate configuration into internal form.
+
+# Parse options.
+
+for option
+do
+  case $option in
+  --help)
+    usage
+    exit;;
+  --version)
+    set -e
+    echo "bootstrap $scriptversion"
+    echo "$copyright"
+    exit 0
+    ;;
+  --gnulib-srcdir=*)
+    GNULIB_SRCDIR=${option#--gnulib-srcdir=};;
+  --skip-po)
+    SKIP_PO=t;;
+  --force)
+    checkout_only_file=;;
+  --copy)
+    copy=true;;
+  --bootstrap-sync)
+    bootstrap_sync=true;;
+  --no-bootstrap-sync)
+    bootstrap_sync=false;;
+  --no-git)
+    use_git=false;;
+  *)
+    bootstrap_option_hook $option || die "$option: unknown option";;
+  esac
+done
+
+$use_git || test -d "$GNULIB_SRCDIR" \
+  || die "Error: --no-git requires --gnulib-srcdir"
+
+if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
+  die "Bootstrapping from a non-checked-out distribution is risky."
+fi
+
 # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
 found_aux_dir=no
 grep '^[        ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
@@ -784,75 +882,6 @@ case $SKIP_PO in
   fi;;
 esac
 
-symlink_to_dir()
-{
-  src=$1/$2
-  dst=${3-$2}
-
-  test -f "$src" && {
-
-    # If the destination directory doesn't exist, create it.
-    # This is required at least for "lib/uniwidth/cjk.h".
-    dst_dir=$(dirname "$dst")
-    if ! test -d "$dst_dir"; then
-      mkdir -p "$dst_dir"
-
-      # If we've just created a directory like lib/uniwidth,
-      # tell version control system(s) it's ignorable.
-      # FIXME: for now, this does only one level
-      parent=$(dirname "$dst_dir")
-      for dot_ig in x $vc_ignore; do
-        test $dot_ig = x && continue
-        ig=$parent/$dot_ig
-        insert_vc_ignore $ig "${dst_dir##*/}"
-      done
-    fi
-
-    if $copy; then
-      {
-        test ! -h "$dst" || {
-          echo "$me: rm -f $dst" &&
-          rm -f "$dst"
-        }
-      } &&
-      test -f "$dst" &&
-      cmp -s "$src" "$dst" || {
-        echo "$me: cp -fp $src $dst" &&
-        cp -fp "$src" "$dst"
-      }
-    else
-      # Leave any existing symlink alone, if it already points to the source,
-      # so that broken build tools that care about symlink times
-      # aren't confused into doing unnecessary builds.  Conversely, if the
-      # existing symlink's timestamp is older than the source, make it afresh,
-      # so that broken tools aren't confused into skipping needed builds.  See
-      # <https://lists.gnu.org/r/bug-gnulib/2011-05/msg00326.html>.
-      test -h "$dst" &&
-      src_ls=$(ls -diL "$src" 2>/dev/null) && set $src_ls && src_i=$1 &&
-      dst_ls=$(ls -diL "$dst" 2>/dev/null) && set $dst_ls && dst_i=$1 &&
-      test "$src_i" = "$dst_i" &&
-      both_ls=$(ls -dt "$src" "$dst") &&
-      test "X$both_ls" = "X$dst$nl$src" || {
-        dot_dots=
-        case $src in
-        /*) ;;
-        *)
-          case /$dst/ in
-          *//* | */../* | */./* | /*/*/*/*/*/)
-             die "invalid symlink calculation: $src -> $dst";;
-          /*/*/*/*/)    dot_dots=../../../;;
-          /*/*/*/)      dot_dots=../../;;
-          /*/*/)        dot_dots=../;;
-          esac;;
-        esac
-
-        echo "$me: ln -fs $dot_dots$src $dst" &&
-        ln -fs "$dot_dots$src" "$dst"
-      }
-    fi
-  }
-}
-
 version_controlled_file() {
   parent=$1
   file=$2
@@ -970,7 +999,7 @@ bootstrap_post_import_hook \
 # Uninitialized submodules are listed with an initial dash.
 if $use_git && git submodule | grep '^-' >/dev/null; then
   die "some git submodules are not initialized. "     \
-      "Run 'git submodule init' and bootstrap again."
+      "Run 'git submodule update --init' and bootstrap again."
 fi
 
 # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
diff --git a/bootstrap.conf b/bootstrap.conf
index 71acbeeb1..3cd225f8e 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -16,7 +16,7 @@
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 
-GNULIB_REVISION=d271f868a8df9bbec29049d01e056481b7a1a263
+GNULIB_REVISION=364c5ba2e40d17e98cc66021ef893e30a009068b
 
 # gnulib modules used by this package.
 # mbswidth is used by gnulib-fix-width.diff's changes to argp rather than
@@ -67,7 +67,7 @@ SKIP_PO=t
 
 # Build prerequisites
 buildreq="\
-autoconf   2.63
+autoconf   2.64
 automake   1.11
 gettext    0.18.3
 git        1.5.5
@@ -81,11 +81,10 @@ cp -a INSTALL INSTALL.grub
 
 bootstrap_post_import_hook () {
   set -e
-  for patchname in fix-null-deref fix-null-state-deref 
fix-regcomp-uninit-token \
-      fix-regexec-null-deref fix-uninit-structure fix-unused-value fix-width; 
do
-    patch -d grub-core/lib/gnulib -p2 \
-      < "grub-core/lib/gnulib-patches/$patchname.patch"
-  done
+
+  # Instead of patching our gnulib and therefore maintaining a fork, submit
+  # changes to gnulib and update the hash above when they've merged.
+
   for patchname in \
       0001-Support-POTFILES-shell \
       0002-Handle-gettext_printf-shell-function \
diff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist
index 4ddc3c8f7..07d828ab9 100644
--- a/conf/Makefile.extra-dist
+++ b/conf/Makefile.extra-dist
@@ -28,14 +28,6 @@ EXTRA_DIST += grub-core/gensymlist.sh
 EXTRA_DIST += grub-core/genemuinit.sh
 EXTRA_DIST += grub-core/genemuinitheader.sh
 
-EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-deref.patch
-EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-state-deref.patch
-EXTRA_DIST += grub-core/lib/gnulib-patches/fix-regcomp-uninit-token.patch
-EXTRA_DIST += grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch
-EXTRA_DIST += grub-core/lib/gnulib-patches/fix-uninit-structure.patch
-EXTRA_DIST += grub-core/lib/gnulib-patches/fix-unused-value.patch
-EXTRA_DIST += grub-core/lib/gnulib-patches/fix-width.patch
-
 EXTRA_DIST += grub-core/lib/libgcrypt
 EXTRA_DIST += grub-core/lib/libgcrypt-grub/mpi/generic
 EXTRA_DIST += $(shell find $(top_srcdir)/include -name '*.h')
diff --git a/config.h.in b/config.h.in
index 66c16abfd..d9cc5176a 100644
--- a/config.h.in
+++ b/config.h.in
@@ -64,7 +64,24 @@
 
 #  define _GNU_SOURCE 1
 
+/* gnulib gets configured against the host, not the target, and the rest of
+ * our buildsystem works around that.  This is difficult to avoid as gnulib's
+ * detection requires a more capable system than our target.  Instead, we
+ * reach in and set values appropriately.  If, when updating gnulib,
+ * something breaks, there's probably a change needed here or in
+ * grub-core/Makefile.core.def. */
 #  define _GL_ATTRIBUTE_CONST
+#  define _GL_ATTRIBUTE_COLD
+#  define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0)
+#  define _GL_ATTRIBUTE_MALLOC
+#  define _GL_INLINE inline
+#  define _GL_INLINE_HEADER_BEGIN
+#  define SIZE_MAX ((size_t) -1)
+#  define uint_fast32_t uint32_t
+#  define int_fast32_t int32_t
+
+/* We don't have an abort() for gnulib to call in regexp. */
+#  define abort() DEBUG_ASSERT(0)
 
 /* We don't have an abort() for gnulib to call in regexp. */
 #  define abort() DEBUG_ASSERT(0)
diff --git a/configure.ac b/configure.ac
index 4f649edaf..cc220e9d0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -49,7 +49,7 @@ AC_CANONICAL_TARGET
 program_prefix="${save_program_prefix}"
 
 AM_INIT_AUTOMAKE([1.11])
-AC_PREREQ(2.63)
+AC_PREREQ(2.64)
 AC_CONFIG_SRCDIR([include/grub/dl.h])
 AC_CONFIG_HEADER([config-util.h])
 
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
index 8022e1c0a..48ac59be6 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -743,6 +743,7 @@ module = {
   name = regexp;
   common = commands/regexp.c;
   common = commands/wildcard.c;
+  common = lib/gnulib/malloc/dynarray_resize.c;
   common = lib/gnulib/regex.c;
   cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)';
   cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB)';
diff --git a/grub-core/lib/gnulib-patches/fix-null-deref.patch 
b/grub-core/lib/gnulib-patches/fix-null-deref.patch
deleted file mode 100644
index 8fafa153a..000000000
--- a/grub-core/lib/gnulib-patches/fix-null-deref.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/lib/argp-parse.c b/lib/argp-parse.c
-index 6dec57310..900adad54 100644
---- a/lib/argp-parse.c
-+++ b/lib/argp-parse.c
-@@ -940,7 +940,7 @@ weak_alias (__argp_parse, argp_parse)
- void *
- __argp_input (const struct argp *argp, const struct argp_state *state)
- {
--  if (state)
-+  if (state && state->pstate)
-     {
-       struct group *group;
-       struct parser *parser = state->pstate;
diff --git a/grub-core/lib/gnulib-patches/fix-null-state-deref.patch 
b/grub-core/lib/gnulib-patches/fix-null-state-deref.patch
deleted file mode 100644
index 813ec09c8..000000000
--- a/grub-core/lib/gnulib-patches/fix-null-state-deref.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/lib/argp-help.c  2020-10-28 14:32:19.189215988 +0000
-+++ b/lib/argp-help.c  2020-10-28 14:38:21.204673940 +0000
-@@ -145,7 +145,8 @@
-       if (*(int *)((char *)upptr + up->uparams_offs) >= upptr->rmargin)
-         {
-           __argp_failure (state, 0, 0,
--                          dgettext (state->root_argp->argp_domain,
-+                          dgettext (state == NULL ? NULL
-+                                    : state->root_argp->argp_domain,
-                                     "\
- ARGP_HELP_FMT: %s value is less than or equal to %s"),
-                           "rmargin", up->name);
diff --git a/grub-core/lib/gnulib-patches/fix-regcomp-uninit-token.patch 
b/grub-core/lib/gnulib-patches/fix-regcomp-uninit-token.patch
deleted file mode 100644
index 02e06315d..000000000
--- a/grub-core/lib/gnulib-patches/fix-regcomp-uninit-token.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- a/lib/regcomp.c    2020-11-24 17:06:08.159223858 +0000
-+++ b/lib/regcomp.c    2020-11-24 17:06:15.630253923 +0000
-@@ -3808,11 +3808,7 @@
- create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
-            re_token_type_t type)
- {
--  re_token_t t;
--#if defined GCC_LINT || defined lint
--  memset (&t, 0, sizeof t);
--#endif
--  t.type = type;
-+  re_token_t t = { .type = type };
-   return create_token_tree (dfa, left, right, &t);
- }
- 
diff --git a/grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch 
b/grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch
deleted file mode 100644
index db6dac9c9..000000000
--- a/grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/lib/regexec.c    2020-10-21 14:25:35.310195912 +0000
-+++ b/lib/regexec.c    2020-11-05 10:55:09.621542984 +0000
-@@ -1692,6 +1692,9 @@
- {
-   Idx top = mctx->state_log_top;
-
-+  if (mctx->state_log == NULL)
-+    return REG_NOERROR;
-+
-   if ((next_state_log_idx >= mctx->input.bufs_len
-        && mctx->input.bufs_len < mctx->input.len)
-       || (next_state_log_idx >= mctx->input.valid_len
diff --git a/grub-core/lib/gnulib-patches/fix-uninit-structure.patch 
b/grub-core/lib/gnulib-patches/fix-uninit-structure.patch
deleted file mode 100644
index 7b4d9f67a..000000000
--- a/grub-core/lib/gnulib-patches/fix-uninit-structure.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/lib/regcomp.c    2020-10-22 13:49:06.770168928 +0000
-+++ b/lib/regcomp.c    2020-10-22 13:50:37.026528298 +0000
-@@ -3662,7 +3662,7 @@
-   Idx alloc = 0;
- #endif /* not RE_ENABLE_I18N */
-   reg_errcode_t ret;
--  re_token_t br_token;
-+  re_token_t br_token = {0};
-   bin_tree_t *tree;
- 
-   sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
diff --git a/grub-core/lib/gnulib-patches/fix-unused-value.patch 
b/grub-core/lib/gnulib-patches/fix-unused-value.patch
deleted file mode 100644
index ba51f1bf2..000000000
--- a/grub-core/lib/gnulib-patches/fix-unused-value.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- a/lib/regexec.c    2020-10-21 14:25:35.310195912 +0000
-+++ b/lib/regexec.c    2020-10-21 14:32:07.961765604 +0000
-@@ -828,7 +828,11 @@
-                   break;
-                 if (__glibc_unlikely (err != REG_NOMATCH))
-                   goto free_return;
-+#ifdef DEBUG
-+                /* Only used for assertion below when DEBUG is set, otherwise
-+                   it will be over-written when we loop around.  */
-                 match_last = -1;
-+#endif
-               }
-             else
-               break; /* We found a match.  */
diff --git a/grub-core/lib/gnulib-patches/fix-width.patch 
b/grub-core/lib/gnulib-patches/fix-width.patch
deleted file mode 100644
index 0a208ad08..000000000
--- a/grub-core/lib/gnulib-patches/fix-width.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-diff --git a/lib/argp-fmtstream.c b/lib/argp-fmtstream.c
-index ba6a407f7..d0685b3d4 100644
---- a/lib/argp-fmtstream.c
-+++ b/lib/argp-fmtstream.c
-@@ -28,9 +28,11 @@
- #include <errno.h>
- #include <stdarg.h>
- #include <ctype.h>
-+#include <wchar.h>
- 
- #include "argp-fmtstream.h"
- #include "argp-namefrob.h"
-+#include "mbswidth.h"
- 
- #ifndef ARGP_FMTSTREAM_USE_LINEWRAP
- 
-@@ -115,6 +117,51 @@ weak_alias (__argp_fmtstream_free, argp_fmtstream_free)
- #endif
- #endif
- 
-+
-+/* Return the pointer to the first character that doesn't fit in l columns.  
*/
-+static inline const ptrdiff_t
-+add_width (const char *ptr, const char *end, size_t l)
-+{
-+  mbstate_t ps;
-+  const char *ptr0 = ptr;
-+
-+  memset (&ps, 0, sizeof (ps));
-+
-+  while (ptr < end)
-+    {
-+      wchar_t wc;
-+      size_t s, k;
-+
-+      s = mbrtowc (&wc, ptr, end - ptr, &ps);
-+      if (s == (size_t) -1)
-+      break;
-+      if (s == (size_t) -2)
-+      {
-+        if (1 >= l)
-+          break;
-+        l--;
-+        ptr++;
-+        continue;
-+      }
-+
-+      if (wc == '\e' && ptr + 3 < end
-+        && ptr[1] == '[' && (ptr[2] == '0' || ptr[2] == '1')
-+        && ptr[3] == 'm')
-+      {
-+        ptr += 4;
-+        continue;
-+      }
-+
-+      k = wcwidth (wc);
-+
-+      if (k >= l)
-+      break;
-+      l -= k;
-+      ptr += s;
-+    }
-+  return ptr - ptr0;
-+}
-+
- /* Process FS's buffer so that line wrapping is done from POINT_OFFS to the
-    end of its buffer.  This code is mostly from glibc stdio/linewrap.c.  */
- void
-@@ -168,13 +215,15 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
-       if (!nl)
-         {
-           /* The buffer ends in a partial line.  */
-+          size_t display_width = mbsnwidth (buf, fs->p - buf,
-+                                            MBSW_STOP_AT_NUL);
- 
--          if (fs->point_col + len < fs->rmargin)
-+          if (fs->point_col + display_width < fs->rmargin)
-             {
-               /* The remaining buffer text is a partial line and fits
-                  within the maximum line width.  Advance point for the
-                  characters to be written and stop scanning.  */
--              fs->point_col += len;
-+              fs->point_col += display_width;
-               break;
-             }
-           else
-@@ -182,14 +231,18 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
-                the end of the buffer.  */
-             nl = fs->p;
-         }
--      else if (fs->point_col + (nl - buf) < (ssize_t) fs->rmargin)
--        {
--          /* The buffer contains a full line that fits within the maximum
--             line width.  Reset point and scan the next line.  */
--          fs->point_col = 0;
--          buf = nl + 1;
--          continue;
--        }
-+      else
-+      {
-+        size_t display_width = mbsnwidth (buf, nl - buf, MBSW_STOP_AT_NUL);
-+        if (display_width < (ssize_t) fs->rmargin)
-+          {
-+            /* The buffer contains a full line that fits within the maximum
-+               line width.  Reset point and scan the next line.  */
-+            fs->point_col = 0;
-+            buf = nl + 1;
-+            continue;
-+          }
-+      }
- 
-       /* This line is too long.  */
-       r = fs->rmargin - 1;
-@@ -225,7 +278,7 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
-           char *p, *nextline;
-           int i;
- 
--          p = buf + (r + 1 - fs->point_col);
-+          p = buf + add_width (buf, fs->p, (r + 1 - fs->point_col));
-           while (p >= buf && !isblank ((unsigned char) *p))
-             --p;
-           nextline = p + 1;     /* This will begin the next line.  */
-@@ -243,7 +296,7 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
-             {
-               /* A single word that is greater than the maximum line width.
-                  Oh well.  Put it on an overlong line by itself.  */
--              p = buf + (r + 1 - fs->point_col);
-+              p = buf + add_width (buf, fs->p, (r + 1 - fs->point_col));
-               /* Find the end of the long word.  */
-               if (p < nl)
-                 do
-@@ -277,7 +330,8 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
-               && fs->p > nextline)
-             {
-               /* The margin needs more blanks than we removed.  */
--              if (fs->end - fs->p > fs->wmargin + 1)
-+              if (mbsnwidth (fs->p, fs->end - fs->p, MBSW_STOP_AT_NUL)
-+                  > fs->wmargin + 1)
-                 /* Make some space for them.  */
-                 {
-                   size_t mv = fs->p - nextline;
-diff --git a/lib/argp-help.c b/lib/argp-help.c
-index e5375a0f0..5d8f451ec 100644
---- a/lib/argp-help.c
-+++ b/lib/argp-help.c
-@@ -51,6 +51,7 @@
- #include "argp.h"
- #include "argp-fmtstream.h"
- #include "argp-namefrob.h"
-+#include "mbswidth.h"
- 
- #ifndef SIZE_MAX
- # define SIZE_MAX ((size_t) -1)
-@@ -1432,7 +1433,7 @@ argp_args_usage (const struct argp *argp, const struct 
argp_state *state,
- 
-       /* Manually do line wrapping so that it (probably) won't get wrapped at
-          any embedded spaces.  */
--      space (stream, 1 + nl - cp);
-+      space (stream, 1 + mbsnwidth (cp, nl - cp, MBSW_STOP_AT_NUL));
- 
-       __argp_fmtstream_write (stream, cp, nl - cp);
-     }
-diff --git a/lib/mbswidth.c b/lib/mbswidth.c
-index 408a15e34..b3fb7f83a 100644
---- a/lib/mbswidth.c
-+++ b/lib/mbswidth.c
-@@ -38,6 +38,14 @@
- /* Get INT_MAX.  */
- #include <limits.h>
- 
-+#ifndef FALLTHROUGH
-+# if __GNUC__ < 7
-+#  define FALLTHROUGH ((void) 0)
-+# else
-+#  define FALLTHROUGH __attribute__ ((__fallthrough__))
-+# endif
-+#endif
-+
- /* Returns the number of columns needed to represent the multibyte
-    character string pointed to by STRING.  If a non-printable character
-    occurs, and MBSW_REJECT_UNPRINTABLE is specified, -1 is returned.
-@@ -90,6 +98,10 @@ mbsnwidth (const char *string, size_t nbytes, int flags)
-               p++;
-               width++;
-               break;
-+            case '\0':
-+              if (flags & MBSW_STOP_AT_NUL)
-+                return width;
-+              FALLTHROUGH;
-             default:
-               /* If we have a multibyte sequence, scan it up to its end.  */
-               {
-@@ -168,6 +180,9 @@ mbsnwidth (const char *string, size_t nbytes, int flags)
-     {
-       unsigned char c = (unsigned char) *p++;
- 
-+      if (c == 0 && (flags & MBSW_STOP_AT_NUL))
-+        return width;
-+
-       if (isprint (c))
-         {
-           if (width == INT_MAX)
-diff --git a/lib/mbswidth.h b/lib/mbswidth.h
-index 2b5c53c37..45a123e63 100644
---- a/lib/mbswidth.h
-+++ b/lib/mbswidth.h
-@@ -45,6 +45,10 @@ extern "C" {
-    control characters and 1 otherwise.  */
- #define MBSW_REJECT_UNPRINTABLE 2
- 
-+/* If this bit is set \0 is treated as the end of string.
-+   Otherwise it's treated as a normal one column width character.  */
-+#define MBSW_STOP_AT_NUL 4
-+
- 
- /* Returns the number of screen columns needed for STRING.  */
- #define mbswidth gnu_mbswidth  /* avoid clash with UnixWare 7.1.1 function */
-- 
2.34.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]