public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
To: git-commits@fedoraproject.org
Subject: [rpms/zsh] rawhide: rebase to the latest upstream release
Date: Thu, 04 Jun 2026 09:03:50 GMT	[thread overview]
Message-ID: <178056383089.1.597879722836817490.rpms-zsh-95be2e37b5c0@fedoraproject.org> (raw)

            A new commit has been pushed.

            Repo   : rpms/zsh
            Branch : rawhide
            Commit : 95be2e37b5c0d1282c249ef938f11ab5dc470d66
            Author : Lukáš Zaoral <lzaoral@redhat.com>
            Date   : 2026-06-04T11:03:21+02:00
            Stats  : +296/-2473 in 12 file(s)
            URL    : https://src.fedoraproject.org/rpms/zsh/c/95be2e37b5c0d1282c249ef938f11ab5dc470d66?branch=rawhide

            Log:
            rebase to the latest upstream release

Resolves: rhbz#2483668

---
diff --git a/0001-zsh-5.9-do-not-use-egrep-in-tests.patch b/0001-zsh-5.9-do-not-use-egrep-in-tests.patch
deleted file mode 100644
index 4d5a1cf..0000000
--- a/0001-zsh-5.9-do-not-use-egrep-in-tests.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From 6935aa4b515fe9b782507820c77ab681136470bc Mon Sep 17 00:00:00 2001
-From: Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
-Date: Thu, 15 Sep 2022 18:56:20 +0900
-Subject: [PATCH] 50629: do not use egrep in tests
-
-Upstream-commit: 4fc5dc0292acd77f17281f451774ba2ca4203026
-Signed-off-by: Kamil Dudka <kdudka@redhat.com>
----
- Test/D07multibyte.ztst  | 16 ++--------------
- Test/E01options.ztst    |  2 +-
- Test/V07pcre.ztst       | 16 ++--------------
- Test/X02zlevi.ztst      | 11 +----------
- Test/X03zlebindkey.ztst | 11 +----------
- Test/Y01completion.ztst | 11 +----------
- Test/ztst.zsh           | 15 +++++++++++++++
- 7 files changed, 23 insertions(+), 59 deletions(-)
-
-diff --git a/Test/D07multibyte.ztst b/Test/D07multibyte.ztst
-index e2e9a25..6909346 100644
---- a/Test/D07multibyte.ztst
-+++ b/Test/D07multibyte.ztst
-@@ -1,19 +1,7 @@
- %prep
- 
--# Find a UTF-8 locale.
--  setopt multibyte
--# Don't let LC_* override our choice of locale.
--  unset -m LC_\*
--  mb_ok=
--  langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
--	 $(locale -a 2>/dev/null | egrep 'utf8|UTF-8'))
--  for LANG in $langs; do
--    if [[ é = ? ]]; then
--      mb_ok=1
--      break;
--    fi
--  done
--  if [[ -z $mb_ok ]]; then
-+  LANG=$(ZTST_find_UTF8)
-+  if [[ -z $LANG ]]; then
-     ZTST_unimplemented="no UTF-8 locale or multibyte mode is not implemented"
-   else
-     print -u $ZTST_fd Testing multibyte with locale $LANG
-diff --git a/Test/E01options.ztst b/Test/E01options.ztst
-index 2acbfd3..d38fbed 100644
---- a/Test/E01options.ztst
-+++ b/Test/E01options.ztst
-@@ -651,7 +651,7 @@
- >noktarg1
- >0 1
- 
--  showopt() { setopt | egrep 'localoptions|ksharrays'; }
-+  showopt() { echo ${(FM)${(@f)"$(setopt)"}:#(localoptions|ksharrays)*} }
-   f1() { setopt localoptions ksharrays; showopt }
-   f2() { setopt ksharrays; showopt }
-   setopt kshoptionprint
-diff --git a/Test/V07pcre.ztst b/Test/V07pcre.ztst
-index c9c844d..ca13419 100644
---- a/Test/V07pcre.ztst
-+++ b/Test/V07pcre.ztst
-@@ -6,20 +6,8 @@
-     return 0
-   fi
-   setopt rematch_pcre
--# Find a UTF-8 locale.
--  setopt multibyte
--# Don't let LC_* override our choice of locale.
--  unset -m LC_\*
--  mb_ok=
--  langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
--	 $(locale -a 2>/dev/null | egrep 'utf8|UTF-8'))
--  for LANG in $langs; do
--    if [[ é = ? ]]; then
--      mb_ok=1
--      break;
--    fi
--  done
--  if [[ -z $mb_ok ]]; then
-+  LANG=$(ZTST_find_UTF8)
-+  if [[ -z $LANG ]]; then
-     ZTST_unimplemented="no UTF-8 locale or multibyte mode is not implemented"
-   else
-     print -u $ZTST_fd Testing PCRE multibyte with locale $LANG
-diff --git a/Test/X02zlevi.ztst b/Test/X02zlevi.ztst
-index 8146d67..203c13c 100644
---- a/Test/X02zlevi.ztst
-+++ b/Test/X02zlevi.ztst
-@@ -1,16 +1,7 @@
- # Tests of the vi mode of ZLE
- 
- %prep
--  unset -m LC_\*
--  ZSH_TEST_LANG=
--  langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
--	 $(locale -a 2>/dev/null | egrep 'utf8|UTF-8'))
--  for LANG in $langs; do
--    if [[ é = ? ]]; then
--      ZSH_TEST_LANG=$LANG 
--      break;
--    fi
--  done
-+  ZSH_TEST_LANG=$(ZTST_find_UTF8)
-   if ( zmodload zsh/zpty 2>/dev/null ); then
-     . $ZTST_srcdir/comptest
-     comptestinit -v -z $ZTST_testdir/../Src/zsh
-diff --git a/Test/X03zlebindkey.ztst b/Test/X03zlebindkey.ztst
-index 43692a8..5277332 100644
---- a/Test/X03zlebindkey.ztst
-+++ b/Test/X03zlebindkey.ztst
-@@ -3,16 +3,7 @@
- # into bindings.  The latter is particularly tricky with multibyte sequences.
- 
- %prep
--  unset -m LC_\*
--  ZSH_TEST_LANG=
--  langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
--	 $(locale -a 2>/dev/null | egrep 'utf8|UTF-8'))
--  for LANG in $langs; do
--    if [[ é = ? ]]; then
--      ZSH_TEST_LANG=$LANG
--      break;
--    fi
--  done
-+  ZSH_TEST_LANG=$(ZTST_find_UTF8)
-   if ( zmodload zsh/zpty 2>/dev/null ); then
-     . $ZTST_srcdir/comptest
-     comptestinit -z $ZTST_testdir/../Src/zsh
-diff --git a/Test/Y01completion.ztst b/Test/Y01completion.ztst
-index 6af0efc..f976f9f 100644
---- a/Test/Y01completion.ztst
-+++ b/Test/Y01completion.ztst
-@@ -1,16 +1,7 @@
- # Tests for completion system.
- 
- %prep
--  unset -m LC_\*
--  ZSH_TEST_LANG=
--  langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
--         $(locale -a 2>/dev/null | egrep 'utf8|UTF-8'))
--  for LANG in $langs; do
--    if [[ é = ? ]]; then
--      ZSH_TEST_LANG=$LANG
--      break;
--    fi
--  done
-+  ZSH_TEST_LANG=$(ZTST_find_UTF8)
-   if ( zmodload zsh/zpty 2>/dev/null ); then
-     . $ZTST_srcdir/comptest
-     mkdir comp.tmp
-diff --git a/Test/ztst.zsh b/Test/ztst.zsh
-index aca275c..d95b726 100755
---- a/Test/ztst.zsh
-+++ b/Test/ztst.zsh
-@@ -37,6 +37,21 @@ emulate -R zsh
- # LANG must be passed to child zsh.
- export LANG
- 
-+# find UTF-8 locale
-+ZTST_find_UTF8 () {
-+  setopt multibyte
-+  # Don't let LC_* override our choice of locale.
-+  unset -m LC_\*
-+  local langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8
-+               ${(M)$(locale -a 2>/dev/null):#*.(utf8|UTF-8)})
-+  for LANG in $langs; do
-+    if [[ é = ? ]]; then
-+      echo $LANG
-+      return
-+    fi
-+  done
-+}
-+
- # Don't propagate variables that are set by default in the shell.
- typeset +x WORDCHARS
- 
--- 
-2.39.0
-

diff --git a/0002-zsh-Use-int-main-in-test-c-codes.patch b/0002-zsh-Use-int-main-in-test-c-codes.patch
deleted file mode 100644
index 3585cc4..0000000
--- a/0002-zsh-Use-int-main-in-test-c-codes.patch
+++ /dev/null
@@ -1,541 +0,0 @@
-commit ab4d62eb975a4c4c51dd35822665050e2ddc6918
-Author: Nicholas Vinson <nvinson234@gmail.com>
-Date:   Wed Sep 21 09:22:11 2022 +0900
-
-    50641: use 'int main()' in test C-codes in configure
-
-diff --git a/aczsh.m4 b/aczsh.m4
-index 1209ac614..b31236020 100644
---- a/aczsh.m4
-+++ b/aczsh.m4
-@@ -44,6 +44,7 @@ AC_DEFUN(zsh_64_BIT_TYPE,
- #include <sys/types.h>
- #endif
- 
-+int
- main()
- {
-   $1 foo = 0; 
-@@ -118,7 +119,6 @@ AC_TRY_COMMAND($DLLD -o conftest1.$DL_EXT $LDFLAGS $DLLDFLAGS conftest1.o $LIBS
- AC_TRY_COMMAND($CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest2.c 1>&AS_MESSAGE_LOG_FD) &&
- AC_TRY_COMMAND($DLLD -o conftest2.$DL_EXT $LDFLAGS $DLLDFLAGS conftest2.o $LIBS 1>&AS_MESSAGE_LOG_FD); then
-     AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -146,29 +146,30 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
- 
-+int
- main()
- {
-     void *handle1, *handle2;
-     void *(*zsh_getaddr1)(), *(*zsh_getaddr2)();
-     void *sym1, *sym2;
-     handle1 = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
--    if(!handle1) exit(1);
-+    if(!handle1) return(1);
-     handle2 = dlopen("./conftest2.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
--    if(!handle2) exit(1);
-+    if(!handle2) return(1);
-     zsh_getaddr1 = (void *(*)()) dlsym(handle1, "${us}zsh_getaddr1");
-     zsh_getaddr2 = (void *(*)()) dlsym(handle2, "${us}zsh_getaddr2");
-     sym1 = zsh_getaddr1();
-     sym2 = zsh_getaddr2();
--    if(!sym1 || !sym2) exit(1);
--    if(sym1 != sym2) exit(1);
-+    if(!sym1 || !sym2) return(1);
-+    if(sym1 != sym2) return(1);
-     dlclose(handle1);
-     handle1 = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
--    if(!handle1) exit(1);
-+    if(!handle1) return(1);
-     zsh_getaddr1 = (void *(*)()) dlsym(handle1, "${us}zsh_getaddr1");
-     sym1 = zsh_getaddr1();
--    if(!sym1) exit(1);
--    if(sym1 != sym2) exit(1);
--    exit(0);
-+    if(!sym1) return(1);
-+    if(sym1 != sym2) return(1);
-+    return(0);
- }
- ]])],[zsh_cv_shared_$1=yes],
- [zsh_cv_shared_$1=no],
-@@ -200,7 +201,6 @@ AC_TRY_COMMAND($DLLD -o conftest1.$DL_EXT $LDFLAGS $DLLDFLAGS conftest1.o $LIBS
- AC_TRY_COMMAND($CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest2.c 1>&AS_MESSAGE_LOG_FD) &&
- AC_TRY_COMMAND($DLLD -o conftest2.$DL_EXT $LDFLAGS $DLLDFLAGS conftest2.o $LIBS 1>&AS_MESSAGE_LOG_FD); then
-     AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -228,19 +228,19 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
- 
--
-+int
- main()
- {
-     void *handle1, *handle2;
-     int (*fred1)(), (*fred2)();
-     handle1 = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
--    if(!handle1) exit(1);
-+    if(!handle1) return(1);
-     handle2 = dlopen("./conftest2.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
--    if(!handle2) exit(1);
-+    if(!handle2) return(1);
-     fred1 = (int (*)()) dlsym(handle1, "${us}fred");
-     fred2 = (int (*)()) dlsym(handle2, "${us}fred");
--    if(!fred1 || !fred2) exit(1);
--    exit((*fred1)() != 42 || (*fred2)() != 69);
-+    if(!fred1 || !fred2) return(1);
-+    return((*fred1)() != 42 || (*fred2)() != 69);
- }
- ]])],[zsh_cv_sys_dynamic_clash_ok=yes],
- [zsh_cv_sys_dynamic_clash_ok=no],
-@@ -276,7 +276,6 @@ AC_TRY_COMMAND($DLLD -o conftest1.$DL_EXT $LDFLAGS $DLLDFLAGS conftest1.o $LIBS
- AC_TRY_COMMAND($CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest2.c 1>&AS_MESSAGE_LOG_FD) &&
- AC_TRY_COMMAND($DLLD -o conftest2.$DL_EXT $LDFLAGS $DLLDFLAGS conftest2.o $LIBS 1>&AS_MESSAGE_LOG_FD); then
-     AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -304,17 +303,18 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
- 
-+int
- main()
- {
-     void *handle;
-     int (*barneysym)();
-     handle = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
--    if(!handle) exit(1);
-+    if(!handle) return(1);
-     handle = dlopen("./conftest2.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
--    if(!handle) exit(1);
-+    if(!handle) return(1);
-     barneysym = (int (*)()) dlsym(handle, "${us}barney");
--    if(!barneysym) exit(1);
--    exit((*barneysym)() != 69);
-+    if(!barneysym) return(1);
-+    return((*barneysym)() != 69);
- }
- ]])],[zsh_cv_sys_dynamic_rtld_global=yes],
- [zsh_cv_sys_dynamic_rtld_global=no],
-@@ -346,7 +346,6 @@ AC_TRY_COMMAND($DLLD -o conftest1.$DL_EXT $LDFLAGS $DLLDFLAGS conftest1.o $LIBS
-     save_ldflags=$LDFLAGS
-     LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
-     AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -374,15 +373,16 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
- 
-+int
- main()
- {
-     void *handle;
-     int (*barneysym)();
-     handle = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
--    if(!handle) exit(1);
-+    if(!handle) return(1);
-     barneysym = (int (*)()) dlsym(handle, "${us}barney");
--    if(!barneysym) exit(1);
--    exit((*barneysym)() != 69);
-+    if(!barneysym) return(1);
-+    return((*barneysym)() != 69);
- }
- 
- int fred () { return 42; }
-@@ -420,7 +420,6 @@ elif
-     save_ldflags=$LDFLAGS
-     LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS -s"
-     AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -448,15 +447,16 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
- 
-+int
- main()
- {
-     void *handle;
-     int (*barneysym)();
-     handle = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
--    if(!handle) exit(1);
-+    if(!handle) return(1);
-     barneysym = (int (*)()) dlsym(handle, "${us}barney");
--    if(!barneysym) exit(1);
--    exit((*barneysym)() != 69);
-+    if(!barneysym) return(1);
-+    return((*barneysym)() != 69);
- }
- 
- int fred () { return 42; }
-@@ -488,7 +488,6 @@ echo 'int fred () { return 42; }' > conftest1.c
- if AC_TRY_COMMAND($CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest1.c 1>&AS_MESSAGE_LOG_FD) &&
- AC_TRY_COMMAND($DLLD -o conftest1.$DL_EXT $LDFLAGS $DLLDFLAGS -s conftest1.o $LIBS 1>&AS_MESSAGE_LOG_FD); then
-     AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -516,15 +515,16 @@ char *zsh_gl_sym_addr ;
- #define RTLD_GLOBAL 0
- #endif
- 
-+int
- main()
- {
-     void *handle;
-     int (*fredsym)();
-     handle = dlopen("./conftest1.$DL_EXT", RTLD_LAZY | RTLD_GLOBAL);
--    if(!handle) exit(1);
-+    if(!handle) return(1);
-     fredsym = (int (*)()) dlsym(handle, "${us}fred");
--    if(!fredsym) exit(1);
--    exit((*fredsym)() != 42);
-+    if(!fredsym) return(1);
-+    return((*fredsym)() != 42);
- }
- ]])],[zsh_cv_sys_dynamic_strip_lib=yes],
- [zsh_cv_sys_dynamic_strip_lib=no],
-diff --git a/configure.ac b/configure.ac
-index 890ef8dd2..074141d38 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -585,7 +585,7 @@ fi
- dnl  Checking if compiler correctly cast signed to unsigned.
- AC_CACHE_CHECK(if signed to unsigned casting is broken,
- zsh_cv_c_broken_signed_to_unsigned_casting,
--[AC_RUN_IFELSE([AC_LANG_SOURCE([[main(){return((int)(unsigned char)((char) -1) == 255);}]])],[zsh_cv_c_broken_signed_to_unsigned_casting=yes],[zsh_cv_c_broken_signed_to_unsigned_casting=no],[zsh_cv_c_broken_signed_to_unsigned_casting=no])])
-+[AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(){return((int)(unsigned char)((char) -1) == 255);}]])],[zsh_cv_c_broken_signed_to_unsigned_casting=yes],[zsh_cv_c_broken_signed_to_unsigned_casting=no],[zsh_cv_c_broken_signed_to_unsigned_casting=no])])
- AH_TEMPLATE([BROKEN_SIGNED_TO_UNSIGNED_CASTING],
- [Define to 1 if compiler incorrectly cast signed to unsigned.])
- if test x$zsh_cv_c_broken_signed_to_unsigned_casting = xyes; then
-@@ -1046,7 +1046,7 @@ else
-   [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <sys/types.h>
- 
--main() { return sizeof(off_t) < 8; }
-+int main() { return sizeof(off_t) < 8; }
- ]])],[zsh_cv_off_t_is_64_bit=yes],[zsh_cv_off_t_is_64_bit=no],[zsh_cv_off_t_is_64_bit=no])])
-   if test x$zsh_cv_off_t_is_64_bit = xyes; then
-     AC_DEFINE(OFF_T_IS_64_BIT)
-@@ -1056,7 +1056,7 @@ main() { return sizeof(off_t) < 8; }
-   [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <sys/types.h>
- 
--main() { return sizeof(ino_t) < 8; }
-+int main() { return sizeof(ino_t) < 8; }
- ]])],[zsh_cv_ino_t_is_64_bit=yes],[zsh_cv_ino_t_is_64_bit=no],[zsh_cv_ino_t_is_64_bit=no])])
-   if test x$zsh_cv_ino_t_is_64_bit = xyes; then
-     AC_DEFINE(INO_T_IS_64_BIT)
-@@ -1369,7 +1369,7 @@ zsh_cv_func_realpath_accepts_null,
- #include <stdlib.h>
- #include <limits.h>
- ],[
--exit(!realpath("/", (char*)0));
-+return(!realpath("/", (char*)0));
- ])],
- [zsh_cv_func_realpath_accepts_null=yes],
- [zsh_cv_func_realpath_accepts_null=no],
-@@ -1393,10 +1393,9 @@ AC_CACHE_CHECK(if tgetent accepts NULL,
- zsh_cv_func_tgetent_accepts_null,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <fcntl.h>
--#include <stdlib.h>
- int tgetent(char *, char *);
- char *tgetstr(char *, char **);
--main()
-+int main()
- {
-     char buf[4096];
-     int r1 = tgetent(buf, "vt100");
-@@ -1407,7 +1406,7 @@ main()
-     	tgetstr("cl", &u);
- 	creat("conftest.tgetent", 0640);
-     }
--    exit((r1 != r2) || r2 == -1);
-+    return((r1 != r2) || r2 == -1);
- }
- ]])],[if test -f conftest.tgetent; then
-     zsh_cv_func_tgetent_accepts_null=yes
-@@ -1421,10 +1420,9 @@ AC_CACHE_CHECK(if tgetent returns 0 on success,
- zsh_cv_func_tgetent_zero_success,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <fcntl.h>
--#include <stdlib.h>
- int tgetent(char *, char*);
- char *tgetstr(char *, char **);
--main()
-+int main()
- {
-     char buf[4096];
-     int r1 = tgetent(buf, "!@#$%^&*");
-@@ -1435,7 +1433,7 @@ main()
-     	tgetstr("cl", &u);
- 	creat("conftest.tgetent0", 0640);
-     }
--    exit(r1 == r2);
-+    return(r1 == r2);
- }
- ]])],[if test -f conftest.tgetent0; then
-     zsh_cv_func_tgetent_zero_success=yes
-@@ -1869,8 +1867,7 @@ zsh_cv_rlim_t_is_longer,
- #include <sys/time.h>
- #endif
- #include <sys/resource.h>
--#include <stdlib.h>
--main(){struct rlimit r;exit(sizeof(r.rlim_cur) <= sizeof(long));}]])],[zsh_cv_rlim_t_is_longer=yes],[zsh_cv_rlim_t_is_longer=no],[zsh_cv_rlim_t_is_longer=yes])])
-+int main(){struct rlimit r;return(sizeof(r.rlim_cur) <= sizeof(long));}]])],[zsh_cv_rlim_t_is_longer=yes],[zsh_cv_rlim_t_is_longer=no],[zsh_cv_rlim_t_is_longer=yes])])
- if test x$zsh_cv_rlim_t_is_longer = xyes; then
-   AC_CACHE_CHECK(if rlim_t is a quad,
-   zsh_cv_rlim_t_is_quad_t,
-@@ -1880,13 +1877,12 @@ if test x$zsh_cv_rlim_t_is_longer = xyes; then
- #endif
- #include <stdio.h>
- #include <sys/resource.h>
--#include <stdlib.h>
--main() { 
-+int main() {
-   struct rlimit r;
-   char buf[20];
-   r.rlim_cur = 0;
-   sprintf(buf, "%qd", r.rlim_cur);
--  exit(strcmp(buf, "0"));
-+  return(strcmp(buf, "0"));
- }]])],[zsh_cv_rlim_t_is_quad_t=yes],[zsh_cv_rlim_t_is_quad_t=no],[zsh_cv_rlim_t_is_quad_t=no])])
-   if test x$zsh_cv_rlim_t_is_quad_t = xyes; then
-     AC_DEFINE(RLIM_T_IS_QUAD_T)
-@@ -1903,8 +1899,7 @@ else
- #include <sys/time.h>
- #endif
- #include <sys/resource.h>
--#include <stdlib.h>
--  main(){struct rlimit r;r.rlim_cur=-1;exit(r.rlim_cur<0);}]])],[zsh_cv_type_rlim_t_is_unsigned=yes],[zsh_cv_type_rlim_t_is_unsigned=no],[zsh_cv_type_rlim_t_is_unsigned=no])])
-+  int main(){struct rlimit r;r.rlim_cur=-1;return(r.rlim_cur<0);}]])],[zsh_cv_type_rlim_t_is_unsigned=yes],[zsh_cv_type_rlim_t_is_unsigned=no],[zsh_cv_type_rlim_t_is_unsigned=no])])
-   if test x$zsh_cv_type_rlim_t_is_unsigned = xyes; then
-     AC_DEFINE(RLIM_T_IS_UNSIGNED)
-     DEFAULT_RLIM_T="unsigned $DEFAULT_RLIM_T"
-@@ -2187,9 +2182,8 @@ zsh_cv_sys_fifo,
- #include <fcntl.h>
- #include <signal.h>
- #include <unistd.h>
--#include <stdlib.h>
- #include <sys/stat.h>
--main()
-+int main()
- {
-     char c;
-     int fd;
-@@ -2200,18 +2194,18 @@ main()
- #else
-     if(mknod("/tmp/fifo$$", 0010600, 0) < 0)
- #endif
--	exit(1);
-+	return(1);
-     pid = fork();
-     if(pid < 0)
--	exit(1);
-+	return(1);
-     if(pid) {
- 	fd = open("/tmp/fifo$$", O_RDONLY);
--	exit(fd < 0 || read(fd, &c, 1) != 1 || c != 'x');
-+	return(fd < 0 || read(fd, &c, 1) != 1 || c != 'x');
-     }
-     fd = open("/tmp/fifo$$", O_WRONLY);
-     ret = (fd < 0 || write(fd, "x", 1) < 1);
-     unlink("/tmp/fifo$$");
--    exit(ret);
-+    return(ret);
- }
- ]])],[zsh_cv_sys_fifo=yes],[zsh_cv_sys_fifo=no],[zsh_cv_sys_fifo=yes])
- ])
-@@ -2289,8 +2283,7 @@ zsh_cv_sys_link,
- [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <unistd.h>
- #include <fcntl.h>
--#include <stdlib.h>
--main()
-+int main()
- {
-     int ret;
-     char *tmpfile, *newfile;
-@@ -2299,11 +2292,11 @@ main()
-     unlink(tmpfile);
-     unlink(newfile);
-     if(creat(tmpfile, 0644) < 0)
--	exit(1);
-+	return(1);
-     ret = link(tmpfile, newfile);
-     unlink(tmpfile);
-     unlink(newfile);
--    exit(ret<0);
-+    return(ret<0);
- }
- ]])],[zsh_cv_sys_link=yes],[zsh_cv_sys_link=no],[zsh_cv_sys_link=yes])])
- AH_TEMPLATE([HAVE_LINK],
-@@ -2322,12 +2315,11 @@ zsh_cv_sys_killesrch,
- #include <unistd.h>
- #include <signal.h>
- #include <errno.h>
--#include <stdlib.h>
--main()
-+int main()
- {
-     int pid = (getpid() + 10000) & 0xffffff;
-     while (pid && (kill(pid, 0) == 0 || errno != ESRCH)) pid >>= 1;
--    exit(errno!=ESRCH);
-+    return(errno!=ESRCH);
- }
- ]])],[zsh_cv_sys_killesrch=yes],[zsh_cv_sys_killesrch=no],[zsh_cv_sys_killesrch=yes])])
- AH_TEMPLATE([BROKEN_KILL_ESRCH],
-@@ -2348,12 +2340,11 @@ if test x$signals_style = xPOSIX_SIGNALS; then
-     [AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <signal.h>
- #include <unistd.h>
--#include <stdlib.h>
- int child=0;
- void handler(sig)
-     int sig;
- {if(sig==SIGCHLD) child=1;}
--main() {
-+int main() {
-     struct sigaction act;
-     sigset_t set;
-     int pid, ret;
-@@ -2368,7 +2359,7 @@ main() {
-     if(pid>0) {
-     sigemptyset(&set);
-         ret=sigsuspend(&set);
--        exit(child==0);
-+        return(child==0);
-     }
- }
- ]])],[zsh_cv_sys_sigsuspend=yes],[zsh_cv_sys_sigsuspend=no],[zsh_cv_sys_sigsuspend=yes])])
-@@ -2400,15 +2391,14 @@ case "x$zsh_working_tcsetpgrp" in
- #include <sys/types.h>
- #include <unistd.h>
- #include <fcntl.h>
--#include <stdlib.h>
--main() {
-+int main() {
-     int fd;
-     int ret;
-     fd=open("/dev/tty", O_RDWR);
--    if (fd < 0) exit(2);
-+    if (fd < 0) return(2);
-     ret=tcsetpgrp(fd, tcgetpgrp(fd));
--    if (ret < 0) exit(1);
--    exit(0);
-+    if (ret < 0) return(1);
-+    return(0);
- }
- ]])],[zsh_cv_sys_tcsetpgrp=yes],[
- case $? in
-@@ -2448,7 +2438,7 @@ if test x$ac_cv_func_getpwnam = xyes; then
- #include <string.h>
- #include <stdlib.h>
- #include <unistd.h>
--main() {
-+int main() {
-     struct passwd *pw1, *pw2;
-     char buf[1024], name[1024];
-     sprintf(buf, "%d:%d", getpid(), rand());
-@@ -2456,7 +2446,7 @@ main() {
-     if (pw1) strcpy(name, pw1->pw_name);
-     sprintf(buf, "%d:%d", rand(), getpid());
-     pw2=getpwnam(buf);
--    exit(pw1!=0 && pw2!=0 && !strcmp(name, pw2->pw_name));
-+    return(pw1!=0 && pw2!=0 && !strcmp(name, pw2->pw_name));
- }
- ]])],[zsh_cv_sys_getpwnam_faked=no],[zsh_cv_sys_getpwnam_faked=yes],[zsh_cv_sys_getpwnam_faked=no])])
-     if test x$zsh_cv_sys_getpwnam_faked = xyes; then
-@@ -2775,20 +2765,17 @@ elif test "x$dynamic" = xyes; then
-    zsh_cv_sys_elf,
-    [AC_RUN_IFELSE([AC_LANG_SOURCE([[/* Test for whether ELF binaries are produced */
- #include <fcntl.h>
--#include <stdlib.h>
- #include <unistd.h>
--main(argc, argv)
--int argc;
--char *argv[];
-+int main(int argc, char *argv[])
- {
- 	char b[4];
- 	int i = open(argv[0],O_RDONLY);
- 	if(i == -1) 
--		exit(1); /* fail */
-+		return(1); /* fail */
- 	if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
--		exit(0); /* succeed (yes, it's ELF) */
-+		return(0); /* succeed (yes, it's ELF) */
- 	else
--		exit(1); /* fail */
-+		return(1); /* fail */
- }]])],[zsh_cv_sys_elf=yes],[zsh_cv_sys_elf=no],[zsh_cv_sys_elf=yes])])
- 
-   # We use [0-9]* in case statements, so need to change quoting
-@@ -2924,13 +2911,12 @@ LDFLAGS="$old_LDFLAGS")
-   AC_CACHE_CHECK(if your dlsym() needs a leading underscore,
-    zsh_cv_func_dlsym_needs_underscore,
-    [echo failed >conftestval && cat >conftest.c <<EOM
--fred () { }
-+void fred () { }
- EOM
-     AC_TRY_COMMAND($CC -c $CFLAGS $CPPFLAGS $DLCFLAGS conftest.c 1>&AS_MESSAGE_LOG_FD) &&
-     AC_TRY_COMMAND($DLLD $LDFLAGS $DLLDFLAGS -o conftest.$DL_EXT conftest.o 1>&AS_MESSAGE_LOG_FD) &&
-     AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <stdio.h>
--#include <stdlib.h>
- #ifdef HPUX10DYNAMIC
- #include <dl.h>
- #define RTLD_LAZY BIND_DEFERRED
-@@ -2957,16 +2943,16 @@ char *zsh_gl_sym_addr ;
- 
- extern int fred() ;
- 
--main()
-+int main()
- {
-     void * handle ;
-     void * symbol ;
-     FILE *f=fopen("conftestval", "w");
--    if (!f) exit(1);
-+    if (!f) return(1);
-     handle = dlopen("./conftest.$DL_EXT", RTLD_LAZY) ;
-     if (handle == NULL) {
-         fprintf (f, "dlopen failed") ;
--            exit(1);
-+            return(1);
-     }
-     symbol = dlsym(handle, "fred") ;
-     if (symbol == NULL) {
-@@ -2974,13 +2960,13 @@ main()
-         symbol = dlsym(handle, "_fred") ;
-         if (symbol == NULL) {
-             fprintf (f, "dlsym failed") ;
--                exit(1);
-+                return(1);
-                 }
-         fprintf (f, "yes") ;
-     }
-     else
-         fprintf (f, "no") ;
--    exit(0);
-+    return(0);
- }]])],[zsh_cv_func_dlsym_needs_underscore=`cat conftestval`],[zsh_cv_func_dlsym_needs_underscore=failed
-     dynamic=no],[zsh_cv_func_dlsym_needs_underscore=no])])
-   if test "x$zsh_cv_func_dlsym_needs_underscore" = xyes; then

