Merge branch 'staging-next' into staging

This commit is contained in:
Jan Tojnar
2020-08-23 02:18:27 +02:00
516 changed files with 15983 additions and 9551 deletions
@@ -15,7 +15,6 @@ rustPlatform.buildRustPackage rec {
buildInputs = [ openssl ];
cargoSha256 = "0ylniriq073kpiykamkn9mxdaa6kyiza4pvf7gnfq2h1dvbqa6z7";
verifyCargoDeps = true;
# Tests perform networking and therefore can't work in sandbox
doCheck = false;
@@ -107,6 +107,11 @@ stdenv.mkDerivation (rec {
outputs = [ "out" "doc" ];
# https://gitlab.haskell.org/ghc/ghc/-/issues/18549
patches = [
./issue-18549.patch
];
postPatch = "patchShebangs .";
# GHC is a bit confused on its cross terminology.
@@ -0,0 +1,296 @@
From fac083e7ac8a37b61a4082bbbca2848e52fd1bb2 Mon Sep 17 00:00:00 2001
From: Ben Gamari <ben@smart-cactus.org>
Date: Sun, 9 Aug 2020 09:15:16 -0400
Subject: [PATCH] Revert "[linker/rtsSymbols] More linker symbols"
This reverts commit aa2e5863699306920513b216f337de09e29b5bb8.
---
rts/RtsSymbols.c | 224 ++++-------------------------------------------
1 file changed, 17 insertions(+), 207 deletions(-)
diff --git a/rts/RtsSymbols.c b/rts/RtsSymbols.c
index d10a6900db..b2f90a892d 100644
--- a/rts/RtsSymbols.c
+++ b/rts/RtsSymbols.c
@@ -58,6 +58,7 @@
SymI_HasProto(signal_handlers) \
SymI_HasProto(stg_sig_install) \
SymI_HasProto(rtsTimerSignal) \
+ SymI_HasProto(atexit) \
SymI_NeedsDataProto(nocldstop)
#endif
@@ -976,213 +977,29 @@
RTS_USER_SIGNALS_SYMBOLS \
RTS_INTCHAR_SYMBOLS
+
// 64-bit support functions in libgcc.a
-// See https://gcc.gnu.org/onlinedocs/gccint/Libgcc.html#Libgcc
-#define RTS_LIBGCC_SYMBOLS_32 \
- SymI_NeedsProto(__fixunsdfdi) \
- /* 4 The GCC low-level runtime library */\
- /* 4.1.1 Arithmetic functions */\
- /* SymI_NeedsProto(__ashlsi3) */\
- SymI_NeedsProto(__ashldi3) \
- /* SymI_NeedsProto(__ashlti3) */\
- /* These functions return the result of shifting a left by b bits. */\
- /* SymI_NeedsProto(__ashrsi3) */\
- SymI_NeedsProto(__ashrdi3) \
- /* SymI_NeedsProto(__ashrti3) */\
- /* These functions return the result of arithmetically shifting a right by b bits. */\
- /* SymI_NeedsProto(__divsi3) */\
- SymI_NeedsProto(__divdi3) \
- /* SymI_NeedsProto(__divti3) */\
- /* These functions return the quotient of the signed division of a and b. */\
- /* SymI_NeedsProto(__lshrsi3) */ \
- SymI_NeedsProto(__lshrdi3) \
- /* SymI_NeedsProto(__lshrti3) */ \
- /* These functions return the result of logically shifting a right by b bits. */\
- /* SymI_NeedsProto(__modsi3) */ \
- SymI_NeedsProto(__moddi3) \
- /* SymI_NeedsProto(__modti3) */ \
- /* These functions return the remainder of the signed division of a and b. */\
- /* SymI_NeedsProto(__mulsi3) */ \
- SymI_NeedsProto(__muldi3) \
- /* SymI_NeedsProto(__multi3) */ \
- /* These functions return the product of a and b. */\
- SymI_NeedsProto(__negdi2) \
- /* SymI_NeedsProto(__negti2) */ \
- /* These functions return the negation of a. */\
- /* SymI_NeedsProto(__udivsi3) */ \
- SymI_NeedsProto(__udivdi3) \
- /* SymI_NeedsProto(__udivti3) */ \
- /* These functions return the quotient of the unsigned division of a and b. */\
- SymI_NeedsProto(__udivmoddi4) \
- /* SymI_NeedsProto(__udivmodti4) */ \
- /* These functions calculate both the quotient and remainder of the unsigned division of a and b. The return value is the quotient, and the remainder is placed in variable pointed to by c. */\
- /* SymI_NeedsProto(__umodsi3) */ \
- SymI_NeedsProto(__umoddi3) \
- /* SymI_NeedsProto(__umodti3) */ \
- /* These functions return the remainder of the unsigned division of a and b. */\
- /* 4.1.2 Comparison functions */\
- /* The following functions implement integral comparisons. These functions implement a low-level compare, upon which the higher level comparison operators (such as less than and greater than or equal to) can be constructed. The returned values lie in the range zero to two, to allow the high-level operators to be implemented by testing the returned result using either signed or unsigned comparison. */\
- SymI_NeedsProto(__cmpdi2) \
- /* SymI_NeedsProto(__cmpti2) */ \
- /* These functions perform a signed comparison of a and b. If a is less than b, they return 0; if a is greater than b, they return 2; and if a and b are equal they return 1. */\
- SymI_NeedsProto(__ucmpdi2) \
- /* SymI_NeedsProto(__ucmpti2) */ \
- /* These functions perform an unsigned comparison of a and b. If a is less than b, they return 0; if a is greater than b, they return 2; and if a and b are equal they return 1. */\
- /* 4.1.3 Trapping arithmetic functions */\
- /* The following functions implement trapping arithmetic. These functions call the libc function abort upon signed arithmetic overflow. */\
- SymI_NeedsProto(__absvsi2) \
- SymI_NeedsProto(__absvdi2) \
- /* These functions return the absolute value of a. */\
- /* SymI_NeedsProto(__addvsi3) */ \
- SymI_NeedsProto(__addvdi3) \
- /* These functions return the sum of a and b; that is a + b. */\
- /* SymI_NeedsProto(__mulvsi3) */ \
- SymI_NeedsProto(__mulvdi3) \
- /* The functions return the product of a and b; that is a * b. */\
- SymI_NeedsProto(__negvsi2) \
- SymI_NeedsProto(__negvdi2) \
- /* These functions return the negation of a; that is -a. */\
- /* SymI_NeedsProto(__subvsi3) */ \
- SymI_NeedsProto(__subvdi3) \
- /* These functions return the difference between b and a; that is a - b. */\
- /* 4.1.4 Bit operations */\
- SymI_NeedsProto(__clzsi2) \
- SymI_NeedsProto(__clzdi2) \
- /* SymI_NeedsProto(__clzti2) */ \
- /* These functions return the number of leading 0-bits in a, starting at the most significant bit position. If a is zero, the result is undefined. */\
- SymI_NeedsProto(__ctzsi2) \
- SymI_NeedsProto(__ctzdi2) \
- /* SymI_NeedsProto(__ctzti2) */ \
- /* These functions return the number of trailing 0-bits in a, starting at the least significant bit position. If a is zero, the result is undefined. */\
- SymI_NeedsProto(__ffsdi2) \
- /* SymI_NeedsProto(__ffsti2) */ \
- /* These functions return the index of the least significant 1-bit in a, or the value zero if a is zero. The least significant bit is index one. */\
- SymI_NeedsProto(__paritysi2) \
- SymI_NeedsProto(__paritydi2) \
- /* SymI_NeedsProto(__parityti2) */\
- /* These functions return the value zero if the number of bits set in a is even, and the value one otherwise. */\
- SymI_NeedsProto(__popcountsi2) \
- SymI_NeedsProto(__popcountdi2) \
- /* SymI_NeedsProto(__popcountti2) */ \
- /* These functions return the number of bits set in a. */\
- SymI_NeedsProto(__bswapsi2) \
- SymI_NeedsProto(__bswapdi2)
-#define RTS_LIBGCC_SYMBOLS_aarch32 \
- /* armv6l */\
- /* TODO: should check for __ARM_EABI__ */\
- SymI_NeedsProto(__aeabi_d2f) \
- SymI_NeedsProto(__aeabi_d2iz) \
- SymI_NeedsProto(__aeabi_d2lz) \
- SymI_NeedsProto(__aeabi_d2uiz) \
- SymI_NeedsProto(__aeabi_d2ulz) \
- SymI_NeedsProto(__aeabi_dadd) \
- SymI_NeedsProto(__aeabi_dcmpeq) \
- SymI_NeedsProto(__aeabi_dcmpge) \
- SymI_NeedsProto(__aeabi_dcmpgt) \
- SymI_NeedsProto(__aeabi_dcmple) \
- SymI_NeedsProto(__aeabi_dcmplt) \
- SymI_NeedsProto(__aeabi_dcmpun) \
- SymI_NeedsProto(__aeabi_ddiv) \
- SymI_NeedsProto(__aeabi_dmul) \
- SymI_NeedsProto(__aeabi_dneg) \
- SymI_NeedsProto(__aeabi_dsub) \
- SymI_NeedsProto(__aeabi_f2d) \
- SymI_NeedsProto(__aeabi_f2iz) \
- SymI_NeedsProto(__aeabi_f2lz) \
- SymI_NeedsProto(__aeabi_f2uiz) \
- SymI_NeedsProto(__aeabi_f2ulz) \
- SymI_NeedsProto(__aeabi_fadd) \
- SymI_NeedsProto(__aeabi_fcmpeq) \
- SymI_NeedsProto(__aeabi_fcmpge) \
- SymI_NeedsProto(__aeabi_fcmpgt) \
- SymI_NeedsProto(__aeabi_fcmple) \
- SymI_NeedsProto(__aeabi_fcmplt) \
- SymI_NeedsProto(__aeabi_fcmpun) \
- SymI_NeedsProto(__aeabi_fdiv) \
- SymI_NeedsProto(__aeabi_fmul) \
- SymI_NeedsProto(__aeabi_fneg) \
- SymI_NeedsProto(__aeabi_fsub) \
- SymI_NeedsProto(__aeabi_i2d) \
- SymI_NeedsProto(__aeabi_i2f) \
- SymI_NeedsProto(__aeabi_idiv) \
- SymI_NeedsProto(__aeabi_idivmod) \
- SymI_NeedsProto(__aeabi_l2d) \
- SymI_NeedsProto(__aeabi_l2f) \
- SymI_NeedsProto(__aeabi_lasr) \
- SymI_NeedsProto(__aeabi_lcmp) \
- SymI_NeedsProto(__aeabi_ldivmod) \
- SymI_NeedsProto(__aeabi_llsl) \
- SymI_NeedsProto(__aeabi_llsr) \
- SymI_NeedsProto(__aeabi_lmul) \
- SymI_NeedsProto(__aeabi_ui2d) \
- SymI_NeedsProto(__aeabi_ui2f) \
- SymI_NeedsProto(__aeabi_uidiv) \
- SymI_NeedsProto(__aeabi_uidivmod) \
- SymI_NeedsProto(__aeabi_ul2d) \
- SymI_NeedsProto(__aeabi_ul2f) \
- SymI_NeedsProto(__aeabi_ulcmp) \
- SymI_NeedsProto(__aeabi_uldivmod)
-#define RTS_LIBGCC_SYMBOLS_64 \
+#if defined(__GNUC__) && SIZEOF_VOID_P <= 4 && !defined(_ABIN32)
+#define RTS_LIBGCC_SYMBOLS \
+ SymI_NeedsProto(__divdi3) \
+ SymI_NeedsProto(__udivdi3) \
+ SymI_NeedsProto(__moddi3) \
+ SymI_NeedsProto(__umoddi3) \
+ SymI_NeedsProto(__muldi3) \
+ SymI_NeedsProto(__ashldi3) \
+ SymI_NeedsProto(__ashrdi3) \
+ SymI_NeedsProto(__lshrdi3) \
+ SymI_NeedsProto(__fixunsdfdi)
+#elif defined(__GNUC__) && SIZEOF_VOID_P == 8
+#define RTS_LIBGCC_SYMBOLS \
SymI_NeedsProto(__udivti3) \
SymI_NeedsProto(__umodti3)
-
-/* for aarch64 */
-#define RTS_LIBGCC_SYMBOLS_aarch64 \
- SymI_NeedsProto(__netf2) \
- SymI_NeedsProto(__addtf3) \
- SymI_NeedsProto(__subtf3) \
- SymI_NeedsProto(__multf3) \
- SymI_NeedsProto(__extenddftf2) \
- SymI_NeedsProto(__fixtfsi) \
- SymI_NeedsProto(__fixunstfsi) \
- SymI_NeedsProto(__floatsitf) \
- SymI_NeedsProto(__floatunsitf)
-
-#if defined(__GNUC__) && SIZEOF_VOID_P <= 4 && defined(arm_HOST_OS)
-#define RTS_LIBGCC_SYMBOLS RTS_LIBGCC_SYMBOLS_32 RTS_LIBGCC_SYMBOLS_aarch32
-#elif defined(__GNUC__) && SIZEOF_VOID_P <= 4 && !defined(_ABIN32)
-#define RTS_LIBGCC_SYMBOLS RTS_LIBGCC_SYMBOLS_32
-#elif defined(__GNUC__) && SIZEOF_VOID_P == 8 && defined(aarch64_HOST_OS)
-#define RTS_LIBGCC_SYMBOLS RTS_LIBGCC_SYMBOLS_64 RTS_LIBGCC_SYMBOLS_aarch64
-#elif defined(__GNUC__) && SIZEOF_VOID_P == 8
-#define RTS_LIBGCC_SYMBOLS RTS_LIBGCC_SYMBOLS_64
#else
#define RTS_LIBGCC_SYMBOLS
#endif
-#if !defined(mingw32_HOST_OS) && !defined(DYNAMIC) && (defined(_FORTIFY_SOURCE) || defined(__SSP__))
-#define RTS_SSP_SYMBOLS \
- SymI_NeedsProto(__stack_chk_guard) \
- SymI_NeedsProto(__stack_chk_fail)
-#else
-#define RTS_SSP_SYMBOLS
-#endif
-#if !defined(DYNAMIC) && defined(linux_HOST_OS)
-// we need these for static musl builds. However when
-// linking shared objects (DLLs) this will fail, hence
-// we do not include them when building with -DDYNAMIC
-#define RTS_LINKER_SYMBOLS \
- SymI_NeedsProto(__fini_array_start) \
- SymI_NeedsProto(__fini_array_end)
-#else
-#define RTS_LINKER_SYMBOLS
-#endif
-
-#if defined(darwin_HOST_OS) && defined(powerpc_HOST_ARCH)
- // Symbols that don't have a leading underscore
- // on Mac OS X. They have to receive special treatment,
- // see machoInitSymbolsWithoutUnderscore()
-#define RTS_MACHO_NOUNDERLINE_SYMBOLS \
- SymI_NeedsProto(saveFP) \
- SymI_NeedsProto(restFP)
-#endif
-
/* entirely bogus claims about types of these symbols */
-/* to prevent a bit of define expansion, SymI_NeedsProto is a variadic
- * macro. And we'll concat vvv with the __VA_ARGS__. This prevents
- * vvv from getting macro expanded.
- */
-#define SymI_NeedsProto(vvv,...) extern void vvv ## __VA_ARGS__ (void);
+#define SymI_NeedsProto(vvv) extern void vvv(void);
#define SymI_NeedsDataProto(vvv) extern StgWord vvv[];
#if defined(COMPILING_WINDOWS_DLL)
#define SymE_HasProto(vvv) SymE_HasProto(vvv);
@@ -1209,8 +1026,6 @@ RTS_DARWIN_ONLY_SYMBOLS
RTS_OPENBSD_ONLY_SYMBOLS
RTS_LIBGCC_SYMBOLS
RTS_LIBFFI_SYMBOLS
-RTS_SSP_SYMBOLS
-RTS_LINKER_SYMBOLS
#undef SymI_NeedsProto
#undef SymI_NeedsDataProto
#undef SymI_HasProto
@@ -1230,7 +1045,7 @@ RTS_LINKER_SYMBOLS
#define SymE_HasDataProto(vvv) \
SymE_HasProto(vvv)
-#define SymI_NeedsProto(vvv,...) SymI_HasProto(vvv ## __VA_ARGS__)
+#define SymI_NeedsProto(vvv) SymI_HasProto(vvv)
#define SymI_NeedsDataProto(vvv) SymI_HasDataProto(vvv)
#define SymE_NeedsProto(vvv) SymE_HasProto(vvv)
#define SymE_NeedsDataProto(vvv) SymE_HasDataProto(vvv)
@@ -1251,8 +1066,6 @@ RTS_LINKER_SYMBOLS
#define SymI_HasProto_deprecated(vvv) \
{ #vvv, (void*)0xBAADF00D, true },
-void *RTS_DYNAMIC = NULL;
-
RtsSymbolVal rtsSyms[] = {
RTS_SYMBOLS
RTS_RET_SYMBOLS
@@ -1264,14 +1077,11 @@ RtsSymbolVal rtsSyms[] = {
RTS_LIBGCC_SYMBOLS
RTS_LIBFFI_SYMBOLS
SymI_HasDataProto(nonmoving_write_barrier_enabled)
- RTS_SSP_SYMBOLS
- RTS_LINKER_SYMBOLS
#if defined(darwin_HOST_OS) && defined(i386_HOST_ARCH)
// dyld stub code contains references to this,
// but it should never be called because we treat
// lazy pointers as nonlazy.
{ "dyld_stub_binding_helper", (void*)0xDEADBEEF, false },
#endif
- { "_DYNAMIC", (void*)(&RTS_DYNAMIC), false },
{ 0, 0, false } /* sentinel */
};
--
2.25.4
+2 -2
View File
@@ -31,11 +31,11 @@ in
stdenv.mkDerivation rec {
pname = "go";
version = "1.15beta1";
version = "1.15";
src = fetchurl {
url = "https://dl.google.com/go/go${version}.src.tar.gz";
sha256 = "1h1sg6j9jac5bw2pjrd13bf4nr18prs89147izdhzbhp896sikbq";
sha256 = "0fmc53pamxxbvmp5bcvh1fhffirpv3gz6y7qz97iacpmsiz8yhv9";
};
# perl is used for testing go vet
@@ -1,16 +1,16 @@
diff --git a/src/crypto/x509/root_darwin_amd64.go b/src/crypto/x509/root_darwin_amd64.go
index 8ad5a9607d..1d6091cf83 100644
index ce88de025e..258ecc45d1 100644
--- a/src/crypto/x509/root_darwin_amd64.go
+++ b/src/crypto/x509/root_darwin_amd64.go
@@ -8,6 +8,7 @@ import (
@@ -10,6 +10,7 @@ import (
"bytes"
"crypto/x509/internal/macOS"
macOS "crypto/x509/internal/macos"
"fmt"
+ "io/ioutil"
"os"
"strings"
)
@@ -23,6 +24,14 @@ func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate
@@ -25,6 +26,14 @@ func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate
var loadSystemRootsWithCgo func() (*CertPool, error)
func loadSystemRoots() (*CertPool, error) {
@@ -25,10 +25,10 @@ index 8ad5a9607d..1d6091cf83 100644
var trustedRoots []*Certificate
untrustedRoots := make(map[string]bool)
diff --git a/src/crypto/x509/root_darwin_arm64.go b/src/crypto/x509/root_darwin_arm64.go
index 2fb079ba66..6a072f3e78 100644
--- a/src/crypto/x509/root_darwin_arm64.go
+++ b/src/crypto/x509/root_darwin_arm64.go
diff --git a/src/crypto/x509/root_darwin_ios.go b/src/crypto/x509/root_darwin_ios.go
index 5ecc4911b3..14b4205c00 100644
--- a/src/crypto/x509/root_darwin_ios.go
+++ b/src/crypto/x509/root_darwin_ios.go
@@ -6,6 +6,11 @@
package x509
+39 -6
View File
@@ -4,14 +4,14 @@
# Uses scheme to bootstrap the build of idris2
stdenv.mkDerivation rec {
name = "idris2";
version = "0.2.0";
pname = "idris2";
version = "0.2.1";
src = fetchFromGitHub {
owner = "idris-lang";
repo = "Idris2";
rev = "v${version}";
sha256 = "153z6zgb90kglw8rspk8ph5gh5nkplhi27mxai6yqbbjs2glx5d4";
sha256 = "044slgl2pwvj939kz3z92n6l182plc5fzng1n4z4k6bg11msqq14";
};
strictDeps = true;
@@ -30,9 +30,42 @@ stdenv.mkDerivation rec {
checkTarget = "bootstrap-test";
# idris2 needs to find scheme at runtime to compile
postInstall = ''
wrapProgram "$out/bin/idris2" --set CHEZ "${chez}/bin/scheme"
# TODO: Move this into its own derivation, such that this can be changed
# without having to recompile idris2 every time.
postInstall = let
includedLibs = [ "base" "contrib" "network" "prelude" ];
name = "${pname}-${version}";
packagePaths = builtins.map (l: "$out/${name}/" + l) includedLibs;
additionalIdris2Paths = builtins.concatStringsSep ":" packagePaths;
in ''
# Remove existing idris2 wrapper that sets incorrect LD_LIBRARY_PATH
rm $out/bin/idris2
# Move actual idris2 binary
mv $out/bin/idris2_app/idris2.so $out/bin/idris2
# After moving the binary, there is nothing left in idris2_app that isn't
# either contained in lib/ or is useless to us.
rm $out/bin/idris2_app/*
rmdir $out/bin/idris2_app
# idris2 needs to find scheme at runtime to compile
# idris2 installs packages with --install into the path given by PREFIX.
# Since PREFIX is in nix-store, it is immutable so --install does not work.
# If the user redefines PREFIX to be able to install packages, idris2 will
# not find the libraries and packages since all paths are relative to
# PREFIX by default.
# We explicitly make all paths to point to nix-store, such that they are
# independent of what IDRIS2_PREFIX is. This allows the user to redefine
# IDRIS2_PREFIX and use --install as expected.
# TODO: Make support libraries their own derivation such that
# overriding LD_LIBRARY_PATH is unnecessary
# TODO: Maybe set IDRIS2_PREFIX to the users home directory
wrapProgram "$out/bin/idris2" \
--set-default CHEZ "${chez}/bin/scheme" \
--suffix IDRIS2_LIBS ':' "$out/${name}/lib" \
--suffix IDRIS2_DATA ':' "$out/${name}/support" \
--suffix IDRIS2_PATH ':' "${additionalIdris2Paths}" \
--suffix LD_LIBRARY_PATH ':' "$out/${name}/lib"
'';
meta = {
@@ -81,6 +81,7 @@ in stdenv.mkDerivation (rec {
rm test/DebugInfo/X86/convert-debugloc.ll
rm test/DebugInfo/X86/convert-inlined.ll
rm test/DebugInfo/X86/convert-linked.ll
rm test/DebugInfo/X86/debug_addr.ll
rm test/tools/dsymutil/X86/op-convert.test
'' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") ''
# Seems to require certain floating point hardware (NEON?)
@@ -4,7 +4,6 @@
, python
, llvm
, clang-tools-extra_src ? null
, rocm-runtime
, lld
, version
@@ -18,7 +17,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake python ];
buildInputs = [ llvm rocm-runtime ];
buildInputs = [ llvm ];
hardeningDisable = [ "all" ];
@@ -1,12 +1,12 @@
{ stdenv, fetchFromGitHub, callPackage, wrapCCWith }:
let
version = "3.5.1";
version = "3.7.0";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
repo = "llvm-project";
rev = "rocm-${version}";
sha256 = "03k2xp8wf4awf1zcjc2hb3kf9bqp567c3s569gp1q3q1zjg6r2ib";
sha256 = "02p0s041wwsi4q0dhs1sj5l6059y02s31az505h0f22agz3jnpfn";
};
in rec {
clang = wrapCCWith rec {
@@ -9,7 +9,6 @@
, llvmPackages_5
, gmp
, emacs
, emacs25-nox
, jre_headless
, tcl
, tk
@@ -73,7 +72,7 @@ in stdenv.mkDerivation rec {
llvmPackages_5.clang
llvmPackages_5.clang-unwrapped
gmp
emacs25-nox
emacs
jre_headless
tcl
tk
+6 -2
View File
@@ -10,20 +10,22 @@ let
safeX11 = stdenv: !(stdenv.isAarch32 || stdenv.isMips);
in
{ stdenv, fetchurl, ncurses, buildEnv
{ stdenv, fetchurl, ncurses, buildEnv, libunwind
, libX11, xorgproto, useX11 ? safeX11 stdenv && !stdenv.lib.versionAtLeast version "4.09"
, aflSupport ? false
, flambdaSupport ? false
, spaceTimeSupport ? false
}:
assert useX11 -> !stdenv.isAarch32 && !stdenv.isMips;
assert aflSupport -> stdenv.lib.versionAtLeast version "4.05";
assert flambdaSupport -> stdenv.lib.versionAtLeast version "4.03";
assert spaceTimeSupport -> stdenv.lib.versionAtLeast version "4.04";
let
useNativeCompilers = !stdenv.isMips;
inherit (stdenv.lib) optional optionals optionalString;
name = "ocaml${optionalString aflSupport "+afl"}${optionalString flambdaSupport "+flambda"}-${version}";
name = "ocaml${optionalString aflSupport "+afl"}${optionalString spaceTimeSupport "+spacetime"}${optionalString flambdaSupport "+flambda"}-${version}";
in
let
@@ -53,11 +55,13 @@ stdenv.mkDerivation (args // {
[ "-x11lib" x11lib "-x11include" x11inc ])
++ optional aflSupport (flags "--with-afl" "-afl-instrument")
++ optional flambdaSupport (flags "--enable-flambda" "-flambda")
++ optional spaceTimeSupport (flags "--enable-spacetime" "-spacetime")
;
buildFlags = [ "world" ] ++ optionals useNativeCompilers [ "bootstrap" "world.opt" ];
buildInputs = optional (!stdenv.lib.versionAtLeast version "4.07") ncurses
++ optionals useX11 [ libX11 xorgproto ];
propagatedBuildInputs = optional spaceTimeSupport libunwind;
installTargets = [ "install" ] ++ optional useNativeCompilers "installopt";
preConfigure = optionalString (!stdenv.lib.versionAtLeast version "4.04") ''
CAT=$(type -tp cat)
@@ -10,13 +10,13 @@ let
in
stdenv.mkDerivation rec {
pname = "souffle";
version = "2.0.0";
version = "2.0.1";
src = fetchFromGitHub {
owner = "souffle-lang";
repo = "souffle";
rev = version;
sha256 = "1azn32x0xbbk8gagipb34qk3y1srm927j5d34w20isgjxir4xsnz";
sha256 = "0f7jwmgv83m85lrb2qwvr4cfwzbqww7pik884xd2593fsfqhpnkn";
};
nativeBuildInputs = [ autoreconfHook bison flex mcpp doxygen graphviz makeWrapper perl ];