public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: app-shells/zsh/files/, app-shells/zsh/
Date: Mon, 12 Sep 2022 20:08:36 +0000 (UTC)	[thread overview]
Message-ID: <1663013293.892dc0afaf0436e59259fec155f76ba4af9b6b06.sam@gentoo> (raw)

commit:     892dc0afaf0436e59259fec155f76ba4af9b6b06
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Sep 12 20:07:51 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Sep 12 20:08:13 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=892dc0af

app-shells/zsh: fix configure tests with Clang 15

Note that in some cases, this may have caused either some
files to not be installed, or hangs at runtime.

Closes: https://bugs.gentoo.org/869539
Thanks-to: Nicholas Vinson <nvinson234 <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../zsh/files/zsh-5.9-clang-15-configure.patch     | 549 +++++++++++++++++++++
 app-shells/zsh/zsh-5.9-r1.ebuild                   | 235 +++++++++
 2 files changed, 784 insertions(+)

diff --git a/app-shells/zsh/files/zsh-5.9-clang-15-configure.patch b/app-shells/zsh/files/zsh-5.9-clang-15-configure.patch
new file mode 100644
index 000000000000..8a77e365c700
--- /dev/null
+++ b/app-shells/zsh/files/zsh-5.9-clang-15-configure.patch
@@ -0,0 +1,549 @@
+https://bugs.gentoo.org/869539
+--- a/configure.ac
++++ b/configure.ac
+@@ -583,11 +583,11 @@ if test x$zsh_cv_c_have_union_init = xye
+ 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
+   AC_DEFINE(BROKEN_SIGNED_TO_UNSIGNED_CASTING)
+ fi
+@@ -1044,21 +1044,21 @@ if test x$zsh_cv_long_is_64_bit = xyes;
+ else
+   AC_CACHE_CHECK(if off_t is 64 bit, zsh_cv_off_t_is_64_bit,
+   [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)
+   fi
+ 
+   AC_CACHE_CHECK(if ino_t is 64 bit, zsh_cv_ino_t_is_64_bit,
+   [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)
+   fi
+ 
+@@ -1394,22 +1394,22 @@ 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");
+     int r2 = tgetent((char*)0,"vt100");
+     if (r1 >= 0 && r1 == r2) {
+         char tbuf[1024], *u;
+         u = tbuf;
+     	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
+   else
+     zsh_cv_func_tgetent_accepts_null=no
+@@ -1422,22 +1422,22 @@ 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, "!@#$%^&*");
+     int r2 = tgetent(buf, "vt100");
+     if (r1 < 0 && r2 == 0) {
+         char tbuf[1024], *u;
+         u = tbuf;
+     	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
+   else
+     zsh_cv_func_tgetent_zero_success=no
+@@ -1860,27 +1860,27 @@ zsh_cv_rlim_t_is_longer,
+ #ifdef HAVE_SYS_TIME_H
+ #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,
+   [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ #ifdef HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #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)
+     DEFAULT_RLIM_T=quad_t
+   else
+@@ -1894,11 +1894,11 @@ else
+ #ifdef HAVE_SYS_TIME_H
+ #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"
+   fi
+ fi
+@@ -2175,11 +2175,11 @@ 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;
+     int pid, ret;
+     unlink("/tmp/fifo$$");
+@@ -2189,19 +2189,19 @@ main()
+     if(mknod("/tmp/fifo$$", 0010600, 0) < 0)
+ #endif
+ 	exit(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])
+ ])
+ AH_TEMPLATE([HAVE_FIFOS],
+ [Define to 1 if system has working FIFOs.])
+@@ -2276,24 +2276,24 @@ AC_CACHE_CHECK(if link() works,
+ 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;
+     tmpfile="/tmp/zsh.linktest$$";
+     newfile="/tmp/zsh.linktest2$$";
+     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],
+ [Define to 1 if system has working link().])
+ if test x$zsh_cv_sys_link = xyes; then
+@@ -2309,15 +2309,15 @@ zsh_cv_sys_killesrch,
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ #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],
+ [Define to 1 if kill(pid, 0) doesn't return ESRCH, ie BeOS R4.51.])
+ if test x$zsh_cv_sys_killesrch = xno; then
+@@ -2339,11 +2339,11 @@ if test x$signals_style = xPOSIX_SIGNALS
+ #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;
+     act.sa_handler = &handler;
+     sigfillset(&act.sa_mask);
+@@ -2354,11 +2354,11 @@ main() {
+     pid=fork();
+     if(pid==0) return 0;
+     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])])
+     if test x$zsh_cv_sys_sigsuspend = xno; then
+       AC_DEFINE(BROKEN_POSIX_SIGSUSPEND)
+@@ -2387,18 +2387,18 @@ case "x$zsh_working_tcsetpgrp" in
+     [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ #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);
+     ret=tcsetpgrp(fd, tcgetpgrp(fd));
+     if (ret < 0) exit(1);
+-    exit(0);
++    return(0);
+ }
+ ]])],[zsh_cv_sys_tcsetpgrp=yes],[
+ case $? in
+     1) zsh_cv_sys_tcsetpgrp=no;;
+     2) zsh_cv_sys_tcsetpgrp=notty;;
+@@ -2434,19 +2434,19 @@ if test x$ac_cv_func_getpwnam = xyes; th
+ #include <pwd.h>
+ #include <stdio.h>
+ #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());
+     pw1=getpwnam(buf);
+     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
+       AC_DEFINE(GETPWNAM_FAKED)
+     fi
+@@ -2763,22 +2763,20 @@ 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 */
+ 	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
+   changequote(, )
+ 
+@@ -2908,11 +2908,11 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
+ EXTRA_LDFLAGS="${EXTRA_LDFLAGS=-rdynamic}"],[zsh_cvs_rdynamic_available=no])
+ 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>
+@@ -2943,34 +2941,34 @@ char *zsh_gl_sym_addr ;
+ #define RTLD_LAZY 1
+ #endif
+ 
+ extern int fred() ;
+ 
+-main()
++int main()
+ {
+     void * handle ;
+     void * symbol ;
+     FILE *f=fopen("conftestval", "w");
+     if (!f) exit(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) {
+                 /* try putting a leading underscore */
+         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
+     AC_DEFINE(DLSYM_NEEDS_UNDERSCORE)
+   elif test "x$zsh_cv_func_dlsym_needs_underscore" != xno; then
+--- a/aczsh.m4.old
++++ b/aczsh.m4
+@@ -42,10 +42,11 @@ AC_DEFUN(zsh_64_BIT_TYPE,
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ #ifdef HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+ #endif
+ 
++int
+ main()
+ {
+   $1 foo = 0; 
+   int bar = (int) foo;
+   return sizeof($1) != 8;
+@@ -144,33 +145,34 @@ char *zsh_gl_sym_addr ;
+ #endif
+ #ifndef RTLD_GLOBAL
+ #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],
+ [zsh_cv_shared_$1=no]
+ )
+@@ -226,23 +228,23 @@ char *zsh_gl_sym_addr ;
+ #endif
+ #ifndef RTLD_GLOBAL
+ #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],
+ [zsh_cv_sys_dynamic_clash_ok=no]
+ )
+@@ -302,21 +304,22 @@ char *zsh_gl_sym_addr ;
+ #endif
+ #ifndef RTLD_GLOBAL
+ #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],
+ [zsh_cv_sys_dynamic_rtld_global=no]
+ )
+@@ -372,19 +375,20 @@ char *zsh_gl_sym_addr ;
+ #endif
+ #ifndef RTLD_GLOBAL
+ #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; }
+ ]])],[zsh_cv_sys_dynamic_execsyms=yes],
+ [zsh_cv_sys_dynamic_execsyms=no],
+@@ -446,19 +450,20 @@ char *zsh_gl_sym_addr ;
+ #endif
+ #ifndef RTLD_GLOBAL
+ #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; }
+ ]])],[zsh_cv_sys_dynamic_strip_exe=yes],
+ [zsh_cv_sys_dynamic_strip_exe=no],
+@@ -514,19 +519,20 @@ char *zsh_gl_sym_addr ;
+ #endif
+ #ifndef RTLD_GLOBAL
+ #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],
+ [zsh_cv_sys_dynamic_strip_lib=no]
+ )
+