diff --git a/0004-zsh-enable-PCRE-locale-switching.patch b/0004-zsh-enable-PCRE-locale-switching.patch
deleted file mode 100644
index a6f03bf..0000000
--- a/0004-zsh-enable-PCRE-locale-switching.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 1b421e4978440234fb73117c8505dad1ccc68d46 Mon Sep 17 00:00:00 2001
-From: Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
-Date: Mon, 26 Sep 2022 10:52:50 +0900
-Subject: [PATCH] 50658 + test: Enable to switch between C/UTF-8 locales in
- PCRE
-
----
- Src/Modules/pcre.c | 10 ++--------
- Test/V07pcre.ztst  | 11 +++++++++++
- 2 files changed, 13 insertions(+), 8 deletions(-)
-
-diff --git a/Src/Modules/pcre.c b/Src/Modules/pcre.c
-index 6289e003e..46875a59b 100644
---- a/Src/Modules/pcre.c
-+++ b/Src/Modules/pcre.c
-@@ -47,8 +47,6 @@ zpcre_utf8_enabled(void)
- #if defined(MULTIBYTE_SUPPORT) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
-     static int have_utf8_pcre = -1;
- 
--    /* value can toggle based on MULTIBYTE, so don't
--     * be too eager with caching */
-     if (have_utf8_pcre < -1)
- 	return 0;
- 
-@@ -56,15 +54,11 @@ zpcre_utf8_enabled(void)
- 	return 0;
- 
-     if ((have_utf8_pcre == -1) &&
--        (!strcmp(nl_langinfo(CODESET), "UTF-8"))) {
--
--	if (pcre_config(PCRE_CONFIG_UTF8, &have_utf8_pcre))
-+	(pcre_config(PCRE_CONFIG_UTF8, &have_utf8_pcre))) {
- 	    have_utf8_pcre = -2; /* erk, failed to ask */
-     }
- 
--    if (have_utf8_pcre < 0)
--	return 0;
--    return have_utf8_pcre;
-+    return (have_utf8_pcre == 1) && (!strcmp(nl_langinfo(CODESET), "UTF-8"));
- 
- #else
-     return 0;
-diff --git a/Test/V07pcre.ztst b/Test/V07pcre.ztst
-index ca13419e5..22a0b64c7 100644
---- a/Test/V07pcre.ztst
-+++ b/Test/V07pcre.ztst
-@@ -162,3 +162,14 @@
-     echo $match[2] )
- 0:regression for segmentation fault, workers/38307
- >test
-+
-+  LANG_SAVE=$LANG
-+  [[ é =~ '^.\z' ]]; echo $?
-+  LANG=C
-+  [[ é =~ '^..\z' ]]; echo $?
-+  LANG=$LANG_SAVE
-+  [[ é =~ '^.\z' ]]; echo $?
-+0:swich between C/UTF-8 locales
-+>0
-+>0
-+>0
--- 
-2.41.0
-

