<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>