grub-devel
[Top][All Lists]
Advanced

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

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


From: Glenn Washburn
Subject: Re: [PATCH v2 4/4] Update gnulib version and drop all gnulib patches
Date: Wed, 26 Jan 2022 21:06:22 -0600

On Wed, 26 Jan 2022 17:09:12 -0500
Robbie Harwood <rharwood@redhat.com> wrote:

> 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

This version doesn't match and is older than the version in the
$GNULIB_REVISION below. Was there a reason why you didn't want to
update the bootstrap script to that revision level?

Glenn

>  
>  # 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 
> */



reply via email to

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