diff --git a/0005-zsh-port-to-pcre2.patch b/0005-zsh-port-to-pcre2.patch
deleted file mode 100644
index fd8ea0e..0000000
--- a/0005-zsh-port-to-pcre2.patch
+++ /dev/null
@@ -1,641 +0,0 @@
-From b62e911341c8ec7446378b477c47da4256053dc0 Mon Sep 17 00:00:00 2001
-From: Oliver Kiddle <opk@zsh.org>
-Date: Sat, 13 May 2023 00:53:32 +0200
-Subject: [PATCH] 51723: migrate pcre module to pcre2
-
- Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
----
- Src/Modules/pcre.c | 223 ++++++++++++++++++---------------------------
- Test/V07pcre.ztst  |  13 ++-
- configure.ac       |  20 ++--
- 3 files changed, 109 insertions(+), 149 deletions(-)
-
-diff --git a/Src/Modules/pcre.c b/Src/Modules/pcre.c
-index 46875a59b..079ecc2c5 100644
---- a/Src/Modules/pcre.c
-+++ b/Src/Modules/pcre.c
-@@ -34,11 +34,11 @@
- #define CPCRE_PLAIN 0
- 
- /**/
--#if defined(HAVE_PCRE_COMPILE) && defined(HAVE_PCRE_EXEC)
--#include <pcre.h>
-+#if defined(HAVE_PCRE2_COMPILE_8) && defined(HAVE_PCRE2_H)
-+#define PCRE2_CODE_UNIT_WIDTH 8
-+#include <pcre2.h>
- 
--static pcre *pcre_pattern;
--static pcre_extra *pcre_hints;
-+static pcre2_code *pcre_pattern;
- 
- /**/
- static int
-@@ -54,8 +54,8 @@ zpcre_utf8_enabled(void)
- 	return 0;
- 
-     if ((have_utf8_pcre == -1) &&
--	(pcre_config(PCRE_CONFIG_UTF8, &have_utf8_pcre))) {
--	    have_utf8_pcre = -2; /* erk, failed to ask */
-+       (pcre2_config(PCRE2_CONFIG_UNICODE, &have_utf8_pcre))) {
-+           have_utf8_pcre = -2; /* erk, failed to ask */
-     }
- 
-     return (have_utf8_pcre == 1) && (!strcmp(nl_langinfo(CODESET), "UTF-8"));
-@@ -69,115 +69,87 @@ zpcre_utf8_enabled(void)
- static int
- bin_pcre_compile(char *nam, char **args, Options ops, UNUSED(int func))
- {
--    int pcre_opts = 0, pcre_errptr, target_len;
--    const char *pcre_error;
-+    uint32_t pcre_opts = 0;
-+    int target_len;
-+    int pcre_error;
-+    PCRE2_SIZE pcre_offset;
-     char *target;
-     
--    if(OPT_ISSET(ops,'a')) pcre_opts |= PCRE_ANCHORED;
--    if(OPT_ISSET(ops,'i')) pcre_opts |= PCRE_CASELESS;
--    if(OPT_ISSET(ops,'m')) pcre_opts |= PCRE_MULTILINE;
--    if(OPT_ISSET(ops,'x')) pcre_opts |= PCRE_EXTENDED;
--    if(OPT_ISSET(ops,'s')) pcre_opts |= PCRE_DOTALL;
-+    if (OPT_ISSET(ops, 'a')) pcre_opts |= PCRE2_ANCHORED;
-+    if (OPT_ISSET(ops, 'i')) pcre_opts |= PCRE2_CASELESS;
-+    if (OPT_ISSET(ops, 'm')) pcre_opts |= PCRE2_MULTILINE;
-+    if (OPT_ISSET(ops, 'x')) pcre_opts |= PCRE2_EXTENDED;
-+    if (OPT_ISSET(ops, 's')) pcre_opts |= PCRE2_DOTALL;
-     
-     if (zpcre_utf8_enabled())
--	pcre_opts |= PCRE_UTF8;
--
--#ifdef HAVE_PCRE_STUDY
--    if (pcre_hints)
--#ifdef PCRE_CONFIG_JIT
--	pcre_free_study(pcre_hints);
--#else
--	pcre_free(pcre_hints);
--#endif
--    pcre_hints = NULL;
--#endif
-+	pcre_opts |= PCRE2_UTF;
- 
-     if (pcre_pattern)
--	pcre_free(pcre_pattern);
-+	pcre2_code_free(pcre_pattern);
-     pcre_pattern = NULL;
- 
-     target = ztrdup(*args);
-     unmetafy(target, &target_len);
- 
--    if ((int)strlen(target) != target_len) {
--	zwarnnam(nam, "embedded NULs in PCRE pattern terminate pattern");
--    }
--
--    pcre_pattern = pcre_compile(target, pcre_opts, &pcre_error, &pcre_errptr, NULL);
-+    pcre_pattern = pcre2_compile((PCRE2_SPTR) target, (PCRE2_SIZE) target_len,
-+	    pcre_opts, &pcre_error, &pcre_offset, NULL);
- 
-     free(target);
- 
-     if (pcre_pattern == NULL)
-     {
--	zwarnnam(nam, "error in regex: %s", pcre_error);
-+	PCRE2_UCHAR buffer[256];
-+	pcre2_get_error_message(pcre_error, buffer, sizeof(buffer));
-+	zwarnnam(nam, "error in regex: %s", buffer);
- 	return 1;
-     }
-     
-     return 0;
- }
- 
--/**/
--#ifdef HAVE_PCRE_STUDY
--
- /**/
- static int
- bin_pcre_study(char *nam, UNUSED(char **args), UNUSED(Options ops), UNUSED(int func))
- {
--    const char *pcre_error;
--
-     if (pcre_pattern == NULL)
-     {
- 	zwarnnam(nam, "no pattern has been compiled for study");
- 	return 1;
-     }
--    
--    if (pcre_hints)
--#ifdef PCRE_CONFIG_JIT
--	pcre_free_study(pcre_hints);
--#else
--	pcre_free(pcre_hints);
--#endif
--    pcre_hints = NULL;
- 
--    pcre_hints = pcre_study(pcre_pattern, 0, &pcre_error);
--    if (pcre_error != NULL)
--    {
--	zwarnnam(nam, "error while studying regex: %s", pcre_error);
--	return 1;
-+    int jit = 0;
-+    if (!pcre2_config(PCRE2_CONFIG_JIT, &jit) && jit) {
-+	if (pcre2_jit_compile(pcre_pattern, PCRE2_JIT_COMPLETE) < 0) {
-+	    zwarnnam(nam, "error while studying regex");
-+	    return 1;
-+	}
-     }
-     
-     return 0;
- }
- 
--/**/
--#else /* !HAVE_PCRE_STUDY */
--
--# define bin_pcre_study bin_notavail
--
--/**/
--#endif /* !HAVE_PCRE_STUDY */
--
--/**/
- static int
--zpcre_get_substrings(char *arg, int *ovec, int captured_count, char *matchvar,
--		     char *substravar, int want_offset_pair, int matchedinarr,
--		     int want_begin_end)
-+zpcre_get_substrings(char *arg, pcre2_match_data *mdata, int captured_count,
-+	char *matchvar, char *substravar, int want_offset_pair,
-+	int matchedinarr, int want_begin_end)
- {
--    char **captures, *match_all, **matches;
-+    PCRE2_SIZE *ovec;
-+    char *match_all, **matches;
-     char offset_all[50];
-     int capture_start = 1;
- 
-     if (matchedinarr) {
--	/* bash-style captures[0] entire-matched string in the array */
-+	/* bash-style ovec[0] entire-matched string in the array */
- 	capture_start = 0;
-     }
- 
--    /* captures[0] will be entire matched string, [1] first substring */
--    if (!pcre_get_substring_list(arg, ovec, captured_count, (const char ***)&captures)) {
--	int nelem = arrlen(captures)-1;
-+    /* ovec[0] will be entire matched string, [1] first substring */
-+    ovec = pcre2_get_ovector_pointer(mdata);
-+    if (ovec) {
-+	int nelem = captured_count - 1;
- 	/* Set to the offsets of the complete match */
- 	if (want_offset_pair) {
--	    sprintf(offset_all, "%d %d", ovec[0], ovec[1]);
-+	    sprintf(offset_all, "%ld %ld", ovec[0], ovec[1]);
- 	    setsparam("ZPCRE_OP", ztrdup(offset_all));
- 	}
- 	/*
-@@ -186,7 +158,7 @@ zpcre_get_substrings(char *arg, int *ovec, int captured_count, char *matchvar,
- 	 * ovec is length 2*(1+capture_list_length)
- 	 */
- 	if (matchvar) {
--	    match_all = metafy(captures[0], ovec[1] - ovec[0], META_DUP);
-+	    match_all = metafy(arg + ovec[0], ovec[1] - ovec[0], META_DUP);
- 	    setsparam(matchvar, match_all);
- 	}
- 	/*
-@@ -201,16 +173,12 @@ zpcre_get_substrings(char *arg, int *ovec, int captured_count, char *matchvar,
- 	 */
- 	if (substravar &&
- 	    (!want_begin_end || nelem)) {
--	    char **x, **y;
-+	    char **x;
- 	    int vec_off, i;
--	    y = &captures[capture_start];
- 	    matches = x = (char **) zalloc(sizeof(char *) * (captured_count+1-capture_start));
--	    for (i = capture_start; i < captured_count; i++, y++) {
-+	    for (i = capture_start; i < captured_count; i++) {
- 		vec_off = 2*i;
--		if (*y)
--		    *x++ = metafy(*y, ovec[vec_off+1]-ovec[vec_off], META_DUP);
--		else
--		    *x++ = NULL;
-+		*x++ = metafy(arg + ovec[vec_off], ovec[vec_off+1]-ovec[vec_off], META_DUP);
- 	    }
- 	    *x = NULL;
- 	    setaparam(substravar, matches);
-@@ -247,7 +215,8 @@ zpcre_get_substrings(char *arg, int *ovec, int captured_count, char *matchvar,
- 	    setiparam("MEND", offs + !isset(KSHARRAYS) - 1);
- 	    if (nelem) {
- 		char **mbegin, **mend, **bptr, **eptr;
--		int i, *ipair;
-+		int i;
-+		size_t *ipair;
- 
- 		bptr = mbegin = zalloc(sizeof(char*)*(nelem+1));
- 		eptr = mend = zalloc(sizeof(char*)*(nelem+1));
-@@ -287,8 +256,6 @@ zpcre_get_substrings(char *arg, int *ovec, int captured_count, char *matchvar,
- 		setaparam("mend", mend);
- 	    }
- 	}
--
--	pcre_free_substring_list((const char **)captures);
-     }
- 
-     return 0;
-@@ -314,7 +281,8 @@ getposint(char *instr, char *nam)
- static int
- bin_pcre_match(char *nam, char **args, Options ops, UNUSED(int func))
- {
--    int ret, capcount, *ovec, ovecsize, c;
-+    int ret, c;
-+    pcre2_match_data *pcre_mdata = NULL;
-     char *matched_portion = NULL;
-     char *plaintext = NULL;
-     char *receptacle = NULL;
-@@ -344,36 +312,30 @@ bin_pcre_match(char *nam, char **args, Options ops, UNUSED(int func))
-     /* For the entire match, 'Return' the offset byte positions instead of the matched string */
-     if(OPT_ISSET(ops,'b')) want_offset_pair = 1;
- 
--    if ((ret = pcre_fullinfo(pcre_pattern, pcre_hints, PCRE_INFO_CAPTURECOUNT, &capcount)))
--    {
--	zwarnnam(nam, "error %d in fullinfo", ret);
--	return 1;
--    }
--
--    ovecsize = (capcount+1)*3;
--    ovec = zalloc(ovecsize*sizeof(int));
--
-     plaintext = ztrdup(*args);
-     unmetafy(plaintext, &subject_len);
- 
-     if (offset_start > 0 && offset_start >= subject_len)
--	ret = PCRE_ERROR_NOMATCH;
--    else
--	ret = pcre_exec(pcre_pattern, pcre_hints, plaintext, subject_len, offset_start, 0, ovec, ovecsize);
-+	ret = PCRE2_ERROR_NOMATCH;
-+    else {
-+	pcre_mdata = pcre2_match_data_create_from_pattern(pcre_pattern, NULL);
-+	ret = pcre2_match(pcre_pattern, (PCRE2_SPTR) plaintext, subject_len,
-+		offset_start, 0, pcre_mdata, NULL);
-+    }
- 
-     if (ret==0) return_value = 0;
--    else if (ret==PCRE_ERROR_NOMATCH) /* no match */;
-+    else if (ret == PCRE2_ERROR_NOMATCH) /* no match */;
-     else if (ret>0) {
--	zpcre_get_substrings(plaintext, ovec, ret, matched_portion, receptacle,
-+	zpcre_get_substrings(plaintext, pcre_mdata, ret, matched_portion, receptacle,
- 			     want_offset_pair, 0, 0);
- 	return_value = 0;
-     }
-     else {
--	zwarnnam(nam, "error in pcre_exec [%d]", ret);
-+	zwarnnam(nam, "error in pcre2_match [%d]", ret);
-     }
-     
--    if (ovec)
--	zfree(ovec, ovecsize*sizeof(int));
-+    if (pcre_mdata)
-+	pcre2_match_data_free(pcre_mdata);
-     zsfree(plaintext);
- 
-     return return_value;
-@@ -383,17 +345,19 @@ bin_pcre_match(char *nam, char **args, Options ops, UNUSED(int func))
- static int
- cond_pcre_match(char **a, int id)
- {
--    pcre *pcre_pat;
--    const char *pcre_err;
-+    pcre2_code *pcre_pat = NULL;
-+    int pcre_err;
-+    PCRE2_SIZE pcre_erroff;
-     char *lhstr, *rhre, *lhstr_plain, *rhre_plain, *avar, *svar;
--    int r = 0, pcre_opts = 0, pcre_errptr, capcnt, *ov, ovsize;
-+    int r = 0, pcre_opts = 0;
-+    pcre2_match_data *pcre_mdata = NULL;
-     int lhstr_plain_len, rhre_plain_len;
-     int return_value = 0;
- 
-     if (zpcre_utf8_enabled())
--	pcre_opts |= PCRE_UTF8;
-+	pcre_opts |= PCRE2_UTF;
-     if (isset(REMATCHPCRE) && !isset(CASEMATCH))
--	pcre_opts |= PCRE_CASELESS;
-+	pcre_opts |= PCRE2_CASELESS;
- 
-     lhstr = cond_str(a,0,0);
-     rhre = cond_str(a,1,0);
-@@ -401,9 +365,6 @@ cond_pcre_match(char **a, int id)
-     rhre_plain = ztrdup(rhre);
-     unmetafy(lhstr_plain, &lhstr_plain_len);
-     unmetafy(rhre_plain, &rhre_plain_len);
--    pcre_pat = NULL;
--    ov = NULL;
--    ovsize = 0;
- 
-     if (isset(BASHREMATCH)) {
- 	svar = NULL;
-@@ -415,27 +376,27 @@ cond_pcre_match(char **a, int id)
- 
-     switch(id) {
- 	 case CPCRE_PLAIN:
--		if ((int)strlen(rhre_plain) != rhre_plain_len) {
--		    zwarn("embedded NULs in PCRE pattern terminate pattern");
--		}
--		pcre_pat = pcre_compile(rhre_plain, pcre_opts, &pcre_err, &pcre_errptr, NULL);
--		if (pcre_pat == NULL) {
--		    zwarn("failed to compile regexp /%s/: %s", rhre, pcre_err);
-+		if (!(pcre_pat = pcre2_compile((PCRE2_SPTR) rhre_plain,
-+			(PCRE2_SIZE) rhre_plain_len, pcre_opts,
-+			&pcre_err, &pcre_erroff, NULL)))
-+		{
-+		    PCRE2_UCHAR buffer[256];
-+		    pcre2_get_error_message(pcre_err, buffer, sizeof(buffer));
-+		    zwarn("failed to compile regexp /%s/: %s", rhre, buffer);
- 		    break;
- 		}
--                pcre_fullinfo(pcre_pat, NULL, PCRE_INFO_CAPTURECOUNT, &capcnt);
--    		ovsize = (capcnt+1)*3;
--		ov = zalloc(ovsize*sizeof(int));
--    		r = pcre_exec(pcre_pat, NULL, lhstr_plain, lhstr_plain_len, 0, 0, ov, ovsize);
--		/* r < 0 => error; r==0 match but not enough size in ov
-+		pcre_mdata = pcre2_match_data_create_from_pattern(pcre_pat, NULL);
-+		r = pcre2_match(pcre_pat, (PCRE2_SPTR8) lhstr_plain, lhstr_plain_len,
-+			0, 0, pcre_mdata, NULL);
-+		/* r < 0 => error; r==0 match but not enough size in match data
- 		 * r > 0 => (r-1) substrings found; r==1 => no substrings
- 		 */
-     		if (r==0) {
--		    zwarn("reportable zsh problem: pcre_exec() returned 0");
-+		    zwarn("reportable zsh problem: pcre2_match() returned 0");
- 		    return_value = 1;
- 		    break;
- 		}
--	        else if (r==PCRE_ERROR_NOMATCH) {
-+		else if (r == PCRE2_ERROR_NOMATCH) {
- 		    return_value = 0; /* no match */
- 		    break;
- 		}
-@@ -444,7 +405,7 @@ cond_pcre_match(char **a, int id)
- 		    break;
- 		}
-                 else if (r>0) {
--		    zpcre_get_substrings(lhstr_plain, ov, r, svar, avar, 0,
-+		    zpcre_get_substrings(lhstr_plain, pcre_mdata, r, svar, avar, 0,
- 					 isset(BASHREMATCH),
- 					 !isset(BASHREMATCH));
- 		    return_value = 1;
-@@ -457,10 +418,10 @@ cond_pcre_match(char **a, int id)
- 	free(lhstr_plain);
-     if(rhre_plain)
- 	free(rhre_plain);
-+    if (pcre_mdata)
-+	pcre2_match_data_free(pcre_mdata);
-     if (pcre_pat)
--	pcre_free(pcre_pat);
--    if (ov)
--	zfree(ov, ovsize*sizeof(int));
-+	pcre2_code_free(pcre_pat);
- 
-     return return_value;
- }
-@@ -489,11 +450,11 @@ static struct builtin bintab[] = {
- 
- static struct features module_features = {
-     bintab, sizeof(bintab)/sizeof(*bintab),
--#if defined(HAVE_PCRE_COMPILE) && defined(HAVE_PCRE_EXEC)
-+#if defined(HAVE_PCRE2_COMPILE_8) && defined(HAVE_PCRE2_H)
-     cotab, sizeof(cotab)/sizeof(*cotab),
--#else /* !(HAVE_PCRE_COMPILE && HAVE_PCRE_EXEC) */
-+#else /* !(HAVE_PCRE2_COMPILE_8 && HAVE_PCRE2_H) */
-     NULL, 0,
--#endif /* !(HAVE_PCRE_COMPILE && HAVE_PCRE_EXEC) */
-+#endif /* !(HAVE_PCRE2_COMPILE_8 && HAVE_PCRE2_H) */
-     NULL, 0,
-     NULL, 0,
-     0
-@@ -540,19 +501,9 @@ cleanup_(Module m)
- int
- finish_(UNUSED(Module m))
- {
--#if defined(HAVE_PCRE_COMPILE) && defined(HAVE_PCRE_EXEC)
--#ifdef HAVE_PCRE_STUDY
--    if (pcre_hints)
--#ifdef PCRE_CONFIG_JIT
--	pcre_free_study(pcre_hints);
--#else
--	pcre_free(pcre_hints);
--#endif
--    pcre_hints = NULL;
--#endif
--
-+#if defined(HAVE_PCRE2_COMPILE_8) && defined(HAVE_PCRE2_H)
-     if (pcre_pattern)
--	pcre_free(pcre_pattern);
-+	pcre2_code_free(pcre_pattern);
-     pcre_pattern = NULL;
- #endif
- 
-diff --git a/Test/V07pcre.ztst b/Test/V07pcre.ztst
-index 22a0b64c7..6eb366964 100644
---- a/Test/V07pcre.ztst
-+++ b/Test/V07pcre.ztst
-@@ -117,12 +117,17 @@
- >78884; ZPCRE_OP: 25 30
- >90210; ZPCRE_OP: 31 36
- 
--# Embedded NULs allowed in plaintext, but not in RE (although \0 as two-chars allowed)
-+# Embedded NULs allowed in plaintext, in RE, pcre supports \0 as two-chars
-   [[ $'a\0bc\0d' =~ '^(a\0.)(.+)$' ]]
-   print "${#MATCH}; ${#match[1]}; ${#match[2]}"
- 0:ensure ASCII NUL passes in and out of matched plaintext
- >6; 3; 3
- 
-+# PCRE2 supports NULs also in the RE
-+  [[ $'a\0b\0c' =~ $'^(.\0)+' ]] && print "${#MATCH}; ${#match[1]}"
-+0:ensure ASCII NUL works also in the regex
-+>4; 2
-+
- # Ensure the long-form infix operator works
-   [[ foo -pcre-match ^f..$ ]]
-   print $?
-@@ -169,7 +174,11 @@
-   [[ é =~ '^..\z' ]]; echo $?
-   LANG=$LANG_SAVE
-   [[ é =~ '^.\z' ]]; echo $?
--0:swich between C/UTF-8 locales
-+0:switch between C/UTF-8 locales
- >0
- >0
- >0
-+
-+  [[ abc =~ 'a(d*)bc' ]] && print "$#MATCH; $#match; ${#match[1]}"
-+0:empty capture
-+>3; 1; 0
-diff --git a/configure.ac b/configure.ac
-index d8a17791a..4710d1659 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -438,7 +438,7 @@ fi],
- 
- dnl Do you want to look for pcre support?
- AC_ARG_ENABLE(pcre,
--AS_HELP_STRING([--enable-pcre],[enable the search for the pcre library (may create run-time library dependencies)]))
-+AS_HELP_STRING([--enable-pcre],[enable the search for the pcre2 library (may create run-time library dependencies)]))
- 
- dnl Do you want to look for capability support?
- AC_ARG_ENABLE(cap,
-@@ -652,13 +652,12 @@ AC_HEADER_SYS_WAIT
- 
- oldcflags="$CFLAGS"
- if test x$enable_pcre = xyes; then
--AC_CHECK_PROG([PCRECONF], pcre-config, pcre-config)
--dnl Typically (meaning on this single RedHat 9 box in front of me)
--dnl pcre-config --cflags produces a -I output which needs to go into
-+AC_CHECK_PROG([PCRECONF], pcre2-config, pcre2-config)
-+dnl pcre2-config --cflags may produce a -I output which needs to go into
- dnl CPPFLAGS else configure's preprocessor tests don't pick it up,
- dnl producing a warning.
--if test "x$ac_cv_prog_PCRECONF" = xpcre-config; then
--  CPPFLAGS="$CPPFLAGS `pcre-config --cflags`"
-+if test "x$ac_cv_prog_PCRECONF" = xpcre2-config; then
-+  CPPFLAGS="$CPPFLAGS `pcre2-config --cflags`"
- fi
- fi
- 
-@@ -668,9 +667,10 @@ AC_CHECK_HEADERS(sys/time.h sys/times.h sys/select.h termcap.h termio.h \
- 		 locale.h errno.h stdio.h stdarg.h varargs.h stdlib.h \
- 		 unistd.h sys/capability.h \
- 		 utmp.h utmpx.h sys/types.h pwd.h grp.h poll.h sys/mman.h \
--		 netinet/in_systm.h pcre.h langinfo.h wchar.h stddef.h \
-+		 netinet/in_systm.h langinfo.h wchar.h stddef.h \
- 		 sys/stropts.h iconv.h ncurses.h ncursesw/ncurses.h \
- 		 ncurses/ncurses.h)
-+AC_CHECK_HEADERS([pcre2.h],,,[#define PCRE2_CODE_UNIT_WIDTH 8])
- if test x$dynamic = xyes; then
-   AC_CHECK_HEADERS(dlfcn.h)
-   AC_CHECK_HEADERS(dl.h)
-@@ -948,9 +948,7 @@ if test "x$ac_found_iconv" = "xyes"; then
- fi
- 
- if test x$enable_pcre = xyes; then
--dnl pcre-config should probably be employed here
--dnl AC_SEARCH_LIBS(pcre_compile, pcre)
--  LIBS="`$ac_cv_prog_PCRECONF --libs` $LIBS"
-+  LIBS="`$ac_cv_prog_PCRECONF --libs8` $LIBS"
- fi
- 
- dnl ---------------------
-@@ -1313,7 +1311,7 @@ AC_CHECK_FUNCS(strftime strptime mktime timelocal \
- 	       pathconf sysconf \
- 	       tgetent tigetflag tigetnum tigetstr setupterm initscr resize_term \
- 	       getcchar setcchar waddwstr wget_wch win_wch use_default_colors \
--	       pcre_compile pcre_study pcre_exec \
-+	       pcre2_compile_8 \
- 	       nl_langinfo \
- 	       erand48 open_memstream \
- 	       posix_openpt \
--- 
-2.41.0
-
-From 10bdbd8b5b0b43445aff23dcd412f25cf6aa328a Mon Sep 17 00:00:00 2001
-From: Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
-Date: Tue, 20 Jun 2023 18:14:27 +0900
-Subject: [PATCH] 51877: do not build pcre module if pcre2-config is not found
-
- Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
----
- Src/Modules/pcre.mdd |  2 +-
- configure.ac         | 31 +++++++++++++++++++------------
- 2 files changed, 20 insertions(+), 13 deletions(-)
-
-diff --git a/Src/Modules/pcre.mdd b/Src/Modules/pcre.mdd
-index 6eb3c691b..3e1579117 100644
---- a/Src/Modules/pcre.mdd
-+++ b/Src/Modules/pcre.mdd
-@@ -1,5 +1,5 @@
- name=zsh/pcre
--link=`if test x$enable_pcre = xyes && (pcre-config --version >/dev/null 2>/dev/null); then echo dynamic; else echo no; fi`
-+link=`if test x$enable_pcre = xyes; then echo dynamic; else echo no; fi`
- load=no
- 
- autofeatures="b:pcre_compile b:pcre_study b:pcre_match"
-diff --git a/configure.ac b/configure.ac
-index ba76f9a60..c5263035e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -440,6 +440,17 @@ dnl Do you want to look for pcre support?
- AC_ARG_ENABLE(pcre,
- AS_HELP_STRING([--enable-pcre],[enable the search for the pcre2 library (may create run-time library dependencies)]))
- 
-+AC_ARG_VAR(PCRE_CONFIG, [pathname of pcre2-config if it is not in PATH])
-+if test "x$enable_pcre" = xyes; then
-+  AC_CHECK_PROG([PCRE_CONFIG], pcre2-config, pcre2-config)
-+  if test "x$PCRE_CONFIG" = x; then
-+    enable_pcre=no
-+    AC_MSG_WARN([pcre2-config not found: pcre module is disabled.])
-+    AC_MSG_NOTICE(
-+      [Set PCRE_CONFIG to pathname of pcre2-config if it is not in PATH.])
-+  fi
-+fi
-+
- dnl Do you want to look for capability support?
- AC_ARG_ENABLE(cap,
- AS_HELP_STRING([--enable-cap],[enable the search for POSIX capabilities (may require additional headers to be added by hand)]))
-@@ -655,15 +666,12 @@ AC_HEADER_DIRENT
- AC_HEADER_STAT
- AC_HEADER_SYS_WAIT
- 
--oldcflags="$CFLAGS"
--if test x$enable_pcre = xyes; then
--AC_CHECK_PROG([PCRECONF], pcre2-config, pcre2-config)
- dnl pcre2-config --cflags may produce a -I output which needs to go into
- dnl CPPFLAGS else configure's preprocessor tests don't pick it up,
- dnl producing a warning.
--if test "x$ac_cv_prog_PCRECONF" = xpcre2-config; then
--  CPPFLAGS="$CPPFLAGS `pcre2-config --cflags`"
--fi
-+if test "x$enable_pcre" = xyes; then
-+  CPPFLAGS="`$PCRE_CONFIG --cflags` $CPPFLAGS"
-+  AC_CHECK_HEADERS([pcre2.h],,,[#define PCRE2_CODE_UNIT_WIDTH 8])
- fi
- 
- AC_CHECK_HEADERS(sys/time.h sys/times.h sys/select.h termcap.h termio.h \
-@@ -675,7 +683,6 @@ AC_CHECK_HEADERS(sys/time.h sys/times.h sys/select.h termcap.h termio.h \
- 		 netinet/in_systm.h langinfo.h wchar.h stddef.h \
- 		 sys/stropts.h iconv.h ncurses.h ncursesw/ncurses.h \
- 		 ncurses/ncurses.h)
--AC_CHECK_HEADERS([pcre2.h],,,[#define PCRE2_CODE_UNIT_WIDTH 8])
- if test x$dynamic = xyes; then
-   AC_CHECK_HEADERS(dlfcn.h)
-   AC_CHECK_HEADERS(dl.h)
-@@ -952,10 +959,6 @@ if test "x$ac_found_iconv" = "xyes"; then
-     [Define as const if the declaration of iconv() needs const.])
- fi
- 
--if test x$enable_pcre = xyes; then
--  LIBS="`$ac_cv_prog_PCRECONF --libs8` $LIBS"
--fi
--
- dnl ---------------------
- dnl CHECK TERMCAP LIBRARY
- dnl ---------------------
-@@ -1316,7 +1319,6 @@ AC_CHECK_FUNCS(strftime strptime mktime timelocal \
- 	       pathconf sysconf \
- 	       tgetent tigetflag tigetnum tigetstr setupterm initscr resize_term \
- 	       getcchar setcchar waddwstr wget_wch win_wch use_default_colors \
--	       pcre2_compile_8 \
- 	       nl_langinfo \
- 	       erand48 open_memstream \
- 	       posix_openpt \
-@@ -1371,6 +1373,11 @@ if test x$zsh_cv_func_realpath_accepts_null = xyes; then
-   AC_DEFINE(REALPATH_ACCEPTS_NULL)
- fi
- 
-+if test x$enable_pcre = xyes; then
-+  LIBS="`$PCRE_CONFIG --libs8` $LIBS"
-+  AC_CHECK_FUNCS(pcre2_compile_8)
-+fi
-+
- if test x$enable_cap = xyes; then
-   AC_CHECK_FUNCS(cap_get_proc)
- fi
--- 
-2.42.0
-

diff --git a/0006-zsh-support-texinfo-7.0.patch b/0006-zsh-support-texinfo-7.0.patch
deleted file mode 100644
index c68bd26..0000000
--- a/0006-zsh-support-texinfo-7.0.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From ecd3f9c9506c7720dc6c0833dc5d5eb00e4459c4 Mon Sep 17 00:00:00 2001
-From: Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
-Date: Mon, 19 Jun 2023 11:19:25 +0900
-Subject: [PATCH] 51862: support texinfo-7.0
-
-Upstream-commit: ecd3f9c9506c7720dc6c0833dc5d5eb00e4459c4
-Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
----
- Doc/Makefile.in | 3 ++-
- configure.ac    | 5 +++++
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/Doc/Makefile.in b/Doc/Makefile.in
-index 136b080d6..dabe11fe3 100644
---- a/Doc/Makefile.in
-+++ b/Doc/Makefile.in
-@@ -43,6 +43,7 @@ TEXI2DVI = @TEXI2DVI@
- DVIPS = dvips
- TEXI2PDF  = @TEXI2PDF@
- TEXI2HTML = @TEXI2HTML@
-+SET_TEXI2ANY_VAR = @SET_TEXI2ANY_VAR@
- PAPERSIZE = @PAPERSIZE@
- 
- .SUFFIXES: .yo .1
-@@ -266,7 +267,7 @@ texi2html.conf: $(sdir_top)/Config/version.mk
- 	d=`echo $(VERSION_DATE)`; \
- 	v="<font size=\"-1\">Zsh version $(VERSION), released on $$d.</font>"; \
- 	case '$(TEXI2HTML)' in \
--	  *texi2any*) echo "set_from_init_file('PRE_BODY_CLOSE','$$v');" ;; \
-+	  *texi2any*) echo "$(SET_TEXI2ANY_VAR)('PRE_BODY_CLOSE','$$v');" ;; \
- 	  *) echo "\$$PRE_BODY_CLOSE = '$$v';" ;; \
- 	esac > $@
- 
-diff --git a/configure.ac b/configure.ac
-index 4710d1659..ba76f9a60 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -623,7 +623,12 @@ fi
- 
- if test x"$TEXI2HTML" = xtexi2any; then
-   TEXI2HTML='texi2any -c TEXI2HTML=1'
-+  case `texi2any --version 2>/dev/null | sed -e 's/^.*) *//' -e 1q` in
-+    [[1-6]].*) SET_TEXI2ANY_VAR=set_from_init_file ;;
-+    *) SET_TEXI2ANY_VAR=texinfo_set_from_init_file ;;
-+  esac
- fi
-+AC_SUBST(SET_TEXI2ANY_VAR)
- 
- case "$LC_PAPER" in
-   ??_US*) PAPERSIZE=us ;;
--- 
-2.42.0
-

diff --git a/0007-zsh-configure-c99.patch b/0007-zsh-configure-c99.patch
deleted file mode 100644
index c4b3623..0000000
--- a/0007-zsh-configure-c99.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Avoid incompatible pointer types in terminfo global variable checks.
-Some compilers reject these incompatible pointer types, causing the
-checks to always fail, when these variables are in fact available.
-
-Submitted upstream: <https://www.zsh.org/mla/workers/2023/msg01112.html>
-
-diff --git a/configure.ac b/configure.ac
-index a58242f453b4a8f3..5534f42df14eb28c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1769,27 +1769,27 @@ if test x$zsh_cv_path_term_header != xnone; then
-   fi
- 
-   AC_MSG_CHECKING(if boolcodes is available)
--  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = boolcodes; puts(*test);]])],[AC_DEFINE(HAVE_BOOLCODES) boolcodes=yes],[boolcodes=no])
-+  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)boolcodes; puts(*test);]])],[AC_DEFINE(HAVE_BOOLCODES) boolcodes=yes],[boolcodes=no])
-   AC_MSG_RESULT($boolcodes)
- 
-   AC_MSG_CHECKING(if numcodes is available)
--  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = numcodes; puts(*test);]])],[AC_DEFINE(HAVE_NUMCODES) numcodes=yes],[numcodes=no])
-+  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)numcodes; puts(*test);]])],[AC_DEFINE(HAVE_NUMCODES) numcodes=yes],[numcodes=no])
-   AC_MSG_RESULT($numcodes)
- 
-   AC_MSG_CHECKING(if strcodes is available)
--  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = strcodes; puts(*test);]])],[AC_DEFINE(HAVE_STRCODES) strcodes=yes],[strcodes=no])
-+  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)strcodes; puts(*test);]])],[AC_DEFINE(HAVE_STRCODES) strcodes=yes],[strcodes=no])
-   AC_MSG_RESULT($strcodes)
- 
-   AC_MSG_CHECKING(if boolnames is available)
--  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = boolnames; puts(*test);]])],[AC_DEFINE(HAVE_BOOLNAMES) boolnames=yes],[boolnames=no])
-+  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)boolnames; puts(*test);]])],[AC_DEFINE(HAVE_BOOLNAMES) boolnames=yes],[boolnames=no])
-   AC_MSG_RESULT($boolnames)
- 
-   AC_MSG_CHECKING(if numnames is available)
--  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = numnames; puts(*test);]])],[AC_DEFINE(HAVE_NUMNAMES) numnames=yes],[numnames=no])
-+  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)numnames; puts(*test);]])],[AC_DEFINE(HAVE_NUMNAMES) numnames=yes],[numnames=no])
-   AC_MSG_RESULT($numnames)
- 
-   AC_MSG_CHECKING(if strnames is available)
--  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = strnames; puts(*test);]])],[AC_DEFINE(HAVE_STRNAMES) strnames=yes],[strnames=no])
-+  AC_LINK_IFELSE([AC_LANG_PROGRAM([[$term_includes]], [[char **test = (char **)strnames; puts(*test);]])],[AC_DEFINE(HAVE_STRNAMES) strnames=yes],[strnames=no])
-   AC_MSG_RESULT($strnames)
- 
-   dnl There are apparently defective terminal library headers on some

