<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/665f31a99a5a1aeb2e6bba8c6d44fc04465227ab">https://github.com/macports/macports-ports/commit/665f31a99a5a1aeb2e6bba8c6d44fc04465227ab</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 665f31a99a5a1aeb2e6bba8c6d44fc04465227ab
</span>Author: Tomas Volf <~@wolfsden.cz>
AuthorDate: Mon Aug 12 11:02:00 2024 +0200
<span style='display:block; white-space:pre;color:#404040;'> guile-3.0: New port.
</span>---
lang/guile-3.0/Portfile | 145 +++++++++++++++++++++
...eck-TCP_NODELAY-for-non-zero-instead-of-1.patch | 33 +++++
...-tests-of-abstract-Unix-sockets-on-Darwin.patch | 65 +++++++++
...ts-Skip-hole-related-port-tests-on-Darwin.patch | 73 +++++++++++
...ilesys.c-Fix-readlink-for-ports-on-Darwin.patch | 63 +++++++++
...mkdtemp-test-for-invalid-template-on-Darw.patch | 58 +++++++++
...tests-Fix-spawn-with-environment-on-MacOS.patch | 53 ++++++++
...s-Fix-spawn-if-file-not-found-with-Gnulib.patch | 45 +++++++
...008-Do-not-depend-on-tmpnam-in-posix.test.patch | 44 +++++++
...-errno-when-pipe2-is-not-available-and-fl.patch | 39 ++++++
lang/guile-3.0/files/guile-3.0 | 21 +++
11 files changed, 639 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/guile-3.0/Portfile b/lang/guile-3.0/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..b821b2aeaa3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/guile-3.0/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,145 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup select 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name guile-3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories lang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers {@graywolf wolfsden.cz:~+macports} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license LGPL-2.1+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# current version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 3.0.10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 c42990081a8fffaf63874d16f457d8e50db8bc36 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 2dbdbc97598b2faf31013564efb48e4fed44131d28e996c26abe8a5b23b56c2a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 9738824
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.c_standard 2011
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+universal_variant no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Never cross compile.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supported_archs ${build_arch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description GNU's Ubiquitous Intelligent Language for Extension (guile)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Guile is an interpreter for the Scheme programming language, packaged \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for use in a wide variety of environments. Guile implements Scheme as \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ described in the Revised^5 Report on the Algorithmic Language Scheme \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (usually known as R5RS), providing clean and general data and control \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ structures. \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Guile goes beyond the rather austere language presented in R5RS, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extending it with a module system, full access to POSIX system calls, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ networking support, multiple threads, dynamic linking, a foreign \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ function call interface, powerful string processing, and many other \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ features needed for programming in the real world.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname guile-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage https://www.gnu.org/software/guile/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites https://ftp.gnu.org/gnu/guile/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Patches - BEGIN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Fix MacOS specific bugs and make the test suite pass.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Sent to upstream: https://www.mail-archive.com/bug-guile@gnu.org/msg11370.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_autoreconf yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0001-tests-Check-TCP_NODELAY-for-non-zero-instead-of-1.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0002-tests-Skip-tests-of-abstract-Unix-sockets-on-Darwin.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0003-tests-Skip-hole-related-port-tests-on-Darwin.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0004-filesys.c-Fix-readlink-for-ports-on-Darwin.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0005-tests-Skip-mkdtemp-test-for-invalid-template-on-Darw.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0006-tests-Fix-spawn-with-environment-on-MacOS.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0007-tests-Fix-spawn-if-file-not-found-with-Gnulib.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0008-Do-not-depend-on-tmpnam-in-posix.test.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0009-posix.c-Set-errno-when-pipe2-is-not-available-and-fl.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Patches - END
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# pkgconfig: guile-config is a wrapper around pkg-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path:bin/pkg-config:pkgconfig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:boehmgc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:gettext \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:gmp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libffi \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libiconv \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libtool \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:libunistring \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:ncurses \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:readline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_test-append port:coreutils
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # This test requires wc from coreutils.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|\"wc\"|\"${prefix}/libexec/gnubin/wc\"|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/test-suite/tests/posix.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # freadlink is detected on 12.0, but is missing in the header. Sigh.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|^#elif HAVE_FREADLINK\$|& \\&\\& __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 130000|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${worksrcpath}/libguile/filesys.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_run-append port:guile_select
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# LTO breaks availability of debug information. Ticket describing the issue (it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# is for cmake, but I expect the root cause to be the same):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://gitlab.kitware.com/cmake/cmake/-/issues/25202 --disable-lto
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args --program-suffix=-3.0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --disable-deprecated \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --enable-guile-debug \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --disable-lto \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --infodir="${prefix}/share/info/${name}" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --mandir="${prefix}/share/man"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# fixes: sed: -i may not be used with stdin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append port:gsed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env-append SED=${prefix}/bin/gsed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.env-append SED=${prefix}/bin/gsed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.run yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.target check
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+select.group guile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+select.file ${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ move ${destroot}${prefix}/share/aclocal/guile.m4 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${prefix}/share/aclocal/${name}.m4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Ensure that in case there is 12th part the build fails. When that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # happens, update the guile_select and select entries in all guiles to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # reflect that.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[file exists ${destroot}${prefix}/share/info/${name}/guile.info-12 ]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Additional part of info page available."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+notes "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To make the Guile ${version} default one, run:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+port select --set ${select.group} [file tail ${select.file}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type regex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url "https://ftp.gnu.org/gnu/guile/"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex "guile-(3\\.0\\.\\d+(?:\\.\\d+)*)${extract.suffix}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# First is check for `options needed to detect all undeclared functions'.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Second is actual check for strchr, but it is correctly detected.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.checks.implicit_function_declaration.whitelist-append strchr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# No MIN in limits.h.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.checks.implicit_function_declaration.whitelist-append MIN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Correctly detects that stdalign.h is required.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.checks.implicit_function_declaration.whitelist-append alignof
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# These are actually missing in regex.h.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.checks.implicit_function_declaration.whitelist-append re_set_syntax
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.checks.implicit_function_declaration.whitelist-append re_compile_pattern
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.checks.implicit_function_declaration.whitelist-append re_search
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Not available on MacOS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.checks.implicit_function_declaration.whitelist-append pthread_getattr_np
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Only occurence is when checking for static_assert and it fallbacks correctly.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# TODO: This fails in the CI, but works locally. Not sure what is wrong.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#configure.checks.implicit_int no
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/guile-3.0/files/0001-tests-Check-TCP_NODELAY-for-non-zero-instead-of-1.patch b/lang/guile-3.0/files/0001-tests-Check-TCP_NODELAY-for-non-zero-instead-of-1.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..ea92b1ebff7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/guile-3.0/files/0001-tests-Check-TCP_NODELAY-for-non-zero-instead-of-1.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,33 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 9874bc796bee7edfba5b18a1aefb18fa71402476 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tomas Volf <~@wolfsden.cz>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 8 Aug 2024 13:48:54 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1/9] tests: Check TCP_NODELAY for non-zero instead of 1.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+POSIX does not explicitly say that stored value using setsockopt will be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+returned by getsockopt. At least for TCP_NODELAY on Darwin they do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+differ. Darwin returns internal define TF_NODELAY (4) instead of 1 the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test expected. Since for boolean flags "non-zero is true", rewrite the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test to check just that.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* test-suite/tests/00-socket.test ("setsockopt AF_INET")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+["IPPROTO_TCP TCP_NODELAY"]: Check for non-zero value from getsockopt.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test-suite/tests/00-socket.test | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test-suite/tests/00-socket.test b/test-suite/tests/00-socket.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b3692f61a..17e686225 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/test-suite/tests/00-socket.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/test-suite/tests/00-socket.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -147,7 +147,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if "IPPROTO_TCP TCP_NODELAY"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (let ((sock (socket AF_INET SOCK_STREAM 0)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (setsockopt sock IPPROTO_TCP TCP_NODELAY 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (eqv? 1 (getsockopt sock IPPROTO_TCP TCP_NODELAY))))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (not (eqv? 0 (getsockopt sock IPPROTO_TCP TCP_NODELAY)))))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.45.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/guile-3.0/files/0002-tests-Skip-tests-of-abstract-Unix-sockets-on-Darwin.patch b/lang/guile-3.0/files/0002-tests-Skip-tests-of-abstract-Unix-sockets-on-Darwin.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..15ee0f19504
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/guile-3.0/files/0002-tests-Skip-tests-of-abstract-Unix-sockets-on-Darwin.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,65 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 52b95362fa3b6339ba346f00a7ce9f3877b61dd5 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tomas Volf <~@wolfsden.cz>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 8 Aug 2024 13:51:20 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2/9] tests: Skip tests of abstract Unix sockets on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Darwin does not support abstract Unix sockets, so mark the tests as
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+skipped.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* test-suite/tests/00-socket.test (skip-on-darwin): New procedure.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+("bind abstract", "listen abstract", "connect abstract")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+("accept abstract"): Skip on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test-suite/tests/00-socket.test | 8 ++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 8 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test-suite/tests/00-socket.test b/test-suite/tests/00-socket.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 17e686225..ba9bb279b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/test-suite/tests/00-socket.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/test-suite/tests/00-socket.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,6 +25,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #:use-module (srfi srfi-26)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #:use-module (test-suite lib))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++(define (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (when (string-ci=? "darwin" (vector-ref (uname) 0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (throw 'untested)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -336,6 +340,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (set! path (string-append "\x00" path))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if "bind abstract"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (catch 'system-error
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (lambda ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (bind server-socket AF_UNIX path)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -348,6 +353,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (apply throw args))))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if "listen abstract"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (if (not server-bound?)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (throw 'unresolved)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -375,6 +381,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #t))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if "connect abstract"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (if (not server-pid)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (throw 'unresolved)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (let ((s (socket AF_UNIX SOCK_STREAM 0)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -383,6 +390,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #t)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if "accept abstract"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (if (not server-pid)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (throw 'unresolved)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (begin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.45.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/guile-3.0/files/0003-tests-Skip-hole-related-port-tests-on-Darwin.patch b/lang/guile-3.0/files/0003-tests-Skip-hole-related-port-tests-on-Darwin.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..9c6dec31082
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/guile-3.0/files/0003-tests-Skip-hole-related-port-tests-on-Darwin.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,73 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 0addf736b38589d1f1de1fcae6a7c832039b7b79 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tomas Volf <~@wolfsden.cz>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 8 Aug 2024 17:00:34 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 3/9] tests: Skip hole-related port tests on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Hole are itself a file-system specific feature and they are not
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+mandated. While APFS does support sparse files, they do not behave like
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+on Linux. I did not discover exact rules, but the file needs to be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+large (100s of kB at least) and the holes are not aligned as the test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+code expects. So just disable them.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* test-suite/tests/ports.test (skip-on-darwin): New procedure.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+("size of sparse file", "SEEK_DATA while on data")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+("SEEK_DATA while in hole", "SEEK_HOLE while in hole"): Skip on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test-suite/tests/ports.test | 9 +++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 9 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test-suite/tests/ports.test b/test-suite/tests/ports.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7b5b535e7..3fde402b4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/test-suite/tests/ports.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/test-suite/tests/ports.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -39,6 +39,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (define (test-file)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (data-file-name "ports-test.tmp"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++(define (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (when (string-ci=? "darwin" (vector-ref (uname) 0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (throw 'untested)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;;;; Some general utilities for testing ports.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -185,6 +189,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (close-port iport))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (delete-file filename))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++;;; Note: Holes are weird on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (let* ((file (test-file))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (port (open-output-file file)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (seek port 4096 SEEK_SET)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -193,10 +198,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if-equal "size of sparse file"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (stat:size (stat file)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if-equal "SEEK_DATA while on data"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4096
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (if (defined? 'SEEK_DATA)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (call-with-input-file file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (lambda (port)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -209,6 +216,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if-equal "SEEK_DATA while in hole"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4096
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (if (defined? 'SEEK_DATA)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (call-with-input-file file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (lambda (port)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -221,6 +229,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if-equal "SEEK_HOLE while in hole"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (if (defined? 'SEEK_HOLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (call-with-input-file file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (lambda (port)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.45.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/guile-3.0/files/0004-filesys.c-Fix-readlink-for-ports-on-Darwin.patch b/lang/guile-3.0/files/0004-filesys.c-Fix-readlink-for-ports-on-Darwin.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..ccbdfe8f7fa
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/guile-3.0/files/0004-filesys.c-Fix-readlink-for-ports-on-Darwin.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,63 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From ca3c8555c0209d0199a79844975c96adbb914cdc Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tomas Volf <~@wolfsden.cz>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 8 Aug 2024 14:58:00 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 4/9] filesys.c: Fix readlink for ports on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+When passed a port, `readlink' relies on the Linux specific behavior of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+empty c_path meaning "the fd itself". That does not work on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Since there is no branch that would yield both fd and c_path, fallback
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+to freadlink when __APPLE__ is defined.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* libguile/filesys.c (do_readlink): Call freadlink for !__APPLE__.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* configure.ac (AC_CHECK_FUNCS): Add freadlink.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.ac | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ libguile/filesys.c | 13 +++++++++++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 12 insertions(+), 3 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/configure.ac b/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 262b171f1..e6ed14220 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -532,7 +532,7 @@ AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fstatat futimens openat \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sched_getaffinity sched_setaffinity sendfile pipe2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ posix_spawn_file_actions_addclosefrom_np \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- clearenv])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ clearenv freadlink])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # The newlib C library uses _NL_ prefixed locale langinfo constants.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_CHECK_DECLS([_NL_NUMERIC_GROUPING], [], [], [[#include <langinfo.h>]])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libguile/filesys.c b/libguile/filesys.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 8657fedc3..8585005a9 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/libguile/filesys.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/libguile/filesys.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1192,14 +1192,23 @@ SCM_DEFINE (scm_symlinkat, "symlinkat", 3, 0, 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #undef FUNC_NAME
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* HAVE_SYMLINKAT */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-/* Static helper function for choosing between readlink
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Static helper function for choosing between readlink, freadlink
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ and readlinkat. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ do_readlink (int fd, const char *c_path, char *buf, size_t size)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef HAVE_READLINKAT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* Darwin does not accept empty c_path. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if HAVE_READLINKAT && !__APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (fd != -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return readlinkat (fd, c_path, buf, size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif HAVE_FREADLINK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ /* There is no branch in s_scm_readlink that would lead to having both fd and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * non-empty c_path. Therefore if fd is set, we (on Darwin only) use
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * freadlink and ignore the c_path. On linux this case is already handled by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * readlinkat, but Darwin does not understand empty c_path to mean "the fd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * itself" the way Linux does. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (fd != -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return freadlink (fd, buf, size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (void) fd;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.45.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/guile-3.0/files/0005-tests-Skip-mkdtemp-test-for-invalid-template-on-Darw.patch b/lang/guile-3.0/files/0005-tests-Skip-mkdtemp-test-for-invalid-template-on-Darw.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..515642820a5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/guile-3.0/files/0005-tests-Skip-mkdtemp-test-for-invalid-template-on-Darw.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,58 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From e4ae73023b46dbb125e96ea7e22c5429e55becc0 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tomas Volf <~@wolfsden.cz>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 8 Aug 2024 18:48:23 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 5/9] tests: Skip mkdtemp test for invalid template on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Darwin accepts any template, as demonstrated here:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ main(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char template[] = {'T', '-', 'A', 'A', 'A', 'A', 'A', 'A', '\0'};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ char *res = mkdtemp(template);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts(res ? res : "(null)");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ perror("mkdtemp");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Outputs:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ T-AAAAAA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mkdtemp: Undefined error: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This does not match prescribed POSIX behavior, but it is what it is.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* test-suite/tests/filesys.test (skip-on-darwin): New procedure.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+("mkdtemp")["invalid template"]: Skip on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test-suite/tests/filesys.test | 5 +++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 5 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test-suite/tests/filesys.test b/test-suite/tests/filesys.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index fa8d6f797..72d778145 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/test-suite/tests/filesys.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/test-suite/tests/filesys.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,6 +34,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (define (test-directory2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (data-file-name "filesys-test-dir2.tmp"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++(define (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (when (string-ci=? "darwin" (vector-ref (uname) 0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (throw 'untested)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;;; copy-file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -345,6 +348,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (= (string-length name) 8)))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if-exception "invalid template" exception:system-error
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ;; MacOS accepts any template and just does no replacements.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (if (not (defined? 'mkdtemp))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (throw 'unresolved)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (mkdtemp "T-AAAAAA")))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.45.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/guile-3.0/files/0006-tests-Fix-spawn-with-environment-on-MacOS.patch b/lang/guile-3.0/files/0006-tests-Fix-spawn-with-environment-on-MacOS.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f8347532946
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/guile-3.0/files/0006-tests-Fix-spawn-with-environment-on-MacOS.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,53 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 95fe4cd6fb2bb70f0e74ed4a6f87ffc44c748c9f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tomas Volf <~@wolfsden.cz>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 8 Aug 2024 20:10:03 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 6/9] tests: Fix spawn with #:environment on MacOS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MacOS adds __CF_USER_TEXT_ENCODING to every program, in similar way GNU
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Hurd prepends LD_ORIGIN_PATH (based on the comment). So extend the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+logic to do similar stripping on MacOS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* test-suite/tests/posix.test ("spawn")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+["env with #:environment and #:output"]: Strip trailing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+__CF_USER_TEXT_ENCODING environment variable when on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test-suite/tests/posix.test | 23 +++++++++++++++++------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 17 insertions(+), 6 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test-suite/tests/posix.test b/test-suite/tests/posix.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 18dad8902..ac5a3b289 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/test-suite/tests/posix.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/test-suite/tests/posix.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -442,12 +442,23 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (close-port (car input+output))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (waitpid pid)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ;; On GNU/Hurd, the exec server prepends 'LD_ORIGIN_PATH' for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ;; every program: <https://bugs.gnu.org/62501>. Strip it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (if (and (string=? "GNU" (utsname:sysname (uname)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (string-prefix? "LD_ORIGIN_PATH=" str))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (string-drop str (+ 1 (string-index str #\newline)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- str))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (let ((sysname (utsname:sysname (uname))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (cond
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ((string=? "GNU" sysname)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ;; On GNU/Hurd, the exec server prepends 'LD_ORIGIN_PATH' for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ;; every program: <https://bugs.gnu.org/62501>. Strip it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (if (string-prefix? "LD_ORIGIN_PATH=" str)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (string-drop str (+ 1 (string-index str #\newline)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ str))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ((string-ci=? "darwin" sysname)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ;; MacOS appends '__CF_USER_TEXT_ENCODING' for every program. Strip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ;; it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (let ((pos (string-contains str "__CF_USER_TEXT_ENCODING=")))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (if pos
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (string-drop-right str (- (string-length str) pos))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ str)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ str))))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if-equal "ls /proc/self/fd"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "0\n1\n2\n3\n" ;fourth FD is for /proc/self/fd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.45.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/guile-3.0/files/0007-tests-Fix-spawn-if-file-not-found-with-Gnulib.patch b/lang/guile-3.0/files/0007-tests-Fix-spawn-if-file-not-found-with-Gnulib.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..a8eae78e280
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/guile-3.0/files/0007-tests-Fix-spawn-if-file-not-found-with-Gnulib.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,45 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 2e58305e93f783e0a4fff4764e9c2f2f608d4b72 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tomas Volf <~@wolfsden.cz>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 9 Aug 2024 13:00:12 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 7/9] tests: Fix spawn if file not found with Gnulib.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+On Darwin posix_spawnp is not considered secured and therefore we
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fallback to Gnulib's version. That one however does not return ENOENT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+when the file does not exist, but PID of the child process. This seems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+to be allowed by the standard.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* test-suite/tests/posix.test (skip-on-darwin): New procedure.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+("spawn")["file not file"]: Skip on Darwin.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test-suite/tests/posix.test | 8 ++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 8 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test-suite/tests/posix.test b/test-suite/tests/posix.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ac5a3b289..95692eeb1 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/test-suite/tests/posix.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/test-suite/tests/posix.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -22,6 +22,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #:use-module (test-suite lib)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #:use-module ((rnrs io ports) #:select (get-string-all)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++(define (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (when (string-ci=? "darwin" (vector-ref (uname) 0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (throw 'untested)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;; FIXME: The following exec tests are disabled since on an i386 debian with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;; glibc 2.3.2 they seem to interact badly with threads.test, the latter
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -475,6 +478,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if-equal "file not found"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ENOENT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ;; Actually "skip-if-posix_spawn-replaced" would be preferred, since the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ;; behavior below is not implemented in gnulib, but I do not know how to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ;; write such test. However due to posix_spawnp being buggy on MacOS it is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ;; always replaced, so whatever.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (skip-on-darwin)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (catch 'system-error
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (lambda ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (spawn "this-does-not-exist" '("nope")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.45.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/guile-3.0/files/0008-Do-not-depend-on-tmpnam-in-posix.test.patch b/lang/guile-3.0/files/0008-Do-not-depend-on-tmpnam-in-posix.test.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..9db0ac90d06
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/guile-3.0/files/0008-Do-not-depend-on-tmpnam-in-posix.test.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,44 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 64e2a96ce858f9856ddaa0b442605cfc808f63f3 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tomas Volf <~@wolfsden.cz>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 27 Jun 2024 15:43:35 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 8/9] Do not depend on tmpnam in posix.test.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+`tmpnam' is a deprecated procedure that can be excluded during a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure (`--disable-tmpnam'). There currently was a single test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+relying on it, and therefore failing is such configuration. This commit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+switches to mkstemp instead.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* test-suite/tests/posix.test ("system*"): Use mkstemp instead of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+tmpnam.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test-suite/tests/posix.test | 6 ++++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 4 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test-suite/tests/posix.test b/test-suite/tests/posix.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 95692eeb1..c4360b79e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/test-suite/tests/posix.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/test-suite/tests/posix.test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -365,7 +365,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if-equal "https://bugs.gnu.org/52835"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "bong\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (let ((file (tmpnam)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (let* ((port (mkstemp "T-XXXXXX"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (file (port-filename port)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;; Redirect stdout and stderr to FILE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (define status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (call-with-output-file file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -376,8 +377,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (lambda ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (system* "sh" "-c" "echo bong >&2"))))))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (delete-file file)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (and (zero? (status:exit-val status))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- (call-with-input-file file get-string-all))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (get-string-all port))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (pass-if-equal "https://bugs.gnu.org/63024"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.45.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/guile-3.0/files/0009-posix.c-Set-errno-when-pipe2-is-not-available-and-fl.patch b/lang/guile-3.0/files/0009-posix.c-Set-errno-when-pipe2-is-not-available-and-fl.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..7dc1d40e8fb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/guile-3.0/files/0009-posix.c-Set-errno-when-pipe2-is-not-available-and-fl.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,39 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 0d0146004b1a11f75af773ec358a024db4a3787b Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tomas Volf <~@wolfsden.cz>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 9 Aug 2024 13:44:41 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 9/9] posix.c: Set errno when pipe2 is not available and flags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ provided.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+If pipe2 is not available (e.g. on MacOS) and flags are set,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+SCM_SYSERROR was correctly signaled, however errno was not set, so it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+reported as:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Undefined error: 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+That sucks both in tests (the test is not skipped) and in actual
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+usage (user has no idea what went wrong).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+So set errno to ENOSYS as well.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+* libguile/posix.c (scm_pipe2) [!HAVE_PIPE2] <c_flags>: Set errno to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ENOSYS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ libguile/posix.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/libguile/posix.c b/libguile/posix.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 9a873b5a1..986dcc7d0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/libguile/posix.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/libguile/posix.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -282,7 +282,7 @@ SCM_DEFINE (scm_pipe2, "pipe", 0, 1, 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* 'pipe2' cannot be emulated on systems that lack it: calling
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'fnctl' afterwards to set the relevant flags is not equivalent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ because it's not atomic. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- rv = ENOSYS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ rv = errno = ENOSYS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (rv)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.45.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/guile-3.0/files/guile-3.0 b/lang/guile-3.0/files/guile-3.0
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..eedd951fadf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/guile-3.0/files/guile-3.0
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/guild-3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/guile-3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/guile-config-3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/guile-snarf-3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+bin/guile-tools-3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info-1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info-10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info-11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info-2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info-4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info-5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info-6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info-7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info-8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/guile.info-9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/info/guile-3.0/r5rs.info
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+share/man/man1/guile-3.0.1.gz
</span></pre><pre style='margin:0'>
</pre>