From 85cc94c40e3dee7cb17c452fa4e04d09fc20983a Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Sun, 10 Mar 2019 18:04:37 -0400 Subject: guile_2_0: add patches for macos 10.12 --- pkgs/development/interpreters/guile/2.0.nix | 9 ++++++- .../guile/filter-mkostemp-darwin.patch | 28 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/interpreters/guile/filter-mkostemp-darwin.patch (limited to 'pkgs/development/interpreters/guile') diff --git a/pkgs/development/interpreters/guile/2.0.nix b/pkgs/development/interpreters/guile/2.0.nix index 17ca1d1dcd95..24266d596765 100644 --- a/pkgs/development/interpreters/guile/2.0.nix +++ b/pkgs/development/interpreters/guile/2.0.nix @@ -46,7 +46,14 @@ }) ./riscv.patch ] ++ - (stdenv.lib.optional (coverageAnalysis != null) ./gcov-file-name.patch); + (stdenv.lib.optional (coverageAnalysis != null) ./gcov-file-name.patch) + ++ stdenv.lib.optionals stdenv.isDarwin [ + (fetchpatch { + url = "https://gitlab.gnome.org/GNOME/gtk-osx/raw/52898977f165777ad9ef169f7d4818f2d4c9b731/patches/guile-clocktime.patch"; + sha256 = "12wvwdna9j8795x59ldryv9d84c1j3qdk2iskw09306idfsis207"; + }) + ./filter-mkostemp-darwin.patch + ]; # Explicitly link against libgcc_s, to work around the infamous # "libgcc_s.so.1 must be installed for pthread_cancel to work". diff --git a/pkgs/development/interpreters/guile/filter-mkostemp-darwin.patch b/pkgs/development/interpreters/guile/filter-mkostemp-darwin.patch new file mode 100644 index 000000000000..8b9b853fb00d --- /dev/null +++ b/pkgs/development/interpreters/guile/filter-mkostemp-darwin.patch @@ -0,0 +1,28 @@ +Filter incompat. mkostemp(3) flags on macOS 10.12 + +macOS Sierra introduces a mkostemp(3) function which is used when +present. Contrary to the GNUlib version of mkostemp(3) that was used +previously, this version fails with 'invalid argument' when flags other +than from a specified set are passed. From mktemp(3): + +| The mkostemp() function is like mkstemp() but allows specifying +| additional open(2) flags (defined in ). The permitted flags +| are O_APPEND, O_SHLOCK, O_EXLOCK and O_CLOEXEC. + +Signed-off-by: Clemens Lang +Upstream-Status: Submitted [https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24862#23] +--- a/libguile/filesys.c.orig 2017-01-09 00:53:27.000000000 +0100 ++++ b/libguile/filesys.c 2017-01-09 00:54:48.000000000 +0100 +@@ -1486,6 +1486,12 @@ + mode_bits = scm_i_mode_bits (mode); + } + ++#ifdef __APPLE__ ++ /* macOS starting with 10.12 defines mkostemp(2) which is used if defined, ++ * but only accepts some flags according to its manpage. It fails with ++ * invalid argument when other flags are passed. */ ++ open_flags &= O_APPEND | O_SHLOCK | O_EXLOCK | O_CLOEXEC; ++#endif + SCM_SYSCALL (rv = mkostemp (c_tmpl, open_flags)); + if (rv == -1) + SCM_SYSERROR; -- cgit 1.4.1