diff --git a/0008-zsh-deletefilelist-segfault.patch b/0008-zsh-deletefilelist-segfault.patch
deleted file mode 100644
index 8abaab1..0000000
--- a/0008-zsh-deletefilelist-segfault.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From d3edf318306e37d2d96c4e4ea442d10207722e94 Mon Sep 17 00:00:00 2001
-From: Bart Schaefer <schaefer@zsh.org>
-Date: Sun, 12 Feb 2023 09:52:39 -0800
-Subject: [PATCH] 51404: Nullify filelist after deleting (fix segfault)
-
-Cherry-picked-by: Lukáš Zaoral <lzaoral@redhat.com>
-Upstream-commit: d3edf318306e37d2d96c4e4ea442d10207722e94
----
- Src/jobs.c | 8 ++++++--
- 1 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/Src/jobs.c b/Src/jobs.c
-index 4863962b9..59ddd952e 100644
---- a/Src/jobs.c
-+++ b/Src/jobs.c
-@@ -1372,8 +1372,10 @@ cleanfilelists(void)
- 
-     DPUTS(shell_exiting >= 0, "BUG: cleanfilelists() before exit");
-  
--    for (i = 1; i <= maxjob; i++)
-+    for (i = 1; i <= maxjob; i++) {
- 	deletefilelist(jobtab[i].filelist, 0);
-+	jobtab[i].filelist = 0;
-+    }
- }
- 
- /**/
-@@ -1531,8 +1533,10 @@ havefiles(void)
-     int i;
- 
-     for (i = 1; i <= maxjob; i++)
--	if (jobtab[i].stat && jobtab[i].filelist)
-+	if (jobtab[i].stat && jobtab[i].filelist &&
-+	    peekfirst(jobtab[i].filelist)) {
- 	    return 1;
-+	}
-     return 0;
- 
- }
--- 
-2.43.0
-

