Fix zsh cross-build on NetBSD. Patch it up to use compile-tests rather than run-tests in autoconf for many of its tests (OS-independently). Teach it about the few remaining properties for NetBSD in particular. Index: shells/zsh/Makefile.common =================================================================== RCS file: /cvsroot/pkgsrc/shells/zsh/Makefile.common,v retrieving revision 1.70 diff -p -u -r1.70 Makefile.common --- shells/zsh/Makefile.common 28 Mar 2013 22:26:13 -0000 1.70 +++ shells/zsh/Makefile.common 23 Apr 2013 13:29:21 -0000 @@ -31,6 +31,14 @@ PKG_INSTALLATION_TYPES= overwrite pkgvie INSTALL_UNSTRIPPED= yes .endif +.if ${OPSYS} == "NetBSD" +# These can't be detected automagically in cross-builds. +CONFIGURE_ENV+= zsh_cv_shared_environ=yes +CONFIGURE_ENV+= zsh_cv_shared_tgetent=yes +CONFIGURE_ENV+= zsh_cv_shared_tigetstr=yes +CONFIGURE_ENV+= zsh_cv_sys_dynamic_execsyms=yes +.endif + PLIST_VARS+= xattr .if exists(/usr/include/sys/xattr.h) PLIST.xattr= yes Index: shells/zsh/distinfo =================================================================== RCS file: /cvsroot/pkgsrc/shells/zsh/distinfo,v retrieving revision 1.42 diff -p -u -r1.42 distinfo --- shells/zsh/distinfo 22 Feb 2013 13:40:30 -0000 1.42 +++ shells/zsh/distinfo 23 Apr 2013 13:29:21 -0000 @@ -1,6 +1,8 @@ -$NetBSD: distinfo,v 1.42 2013/02/22 13:40:30 jperkin Exp $ +$NetBSD: distinfo,v 1.41 2013/01/03 15:37:23 ryoon Exp $ SHA1 (zsh-5.0.2.tar.bz2) = 9f55ecaaae7cdc1495f91237ba2ec087777a4ad9 RMD160 (zsh-5.0.2.tar.bz2) = eea2328a28e9f022ab9f49583622a9c3bd6114a7 Size (zsh-5.0.2.tar.bz2) = 3025767 bytes -SHA1 (patch-ac) = dab5b2181f9a09d31cd20ef8e4b175401f323dc9 +SHA1 (patch-ac) = f83e5f38c262c779f32e0368815ce02308bc3fff +SHA1 (patch-aczsh.m4) = 36c270d8d7cf727f48787ef889b2bd89cbf065e2 +SHA1 (patch-configure.ac) = a8bcb291482fb1eead071439597662f07020e554 Index: shells/zsh/patches/patch-ac =================================================================== RCS file: /cvsroot/pkgsrc/shells/zsh/patches/patch-ac,v retrieving revision 1.28 diff -p -u -r1.28 patch-ac --- shells/zsh/patches/patch-ac 22 Feb 2013 13:40:30 -0000 1.28 +++ shells/zsh/patches/patch-ac 23 Apr 2013 13:29:21 -0000 @@ -3,15 +3,21 @@ $NetBSD: patch-ac,v 1.28 2013/02/22 13:4 First chunk: Add support for thread limits. From Peter Stephenson on zsh-workers. +Accepted by Peter Stephenson on +zsh-workers on 2012-08-16. + +Middle chunks: +Use a compile test, not a run test, for whether various rlimit values +are equivalent. A compile test is sufficient because zsh uses these +values in switch cases, so they must be compile-time, if not +preprocessor-time, constants. -All other chunks: +Last chunk: Make this package build on Interix. Patches provided by Hiramatsu Yoshifumi in PR pkg/25946. Last chunk only: Don't force -Wl,--whole-archive for NetBSD, it breaks the build with clang, which doesn't have a reason to disable it again. - -All chunks: Accepted by Peter Stephenson on zsh-workers on 2012-08-16. @@ -60,7 +66,155 @@ zsh-workers on 2012-08-16. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for limit RLIMIT_NOFILE" >&5 $as_echo_n "checking for limit RLIMIT_NOFILE... " >&6; } if ${zsh_cv_have_RLIMIT_NOFILE+:} false; then : -@@ -11630,6 +11666,10 @@ $as_echo "$zsh_cv_sys_elf" >&6; } +@@ -10011,9 +10047,6 @@ $as_echo_n "checking if RLIMIT_VMEM and + if ${zsh_cv_rlimit_vmem_is_rss+:} false; then : + $as_echo_n "(cached) " >&6 + else +- if test "$cross_compiling" = yes; then : +- zsh_cv_rlimit_vmem_is_rss=no +-else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + +@@ -10022,43 +10055,33 @@ else + #include + #endif + #include +-int main() ++int ++main () + { +-int ret = 1; +-#if defined(HAVE_RLIMIT_VMEM) && defined(HAVE_RLIMIT_RSS) +-if (RLIMIT_RSS == RLIMIT_VMEM) ret = 0; +-#endif +-return ret; ++static char x[(RLIMIT_VMEM == RLIMIT_RSS)? 1 : -1] ++ ; ++ return 0; + } + _ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO"; then : + zsh_cv_rlimit_vmem_is_rss=yes + else + zsh_cv_rlimit_vmem_is_rss=no + fi +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +- conftest.$ac_objext conftest.beam conftest.$ac_ext +-fi +- ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $zsh_cv_rlimit_vmem_is_rss" >&5 + $as_echo "$zsh_cv_rlimit_vmem_is_rss" >&6; } +- + if test x$zsh_cv_rlimit_vmem_is_rss = xyes; then + $as_echo "#define RLIMIT_VMEM_IS_RSS 1" >>confdefs.h + + fi + +- +- + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if RLIMIT_VMEM and RLIMIT_AS are the same" >&5 + $as_echo_n "checking if RLIMIT_VMEM and RLIMIT_AS are the same... " >&6; } + if ${zsh_cv_rlimit_vmem_is_as+:} false; then : + $as_echo_n "(cached) " >&6 + else +- if test "$cross_compiling" = yes; then : +- zsh_cv_rlimit_vmem_is_as=no +-else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + +@@ -10067,43 +10090,33 @@ else + #include + #endif + #include +-int main() ++int ++main () + { +-int ret = 1; +-#if defined(HAVE_RLIMIT_VMEM) && defined(HAVE_RLIMIT_AS) +-if (RLIMIT_AS == RLIMIT_VMEM) ret = 0; +-#endif +-return ret; ++static char x[(RLIMIT_VMEM == RLIMIT_AS)? 1 : -1] ++ ; ++ return 0; + } + _ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO"; then : + zsh_cv_rlimit_vmem_is_as=yes + else + zsh_cv_rlimit_vmem_is_as=no + fi +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +- conftest.$ac_objext conftest.beam conftest.$ac_ext +-fi +- ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $zsh_cv_rlimit_vmem_is_as" >&5 + $as_echo "$zsh_cv_rlimit_vmem_is_as" >&6; } +- + if test x$zsh_cv_rlimit_vmem_is_as = xyes; then + $as_echo "#define RLIMIT_VMEM_IS_AS 1" >>confdefs.h + + fi + +- +- + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if RLIMIT_RSS and RLIMIT_AS are the same" >&5 + $as_echo_n "checking if RLIMIT_RSS and RLIMIT_AS are the same... " >&6; } + if ${zsh_cv_rlimit_rss_is_as+:} false; then : + $as_echo_n "(cached) " >&6 + else +- if test "$cross_compiling" = yes; then : +- zsh_cv_rlimit_rss_is_as=no +-else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + +@@ -10112,28 +10125,23 @@ else + #include + #endif + #include +-int main() ++int ++main () + { +-int ret = 1; +-#if defined(HAVE_RLIMIT_RSS) && defined(HAVE_RLIMIT_AS) +-if (RLIMIT_AS == RLIMIT_RSS) ret = 0; +-#endif +-return ret; ++static char x[(RLIMIT_RSS == RLIMIT_AS)? 1 : -1] ++ ; ++ return 0; + } + _ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO"; then : + zsh_cv_rlimit_rss_is_as=yes + else + zsh_cv_rlimit_rss_is_as=no + fi +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +- conftest.$ac_objext conftest.beam conftest.$ac_ext +-fi +- ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $zsh_cv_rlimit_rss_is_as" >&5 + $as_echo "$zsh_cv_rlimit_rss_is_as" >&6; } +- + if test x$zsh_cv_rlimit_rss_is_as = xyes; then + $as_echo "#define RLIMIT_RSS_IS_AS 1" >>confdefs.h + +@@ -11630,6 +11638,10 @@ $as_echo "$zsh_cv_sys_elf" >&6; } DLLD="${DLLD=$CC}" DLLDARG="" ;; Index: shells/zsh/patches/patch-aczsh.m4 =================================================================== RCS file: shells/zsh/patches/patch-aczsh.m4 diff -N shells/zsh/patches/patch-aczsh.m4 --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ shells/zsh/patches/patch-aczsh.m4 23 Apr 2013 13:29:21 -0000 @@ -0,0 +1,29 @@ +$NetBSD$ + +Add a utility for compile tests to compare rlimit keys. + +--- aczsh.m4.orig 2009-05-16 12:08:44.000000000 +0000 ++++ aczsh.m4 +@@ -688,3 +688,22 @@ if test $zsh_cv_have_$1 = yes; then + AC_DEFINE(HAVE_$1) + fi]) + ++dnl Check whether rlimit $1, e.g. AS, is the same as rlmit $3, e.g. VMEM. ++dnl $2 is lowercase $1, $4 is lowercase $3. ++AC_DEFUN(zsh_LIMITS_EQUAL, ++[AH_TEMPLATE([RLIMIT_]$1[_IS_]$3, ++[Define to 1 if RLIMIT_]$1[ and RLIMIT_]$3[ both exist and are equal.]) ++AC_CACHE_CHECK([if RLIMIT_]$1[ and RLIMIT_]$3[ are the same], ++zsh_cv_rlimit_$2_is_$4, ++[AC_TRY_COMPILE([ ++#include ++#ifdef HAVE_SYS_TIME_H ++#include ++#endif ++#include ], ++[static char x[(RLIMIT_$1 == RLIMIT_$3)? 1 : -1]], ++ zsh_cv_rlimit_$2_is_$4=yes, ++ zsh_cv_rlimit_$2_is_$4=no)]) ++if test x$zsh_cv_rlimit_$2_is_$4 = xyes; then ++ AC_DEFINE(RLIMIT_$1_IS_$3) ++fi]) Index: shells/zsh/patches/patch-configure.ac =================================================================== RCS file: shells/zsh/patches/patch-configure.ac diff -N shells/zsh/patches/patch-configure.ac --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ shells/zsh/patches/patch-configure.ac 23 Apr 2013 13:29:21 -0000 @@ -0,0 +1,98 @@ +$NetBSD$ + +Use a compile test, not a run test, for whether various rlimit values +are equivalent. A compile test is sufficient because zsh uses these +values in switch cases, so they must be compile-time, if not +preprocessor-time, constants. + +--- configure.ac.orig 2012-09-09 18:26:47.000000000 +0000 ++++ configure.ac +@@ -1812,85 +1812,9 @@ zsh_LIMIT_PRESENT(RLIMIT_MSGQUEUE) + zsh_LIMIT_PRESENT(RLIMIT_NICE) + zsh_LIMIT_PRESENT(RLIMIT_RTPRIO) + +-AH_TEMPLATE([RLIMIT_VMEM_IS_RSS], +-[Define to 1 if RLIMIT_VMEM and RLIMIT_RSS both exist and are equal.]) +-AC_CACHE_CHECK(if RLIMIT_VMEM and RLIMIT_RSS are the same, +-zsh_cv_rlimit_vmem_is_rss, +-[AC_TRY_RUN([ +-#include +-#ifdef HAVE_SYS_TIME_H +-#include +-#endif +-#include +-int main() +-{ +-int ret = 1; +-#if defined(HAVE_RLIMIT_VMEM) && defined(HAVE_RLIMIT_RSS) +-if (RLIMIT_RSS == RLIMIT_VMEM) ret = 0; +-#endif +-return ret; +-}], +- zsh_cv_rlimit_vmem_is_rss=yes, +- zsh_cv_rlimit_vmem_is_rss=no, +- zsh_cv_rlimit_vmem_is_rss=no)]) +- +-if test x$zsh_cv_rlimit_vmem_is_rss = xyes; then +- AC_DEFINE(RLIMIT_VMEM_IS_RSS) +-fi +- +- +-AH_TEMPLATE([RLIMIT_VMEM_IS_AS], +-[Define to 1 if RLIMIT_VMEM and RLIMIT_AS both exist and are equal.]) +-AC_CACHE_CHECK(if RLIMIT_VMEM and RLIMIT_AS are the same, +-zsh_cv_rlimit_vmem_is_as, +-[AC_TRY_RUN([ +-#include +-#ifdef HAVE_SYS_TIME_H +-#include +-#endif +-#include +-int main() +-{ +-int ret = 1; +-#if defined(HAVE_RLIMIT_VMEM) && defined(HAVE_RLIMIT_AS) +-if (RLIMIT_AS == RLIMIT_VMEM) ret = 0; +-#endif +-return ret; +-}], +- zsh_cv_rlimit_vmem_is_as=yes, +- zsh_cv_rlimit_vmem_is_as=no, +- zsh_cv_rlimit_vmem_is_as=no)]) +- +-if test x$zsh_cv_rlimit_vmem_is_as = xyes; then +- AC_DEFINE(RLIMIT_VMEM_IS_AS) +-fi +- +- +-AH_TEMPLATE([RLIMIT_RSS_IS_AS], +-[Define to 1 if RLIMIT_RSS and RLIMIT_AS both exist and are equal.]) +-AC_CACHE_CHECK(if RLIMIT_RSS and RLIMIT_AS are the same, +-zsh_cv_rlimit_rss_is_as, +-[AC_TRY_RUN([ +-#include +-#ifdef HAVE_SYS_TIME_H +-#include +-#endif +-#include +-int main() +-{ +-int ret = 1; +-#if defined(HAVE_RLIMIT_RSS) && defined(HAVE_RLIMIT_AS) +-if (RLIMIT_AS == RLIMIT_RSS) ret = 0; +-#endif +-return ret; +-}], +- zsh_cv_rlimit_rss_is_as=yes, +- zsh_cv_rlimit_rss_is_as=no, +- zsh_cv_rlimit_rss_is_as=no)]) +- +-if test x$zsh_cv_rlimit_rss_is_as = xyes; then +- AC_DEFINE(RLIMIT_RSS_IS_AS) +-fi ++zsh_LIMITS_EQUAL(VMEM, vmem, RSS, rss) ++zsh_LIMITS_EQUAL(VMEM, vmem, AS, as) ++zsh_LIMITS_EQUAL(RSS, rss, AS, as) + + + dnl --------------------------------------------