diff --git a/app-shells/zsh/zsh-5.9-r1.ebuild b/app-shells/zsh/zsh-5.9-r1.ebuild
new file mode 100644
index 000000000000..2ce37dce147c
--- /dev/null
+++ b/app-shells/zsh/zsh-5.9-r1.ebuild
@@ -0,0 +1,235 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools flag-o-matic prefix
+
+if [[ ${PV} == 9999* ]] ; then
+	inherit git-r3
+	EGIT_REPO_URI="https://git.code.sf.net/p/zsh/code"
+else
+	KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+	SRC_URI="https://www.zsh.org/pub/${P}.tar.xz
+		https://www.zsh.org/pub/old/${P}.tar.xz
+		mirror://sourceforge/${PN}/${P}.tar.xz
+		doc? (
+			https://www.zsh.org/pub/${P}-doc.tar.xz
+			mirror://sourceforge/${PN}/${P}-doc.tar.xz
+		)"
+fi
+
+DESCRIPTION="UNIX Shell similar to the Korn shell"
+HOMEPAGE="https://www.zsh.org/"
+
+LICENSE="ZSH gdbm? ( GPL-2 )"
+SLOT="0"
+IUSE="caps debug doc examples gdbm maildir pcre static unicode"
+
+RDEPEND="
+	>=sys-libs/ncurses-5.1:0=
+	static? ( >=sys-libs/ncurses-5.7-r4:0=[static-libs] )
+	caps? ( sys-libs/libcap )
+	pcre? (
+		>=dev-libs/libpcre-3.9
+		static? ( >=dev-libs/libpcre-3.9[static-libs] )
+	)
+	gdbm? ( sys-libs/gdbm:= )
+"
+DEPEND="sys-apps/groff
+	${RDEPEND}"
+PDEPEND="
+	examples? ( app-doc/zsh-lovers )
+"
+if [[ ${PV} == *9999 ]] ; then
+	DEPEND+=" app-text/yodl
+		doc? (
+			sys-apps/texinfo
+			app-text/texi2html
+			virtual/latex-base
+		)"
+fi
+
+PATCHES=(
+	# Add openrc specific options for init.d completion
+	"${FILESDIR}"/${PN}-5.3-init.d-gentoo.diff
+	# Please refer gentoo bug #833981
+	"${FILESDIR}"/${PN}-5.9-musl-V09datetime-test-fix.patch
+	# bug #869539
+	"${FILESDIR}"/${PN}-5.9-clang-15-configure.patch
+)
+
+src_prepare() {
+	if [[ ${PV} != *9999 ]]; then
+		# fix zshall problem with soelim
+		ln -s Doc man1 || die
+		mv Doc/zshall.1 Doc/zshall.1.soelim || die
+		soelim Doc/zshall.1.soelim > Doc/zshall.1 || die
+	fi
+
+	default
+
+	hprefixify configure.ac
+	if [[ ${PV} == *9999 ]] ; then
+		sed -i "/^VERSION=/s@=.*@=${PV}@" Config/version.mk || die
+	fi
+	eautoreconf
+}
+
+src_configure() {
+	local myconf=(
+		--bindir="${EPREFIX}"/bin
+		--libdir="${EPREFIX}"/usr/$(get_libdir)
+		--enable-etcdir="${EPREFIX}"/etc/zsh
+		--enable-runhelpdir="${EPREFIX}"/usr/share/zsh/${PV%_*}/help
+		--enable-fndir="${EPREFIX}"/usr/share/zsh/${PV%_*}/functions
+		--enable-site-fndir="${EPREFIX}"/usr/share/zsh/site-functions
+		--enable-function-subdirs
+		--with-tcsetpgrp
+		--with-term-lib="$(usex unicode 'tinfow ncursesw' 'tinfo ncurses')"
+		$(use_enable maildir maildir-support)
+		$(use_enable pcre)
+		$(use_enable caps cap)
+		$(use_enable unicode multibyte)
+		$(use_enable gdbm)
+	)
+
+	if use static ; then
+		myconf+=( --disable-dynamic )
+		append-ldflags -static
+	fi
+	if use debug ; then
+		myconf+=(
+			--enable-zsh-debug
+			--enable-zsh-mem-debug
+			--enable-zsh-mem-warning
+			--enable-zsh-secure-free
+			--enable-zsh-hash-debug
+		)
+	fi
+
+	if [[ ${CHOST} == *-darwin* ]]; then
+		myconf+=( --enable-libs=-liconv )
+		append-ldflags -Wl,-x
+	fi
+
+	econf "${myconf[@]}"
+
+	if use static ; then
+		# compile all modules statically, see Bug #27392
+		# removed cap and curses because linking failes
+		sed -e "s,link=no,link=static,g" \
+			-e "/^name=zsh\/cap/s,link=static,link=no," \
+			-e "/^name=zsh\/curses/s,link=static,link=no," \
+			-i "${S}"/config.modules || die
+		if ! use gdbm ; then
+			sed -i '/^name=zsh\/db\/gdbm/s,link=static,link=no,' \
+				"${S}"/config.modules || die
+		fi
+	fi
+}
+
+src_compile() {
+	default
+
+	if [[ ${PV} == *9999 ]] && use doc ; then
+		emake -C Doc everything
+	fi
+}
+
+src_test() {
+	# Fixes tests A03quoting.ztst B03print.ztst on musl
+	# Please refer:
+	# https://www.zsh.org/mla/workers/2021/msg00805.html
+	# Test E02xtrace fails on musl, so we are removing it.
+	# Closes: https://bugs.gentoo.org/833981
+	if use elibc_musl ; then
+		unset LC_ALL
+		unset LC_COLLATE
+		unset LC_NUMERIC
+		unset LC_MESSAGES
+		unset LANG
+		rm "${S}"/Test/E02xtrace.ztst || die
+	fi
+	addpredict /dev/ptmx
+	local i
+	for i in C02cond.ztst V08zpty.ztst X02zlevi.ztst Y01completion.ztst Y02compmatch.ztst Y03arguments.ztst ; do
+		rm "${S}"/Test/${i} || die
+	done
+	emake check
+}
+
+src_install() {
+	emake DESTDIR="${D}" install $(usex doc "install.info" "")
+
+	insinto /etc/zsh
+	export PREFIX_QUOTE_CHAR='"' PREFIX_EXTRA_REGEX="/EUID/s,0,${EUID},"
+	newins "$(prefixify_ro "${FILESDIR}"/zprofile-4)" zprofile
+
+	keepdir /usr/share/zsh/site-functions
+	insinto /usr/share/zsh/${PV%_*}/functions/Prompts
+	newins "${FILESDIR}"/prompt_gentoo_setup-1 prompt_gentoo_setup
+
+	local i
+
+	# install miscellaneous scripts (bug #54520)
+	sed -e "s:/usr/local/bin/perl:${EPREFIX}/usr/bin/perl:g" \
+		-e "s:/usr/local/bin/zsh:${EPREFIX}/bin/zsh:g" \
+		-i {Util,Misc}/* || die
+	for i in Util Misc ; do
+		insinto /usr/share/zsh/${PV%_*}/${i}
+		doins ${i}/*
+	done
+
+	# install header files (bug #538684)
+	insinto /usr/include/zsh
+	doins config.h Src/*.epro
+	for i in Src/{zsh.mdh,*.h} ; do
+		sed -e 's@\.\./config\.h@config.h@' \
+			-e 's@#\(\s*\)include "\([^"]\+\)"@#\1include <zsh/\2>@' \
+			-i "${i}"
+		doins "${i}"
+	done
+
+	dodoc ChangeLog* META-FAQ NEWS README config.modules
+
+	if use doc ; then
+		pushd "${WORKDIR}/${PN}-${PV%_*}" >/dev/null
+		dodoc Doc/zsh.{dvi,pdf}
+		docinto html
+		dodoc Doc/*.html
+		popd >/dev/null
+	fi
+
+	docinto StartupFiles
+	dodoc StartupFiles/z*
+}
+
+pkg_postinst() {
+	if [[ -z ${REPLACING_VERSIONS} ]] ; then
+		echo
+		elog "If you want to enable Portage completions and Gentoo prompt,"
+		elog "emerge app-shells/gentoo-zsh-completions and add"
+		elog "	autoload -U compinit promptinit"
+		elog "	compinit"
+		elog "	promptinit; prompt gentoo"
+		elog "to your ~/.zshrc"
+		echo
+		elog "Also, if you want to enable cache for the completions, add"
+		elog "	zstyle ':completion::complete:*' use-cache 1"
+		elog "to your ~/.zshrc"
+		echo
+		elog "Note that a system zprofile startup file is installed. This will override"
+		elog "PATH and possibly other variables that a user may set in ~/.zshenv."
+		elog "Custom PATH settings and similar overridden variables can be moved to ~/.zprofile"
+		elog "or other user startup files that are sourced after the system zprofile."
+		echo
+		elog "If PATH must be set in ~/.zshenv to affect things like non-login ssh shells,"
+		elog "one method is to use a separate path-setting file that is conditionally sourced"
+		elog "in ~/.zshenv and also sourced from ~/.zprofile. For more information, see the"
+		elog "zshenv example in ${EROOT}/usr/share/doc/${PF}/StartupFiles/."
+		echo
+		elog "See https://wiki.gentoo.org/wiki/Zsh/HOWTO for more introduction documentation."
+		echo
+	fi
+}


             reply	other threads:[~2022-09-12 20:08 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-12 20:08 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-10-15 19:11 [gentoo-commits] repo/gentoo:master commit in: app-shells/zsh/files/, app-shells/zsh/ Mike Gilbert
2025-10-01 17:42 Mike Gilbert
2025-06-15  2:24 Mike Gilbert
2023-12-16  7:44 Sam James
2023-03-12 12:33 Piotr Karbowski
2022-11-26 21:26 Piotr Karbowski
2022-09-01  2:06 Sam James
2022-05-02  8:41 Lars Wendler
2022-04-13  8:08 Lars Wendler
2022-02-18 13:43 Lars Wendler
2022-02-12 18:50 Lars Wendler
2019-12-12  9:21 Lars Wendler
2019-01-27 22:54 Lars Wendler
2018-11-30  8:04 Lars Wendler
2018-06-05 20:39 William Hubbs
2018-03-19 11:02 Lars Wendler
2016-09-15  5:03 Tim Harder

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=1663013293.892dc0afaf0436e59259fec155f76ba4af9b6b06.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.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