diff --git a/0009-zsh-support-dnf5.patch b/0009-zsh-support-dnf5.patch
deleted file mode 100644
index 8e55aa0..0000000
--- a/0009-zsh-support-dnf5.patch
+++ /dev/null
@@ -1,846 +0,0 @@
-commit b70b241cc5ca88cc129ff9ba14f8af2e889b90e6
-Author: Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
-Date:   Thu Nov 21 12:26:51 2024 +0900
-
-    53238 (+53239 Mikael): support dnf5
-    
-    some options etc for dnf4 are also updated
-
-diff --git a/Completion/Redhat/Command/_dnf b/Completion/Redhat/Command/_dnf
-index a5edf8564..c41795adf 100644
---- a/Completion/Redhat/Command/_dnf
-+++ b/Completion/Redhat/Command/_dnf
-@@ -1,7 +1,11 @@
--#compdef dnf dnf-2 dnf-3
--#
--# based on dnf-4.2.18
--#
-+#compdef dnf dnf-2 dnf-3 dnf4
-+# based on dnf-4.21.1
-+
-+# avoid 'dnf --version' since it's rather slow for dnf4
-+if [[ $service = dnf && $commands[dnf]:P = */dnf5 ]]; then
-+  _dnf5 "$@" && return 0
-+  return 1
-+fi
- 
- _dnf_helper() {
-   # Get the pathname of the python executable from the 1st line of dnf-2/dnf-3.
-@@ -68,25 +72,23 @@ _dnf_packages_or_rpms() {
-   fi
- }
- 
--_dnf_groups_caching_policy() {
--  # TODO: Are there any reliable ways to validate the cache?
--  local -a newer=( "$1"(Nmw-1) )    # rebuild if more than a week old
--  return $#newer
--}
--
- _dnf_groups() {
--  local package_groups update_policy expl
--  zstyle -s ":completion:${curcontext}:" cache-policy update_policy
--  if [[ -z "$update_policy" ]]; then
--    zstyle ":completion:${curcontext}:" cache-policy _dnf_groups_caching_policy
--  fi
--  if _cache_invalid dnf-groups || ! _retrieve_cache dnf-groups; then
--    # this can be very slow
--    package_groups=( ${${${(M)${(f)"$(_call_program package-groups \
--                     $service group list -v 2>/dev/null)"}:# *}#*\(}%\)*} )
--    _store_cache dnf-groups package_groups
--  fi
--  _wanted package-groups expl 'package group' compadd "$@" -a package_groups
-+  # optional option: -T (available|installed)
-+  local selected line groups section=none
-+  zparseopts -D -E - T:=selected
-+  selected=$selected[2]
-+  [[ -z $selected ]] && selected=all
-+  # XXX hidden groups are not included.
-+  # --installed and --available can't be specified with --hidden
-+  for line in ${(f)"$(_call_program package-groups
-+                      $service group list --$selected -qCv 2>/dev/null)"}; do
-+    # a line for each group is of the following form:
-+    # '  description of the group (group-id)'
-+    if [[ $line = \ ##(#b)(*)\(([-_[:alnum:]]#)\) ]]; then
-+      groups+=( "${match[2]}:${match[1]}" )
-+    fi
-+  done
-+  _describe -t groups "$selected group" groups
- }
- 
- _dnf_repoquery() {
-@@ -194,7 +196,7 @@ _dnf_repository_packages() {
-   fi
- }
- 
--_dnf() {
-+_dnf4() {
-   local cache_file="/var/cache/dnf/packages.db"
-   local -a opts=(
-     '(-6)-4[resolve to IPv4 addresses only]'
-@@ -226,7 +228,7 @@ _dnf() {
-     '*'{-x+,--exclude=}'[exclude specified packages]: : _sequence _dnf_packages -T all'
-     '--forcearch=[force the use of the specified arch]:arch: '
-     '(-)'{-h,--help}'[show the help message]'
--    '--installroot=[set install root]:directory:_files -/'
-+    '--installroot=[set install root]:directory:_files -/ -g "/*"'
-     '--newpackage[include newpackage relevant packages]'
-     '--noautoremove[disable removal of dependencies that are no longer used]'
-     '--nobest[do not limit transactions to best candidates]'
-@@ -289,18 +291,21 @@ _dnf_command() {
-   if (( CURRENT == 1 )); then
-     _describe -t dnf-commands 'dnf command' dnf_cmds
-   else
--    local curcontext=$curcontext cur=$words[CURRENT] cmd tmp expl ret=1
-+    local cur=$words[CURRENT] cmd=$words[1] tmp expl ret=1
-     # Deal with aliases (not comprehensive)
--    case $words[1] in
-+    case $cmd in
-       check-updgrade) cmd=check-update;;
-       distrosync|dsync) cmd=distro-sync;;
-       dg) cmd=downgrade;;
-+      dsync) cmd=distro-sync;;
-       erase|rm) cmd=remove;;
-       groups|grp) cmd=group;;
-       hist) cmd=history;;
-       in) cmd=install;;
-+      if) cmd=info;;
-+      ls) cmd=list;;
-       mc) cmd=makecache;;
--      prov|whatprovides) cmd=provides;;
-+      prov|whatprovides|wp) cmd=provides;;
-       rei) cmd=reinstall;;
-       repoinfo) cmd=repolist;;
-       rq) cmd=repoquery;;
-@@ -308,9 +313,9 @@ _dnf_command() {
-       sh) cmd=shell;;
-       update|up) cmd=upgrade;;
-       update-minimal|up-min) cmd=upgrade-minimal;;
--      *) cmd="${${dnf_cmds[(r)$words[1]:*]%%:*}}";;
-+      upif) cmd=updateinfo;;
-     esac
--    (( $#cmd )) && curcontext="${curcontext%:*:*}:dnf-${cmd}:"
-+    local curcontext="${curcontext%:*:*}:dnf-${cmd}:"
- 
-     case $cmd in
-       alias)
-@@ -337,11 +342,9 @@ _dnf_command() {
-         _describe -t options 'option' tmp && ret=0
-         ;;
-       check-update)
--        if [[ $cur = -* ]]; then
--          _wanted options expl 'option' compadd - --changelogs && ret=0
--        else
--          _dnf_packages -T installed && ret=0
--        fi
-+        _arguments : \
-+          '--changelogs[also print changelog delta of packages]' \
-+          '*: :_dnf_packages -T installed' && ret=0
-         ;;
-       clean)
-         tmp=(
-@@ -368,23 +371,38 @@ _dnf_command() {
-             "mark:mark a group for installation or removal"
-           )
-           _describe -t subcommands 'subcommand' tmp && ret=0
--        elif (( CURRENT == 3 )) && [[ $cur = -* ]]; then
--          if [[ $words[2] == install ]]; then
--            _wanted options expl 'option' compadd - --with-optional && ret=0
--          elif [[ $words[2] == list ]]; then
--            tmp=(
--              '--available:show only available groups'
--              '--installed:show only installed groups'
--              '--hidden:show also hidden groups'
--              '--ids:show also ID of groups'
--            )
--            _describe -t options 'option' tmp && ret=0
--          fi
--        elif (( CURRENT == 3 )) && [[ $words[2] == mark ]]; then
--          _wanted subcommands expl 'subcommand' \
--                  compadd - install remove && ret=0
-         else
--          _dnf_groups && ret=0
-+          case $words[2] in
-+            summary)
-+              _arguments : '--hidden' '2: :_dnf_groups' && ret=0
-+              ;;
-+            info)
-+              _dnf_groups && ret=0
-+              ;;
-+            install)
-+              _arguments : '--with-optional[also include optional packages]' \
-+                            '*: :_dnf_groups -T available' && ret=0
-+              ;;
-+            list)
-+              _arguments : \
-+                '(--installed)--available[show only available groups]' \
-+                '(--available)--installed[show only installed groups]' \
-+                '--hidden[show also hidden groups]' \
-+                {--ids,-v}'[show also ID of groups]' \
-+                '*: :_dnf_groups' && ret=0
-+              ;;
-+            remove|upgrade)
-+              _dnf_groups -T installed && ret=0
-+              ;;
-+            mark)
-+              if (( CURRENT == 3 )); then
-+                _wanted subcommands expl 'subcommand' \
-+                        compadd - install remove && ret=0
-+              else
-+                _dnf_groups && ret=0
-+              fi
-+              ;;
-+          esac
-         fi
-         ;;
-       help)
-@@ -399,13 +417,32 @@ _dnf_command() {
-             "list:list transactions"
-             "info:describe the given transactions"
-             "redo:repeat the specified transaction"
-+            "replay:replay transaction stored in the specified file"
-             "rollback:undo all since the given transaction"
-+            "store:store the specified transaction in file"
-             "undo:undo transactions"
-             "userinstalled:list all packages installed by users"
-           )
-           _describe -t subcommands 'subcommand' tmp && ret=0
--        elif [[ $words[2] != userinstalled ]]; then
--          _message 'transaction' && ret=0
-+        else
-+          case $words[2] in
-+            list)
-+              _arguments : '--reverse[output history in reverse order]' \
-+                '*:transaction ID or ID..ID: ' && ret=0 ;;
-+            info)
-+              _message 'transaction ID or ID..ID' && ret=0 ;;
-+            redo|rollback|undo)
-+              _message 'transaction or package' && ret=0 ;;
-+            replay)
-+              _arguments : \
-+                "--ignore-installed[don't check for installed packages being in the same state as recorded in transaction]" \
-+                "--ignore-extras[don't check for extra packages pulled into the transaction on the target system]" \
-+                '--skip-unavailable[skip packages that are in transaction but not in target system]' \
-+                '2:transaction file:_files' && ret=0 ;;
-+            store)
-+              _arguments : {-o+,--output=}'[store in specified file]: :_files' \
-+                          '2:transaction: ' && ret=0 ;;
-+          esac
-         fi
-         ;;
-       info|list)
-@@ -413,7 +450,7 @@ _dnf_command() {
-           if [[ $cur = -* ]]; then
-             tmp=( --all --available --installed --extras
-                   --obsoletes --upgrades --autoremove --recent )
--            _wanted options expl 'option' compadd -a tmp
-+            _wanted options expl 'option' compadd -a tmp && ret=0
-           else
-             _dnf_packages -T all && ret=0
-           fi
-@@ -449,6 +486,7 @@ _dnf_command() {
-           tmp=(
-             'install:install a module profile including its packages'
-             'update:update packages associated with an active module stream'
-+            'switch-to:switch to a module stream and change versions of installed packages'
-             'remove:remove installed module profiles and their packages'
-             'enable:enable a module stream'
-             'disable:disable a module with all its streams'
-@@ -502,7 +540,7 @@ _dnf_command() {
-         _dnf_repoquery && ret=0
-         ;;
-       repository-packages)
--        _dnf_repository_packages
-+        _dnf_repository_packages && ret=0
-         ;;
-       search)
-         if [[ $cur = -* ]]; then
-@@ -531,6 +569,7 @@ _dnf_command() {
-           '--list[display list of advisories]'
-           '--info[display detailed information of advisories]'
-           + '(availability)'
-+          '-all[include advisories about any versions of installed packages]'
-           '--available[limit to advisories about newer versions of installed packages]'
-           '--installed[limit to advisories about equal or older versions of installed packages]'
-           '--updates[limit to advisories about newer and available versions of installed packages]'
-@@ -548,4 +587,4 @@ _dnf_command() {
-   fi
- }
- 
--_dnf "$@"
-+_dnf4 "$@"
-diff --git a/Completion/Redhat/Command/_dnf5 b/Completion/Redhat/Command/_dnf5
-new file mode 100644
-index 000000000..e194dd5a7
---- /dev/null
-+++ b/Completion/Redhat/Command/_dnf5
-@@ -0,0 +1,570 @@
-+#compdef dnf5
-+# based on dnf-5.2.6.2
-+
-+# utility functions
-+
-+_dnf5_helper() {
-+  _call_program specs $service "${(q-)@}" "${(q-)PREFIX}\*" \
-+        -qC --assumeno --nogpgcheck 2>/dev/null </dev/null
-+}
-+
-+_dnf5_repositories() {
-+  # required option: -T (all|disabled|enabled)
-+  local selected expl
-+  zparseopts -D -E - T:=selected
-+  selected=$selected[2]
-+  _wanted $selected-repositories expl "$selected repository" \
-+    compadd "$@" - "${(@)${(f)$(_dnf5_helper repo list --$selected)}[2,-1]%% *}"
-+}
-+
-+_dnf5_packages() {
-+  # required option: -T (all|available|installed|upgradable)
-+  local selected opt expl
-+  zparseopts -D -E - T:=selected
-+  selected=$selected[2]
-+  case $selected in
-+    all)        opt='' ;;   # option --all does not exist
-+    upgradable) opt='--upgrades' ;;
-+    *)          opt="--$selected" ;;
-+  esac
-+  _wanted $selected-packages expl "$selected package" \
-+    compadd "$@" - $(_dnf5_helper repoquery $opt --qf='%{name} ')
-+}
-+
-+_dnf5_rpm_files() {
-+  local expl
-+  _wanted rpm-files expl 'rpm file' _files -g '(#i)*.rpm(-.)'
-+}
-+
-+_dnf5_packages_or_rpms() {
-+  if [[ "$words[CURRENT]" = (*/*|\~*) ]]; then # if looks like a path name
-+    _dnf_rpm_files
-+  else
-+    _dnf5_packages "$@"
-+  fi
-+}
-+
-+_dnf5_groups() {
-+  # optional option: -T (available|installed)
-+  local update_policy selected line pat groups
-+  zparseopts -D -E - T:=selected
-+  selected=$selected[2]
-+  if [[ -z $selected ]]; then
-+    selected=all
-+    opt=  # option --all does not exist
-+  else
-+    opt=--$selected
-+  fi
-+  # XXX hidden groups are not included
-+  for line in ${${(f)"$(_dnf5_helper group list $opt)"}[2,-1]}; do
-+    line=( ${(z)line} )
-+    groups+=( "$line[1]:$line[2,-2]" )
-+  done
-+  _describe -t $selected-groups "$selected group" groups
-+}
-+
-+_dnf5_environments() {
-+  local line envs
-+  for line in ${${(f)"$(_dnf5_helper environment list)"}[2,-1]}; do
-+    line=( ${(z)line} )
-+    envs+=( "$line[1]:$line[2,-2]" )
-+  done
-+  _describe -t environments 'environment' envs
-+}
-+
-+# completers for (several) dnf commands
-+
-+_dnf5-advisory () {
-+  _arguments : \
-+    $advisory_opts \
-+    '--contains-pkgs=[only show advisories containing specified packages]: : _sequence _dnf5_packages -T installed' \
-+    + '(with)' \
-+    '--with-cve[show only advisories referencing CVE ticket]' \
-+    '--with-bz[show only advisories referencing Bugzilla ticket]' \
-+    + '(type)' \
-+    '--all[show all advisories]' \
-+    '--available[show advisories containing newer versions of installed packages (default)]' \
-+    '--installed[show advisories containing equal and older version of installed packages]' \
-+    '--updates[show advisories containing upgradable packages]' \
-+    + args \
-+    ':subcommand:(list info summary)' '*:advisory spec:'
-+}
-+
-+_dnf5-group() {
-+  local -a tmp
-+  if (( CURRENT == 2 )); then
-+    tmp=(
-+      'list:list all matching groups'
-+      'info:print detailed information about groups'
-+      'install:install packages from specified groups'
-+      'remove:remove removable packages in specified groups'
-+      'upgrade:upgrade specified groups and packages in them'
-+    )
-+    _describe -t subcommands 'subcommand' tmp
-+  else
-+    case $words[2] in
-+      list|info)
-+        tmp=(
-+          '(--installed)--available[show only available groups]'
-+          '(--available)--installed[show only installed groups]'
-+          '--hidden[show also hidden groups]'
-+          '--contains-pkgs=[show only groups containing specified packages]: : _sequence _dnf5_packages -T all'
-+          '*: : _dnf5_groups'
-+        )
-+        ;;
-+      install)
-+        tmp=( $common_opts
-+              '--with-optional[include optional packages from the groups]'
-+              '*: : _dnf5_groups -T available' )
-+        ;|
-+      upgrade)
-+        tmp=( ${common_opts:#--skip-broken*}
-+              '*: : _dnf5_groups -T installed' )
-+        ;|
-+      remove)
-+        tmp=( $offline_opts
-+              '*: : _dnf5_groups -T installed' )
-+        ;|
-+      install|remove)
-+        tmp+=( '--no-packages[operate on groups only, not manipulate any packages]' )
-+        ;|
-+      install|upgrade)
-+        tmp+=( $downgrade_opts )
-+        ;;
-+    esac
-+    _arguments : $tmp
-+  fi
-+}
-+
-+_dnf5-history() {
-+  local -a tmp
-+  if (( CURRENT == 2 )); then
-+    tmp=(
-+      'list:list info about recorded transactions'
-+      'info:print detailed about specific transactions'
-+      'undo:revert all actions from the specified transaction'
-+      'redo:repeat the specified transaction'
-+      'rollback:undo all transactions performed after the specified transaction'
-+      'store:store the transaction into a directory'
-+    )
-+    _describe -t subcommands 'subcommand' tmp
-+  else
-+    case $words[2] in
-+      list|info)
-+        tmp=( '--reverse[reverse the order of transactions in output]' )
-+        ;;
-+      undo|rollback|redo)
-+        tmp=( '--skip-unavailable[allow skipping impossible actions]' )
-+        ;|
-+      undo|rollback)
-+        tmp+=( $replay_opts )
-+        ;;
-+      store)
-+        tmp=( {-o,--output=}'[directory for storing the transaction (default ./transaction)]: : _directories')
-+    esac
-+    _arguments : $tmp '2:transaction:( )'
-+  fi
-+}
-+
-+_dnf5-mark() {
-+  local -a tmp
-+  if (( CURRENT == 2 )); then
-+    tmp=(
-+      'user:mark the package as user-installed'
-+      'dependency:mark the package as a dependency'
-+      'weak:mark the package as a weak dependency'
-+      'group:mark the package as installed by the specified group'
-+    )
-+    _describe -t subcommands 'subcommand' tmp
-+  else
-+    tmp=(
-+      '--skip-unavailable[skip packages not installed on the system]'
-+      '--store=[store the transaction in specified directory]: : _directories'
-+    )
-+    if [[ $words[2] = group ]]; then
-+        tmp+=( '2:group-id: _dnf5_groups -T installed' )
-+    fi
-+    _arguments : $tmp '*: : _dnf5_packages -T installed'
-+  fi
-+}
-+
-+_dnf5-module() {
-+  local -a tmp
-+  if (( CURRENT == 2 )); then
-+    tmp=(
-+      'list:list module streams'
-+      'info:print details about module streams'
-+      'enable:enable module streams'
-+      'disable:disable modules including all their streams'
-+      "reset:reset module state so it's no longer enabled or disabled"
-+    )
-+    _describe -t subcommands 'subcommand' tmp
-+  elif (( CURRENT == 3 )) && [[ $cur = -* ]]; then
-+    case $words[2] in
-+      list|info) tmp=( --enabled --disabled ) ;;
-+      enable)    tmp=( --skip-broken --skip-unavailable ) ;;
-+      *)         tmp=( --skip-unavailable ) ;;
-+    esac
-+    _wanted options expl 'option' compadd -a tmp
-+  else
-+    _message 'module spec'
-+  fi
-+}
-+
-+_dnf5-offline() {  # also used by the 'system-upgrade' command
-+  local -a tmp
-+  if (( CURRENT == 2 )); then
-+    tmp=(
-+      'clean:remove any stored offline transactions and cached packages'
-+      'log:list boots during which offline transaction was attempted'
-+      'reboot:prepare the system for offline transaction and reboot'
-+    )
-+    if [[ $cmd = offline ]]; then
-+      tmp+=( 'status:show status of the current offline transaction' )
-+    else
-+      tmp+=( 'download:download all packages needed for upgrade' )
-+    fi
-+    _describe -t subcommands 'subcommand' tmp && ret=0
-+  else
-+    case $words[2] in
-+      download)
-+        _arguments : \
-+          '--releasever=[the version to upgrade to]:version number:' \
-+          '--no-downgrade:do not install packages older than currently installed' '*: :' && ret=0
-+        ;;
-+      log)
-+        _arguments : \
-+          '--number=[show log of transaction specified by number]:transaction number:' '*: :' && ret=0
-+        ;;
-+      reboot)
-+        _wanted options expl 'option' compadd -- --poweroff && ret=0
-+        ;;
-+    esac
-+  fi
-+}
-+
-+_dnf5-repoquery() {
-+  local v
-+  local -a opts=(
-+    $advisory_opts
-+    '--arch=[limit results to specified architectures]:list of archs: '
-+    '--available[limit results to available packages]'
-+    '--disable-modular-filtering[include packages of inactive module streams]'
-+    '--duplicates[limit to installed duplicate packages]'
-+    '--exactdeps[limit to packages that require capability specified by ==what{requires,depends}]'
-+    '--extras[limit to installed packages that are not present in any available repository]'
-+    '--file=[limit results to packages which own specified file]:list of files: _sequence _files'
-+    '--installed[query installed packages]'
-+    '--installonly[limit to installed installonly packages]'
-+    '--latest-limit=[limit to latest packages of specified number]:number:'
-+    '--leaves[limit to groups of installed packages not required by other installed packages]'
-+    '--providers-of=[select packages that provide specified attribute]:attribute:(conflicts depends enhances obsoletes provides recommends requires requires_pre suggests supplement)'
-+    '--recent[limit to only recently changed packages]'
-+    '--recursive[make --whatrequires/--providers-of work recursively]'
-+    '--security[limit to packages in security advisories]'
-+    '--srpm[use the corresponding source RPM]'
-+    '--unneeded[limit to unneeded installed packages]'
-+    '--upgrades[limit to available packages that provide upgrade for installed packages]'
-+    '--userinstalled[limit to packages that are not installed as dependencies]'
-+    '--whatdepends=[limit to packages that require, enhance, recommend, suggest of supplement specified capability]:list of capability:'
-+    '--whatconflicts=[limit to packages that conflicts with specified capabilities]:list of capability: '
-+  )
-+  for v in enhance obsolete provide recommend require suggest supplement; do
-+    opts+=( "--what${v}s=[limit to packages that $v specified capabilities]:list of capability: ")
-+  done
-+  # mutually exclusive formating options
-+  opts+=(
-+    + '(format)'
-+    '--conflicts[display capabilities that the package conflicts with]'
-+    '--depends[display capabilities that the package depends on, enables, recommends, suggests or supplements]'
-+    '--files[show files in the package]'
-+    '--requires-pre[display capabilities required to run pre/post scripts of the package]'
-+    '--sourcerpm[display source RPM of the package]'
-+    '--location[display location of the package]'
-+    '--info[show detailed information about the package]'
-+    '--changelogs[print the package changelogs]'
-+    '(- *)--querytags[list tags recognized by --queryformat]'
-+    '--queryformat=[specify output format]:format:'
-+  )
-+  for v in enhance obsolete provide recommend require suggest supplement; do
-+    opts+=( "--${v}s[display capabilities ${v}ed by the package]" )
-+  done
-+
-+  _arguments : '*: : _dnf5_packages -T all' $opts
-+}
-+
-+# dnf commands
-+
-+_dnf5_commands() {
-+  local -a dnf_cmds=(
-+    'advisory:manage advisories'
-+    'autoremove:remove unneeded packages'
-+    'check:check for problems in package database'
-+    'check-upgrade:check for available package upgrades'
-+    'clean:remove or invalidate cached data'
-+    'distro-sync:up/downgrade installed packages to the latest available'
-+    'downgrade:downgrade packages'
-+    'download:download packages'
-+    'environment:manage comps environments'
-+    'group:manage comps groups'
-+    'history:manage transaction history'
-+    'info:provide detailed information about packages'
-+    'install:install packages'
-+    'leaves:list groups of leaf packages'
-+    'list:list installed or available packages'
-+    'makecache:generate the metadata cache'
-+    'mark:change the reason of an installed package'
-+    'module:manage modules'
-+    'offline:manage offline transactions'
-+    'provides:find what package provides the given value'
-+    'reinstall:reinstall packages'
-+    'remove:remove packages'
-+    'replay:replay stored transactions'
-+    'repo:manage repositories'
-+    'repoquery:search for packages in repositories'
-+    'search:search for packages using keywords'
-+    'swap:remove software and install another in the single transaction'
-+    'system-upgrade:upgrade the system to a new major release'
-+    'upgrade:upgrade packages'
-+    'versionlock:protect packages from updates to newer versions'
-+  )
-+  _describe -t dnf-commands 'dnf command' dnf_cmds
-+}
-+
-+# subcommands and options
-+
-+_dnf5_subcmds_opts() {
-+  local cur=$words[CURRENT] cmd=$words[1] expl ret=1
-+  local -a tmp
-+  # common options
-+  local -a offline_opts=(
-+    '(--store)--offline[store the transaction to be performed offline]'
-+    '(--offline)--store=[store the transaction in specified directory]: : _directories'
-+  )
-+  local -a common_opts=(
-+    $offline_opts
-+    '--allowerasing[allow erasing of installed packages]'
-+    '--skip-broken[resolve dependency problems by skipping problematic packages]'
-+    "--skip-unavailable[skip packages that can't be synchronized]"
-+    '--downloadonly[download packages without executing transaction]'
-+  )
-+  local -a advisory_opts=(
-+    '--advisories=[consider only specified advisories]:list of advisories:'
-+    '--advisory-severities=[limit to advisories with specified severity]:severity:_sequence compadd - critical important moderate low none'
-+    '--bzs=[limit to advisories that fix specified Bugzilla ID]:list of Bugzilla ID:'
-+    '--cves=[limit to advisories that fix specified CVE ID]:list of CVD ID]:'
-+    '--security[limit to security advisories]'
-+    '--bugfix[limit to bugfix advisories]'
-+    '--enhancement[limit to enhancement advisories]'
-+    '--newpackage[limit to newpackage advisories]'
-+  )
-+  local -a downgrade_opts=(
-+    '(--no-allow-downgrade)--allow-downgrade[enable downgrade of dependencies]'
-+    '(--allow-downgrade)--no-allow-downgrade[disable downgrade of dependencies]'
-+  )
-+  local -a replay_opts=(
-+    '--ignore-extras[not consider extra packages]'
-+    '--ignore-installed[mismatches between installed and stored transaction are not errors]'
-+  )
-+  # Deal with some aliases (not comprehensive)
-+  case $cmd in
-+    check-updgrade) cmd=check-update;;
-+    dg) cmd=downgrade;;
-+    dsync) cmd=distro-sync;;
-+    grp) cmd=group;;
-+    if) cmd=info;;
-+    in) cmd=install;;
-+    ls) cmd=list;;
-+    mc) cmd=makecache;;
-+    rei) cmd=reinstall;;
-+    rm) cmd=remove ;;
-+    rq) cmd=repoquery;;
-+    se) cmd=search;;
-+    update|up) cmd=upgrade;;
-+  esac
-+  local curcontext="${curcontext%:*:*}:dnf-${cmd}:"
-+
-+  case $cmd in
-+    advisory|group|history|mark|module|offline|repoquery)
-+      _dnf5-$cmd && ret=0
-+      ;;
-+    system-upgrade)
-+      _dnf5-offline && ret=0
-+      ;;
-+    autoremove)
-+      _arguments : $offline_opts && ret=0
-+      ;;
-+    check)
-+      _arguments : \
-+        '--dependencies[show missing dependencies and conflicts]' \
-+        '--duplicates[show duplicated packages]' \
-+        '--obsoleted[show obsoleted packages]' && ret=0
-+      ;;
-+    check-upgrade)
-+      _arguments : \
-+        $advisory_opts \
-+        '--changelogs[print package changelogs]' \
-+        '--minimal[reports the lowest versions of packages that fix advisories]' \
-+        '*: : _dnf5_packages -T installed' && ret=0
-+      ;;
-+    clean)
-+      tmp=(
-+        'dbcache:remove cache files generated from the repository metadata'
-+        'expire-cache:mark the repository metadata expired'
-+        'metadata:remove the repository metadata'
-+        'packages:remove any cached packages'
-+        'all:clean all'
-+      )
-+      _describe -t cache-types 'cache type' tmp && ret=0
-+      ;;
-+    distro-sync)
-+      _arguments : $common_opts '*: : _dnf5_packages -T installed' && ret=0
-+      ;;
-+    downgrade)
-+      _arguments : \
-+        $common_opts $downgrade_opts \
-+        '*: : _dnf5_packages -T installed' && ret=0
-+      ;;
-+    download)
-+      _arguments : \
-+        '--arch=[limit to packages of specified architecture]:list of architectures:' \
-+        '--resolve[resolve and download needed dependencies]' \
-+        '--alldeps[with --resolve, also download already installed dependencies]' \
-+        '--destdir=[download to the specified directory]: : _directories' \
-+        '--srpm[download the source rpm]' \
-+        '--url[print the list of URLs where the rpms can be downloaded]' \
-+        '*--urlprotocol=[with --url, limit to specified protocols]:protocol:_sequence compadd - http https ftp file' \
-+        '*: : _dnf5_packages -T all' && ret=0
-+      ;;
-+    environment)
-+      _arguments : \
-+        '--available[show only available environments]' \
-+        '--installed[show only installed environments]' \
-+        ':subcommand:(list info)' \
-+        '*: : _dnf5_environments' && ret=0
-+      ;;
-+    info|list)
-+      _arguments : \
-+        '--showduplicates[show all versions of the packages]' \
-+        '*: : _dnf5_packages -T all' \
-+        + '(type)' \
-+        '--installed[list only installed packages]:*: : _dnf5_packages -T installed' \
-+        '--available[list only available packages]:*: : _dnf5_packages -T available' \
-+        '--extras[list only extras]' \
-+        '--obsoletes[list only installed but obsoleted packages]:*: : _dnf5_packages -T installed' \
-+        '--recent[list only recently added packages]' \
-+        '--upgrades[list only available upgrades of installed packages]:*: : _dnf5_packages -T upgradable' \
-+        '--autoremove[list only packages that will be autoremoved]:*: : _dnf5_packages -T installed' &&ret=0
-+      ;;
-+    install)
-+      _arguments : \
-+        $common_opts $downgrade_opts $advisory_opts \
-+        '*: : _dnf5_packages_or_rpms -T available' && ret=0
-+      ;;
-+    leaves|makecache)
-+      # nothing to complete
-+      ;;
-+    provides)
-+      _files && ret=0
-+      ;;
-+    reinstall)
-+      _arguments : \
-+        $common_opts $downgrade_opts \
-+        '*: : _dnf5_packages_or_rpms -T installed' && ret=0
-+      ;;
-+    remove)
-+      _arguments : \
-+        $offline_opts \
-+        '--no-autoremove[not remove dependencies that are no longer used]' \
-+        '*: : _dnf5_packages -T installed' && ret=0
-+      ;;
-+    replay)
-+      _arguments : \
-+        $replay_opts \
-+        ':transaction path:_directories' && ret=0
-+      ;;
-+    repo)
-+      _arguments : \
-+        '--all[show info about all repositories]' \
-+        '--enabled[show info only about enabled repositories]' \
-+        '--disabled[show info only about disabled repositories]' \
-+        ':subcommand:(list info)' && ret=0
-+      ;;
-+    search)
-+      _arguments : \
-+        '--all[search patterns also inside description and URL fields]' \
-+        '--showduplicates[show all versions of packages, not only the latest ones]' \
-+        '*:search pattern:' && ret=0
-+      ;;
-+    swap)
-+      _arguments : \
-+        $offline_opts \
-+        '--allowerasing[allow erasing of installed packages]' \
-+        ': : _dnf5_packages -T installed' \
-+        ': : _dnf5_packages -T available' && ret=0
-+      ;;
-+    upgrade)
-+      _arguments : \
-+        ${common_opts:#--skip-broken*} $downgrade_opts $advisory_opts \
-+        '--minimal[upgrade only to the lowest available versions that fix advisories]' \
-+        '--destdir=[specify directory into which downloading packages]: : _directories' \
-+      '*: : _dnf5_packages_or_rpms -T upgradable' && ret=0
-+      ;;
-+    versionlock)
-+      _arguments : \
-+        ':subcommand:(add exclude clear delete list)' \
-+        '*: : _dnf5_packages -T all' && ret=0
-+      ;;
-+  esac
-+  return ret
-+}
-+
-+# main completer
-+
-+_dnf5() {
-+  local curcontext="$curcontext" state state_descr line ret=1
-+  typeset -A opt_args
-+  local -a opts=(
-+    '(-y --assumeyes)--assumeno[answer no for all questions]'
-+    '--best[try the best available package version]'
-+    '(-C --cacheonly)'{-C,--cacheonly}"[run entirely from system cache, don't update cache]"
-+    '--comment=[add comment to transaction history]:comment:'
-+    '(-c --config)'{-c+,--config=}'[specify configuration file]:config file:_files'
-+    '--debugsolver[dump detailed solving results in file ./debugdata]'
-+    '*--disable-plugin=[disable specified plugins]:list of plugin names:'
-+    '(--repo)*--disable-repo=[disable specified repos]: : _sequence _dnf5_repositories -T enabled'
-+    '--dump-main-config[print main configuration values to stdout]'
-+    '*--dump-repo-config=[print repository configuration values to stdout]:repi id'
-+    '--dump-variables[print variable values to stdout]'
-+    '*--enable-plugin=[enable specified plugins]:list of plugin names:'
-+    '*--enable-repo=[enable additional repos]: : _sequence _dnf5_repositories -T disabled'
-+    '--forcearch=[force the use of the specified arch]:arch:'
-+    '(-)'{-h,--help}'[show the help message]'
-+    '--installroot=[set install root]: : _directories'
-+    '--no-best[do not limit transactions to best candidates]'
-+    '--no-docs[do not install documentation]'
-+    '--no-gpgcheck[skip checking GPG signatures on packages]'
-+    '--no-plugins[disable all plugins]'
-+    '(-q --quiet)'{-q,--quiet}'[show just the relevant content]'
-+    '--refresh[force refreshing metadata before running the command]'
-+    '--releasever=[override distribution release in config files]:release ver:'
-+    '(--disablerepo)*--repo=[enable just the specified repo]: : _sequence _dnf5_repositories -T all'
-+    '*--repofrompath=[specify additional repos]:repository_label,path_or_url: '
-+    '*--setopt=[override option in config file]:repoid.option=value:'
-+    '*--setvar=[override DNF5 variable value]'
-+    '--show-new-leaves[show newly installed leaf packages]'
-+    '--use-host-config[use config files and variables from host system]'
-+    '(- *)--version[show dnf version]'
-+    '(-y --assumeyes --assumeno)'{-y,--assumeyes}'[answer yes for all questions]'
-+    '*'{-x+,--exclude=}'[exclude specified packages from transaction]: : _sequence _dnf5_packages -T all'
-+  )
-+  _arguments -C -s : $opts ': :->command' '*:: :->cmd_args' && ret=0
-+
-+  case $state in
-+    command) _dnf5_commands && ret=0 ;;
-+    cmd_args) _dnf5_subcmds_opts && ret=0 ;;
-+  esac
-+  return ret
-+}
-+
-+_dnf5 "$@"

diff --git a/0010-zsh-fix-dnf5-completion-with-rpm-files.patch b/0010-zsh-fix-dnf5-completion-with-rpm-files.patch
deleted file mode 100644
index eacb810..0000000
--- a/0010-zsh-fix-dnf5-completion-with-rpm-files.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-commit 071e325c826a89b792056c3faf0c400b8c0c5738
-Author: Christoph Erhardt <christoph.erhardt@sicherha.de>
-Date:   Tue Sep 30 08:47:15 2025 +0900
-
-    53981: _dnf5: fix completion of local rpm files
-
-diff --git a/Completion/Redhat/Command/_dnf5 b/Completion/Redhat/Command/_dnf5
-index e194dd5a7..9cbf451a8 100644
---- a/Completion/Redhat/Command/_dnf5
-+++ b/Completion/Redhat/Command/_dnf5
-@@ -38,7 +38,7 @@ _dnf5_rpm_files() {
- 
- _dnf5_packages_or_rpms() {
-   if [[ "$words[CURRENT]" = (*/*|\~*) ]]; then # if looks like a path name
--    _dnf_rpm_files
-+    _dnf5_rpm_files
-   else
-     _dnf5_packages "$@"
-   fi

diff --git a/sources b/sources
index 747480c..bd494a5 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (zsh-5.9.tar.xz) = d9138b7f379ad942a5f46819d2dd52d31f3a1129f2a0d1b53d4c5cd43c318b60396da6d37c57c477b8e958fb750209aca0ae93f8c9dd42ac958de006a0ff067e
-SHA512 (zsh-5.9.tar.xz.asc) = b6a72f8dfd2ed9c25e4afa5b3d13b23c1bf0bceacfce3ad0fadf24a9df91382914f7322ef4ed8bfb4b68818fb18fe3973d22154a6cc638b46f02e30bafd93fcb
+SHA512 (zsh-5.9.1.tar.xz) = e16c13559262577e725b290c35ce6598d58c2acdd204eac619e8ed9b6a918bce39bfbf9d3ef4c5eb877af7d3279c8a4b15439eba6a38c4e4d47d5555d5f79872
+SHA512 (zsh-5.9.1.tar.xz.asc) = 8c9fb393de9b9ff84353ed35f812c8e05e6131c238fd233a2f6e3aa02b0644c7afd597a8b4e7a737152e4478d0d4dae7a5e42559047f100eb536049c4490ceeb

diff --git a/zsh-keyring.asc b/zsh-keyring.asc
new file mode 100644
index 0000000..da4b17f
--- /dev/null
+++ b/zsh-keyring.asc
@@ -0,0 +1,269 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFwswugBCADdkzua9HwC8Ip5zh7Z0/nJGKbMyq+cobXArhHos40taeidn0+v
+HRES5y6PHR+h56c9TpmJEp/bLCHP5pLvcSz/ETz7+Kk82pld63pOHejSxAQCu7Wv
+1NwrTu6TyKlZsNG1oZBxx2LkEN6k8Wy+88DlQqZoXOXafmhF+Sms6gv9DXa029sv
+B07EehAx02T+b02QwVVG/Pq9austmsTd9EcNcVNRDneD2LcdxCllbS5IamjVa+NW
+oeKZVqbsO71uUolwBvshFSBLPsSY8EZdGApjazQcY0lgkaRA/QlMOisyq2mjV6FY
+JXHrlI3WWWK2vROjb35AHiHEE/EVgb5RVpxxABEBAAG0E2RhbmEgPGRhbmFAZGFu
+YS5pcz6JAU4EEwEIADgWIQR8p+yq8GIWuQ+JQUas+BRsroy7xAUCXCzC6AIbAwUL
+CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCs+BRsroy7xA5XB/93EQqzs0as07U+
+gmPDpvE7JwIY4TrcvAS7RHgJ4sE+arR5uTziHixiHBQQMedbfV51Jxgws6WL0Ko8
+7K8h9sN2UGnXIc1lWuQ2FDshrcpSHZvLxL4Z7WC3Rj/Dq3/nuZZyljWQNHxg4BlO
+EJqe67F5kT2OI591oxB6L1E6F8sVsgxD7gBCPVl/8CsyZ7wkyW/gMRqrlYolJhpS
+B5C1zKJzvULQJKXDCh9DUyi7cKFtPyYfYtRWfWhKGz5Dhtt9qvBlxJzZufZ9QNQt
+oPhNGF34QaLWTCLRbtoVbNq2NlxalZ5Byhg/0pBcQc2w4C70jSxF3c+2oMEGQIbc
+5GJFgLpZuQENBFwswugBCAD5rIYdlLWHOMw+stWTRNquu3SZr+v7RRzreV9fOKN+
+lUiqwicU2uCX39s/q+2wtF536r+IS/53DrMAW8sxf8eroK+MBnJYtP3U8BnB3mag
+bTJXMjng2ZqZXvxzetXLyXR+38f+6WbJtV0ByDeFQQJYsFxOag3r6etxrzpwRFm0
+PL440fc0nxOxhxWWJcR0RKTMX87ymipi9mETYeZi7h9B3cDw8aIUz2O3s45TtNlA
+NI1MNMU4sAsc5i+w0zJON9gT+rWDYFj6BiEqnRoSK2XDm+WaJa3FwgW1WnHPTe+E
+RJFGT58DICU3ta6cCQPavZz/KALyj8GBJ+PydelIAv2rABEBAAGJATYEGAEIACAW
+IQR8p+yq8GIWuQ+JQUas+BRsroy7xAUCXCzC6AIbDAAKCRCs+BRsroy7xOgxB/40
+sp9xFq8L/59yRTeXSskOsGk3aUlSnACofcRCGgDSXV5GwWJ/G0O8krhHOISJKuxc
+vA0wLFq0WB/EafrKAPTSkrnxmq8noT3c8MpnFRSXHq3sOXkB4nqVEmUu/AAA0TbC
+HcwhFQExvK7O+funxIGU5vqHFeQGJ0VcgC/KZUEMNtVV8aZGvn7JzSxEIwHVXGLu
+5H7TnNWzLzkzIDVY9IJpTutsc6RMvv6BV8ooWBHSgzmh0MTqEjwNarHAMuffrAjE
+zIO3qi0YCaxSDVf2jrWyYpB2QntplmUoubB9s/ngCqVb4A3B7JxPmJuL/0XMUThn
+WZLWFpbLimyoUCfHoehZ
+=dR/Y
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+=KiyE
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+Qg719Q==
+=+Fbc
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQENBFZWC4cBCADgb7/oPoCs9SE+/jrzmDT7L+PbYLCygCExxp4mt3CsSzn5xefq
+NGU+aBJnvyongcsYrW173GumDjXCG3GBtnmqs3dFeoqnEsSZFMYiQ4ctmWh48P+W
+uQVQOWuh0CVS2OCFn37b5F9dy3oF6gJFdqbwOXJSgWMA/+StMGSkslTYFlG/JwZ1
+csk9jSwQw/yKDlTiFaqMwIwSXTK5fItSn3F0R+usgMhwRPu8gvK23tmEhnnwgmlR
+xfEwJCLqGnvlW74dRkCjY349GAG1IN2felFfHn0ok/Lbx7coKRoEvHaCVbmtPSmX
+Ps9axAV97wk37wS1dhEXcjxLb9GIZgptgo7DABEBAAG0LlBldGVyIFN0ZXBoZW5z
+b24gPHAudy5zdGVwaGVuc29uQG50bHdvcmxkLmNvbT6JATcEEwEIACEFAlZWC4cC
+GwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQpx2anUvbJ7NtaQf/RQ/RLvOG
+iI4XJp/C9JIVHfHL7I801uT8V3y/d2+DehFasR9T+6B/Mf5y22NI31i5XBQuK0Wo
+Zsi7F3bhNHyeVgO/p5JLBmxohByjL9f7B+k9Tt/DyWh66AVaCoam4ACR8TBOlNkD
+p/8U0zzrxE9fQrjjK/PzhpVe97LKScEAu2Zc/qUFp4eTAnlqyosTqvU64+n1PrNC
+CtZVYPnL17GCC4+S7yrh34Kllx+fkoHimTL/cUG+6+7sbmpUImpP+pgNEnL1IzBB
+ajZRl1581McMGhIH1TBYrEVnIhononoOO7qr1eahUCEhVvanyVTnSeTTVR0VgK4s
+joYLwDLM4XidgrkBDQRWVguHAQgA7JTI0botnBMfTAGff4Duoor5m0PuExQFCHcJ
+/df5SyUUskycMlGR73+IbcT2D/zBIFDv5ZhCdOdmIW3CHICK+Ws7N5+KSzlzC+Vf
+2LMmXuyJLhXeTqXI1ta6bIGjXeh5VA9Jd7B8dRQhCn1OrGbFhwtJSGejTmcWiLJW
++2GV9s44e9MlscMHvAk9QAvqrSUJoAkN3OCdgjcpDNVT8ek3NnjCD4xrBTxCcI1n
+KsJeOgNHPkbou9+eHY80amkAkRn2ZSI9n25WjhKAp9QGDNL5wqHLjgHP6WiEwumN
+DWPnPd+5FQHQXy1GHgH2BozfT1KZJ012T0Keuk/hnZJ/TVe4gwARAQABiQEfBBgB
+CAAJBQJWVguHAhsMAAoJEKcdmp1L2yez1T0H/jitvgACci+5PQG1djYwioQIui4J
+1nSg4HxW+4SCpSwlmH2LkKaF3WbjpPTRhYeMZ5zdOvGnjPUZCjGtWkWx0p+Jrpe/
+QIC3CNXerX9fpkr0K7+knqkb1RsjHU/YSsYTDDVJpL3BQOZzVocOjPa1YPTfTBU5
+tsQdA4RORi15LyAWcEAmR+X3qH2JM5pGP23hhOKnrFSSnfBP6ef1/jjRbfK5yItZ
+5DOf6i3WS40zxB67dlBlHZwOQuYA3Sr01hEz4CeAkpV7lQ1gKelm1ZmcFQI6yqcR
+PmVjIuxE1A/gTFe6LaAfCGA6/H1H6LLwWQ/rnUi/seMJ6aRkz/05dg7j5+E=
+=wOVS
+-----END PGP PUBLIC KEY BLOCK-----

diff --git a/zsh.spec b/zsh.spec
index 82a14a3..a705f04 100644
--- a/zsh.spec
+++ b/zsh.spec
@@ -1,49 +1,36 @@
 Summary: Powerful interactive shell
 Name: zsh
-Version: 5.9
-Release: 20%{?dist}
+Version: 5.9.1
+Release: 1%{?dist}
 License: MIT-Modern-Variant AND ISC AND GPL-2.0-only
 URL: http://zsh.sourceforge.net/
+
 Source0: https://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.xz
-Source1: zlogin.rhs
-Source2: zlogout.rhs
-Source3: zprofile.rhs
-Source4: zshrc.rhs
-Source5: zshenv.rhs
-Source6: dotzshrc
-Source7: dotzprofile
-
-# do not use egrep in tests to make them pass again
-Patch1: 0001-zsh-5.9-do-not-use-egrep-in-tests.patch
-# Upstream commit ab4d62eb975a4c4c51dd35822665050e2ddc6918
-Patch2: 0002-zsh-Use-int-main-in-test-c-codes.patch
+Source1: https://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.xz.asc
+Source2: zsh-keyring.asc
+
+Source3: zlogin.rhs
+Source4: zlogout.rhs
+Source5: zprofile.rhs
+Source6: zshrc.rhs
+Source7: zshenv.rhs
+Source8: dotzshrc
+Source9: dotzprofile
+
 # upstream commit a84fdd7c8f77935ecce99ff2b0bdba738821ed79
-Patch3: 0003-zsh-fix-module-loading-problem-with-full-RELRO.patch
-# upstream commit 1b421e4978440234fb73117c8505dad1ccc68d46
-Patch4: 0004-zsh-enable-PCRE-locale-switching.patch
-# upstream commit b62e911341c8ec7446378b477c47da4256053dc0 and 10bdbd8b5b0b43445aff23dcd412f25cf6aa328a
-Patch5: 0005-zsh-port-to-pcre2.patch
-# upstream commit ecd3f9c9506c7720dc6c0833dc5d5eb00e4459c4
-Patch6: 0006-zsh-support-texinfo-7.0.patch
-# upstream commit 4c89849c98172c951a9def3690e8647dae76308f
-Patch7: 0007-zsh-configure-c99.patch
-# upstream commit d3edf318306e37d2d96c4e4ea442d10207722e94
-Patch8: 0008-zsh-deletefilelist-segfault.patch
-# upstream commit b70b241cc5ca88cc129ff9ba14f8af2e889b90e6
-Patch9: 0009-zsh-support-dnf5.patch
-# upstream commit 071e325c826a89b792056c3faf0c400b8c0c5738
-Patch10: 0010-zsh-fix-dnf5-completion-with-rpm-files.patch
+Patch1: 0003-zsh-fix-module-loading-problem-with-full-RELRO.patch
 
 # downstream patch for rhbz#2449939
 # already fixed upstream in a major refactor of term color attribute handling
 Patch100: 0100-zsh-_IO_putc-SIGSEGV.patch
 
-BuildRequires: autoconf
 BuildRequires: coreutils
 BuildRequires: gawk
 BuildRequires: gcc
-BuildRequires: gdbm-devel
 BuildRequires: glibc-langpack-ja
+BuildRequires: gpgverify
+BuildRequires: groff
+BuildRequires: hostname
 BuildRequires: libcap-devel
 BuildRequires: make
 BuildRequires: ncurses-devel
@@ -54,14 +41,6 @@ BuildRequires: texinfo
 Requires(post): grep
 Requires(postun): coreutils grep
 
-# the hostname package is not available on RHEL-6
-%if 12 < 0%{?fedora} || 6 < 0%{?rhel}
-BuildRequires: hostname
-%else
-# /bin and /usr/bin are separate directories on RHEL-6
-%define _bindir /bin
-%endif
-
 Provides: /bin/zsh
 
 %description
@@ -87,8 +66,8 @@ mechanism, and more.
 This package contains the Zsh manual in html format.
 
 %prep
+%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
 %autosetup -p1
-autoreconf -fiv
 
 # enable parallel build
 sed -e 's|^\.NOTPARALLEL|#.NOTPARALLEL|' -i 'Config/defs.mk.in'
@@ -131,13 +110,13 @@ rm -f $RPM_BUILD_ROOT%{_bindir}/zsh-%{version}
 rm -f $RPM_BUILD_ROOT%{_infodir}/dir
 
 mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}
-for i in %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5}; do
+for i in %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7}; do
     install -m 644 $i $RPM_BUILD_ROOT%{_sysconfdir}/"$(basename $i .rhs)"
 done
 
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/skel
-install -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/skel/.zshrc
-install -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/skel/.zprofile
+install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/skel/.zshrc
+install -m 644 %{SOURCE9} $RPM_BUILD_ROOT%{_sysconfdir}/skel/.zprofile
 
 # This is just here to shut up rpmlint, and is very annoying.
 # Note that we can't chmod everything as then rpmlint will complain about
@@ -182,6 +161,9 @@ fi
 %doc Doc/*.html
 
 %changelog
+* Thu Jun 04 2026 Lukáš Zaoral <lzaoral@redhat.com> - 5.9.1-1
+- rebase to the latest upstream release (rhbz#2483668)
+
 * Tue Mar 24 2026 Lukáš Zaoral <lzaoral@redhat.com> - 5.9-20
 - fix segfault in _IO_putc (rhbz#2449939)
 

                 reply	other threads:[~2026-06-04  9:03 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178056383089.1.597879722836817490.rpms-zsh-95be2e37b5c0@fedoraproject.org \
    --to=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox