From 939365b278455782bc9685e8b6d63cecd686d33b Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Wed, 1 Feb 2023 09:21:41 +0000 Subject: [PATCH 001/109] Support for armv7a-bionic (android) This adds support to haskell.nix for building for armv7a-android. It includes - various minor fixes - a lot of bionic (libc) patches for ghc - no gold on 32bit android - android overlay: mostly static - disable KTLS on openssl for android --- compiler/ghc/default.nix | 11 +- lib/call-cabal-project-to-nix.nix | 4 +- overlays/android.nix | 21 +- overlays/bootstrap.nix | 24 +- overlays/linux-cross.nix | 19 +- .../patches/ghc/ghc-8.10-3434-armv7a.patch | 68 +++++ overlays/patches/ghc/ghc-8.10-android.patch | 262 ++++++++++++++++++ .../ghc-8.10.7-android-bionic-symbols.patch | 31 +++ .../patches/ghc/ghc-8.10.7-bionic-libc.patch | 35 +++ ...8.10.7-cross-dont-build-stage2-tools.patch | 74 +++++ ...8.10.7-linker-weak-and-common-armv7a.patch | 189 +++++++++++++ .../ghc-8.10.7-linker-weak-and-common.patch | 4 +- .../ghc/libc-memory-symbols-armv7a.patch | 42 +++ .../libraries-prim-os-android-armv7a.patch | 13 + 14 files changed, 780 insertions(+), 17 deletions(-) create mode 100644 overlays/patches/ghc/ghc-8.10-3434-armv7a.patch create mode 100644 overlays/patches/ghc/ghc-8.10-android.patch create mode 100644 overlays/patches/ghc/ghc-8.10.7-android-bionic-symbols.patch create mode 100644 overlays/patches/ghc/ghc-8.10.7-bionic-libc.patch create mode 100644 overlays/patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch create mode 100644 overlays/patches/ghc/ghc-8.10.7-linker-weak-and-common-armv7a.patch create mode 100644 overlays/patches/ghc/libc-memory-symbols-armv7a.patch create mode 100644 overlays/patches/ghc/libraries-prim-os-android-armv7a.patch diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index b79287cf7c..34376453e2 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -45,9 +45,9 @@ let self = , enableDWARF ? false -, enableTerminfo ? +, enableTerminfo ? !stdenv.targetPlatform.isAndroid && # Terminfo does not work on older ghc cross arm and windows compilers - (!haskell-nix.haskellLib.isCrossTarget || !(stdenv.targetPlatform.isAarch64 || stdenv.targetPlatform.isWindows) || builtins.compareVersions ghc-version "8.10" >= 0) + (!haskell-nix.haskellLib.isCrossTarget || !(stdenv.targetPlatform.isAarch32 || stdenv.targetPlatform.isAarch64 || stdenv.targetPlatform.isWindows) || builtins.compareVersions ghc-version "8.10" >= 0) , # Wheter to build in NUMA support enableNUMA ? true @@ -426,7 +426,10 @@ stdenv.mkDerivation (rec { export NIX_LDFLAGS+=" -rpath $out/lib/${targetPrefix}ghc-${ghc-version}" '' + lib.optionalString stdenv.isDarwin '' export NIX_LDFLAGS+=" -no_dtrace_dof" - '' + lib.optionalString targetPlatform.useAndroidPrebuilt '' + '' + + # we really want "+armv7-a,+soft-float,+neon" as features, but llvm will + # fail with those :facepalm: + lib.optionalString targetPlatform.useAndroidPrebuilt '' sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets '' + lib.optionalString targetPlatform.isMusl '' echo "patching llvm-targets for musl targets..." @@ -501,7 +504,7 @@ stdenv.mkDerivation (rec { ++ lib.optional stdenv.targetPlatform.isMusl "pie" ++ lib.optional enableDWARF "fortify"; - postInstall = lib.optionalString (enableNUMA && targetPlatform.isLinux) '' + postInstall = lib.optionalString (enableNUMA && targetPlatform.isLinux && !targetPlatform.isAarch32 && !targetPlatform.isAndroid) '' # Patch rts.conf to ensure libnuma can be found for file in $(find "$out/lib" -name "rts*.conf"); do diff --git a/lib/call-cabal-project-to-nix.nix b/lib/call-cabal-project-to-nix.nix index 4c5a31e88c..3ff16062d8 100644 --- a/lib/call-cabal-project-to-nix.nix +++ b/lib/call-cabal-project-to-nix.nix @@ -437,8 +437,8 @@ let cabal.project.freeze chmod +w cabal.project.freeze ''} - export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt - export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt + export SSL_CERT_FILE=${evalPackages.cacert}/etc/ssl/certs/ca-bundle.crt + export GIT_SSL_CAINFO=${evalPackages.cacert}/etc/ssl/certs/ca-bundle.crt CABAL_DIR=${ # This creates `.cabal` directory that is as it would have diff --git a/overlays/android.nix b/overlays/android.nix index 3d2568d80d..85ff5d0047 100644 --- a/overlays/android.nix +++ b/overlays/android.nix @@ -11,18 +11,31 @@ _final: prev: prev.lib.optionalAttrs prev.stdenv.hostPlatform.isAndroid ({ ''; # my current thinking is that this is due to the android toolchain using r23, api30. }); - libffi = prev.libffi.overrideAttrs (_: { + libffi = prev.libffi.overrideAttrs ( old: { dontDisableStatic = true; + configureFlags = old.configureFlags ++ [ "--disable-shared" ]; hardeningDisable = [ "fortify" "stackprotector" "format" ]; + } // prev.lib.optionalAttrs (prev.stdenv.hostPlatform.isAarch32 || prev.stdenv.hostPlatform.isAarch64) { # see libiconv. We want to target a lower minsdk postConfigure = '' - echo "#undef HAVE_MEMFD_CREATE" >> aarch64-unknown-linux-android/fficonfig.h + echo "#undef HAVE_MEMFD_CREATE" >> ${prev.stdenv.hostPlatform.config}/fficonfig.h ''; }); - gmp6 = (prev.gmp6.override { withStatic = true; }).overrideAttrs(_: { + gmp6 = (prev.gmp6.override { withStatic = true; }).overrideAttrs(old: { hardeningDisable = [ "fortify" "stackprotector" "format" ]; + configureFlags = old.configureFlags ++ [ "--disable-shared" ]; }); + zlib = prev.zlib.override { shared = false; static = true; }; + # kernel tls (ktls) doesn't work with the android kernel. And will complain + # about lots of implicitly declared functions and undeclared identifiers, + # because the android (linux) kernel doesn't expose those. + openssl = prev.openssl.override { static = true; enableKTLS = false; }; + }) // prev.lib.optionalAttrs prev.stdenv.targetPlatform.isAndroid ({ - bionic = prev.bionic.override { enableStatic = true; }; + # we still need the shared libraries to link against on the platform. GHC + # has been neutered to not even try loading shared libs and will use dynamic ones. + # We also link iserv against the static libs, so that we have a fully static + # android (bionic/linux) iserv we can execute on glibc/linux. + bionic = prev.bionic.override { enableStatic = true; enableShared = true; }; }) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 902c5d363a..e5338f3bf9 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -163,8 +163,9 @@ in { ++ fromUntil "8.10.2" "8.10.3" ./patches/ghc/MR3714-backported-to-8.10.2.patch # See https://github.com/input-output-hk/haskell.nix/issues/1027 + ++ final.lib.optional (versionAtLeast "8.10.3" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10-3434-armv7a.patch ++ final.lib.optional (versionAtLeast "8.10.3" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-8.10-3434.patch - ++ final.lib.optional (versionAtLeast "9.2.1" && versionLessThan "9.3" && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-9.2-3434.patch + ++ final.lib.optional (versionAtLeast "9.2.1" && versionLessThan "9.3" && (final.stdenv.targetPlatform.isAarch64 || final.stdenv.targetPlatform.isAndroid)) ./patches/ghc/ghc-9.2-3434.patch ++ fromUntil "8.10.1" "9.4" ./patches/ghc/ghc-acrt-iob-func.patch ++ fromUntil "8.10.1" "9.2" ./patches/ghc/ghc-mprotect-nonzero-len.patch @@ -247,16 +248,27 @@ in { ++ final.lib.optionals (final.stdenv.targetPlatform.isGhcjs) (fromUntil "9.6.3" "9.8" ./patches/ghc/ghc-9.6.3-JS-implement-TH-support.patch) ++ fromUntil "9.8.1" "9.8.2" ./patches/ghc/ghc-9.8-cabal-c-soures-fix.patch ++ fromUntil "9.6.3" "9.9" ./patches/ghc/ghc-9.6.3-Cabal-9384.patch + ++ final.lib.optionals (final.stdenv.targetPlatform.isWindows) (fromUntil "9.4.1" "9.5" ./patches/ghc/ghc-9.4-hadrian-win-cross.patch) + ++ fromUntil "9.6.1" "9.8" ./patches/ghc/MR10116.patch + ++ fromUntil "9.4.1" "9.6" ./patches/ghc/hadrian-build-deriveConstants-genprimopcode-ghc94.patch + ++ fromUntil "9.6.1" "9.8" ./patches/ghc/hadrian-build-deriveConstants-genprimopcode.patch + ++ final.lib.optional (versionAtLeast "8.10" && versionLessThan "9.4" && final.stdenv.targetPlatform != final.stdenv.hostPlatform) ./patches/ghc/ghc-make-stage-1-lib-ghc.patch # the following is a partial reversal of https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4391, to address haskell.nix#1227 ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/mmap-next.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/m32_alloc.patch + + # Android ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/rts-android-jemalloc-qemu.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/stack-protector-symbols.patch - ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/libraries-prim-os-android.patch + ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/libraries-prim-os-android-armv7a.patch + ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/libraries-prim-os-android.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-rts-linker-condbr.patch - ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-8.10.7-linker-weak-and-common.patch - ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/libc-memory-symbols.patch + # due to mmap-next renaming we need different ones for aarch64 and aarch32 m( + ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10.7-linker-weak-and-common-armv7a.patch + ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-8.10.7-linker-weak-and-common.patch + ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/libc-memory-symbols-armv7a.patch + ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/libc-memory-symbols.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/android-base-needs-iconv.patch ++ final.lib.optional (versionAtLeast "8.10" && versionLessThan "9.4" && final.stdenv.targetPlatform != final.stdenv.hostPlatform) ./patches/ghc/ghc-make-stage-1-lib-ghc.patch ++ final.lib.optional (versionAtLeast "8.10" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-8.10-better-symbol-addr-debug.patch @@ -274,6 +286,10 @@ in { # Fix the bad fixups: https://gitlab.haskell.org/ghc/ghc/-/commit/2adc050857a9c1b992040fbfd55fbe65b2851b19 ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.6.4" && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/2adc050857a9c1b992040fbfd55fbe65b2851b19.patch ++ final.lib.optional (versionAtLeast "8.10.7" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAarch64 && final.stdenv.targetPlatform.isMusl && final.stdenv.targetPlatform != final.stdenv.hostPlatform) ./patches/ghc/ghc-8.10-aarch64-musl-gettimeofday.patch + ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10-android.patch + ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10.7-android-bionic-symbols.patch + ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10.7-bionic-libc.patch + ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch ; in ({ ghc865 = final.callPackage ../compiler/ghc (traceWarnOld "8.6" { diff --git a/overlays/linux-cross.nix b/overlays/linux-cross.nix index 8055d86dd7..36861dde24 100644 --- a/overlays/linux-cross.nix +++ b/overlays/linux-cross.nix @@ -13,6 +13,22 @@ , ... }: let + # For 32bit android, we need to pass -no-pie, as we otherwise + # get -pie injected into the linker flags. We don't want that. + # If we target 32bit android, we need remote-iserv to be runnable + # in a 32bit linux (via qemu-arm user mode emulation). If we have + # -pie enabled, it will produce a static-pie executable, which + # seems a lot like what we want but will crash on launch. It appears + # the the __stack_chk_guard lookups go through some lookup table, and + # while the relocations for the lookup table are correct, the __stack_chk_guard + # address isn't properly relocated. This could also be because libc isn't + # supposed to be staticlly linked really. However because we are lacking + # the loader for arm on linux, we can't used dynamically linked executables + # until one in /system/bin/linker is provided. + # + # We also need to run armv7a-android in unshare --user --pid --fork, to + # ensure that we get a low pid < 65535 for android (If we run outside) + # of nix build envs. # we want this to hold only for arm (32 and 64bit) for now. isLinuxCross = haskellLib.isCrossHost && hostPlatform.isLinux && (hostPlatform.isAarch32 || hostPlatform.isAarch64); @@ -24,12 +40,13 @@ let else iserv-proxy-interpreter; in writeShellScriptBin ("iserv-wrapper" + lib.optionalString enableProfiling "-prof") '' + #!${stdenv.shell} set -euo pipefail # Unset configure flags as configure should have run already unset configureFlags PORT=$((5000 + $RANDOM % 5000)) (>&2 echo "---> Starting ${interpreter.exeName} on port $PORT") - ${qemu}/bin/qemu-${qemuSuffix} ${interpreter.override (lib.optionalAttrs hostPlatform.isAndroid { setupBuildFlags = ["--ghc-option=-optl-static" ];})}/bin/${interpreter.exeName} tmp $PORT & + ${qemu}/bin/qemu-${qemuSuffix} ${interpreter.override (lib.optionalAttrs hostPlatform.isAndroid { setupBuildFlags = ["--ghc-option=-optl-static" ] ++ lib.optional hostPlatform.isAarch32 "--ghc-option=-optl-no-pie";})}/bin/${interpreter.exeName} tmp $PORT & (>&2 echo "---| ${interpreter.exeName} should have started on $PORT") RISERV_PID="$!" ${iserv-proxy}/bin/iserv-proxy $@ 127.0.0.1 "$PORT" diff --git a/overlays/patches/ghc/ghc-8.10-3434-armv7a.patch b/overlays/patches/ghc/ghc-8.10-3434-armv7a.patch new file mode 100644 index 0000000000..6f1eb66ad1 --- /dev/null +++ b/overlays/patches/ghc/ghc-8.10-3434-armv7a.patch @@ -0,0 +1,68 @@ +diff --git a/libraries/ghc-prim/ghc-prim.cabal b/libraries/ghc-prim/ghc-prim.cabal +index c633124..2bd51c0 100644 +--- a/libraries/ghc-prim/ghc-prim.cabal ++++ b/libraries/ghc-prim/ghc-prim.cabal +@@ -70,7 +70,7 @@ Library + if os(linux) + -- we need libm, but for musl and other's we might need libc, as libm + -- is just an empty shell. +- extra-libraries: c, m ++ extra-libraries: c, m + + c-sources: + cbits/atomic.c +diff --git a/rts/RtsSymbols.c b/rts/RtsSymbols.c +index 9ca696c..b4a85e5 100644 +--- a/rts/RtsSymbols.c ++++ b/rts/RtsSymbols.c +@@ -1000,6 +1000,18 @@ + #define RTS_LIBGCC_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 ++ + /* entirely bogus claims about types of these symbols */ + #define SymI_NeedsProto(vvv) extern void vvv(void); + #define SymI_NeedsDataProto(vvv) extern StgWord vvv[]; +@@ -1028,6 +1040,7 @@ RTS_DARWIN_ONLY_SYMBOLS + RTS_OPENBSD_ONLY_SYMBOLS + RTS_LIBGCC_SYMBOLS + RTS_LIBFFI_SYMBOLS ++RTS_LINKER_SYMBOLS + #undef SymI_NeedsProto + #undef SymI_NeedsDataProto + #undef SymI_HasProto +@@ -1068,6 +1081,8 @@ RTS_LIBFFI_SYMBOLS + #define SymI_HasProto_deprecated(vvv) \ + { #vvv, (void*)0xBAADF00D, true }, + ++void *RTS_DYNAMIC = NULL; ++ + RtsSymbolVal rtsSyms[] = { + RTS_SYMBOLS + RTS_RET_SYMBOLS +@@ -1078,6 +1093,7 @@ RtsSymbolVal rtsSyms[] = { + RTS_OPENBSD_ONLY_SYMBOLS + RTS_LIBGCC_SYMBOLS + RTS_LIBFFI_SYMBOLS ++ RTS_LINKER_SYMBOLS + SymI_HasDataProto(nonmoving_write_barrier_enabled) + #if defined(darwin_HOST_OS) && defined(i386_HOST_ARCH) + // dyld stub code contains references to this, +@@ -1085,5 +1101,6 @@ RtsSymbolVal rtsSyms[] = { + // lazy pointers as nonlazy. + { "dyld_stub_binding_helper", (void*)0xDEADBEEF, false }, + #endif ++ { "_DYNAMIC", (void*)(&RTS_DYNAMIC), false }, + { 0, 0, false } /* sentinel */ + }; diff --git a/overlays/patches/ghc/ghc-8.10-android.patch b/overlays/patches/ghc/ghc-8.10-android.patch new file mode 100644 index 0000000000..c251e4c5b1 --- /dev/null +++ b/overlays/patches/ghc/ghc-8.10-android.patch @@ -0,0 +1,262 @@ +diff --git a/rts/Linker.c b/rts/Linker.c +index cfae6fc..b766ce0 100644 +--- a/rts/Linker.c ++++ b/rts/Linker.c +@@ -350,6 +350,37 @@ int ghciInsertSymbolTable( + || strncmp(key, "calloc", 6) == 0 + || strncmp(key, "realloc", 7) == 0 + || strncmp(key, "reallocarray", 12) == 0 ++ ++ || strncmp(key, "open", 4) == 0 ++ || strncmp(key, "close", 5) == 0 ++ || strncmp(key, "stderr", 6) == 0 ++ || strncmp(key, "clock_gettime", 13) == 0 ++ || strncmp(key, "clock_getres", 12) == 0 ++ || strncmp(key, "__stack_chk_guard", 17) == 0 ++ || strncmp(key, "__strchr_chk", 12) == 0 ++ || strncmp(key, "__strcpy_chk", 12) == 0 ++ || strncmp(key, "__strcpy_chk_generic", 20) == 0 ++ || strncmp(key, "__strcat_chk_generic", 20) == 0 ++ || strncmp(key, "__strlcpy_chk", 13) == 0 ++ || strncmp(key, "__strlen_chk", 12) == 0 ++ || strncmp(key, "__strncpy_chk", 13) == 0 ++ || strncmp(key, "__vsnprintf_chk", 15) == 0 ++ || strncmp(key, "__write_chk", 11) == 0 ++ || strncmp(key, "__read_chk", 10) == 0 ++ || strncmp(key, "__memset_chk", 12) == 0 ++ || strncmp(key, "__memset_chk_fail", 17) == 0 ++ || strncmp(key, "__libc_globals", 14) == 0 ++ || strncmp(key, "memmove", 7) == 0 ++ || strncmp(key, "gettimeofday", 12) == 0 ++ || strncmp(key, "strcmp", 6) == 0 ++ || strncmp(key, "fopen", 5) == 0 ++ || strncmp(key, "fread", 5) == 0 ++ || strncmp(key, "fwrite", 6) == 0 ++ || strncmp(key, "fclose", 5) == 0 ++ || strncmp(key, "open", 4) == 0 ++ || strncmp(key, "close", 5) == 0 ++ || strncmp(key, "strerror", 8) == 0 ++ || strncmp(key, "__rel_iplt_start", 16) == 0 + ) { + /* symbols we link aginst the libc we link ghc or iserv against */ + return 1; +diff --git a/rts/RtsSymbols.c b/rts/RtsSymbols.c +index 1da73dd..29ef159 100644 +--- a/rts/RtsSymbols.c ++++ b/rts/RtsSymbols.c +@@ -1009,7 +1009,31 @@ + SymI_NeedsProto(__ashldi3) \ + SymI_NeedsProto(__ashrdi3) \ + SymI_NeedsProto(__lshrdi3) \ +- SymI_NeedsProto(__fixunsdfdi) ++ SymI_NeedsProto(__fixunsdfdi) \ ++ SymI_NeedsProto(__aeabi_memset) \ ++ SymI_NeedsProto(__aeabi_memset4) \ ++ SymI_NeedsProto(__aeabi_memset8) \ ++ SymI_NeedsProto(__aeabi_memcpy) \ ++ SymI_NeedsProto(__aeabi_memcpy4) \ ++ SymI_NeedsProto(__aeabi_memcpy8) \ ++ SymI_NeedsProto(__aeabi_memmove) \ ++ SymI_NeedsProto(__aeabi_memmove4) \ ++ SymI_NeedsProto(__aeabi_memclr) \ ++ SymI_NeedsProto(__aeabi_memclr4) \ ++ SymI_NeedsProto(__aeabi_memclr8) \ ++ SymI_NeedsProto(__aeabi_idiv) \ ++ SymI_NeedsProto(__aeabi_uidiv) \ ++ SymI_NeedsProto(__aeabi_idivmod) \ ++ SymI_NeedsProto(__aeabi_ldivmod) \ ++ SymI_NeedsProto(__aeabi_uidivmod) \ ++ SymI_NeedsProto(__aeabi_uldivmod) \ ++ SymI_NeedsProto(__aeabi_l2f) \ ++ SymI_NeedsProto(__aeabi_l2d) \ ++ SymI_NeedsProto(__aeabi_ul2d) \ ++ SymI_NeedsProto(__aeabi_d2lz) \ ++ SymI_NeedsProto(__aeabi_d2ulz) ++ ++ + #elif defined(__GNUC__) && SIZEOF_VOID_P == 8 + #define RTS_LIBGCC_SYMBOLS \ + SymI_NeedsProto(__udivti3) \ +@@ -1045,10 +1069,45 @@ + SymI_HasProto(free) \ + SymI_HasProto(malloc) \ + SymI_HasProto(calloc) \ +- SymI_HasProto(realloc) ++ SymI_HasProto(realloc) \ ++ SymI_HasProto(stderr) \ ++ SymI_HasProto(fopen) \ ++ SymI_HasProto(fwrite) \ ++ SymI_HasProto(fread) \ ++ SymI_HasProto(fclose) \ ++ SymI_NeedsProto(__assert) \ ++ SymI_NeedsProto(__assert2) \ ++ SymI_NeedsProto(__stack_chk_guard) \ ++ SymI_NeedsProto(__memset_chk) \ ++ SymI_NeedsProto(__memcpy_chk) \ ++ SymI_HasProto(__strlen_chk) \ ++ SymI_NeedsProto(__write_chk) \ ++ SymI_NeedsProto(__read_chk) \ ++ SymI_NeedsProto(__strlcpy_chk) \ ++ SymI_NeedsProto(__strcpy_chk) \ ++ SymI_NeedsProto(__strncpy_chk) \ ++ SymI_NeedsProto(__vsnprintf_chk) \ ++ SymI_HasProto(__strchr_chk) \ ++ SymI_NeedsProto(open) \ ++ SymI_NeedsProto(close) \ ++ SymI_HasProto(strerror) ++#if defined(linux_android_HOST_OS) && SIZEOF_VOID_P <= 4 ++#define RTS_BIONIC_LIBC_SYMBOLS \ ++ // SymI_NeedsProto(reallocarray) \ ++ // SymI_NeedsProto(__svfscanf) \ ++ // SymI_NeedsProto(__vfwscanf) \ ++ // SymI_NeedsProto(__memset_chk_fail) \ ++ // SymI_NeedsProto(__strcpy_chk_generic) \ ++ // SymI_NeedsProto(__strcat_chk_generic) \ ++ // SymI_NeedsProto(__libc_globals) \ ++ // SymI_NeedsProto(__rel_iplt_start) ++#else ++#define RTS_BIONIC_LIBC_SYMBOLS ++#endif + #else + #define RTS_STACK_PROTECTOR_SYMBOLS + #define RTS_LIBC_SYMBOLS ++#define RTS_BIONIC_LIBC_SYMBOLS + #endif + + /* entirely bogus claims about types of these symbols */ +@@ -1082,6 +1141,7 @@ RTS_LIBFFI_SYMBOLS + RTS_LINKER_SYMBOLS + RTS_STACK_PROTECTOR_SYMBOLS + RTS_LIBC_SYMBOLS ++RTS_BIONIC_LIBC_SYMBOLS + #undef SymI_NeedsProto + #undef SymI_NeedsDataProto + #undef SymI_HasProto +@@ -1137,6 +1197,7 @@ RtsSymbolVal rtsSyms[] = { + RTS_LINKER_SYMBOLS + RTS_STACK_PROTECTOR_SYMBOLS + RTS_LIBC_SYMBOLS ++ RTS_BIONIC_LIBC_SYMBOLS + SymI_HasDataProto(nonmoving_write_barrier_enabled) + #if defined(darwin_HOST_OS) && defined(i386_HOST_ARCH) + // dyld stub code contains references to this, +diff --git a/rts/linker/Elf.c b/rts/linker/Elf.c +index c3f9110..da7007c 100644 +--- a/rts/linker/Elf.c ++++ b/rts/linker/Elf.c +@@ -931,6 +931,14 @@ ocGetNames_ELF ( ObjectCode* oc ) + debugBelch("COMMON symbol, size %ld name %s allocated at %p\n", + symbol->elf_sym->st_size, nm, symbol->addr)); + ++ } else if (ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK ++ && shndx == SHN_UNDEF ++ && (ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_FUNC ++ || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_OBJECT ++ || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_NOTYPE)) { ++ symbol->addr = NULL; ++ isLocal = false; ++ isWeak = true; + /* Pointless to do addProddableBlock() for this area, + since the linker should never poke around in it. */ + } else if ((ELF_ST_BIND(symbol->elf_sym->st_info) == STB_GLOBAL +@@ -978,14 +986,7 @@ ocGetNames_ELF ( ObjectCode* oc ) + isWeak = ELF_ST_BIND(symbol->elf_sym->st_info) + == STB_WEAK; + } +- } else if (ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK +- && shndx == SHN_UNDEF +- && (ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_FUNC +- || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_OBJECT +- || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_NOTYPE)) { +- symbol->addr = NULL; +- isLocal = false; +- isWeak = true; ++ + } else { + /* skip this symbol */ + IF_DEBUG(linker, +@@ -1244,6 +1245,7 @@ do_Elf_Rel_relocations ( ObjectCode* oc, char* ehdrC, + + const StgBool overflow = !isInt(26, (StgInt32) result); + // Handle overflow and Thumb interworking ++ is_target_thm = S & 0x1; + const StgBool needs_veneer = + (is_target_thm && ELF_R_TYPE(info) == COMPAT_R_ARM_JUMP24) + || overflow; +diff --git a/rts/linker/elf_plt_arm.c b/rts/linker/elf_plt_arm.c +index bd21243..e3bd3cb 100644 +--- a/rts/linker/elf_plt_arm.c ++++ b/rts/linker/elf_plt_arm.c +@@ -117,13 +117,13 @@ makeStubArmArm(Stub * s) { + uint32_t movt_r12 = 0xe340c000; + uint32_t bx_r12 = 0xe12fff1c; + +- *((uint32_t*)s->addr+0) = movw_r12 ++ ((uint32_t*)s->addr)[0] = movw_r12 + | (((uint32_t )s->target & 0xf000) << 4) + | ((uint32_t )s->target & 0x0fff); +- *((uint32_t*)s->addr+1) = movt_r12 ++ ((uint32_t*)s->addr)[1] = movt_r12 + | ((((uint32_t )s->target >> 16) & 0xf000) << 4) + | (((uint32_t )s->target >> 16) & 0x0fff); +- *((uint32_t*)s->addr+2) = bx_r12; ++ ((uint32_t*)s->addr)[2] = bx_r12; + + return EXIT_SUCCESS; + } +@@ -157,17 +157,20 @@ makeStubArmThm(Stub * s) { + uint32_t movt_r12 = 0xf2c00c00; + uint32_t bx_r12 = 0x47600000; + +- *((uint32_t*)s->addr+0) = movw_r12 ++ uint32_t movw_r12_inst = movw_r12 + | (((uint32_t )s->target & 0xf000) << 4) +- | (((uint32_t )s->target & 0x0800) << 16) ++ | (((uint32_t )s->target & 0x0800) << 15) + | (((uint32_t )s->target & 0x0700) << 4) + | ((uint32_t )s->target & 0x00ff); +- *((uint32_t*)s->addr+1) = movt_r12 ++ uint32_t movt_r12_inst = movt_r12 + | ((((uint32_t )s->target >> 16) & 0xf000) << 4) +- | ((((uint32_t )s->target >> 16) & 0x0800) << 16) ++ | ((((uint32_t )s->target >> 16) & 0x0800) << 15) + | ((((uint32_t )s->target >> 16) & 0x0700) << 4) + | (((uint32_t )s->target >> 16) & 0x00ff); +- *((uint32_t*)s->addr+2) = bx_r12; ++ // encode in little endian (half word reversal) ++ ((uint32_t*)s->addr)[0] = (movw_r12_inst << 16) | (movw_r12_inst >> 16); ++ ((uint32_t*)s->addr)[1] = (movt_r12_inst << 16) | (movt_r12_inst >> 16); ++ ((uint32_t*)s->addr)[2] = (bx_r12 << 16) | (bx_r12 >> 16); + + return EXIT_SUCCESS; + } +diff --git a/utils/check-sphinx/dist/.doctrees/environment.pickle b/utils/check-sphinx/dist/.doctrees/environment.pickle +index 98df77f..a7b10a7 100644 +Binary files a/utils/check-sphinx/dist/.doctrees/environment.pickle and b/utils/check-sphinx/dist/.doctrees/environment.pickle differ +diff --git a/utils/genapply/Main.hs b/utils/genapply/Main.hs +index 8c194f1..24514e1 100644 +--- a/utils/genapply/Main.hs ++++ b/utils/genapply/Main.hs +@@ -12,6 +12,11 @@ + -- for details + module Main(main) where + ++#undef linux_BUILD_OS ++#undef x86_64_BUILD_ARCH ++#undef linux_HOST_OS ++#undef x86_64_HOST_ARCH ++ + -- Note [Genapply target as host for RTS macros] + -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + -- We improperly include *HOST* macros for our target... +diff --git a/utils/genapply/ghc.mk b/utils/genapply/ghc.mk +index 8da1f7a..c206b24 100644 +--- a/utils/genapply/ghc.mk ++++ b/utils/genapply/ghc.mk +@@ -27,4 +27,5 @@ $(eval $(call build-prog,utils/genapply,dist,0)) + + # Purposely do the wrong stage for HOST := TARGET hack. + # See Note [Genapply target as host for RTS macros]. +-utils/genapply_dist_CC_OPTS += -I,$(BUILD_1_INCLUDE_DIR) ++$(utils/genapply_dist_depfile_haskell) : $(includes_1_H_CONFIG) $(includes_1_H_PLATFORM) ++utils/genapply_dist_HC_OPTS += -I$(BUILD_1_INCLUDE_DIR) diff --git a/overlays/patches/ghc/ghc-8.10.7-android-bionic-symbols.patch b/overlays/patches/ghc/ghc-8.10.7-android-bionic-symbols.patch new file mode 100644 index 0000000000..eea586d951 --- /dev/null +++ b/overlays/patches/ghc/ghc-8.10.7-android-bionic-symbols.patch @@ -0,0 +1,31 @@ +diff --git a/rts/RtsSymbols.c b/rts/RtsSymbols.c +index 29ef159..3cb0fc0 100644 +--- a/rts/RtsSymbols.c ++++ b/rts/RtsSymbols.c +@@ -1093,14 +1093,18 @@ + SymI_HasProto(strerror) + #if defined(linux_android_HOST_OS) && SIZEOF_VOID_P <= 4 + #define RTS_BIONIC_LIBC_SYMBOLS \ +- // SymI_NeedsProto(reallocarray) \ +- // SymI_NeedsProto(__svfscanf) \ +- // SymI_NeedsProto(__vfwscanf) \ +- // SymI_NeedsProto(__memset_chk_fail) \ +- // SymI_NeedsProto(__strcpy_chk_generic) \ +- // SymI_NeedsProto(__strcat_chk_generic) \ +- // SymI_NeedsProto(__libc_globals) \ +- // SymI_NeedsProto(__rel_iplt_start) ++ SymI_NeedsProto(reallocarray) \ ++ SymI_NeedsProto(dlopen) \ ++ SymI_NeedsProto(dlerror) \ ++ SymI_NeedsProto(dlclose) \ ++ SymI_NeedsProto(dlsym) \ ++ SymI_NeedsProto(__svfscanf) \ ++ SymI_NeedsProto(__vfwscanf) \ ++ SymI_NeedsProto(__memset_chk_fail) \ ++ SymI_NeedsProto(__strcpy_chk_generic) \ ++ SymI_NeedsProto(__strcat_chk_generic) \ ++ SymI_NeedsProto(__libc_globals) \ ++ SymI_NeedsProto(__rel_iplt_start) + #else + #define RTS_BIONIC_LIBC_SYMBOLS + #endif diff --git a/overlays/patches/ghc/ghc-8.10.7-bionic-libc.patch b/overlays/patches/ghc/ghc-8.10.7-bionic-libc.patch new file mode 100644 index 0000000000..1a71fa24d9 --- /dev/null +++ b/overlays/patches/ghc/ghc-8.10.7-bionic-libc.patch @@ -0,0 +1,35 @@ +diff --git a/rts/linker/Elf.c b/rts/linker/Elf.c +index da7007c..9f99f58 100644 +--- a/rts/linker/Elf.c ++++ b/rts/linker/Elf.c +@@ -1968,15 +1968,22 @@ int ocRunInit_ELF( ObjectCode *oc ) + } + + if (kind == SECTIONKIND_INIT_ARRAY) { +- char *init_startC = oc->sections[i].start; +- init_start = (init_t*)init_startC; +- init_end = (init_t*)(init_startC + shdr[i].sh_size); +- for (init = init_start; init < init_end; init++) { +- ASSERT(0x0 != *init); +- (*init)(argc, argv, envv); +- } +- } ++ char *bname = basename(OC_INFORMATIVE_FILENAME(oc)); + ++ // do not run .array initialization for jemalloc from libc. This simply cannot work. ++ // It's most likely already run by the hosting process (ghc, or iserv) as they've been ++ // linked against that libc. ++ if(strncmp(bname, "libc.a(jemalloc.o)", 18) != 0) ++ { ++ char *init_startC = oc->sections[i].start; ++ init_start = (init_t*)init_startC; ++ init_end = (init_t*)(init_startC + shdr[i].sh_size); ++ for (init = init_start; init < init_end; init++) { ++ ASSERT(0x0 != *init); ++ (*init)(argc, argv, envv); ++ } ++ } ++ } + // XXX could be more strict and assert that it's + // SECTIONKIND_RWDATA; but allowing RODATA seems harmless enough. + if ((kind == SECTIONKIND_RWDATA || kind == SECTIONKIND_CODE_OR_RODATA) diff --git a/overlays/patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch b/overlays/patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch new file mode 100644 index 0000000000..9d6031dc42 --- /dev/null +++ b/overlays/patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch @@ -0,0 +1,74 @@ +diff --git a/utils/compare_sizes/ghc.mk b/utils/compare_sizes/ghc.mk +index d659a5e..b5e4228 100644 +--- a/utils/compare_sizes/ghc.mk ++++ b/utils/compare_sizes/ghc.mk +@@ -5,5 +5,6 @@ utils/compare_sizes_MODULES = Main + utils/compare_sizes_dist-install_PROGNAME = compareSizes + utils/compare_sizes_dist-install_INSTALL_INPLACE = NO + ++ifneq "$(Stage1Only)" "YES" + $(eval $(call build-prog,utils/compare_sizes,dist-install,1)) +- ++endif +\ No newline at end of file +diff --git a/utils/ghc-cabal/ghc.mk b/utils/ghc-cabal/ghc.mk +index 290b233..c9a119f 100644 +--- a/utils/ghc-cabal/ghc.mk ++++ b/utils/ghc-cabal/ghc.mk +@@ -104,4 +104,6 @@ utils/ghc-cabal_dist-install_INSTALL_INPLACE = NO + utils/ghc-cabal_dist-install_WANT_BINDIST_WRAPPER = YES + utils/ghc-cabal_dist-install_MODULES = Main + ++ifneq "$(Stage1Only)" "YES" + $(eval $(call build-prog,utils/ghc-cabal,dist-install,1)) ++endif +\ No newline at end of file +diff --git a/utils/hpc/ghc.mk b/utils/hpc/ghc.mk +index 9b2bce2..448ad16 100644 +--- a/utils/hpc/ghc.mk ++++ b/utils/hpc/ghc.mk +@@ -18,4 +18,6 @@ utils/hpc_dist-install_PROGNAME = hpc + utils/hpc_dist-install_SHELL_WRAPPER = YES + utils/hpc_dist-install_INSTALL_SHELL_WRAPPER_NAME = hpc + ++ifneq "$(Stage1Only)" "YES" + $(eval $(call build-prog,utils/hpc,dist-install,1)) ++endif +\ No newline at end of file +diff --git a/utils/hsc2hs/ghc.mk b/utils/hsc2hs/ghc.mk +index 386d472..5cc6037 100644 +--- a/utils/hsc2hs/ghc.mk ++++ b/utils/hsc2hs/ghc.mk +@@ -18,8 +18,12 @@ utils/hsc2hs_dist_INSTALL = NO + utils/hsc2hs_dist-install_INSTALL = YES + endif + ++ifeq "$(Stage1Only)" "YES" ++$(eval $(call build-prog,utils/hsc2hs,dist,0)) ++else + $(eval $(call build-prog,utils/hsc2hs,dist,0)) + $(eval $(call build-prog,utils/hsc2hs,dist-install,1)) ++endif + + # After build-prog above + utils/hsc2hs_dist-install_MODULES = $(utils/hsc2hs_dist_MODULES) +diff --git a/utils/iserv/ghc.mk b/utils/iserv/ghc.mk +index 74f90e6..e747ca7 100644 +--- a/utils/iserv/ghc.mk ++++ b/utils/iserv/ghc.mk +@@ -96,6 +96,7 @@ NEED_iserv_dyn = NO + endif + endif + ++ifneq "$(Stage1Only)" "YES" + ifeq "$(NEED_iserv)" "YES" + $(eval $(call build-prog,utils/iserv,stage2,1)) + endif +@@ -107,6 +108,7 @@ endif + ifeq "$(NEED_iserv_dyn)" "YES" + $(eval $(call build-prog,utils/iserv,stage2_dyn,1)) + endif ++endif + + all_ghc_stage2 : $(iserv-stage2_INPLACE) + all_ghc_stage2 : $(iserv-stage2_p_INPLACE) diff --git a/overlays/patches/ghc/ghc-8.10.7-linker-weak-and-common-armv7a.patch b/overlays/patches/ghc/ghc-8.10.7-linker-weak-and-common-armv7a.patch new file mode 100644 index 0000000000..b416c6e2c4 --- /dev/null +++ b/overlays/patches/ghc/ghc-8.10.7-linker-weak-and-common-armv7a.patch @@ -0,0 +1,189 @@ +diff --git a/rts/Linker.c b/rts/Linker.c +index 10b0764..7d473f8 100644 +--- a/rts/Linker.c ++++ b/rts/Linker.c +@@ -273,7 +273,7 @@ int ghciInsertSymbolTable( + RtsSymbolInfo *pinfo = lookupStrHashTable(table, key); + if (!pinfo) /* new entry */ + { +- pinfo = stgMallocBytes(sizeof (*pinfo), "ghciInsertToSymbolTable"); ++ pinfo = stgCallocBytes(1, sizeof (*pinfo), "ghciInsertToSymbolTable"); + pinfo->value = data; + pinfo->owner = owner; + pinfo->weak = weak; +@@ -1329,7 +1329,7 @@ mkOc( pathchar *path, char *image, int imageSize, + ObjectCode* oc; + + IF_DEBUG(linker, debugBelch("mkOc: start\n")); +- oc = stgMallocBytes(sizeof(ObjectCode), "mkOc(oc)"); ++ oc = stgCallocBytes(1, sizeof(ObjectCode), "mkOc(oc)"); + + oc->info = NULL; + +@@ -1496,12 +1496,12 @@ preloadObjectFile (pathchar *path) + // reading the file, and then we misalign image on purpose so + // that the actual sections end up aligned again. + misalignment = machoGetMisalignment(f); +- image = stgMallocBytes(fileSize + misalignment, "loadObj(image)"); ++ image = stgCallocBytes(1, fileSize + misalignment, "loadObj(image)"); + image += misalignment; + + # else /* !defined(darwin_HOST_OS) */ + +- image = stgMallocBytes(fileSize, "loadObj(image)"); ++ image = stgCallocBytes(1, fileSize, "loadObj(image)"); + + #endif + +diff --git a/rts/LinkerInternals.h b/rts/LinkerInternals.h +index f326a84..a846bf5 100644 +--- a/rts/LinkerInternals.h ++++ b/rts/LinkerInternals.h +@@ -209,6 +209,10 @@ typedef struct _ObjectCode { + int n_segments; + Segment *segments; + ++ // COMMON section ++ void * common_mem; ++ unsigned long common_size; ++ + // + // Garbage collection fields + // +diff --git a/rts/linker/Elf.c b/rts/linker/Elf.c +index fdfe87a..c3f9110 100644 +--- a/rts/linker/Elf.c ++++ b/rts/linker/Elf.c +@@ -325,6 +325,15 @@ ocDeinit_ELF(ObjectCode * oc) + stgFree(oc->info); + oc->info = NULL; + } ++ if(NULL != oc->common_mem) { ++#if RTS_LINKER_USE_MMAP ++ munmap(oc->common_mem, oc->common_size); ++#else ++ stgFree(oc->common_mem); ++#endif ++ } ++ oc->common_mem = NULL; ++ oc->common_size = 0; + } + + /* +@@ -861,14 +870,17 @@ ocGetNames_ELF ( ObjectCode* oc ) + for (size_t j = 0; j < symTab->n_symbols; j++) { + ElfSymbol *symbol = &symTab->symbols[j]; + if (SHN_COMMON == symTab->symbols[j].elf_sym->st_shndx) { +- common_size += symbol->elf_sym->st_size; ++ // st_value holds the alignment. Adding alignment always ++ // should give us some wiggle room to get alignment right. ++ common_size += symbol->elf_sym->st_size + symbol->elf_sym->st_value; + } + } + } +- void * common_mem = NULL; ++ oc->common_mem = NULL; ++ oc->common_size = common_size; + if(common_size > 0) { +- common_mem = mmapAnonForLinker(common_size); +- if (common_mem == NULL) { ++ oc->common_mem = mmapAnonForLinker(common_size); ++ if (oc->common_mem == NULL) { + barf("ocGetNames_ELF: Failed to allocate memory for SHN_COMMONs"); + } + } +@@ -909,9 +921,10 @@ ocGetNames_ELF ( ObjectCode* oc ) + if (shndx == SHN_COMMON) { + isLocal = false; + ASSERT(common_used < common_size); +- ASSERT(common_mem); +- symbol->addr = (void*)((uintptr_t)common_mem + common_used); +- common_used += symbol->elf_sym->st_size; ++ ASSERT(oc->common_mem); ++ int alignment = symbol->elf_sym->st_value-1; ++ symbol->addr = (void*)(((uintptr_t)oc->common_mem + common_used + alignment) & ~alignment); ++ common_used = (uintptr_t)symbol->addr - (uintptr_t)oc->common_mem + symbol->elf_sym->st_size; + ASSERT(common_used <= common_size); + + IF_DEBUG(linker, +@@ -925,7 +938,9 @@ ocGetNames_ELF ( ObjectCode* oc ) + || ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK + ) + /* and not an undefined symbol */ +- && shndx != SHN_UNDEF ++ && (shndx != SHN_UNDEF ++ /* unless it's weak */ ++ || (shndx == SHN_UNDEF && ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK)) + /* and not in a "special section" */ + && (shndx < SHN_LORESERVE + #if defined(SHN_XINDEX) +@@ -963,33 +978,20 @@ ocGetNames_ELF ( ObjectCode* oc ) + isWeak = ELF_ST_BIND(symbol->elf_sym->st_info) + == STB_WEAK; + } +- } +- +- /* And the decision is ... */ +- +- if (symbol->addr != NULL) { +- ASSERT(nm != NULL); +- /* Acquire! */ +- if (!isLocal) { +- +- if (isWeak == HS_BOOL_TRUE) { +- setWeakSymbol(oc, nm); +- } +- if (!ghciInsertSymbolTable(oc->fileName, symhash, +- nm, symbol->addr, isWeak, oc) +- ) { +- goto fail; +- } +- oc->symbols[curSymbol++].name = nm; +- oc->symbols[curSymbol].addr = symbol->addr; +- } +- } else { +- /* Skip. */ ++ } else if (ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK ++ && shndx == SHN_UNDEF ++ && (ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_FUNC ++ || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_OBJECT ++ || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_NOTYPE)) { ++ symbol->addr = NULL; ++ isLocal = false; ++ isWeak = true; ++ } else { ++ /* skip this symbol */ + IF_DEBUG(linker, + debugBelch("skipping `%s'\n", + nm) + ); +- + /* + debugBelch( + "skipping bind = %d, type = %d, secno = %d `%s'\n", +@@ -999,7 +1001,24 @@ ocGetNames_ELF ( ObjectCode* oc ) + nm + ); + */ +- } ++ continue; ++ } ++ ++ /* And the decision is ... */ ++ ASSERT(nm != NULL); ++ /* Acquire! */ ++ if (!isLocal) { ++ ++ if (isWeak == HS_BOOL_TRUE) { ++ setWeakSymbol(oc, nm); ++ } ++ if (!ghciInsertSymbolTable(oc->fileName, symhash, ++ nm, symbol->addr, isWeak, oc)) { ++ goto fail; ++ } ++ oc->symbols[curSymbol++].name = nm; ++ oc->symbols[curSymbol].addr = symbol->addr; ++ } + } + } + } \ No newline at end of file diff --git a/overlays/patches/ghc/ghc-8.10.7-linker-weak-and-common.patch b/overlays/patches/ghc/ghc-8.10.7-linker-weak-and-common.patch index b416c6e2c4..b982fe3662 100644 --- a/overlays/patches/ghc/ghc-8.10.7-linker-weak-and-common.patch +++ b/overlays/patches/ghc/ghc-8.10.7-linker-weak-and-common.patch @@ -85,9 +85,9 @@ index fdfe87a..c3f9110 100644 + oc->common_mem = NULL; + oc->common_size = common_size; if(common_size > 0) { -- common_mem = mmapAnonForLinker(common_size); +- common_mem = mmapAnonForLinker(common_size, true, "anon:common_mem"); - if (common_mem == NULL) { -+ oc->common_mem = mmapAnonForLinker(common_size); ++ oc->common_mem = mmapAnonForLinker(common_size, true, "anon:common_mem"); + if (oc->common_mem == NULL) { barf("ocGetNames_ELF: Failed to allocate memory for SHN_COMMONs"); } diff --git a/overlays/patches/ghc/libc-memory-symbols-armv7a.patch b/overlays/patches/ghc/libc-memory-symbols-armv7a.patch new file mode 100644 index 0000000000..c705bdda8f --- /dev/null +++ b/overlays/patches/ghc/libc-memory-symbols-armv7a.patch @@ -0,0 +1,42 @@ +diff --git a/rts/Linker.c b/rts/Linker.c +index 062159f..727fe74 100644 +--- a/rts/Linker.c ++++ b/rts/Linker.c +@@ -340,6 +340,20 @@ int ghciInsertSymbolTable( + call this function again to trigger the duplicate error. */ + return 1; + } ++ else if(strncmp(key, "fprintf", 7) == 0 ++ || strncmp(key, "printf", 6) == 0 ++ || strncmp(key, "sprintf", 7) == 0 ++ || strncmp(key, "snprintf", 8) == 0 ++ || strncmp(key, "getauxval", 9) == 0 ++ || strncmp(key, "free", 4) == 0 ++ || strncmp(key, "malloc", 6) == 0 ++ || strncmp(key, "calloc", 6) == 0 ++ || strncmp(key, "realloc", 7) == 0 ++ || strncmp(key, "reallocarray", 12) == 0 ++ ) { ++ /* symbols we link aginst the libc we link ghc or iserv against */ ++ return 1; ++ } + + pathchar* archiveName = NULL; + debugBelch( +diff --git a/rts/RtsSymbols.c b/rts/RtsSymbols.c +index 2acd634..b86b516 100644 +--- a/rts/RtsSymbols.c ++++ b/rts/RtsSymbols.c +@@ -1039,7 +1039,11 @@ + SymI_HasProto(printf) \ + SymI_HasProto(fprintf) \ + SymI_HasProto(sprintf) \ +- SymI_HasProto(snprintf) ++ SymI_HasProto(snprintf) \ ++ SymI_HasProto(free) \ ++ SymI_HasProto(malloc) \ ++ SymI_HasProto(calloc) \ ++ SymI_HasProto(realloc) + #else + #define RTS_STACK_PROTECTOR_SYMBOLS + #define RTS_LIBC_SYMBOLS \ No newline at end of file diff --git a/overlays/patches/ghc/libraries-prim-os-android-armv7a.patch b/overlays/patches/ghc/libraries-prim-os-android-armv7a.patch new file mode 100644 index 0000000000..23274bf737 --- /dev/null +++ b/overlays/patches/ghc/libraries-prim-os-android-armv7a.patch @@ -0,0 +1,13 @@ +diff --git a/libraries/ghc-prim/ghc-prim.cabal b/libraries/ghc-prim/ghc-prim.cabal +index 2bd51c0..aeaeacc 100644 +--- a/libraries/ghc-prim/ghc-prim.cabal ++++ b/libraries/ghc-prim/ghc-prim.cabal +@@ -67,7 +67,7 @@ Library + -- on Windows. Required because of mingw32. + extra-libraries: user32, mingw32, mingwex + +- if os(linux) ++ if os(linux) || os(android) || os(linux-android) + -- we need libm, but for musl and other's we might need libc, as libm + -- is just an empty shell. + extra-libraries: c, m From 0ca227b8e95a017e3d8a604333382025cde2aa04 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Sat, 18 Feb 2023 13:30:18 +0000 Subject: [PATCH 002/109] allow setupBuildFlags on components and packages --- builder/comp-builder.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/builder/comp-builder.nix b/builder/comp-builder.nix index 04d9ad73c0..dc45ef3686 100644 --- a/builder/comp-builder.nix +++ b/builder/comp-builder.nix @@ -496,17 +496,17 @@ let # See also https://gitlab.haskell.org/ghc/ghc/-/issues/12935 (if contentAddressed then '' runHook preBuild - $SETUP_HS build ${haskellLib.componentTarget componentId} -j1 ${lib.concatStringsSep " " setupBuildFlags} + $SETUP_HS build ${haskellLib.componentTarget componentId} -j1 ${lib.concatStringsSep " " (component.setupBuildFlags ++ setupBuildFlags)} runHook postBuild '' else if stdenv.hostPlatform.isGhcjs then '' runHook preBuild # https://gitlab.haskell.org/ghc/ghc/issues/9221 - $SETUP_HS build ${haskellLib.componentTarget componentId} ${lib.concatStringsSep " " setupBuildFlags} + $SETUP_HS build ${haskellLib.componentTarget componentId} ${lib.concatStringsSep " " (component.setupBuildFlags ++ setupBuildFlags)} runHook postBuild '' else '' runHook preBuild # https://gitlab.haskell.org/ghc/ghc/issues/9221 - $SETUP_HS build ${haskellLib.componentTarget componentId} -j$(($NIX_BUILD_CORES > 4 ? 4 : $NIX_BUILD_CORES)) ${lib.concatStringsSep " " setupBuildFlags} + $SETUP_HS build ${haskellLib.componentTarget componentId} -j$(($NIX_BUILD_CORES > 4 ? 4 : $NIX_BUILD_CORES)) ${lib.concatStringsSep " " (component.setupBuildFlags ++ setupBuildFlags)} runHook postBuild ''); From c3c3ca485bfe9817aa165512ca244d724661e723 Mon Sep 17 00:00:00 2001 From: sh <37271604+shumvgolove@users.noreply.github.com> Date: Sun, 19 Mar 2023 02:50:31 +0300 Subject: [PATCH 003/109] android + ios: missing patches (#1884) * android: missing patches * ios: missing patches --- compiler/ghc/default.nix | 11 ++++-- overlays/bootstrap.nix | 2 + .../ghc/ghc-8.10.7-rts-aarch64-darwin.patch | 18 +++++++++ .../ghc/ghc-8.10.7-weak-symbols-2.patch | 37 +++++++++++++++++++ 4 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 overlays/patches/ghc/ghc-8.10.7-rts-aarch64-darwin.patch create mode 100644 overlays/patches/ghc/ghc-8.10.7-weak-symbols-2.patch diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index 34376453e2..d32e1ee946 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -177,6 +177,8 @@ let SplitSections = NO '' + lib.optionalString (!enableLibraryProfiling) '' BUILD_PROF_LIBS = NO + '' + lib.optionalString (disableLargeAddressSpace) '' + libraries/base_CONFIGURE_OPTS += --configure-option=--with-libcharset=no ''; # `--with` flags for libraries needed for RTS linker @@ -210,7 +212,10 @@ let # https://gitlab.haskell.org/ghc/ghc/-/issues/23188 # https://github.com/haskell/cabal/issues/8882 "fp_cv_prog_ar_supports_dash_l=no" - ] ++ lib.optional (targetPlatform.isGhcjs) "--target=javascript-unknown-ghcjs"; # TODO use configurePlatforms once tripple is updated in nixpkgs + ] ++ lib.optionals (targetPlatform.isDarwin) [ + "--without-libcharset" + ] ++ lib.optional (targetPlatform.isGhcjs) "--target=javascript-unknown-ghcjs" # TODO use configurePlatforms once tripple is updated in nixpkgs + ; # Splicer will pull out correct variations libDeps = platform: lib.optional (enableTerminfo && !targetPlatform.isGhcjs) [ targetPackages.ncurses targetPackages.ncurses.dev ] @@ -426,8 +431,8 @@ stdenv.mkDerivation (rec { export NIX_LDFLAGS+=" -rpath $out/lib/${targetPrefix}ghc-${ghc-version}" '' + lib.optionalString stdenv.isDarwin '' export NIX_LDFLAGS+=" -no_dtrace_dof" - '' + - # we really want "+armv7-a,+soft-float,+neon" as features, but llvm will + '' + + # we really want "+armv7-a,+soft-float,+neon" as features, but llvm will # fail with those :facepalm: lib.optionalString targetPlatform.useAndroidPrebuilt '' sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index e5338f3bf9..08b1aa9019 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -286,6 +286,8 @@ in { # Fix the bad fixups: https://gitlab.haskell.org/ghc/ghc/-/commit/2adc050857a9c1b992040fbfd55fbe65b2851b19 ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.6.4" && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/2adc050857a9c1b992040fbfd55fbe65b2851b19.patch ++ final.lib.optional (versionAtLeast "8.10.7" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAarch64 && final.stdenv.targetPlatform.isMusl && final.stdenv.targetPlatform != final.stdenv.hostPlatform) ./patches/ghc/ghc-8.10-aarch64-musl-gettimeofday.patch + ++ final.lib.optional (versionAtLeast "8.10" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-8.10.7-weak-symbols-2.patch + ++ final.lib.optional (versionAtLeast "8.10" && versionLessThan "9.0" && final.stdenv.targetPlatform.isDarwin && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-8.10.7-rts-aarch64-darwin.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10-android.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10.7-android-bionic-symbols.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10.7-bionic-libc.patch diff --git a/overlays/patches/ghc/ghc-8.10.7-rts-aarch64-darwin.patch b/overlays/patches/ghc/ghc-8.10.7-rts-aarch64-darwin.patch new file mode 100644 index 0000000000..04d527a098 --- /dev/null +++ b/overlays/patches/ghc/ghc-8.10.7-rts-aarch64-darwin.patch @@ -0,0 +1,18 @@ +diff --git a/rts/ghc.mk b/rts/ghc.mk +index 6d6ff4bb90..02d3c64ce9 100644 +--- a/rts/ghc.mk ++++ b/rts/ghc.mk +@@ -415,6 +415,13 @@ rts_CC_OPTS += -fno-strict-aliasing + + rts_CC_OPTS += -fno-common + ++ ++ifeq "$(TargetArch_CPP)" "aarch64" ++ifeq "$(TargetOS_CPP)" "darwin" ++rts_CC_OPTS += -mcpu=apple-a7 -march=armv8-a+norcpc ++endif ++endif ++ + ifeq "$(BeConservative)" "YES" + rts_CC_OPTS += -DBE_CONSERVATIVE + endif \ No newline at end of file diff --git a/overlays/patches/ghc/ghc-8.10.7-weak-symbols-2.patch b/overlays/patches/ghc/ghc-8.10.7-weak-symbols-2.patch new file mode 100644 index 0000000000..32d493dfa9 --- /dev/null +++ b/overlays/patches/ghc/ghc-8.10.7-weak-symbols-2.patch @@ -0,0 +1,37 @@ +diff --git a/rts/Linker.c b/rts/Linker.c +index 727fe74..12a22d7 100644 +--- a/rts/Linker.c ++++ b/rts/Linker.c +@@ -1810,6 +1810,8 @@ static HsInt resolveObjs_ (void) + IF_DEBUG(linker, debugBelch("resolveObjs: start\n")); + + for (ObjectCode *oc = objects; oc; oc = oc->next) { ++ if(oc->status == OBJECT_RESOLVED) ++ continue; + int r = ocTryLoad(oc); + if (!r) + { +diff --git a/rts/linker/Elf.c b/rts/linker/Elf.c +index c3f9110..1b497af 100644 +--- a/rts/linker/Elf.c ++++ b/rts/linker/Elf.c +@@ -963,10 +963,15 @@ ocGetNames_ELF ( ObjectCode* oc ) + stab[j].st_size, stab[j].st_value, nm); + } + */ +- symbol->addr = (SymbolAddr*)( +- (intptr_t) oc->sections[secno].start + +- (intptr_t) symbol->elf_sym->st_value); +- ASSERT(symbol->addr != 0x0); ++ if(shndx == SHN_UNDEF && ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK) { ++ symbol->addr = NULL; ++ } else { ++ symbol->addr = (SymbolAddr*)( ++ (intptr_t) oc->sections[secno].start + ++ (intptr_t) symbol->elf_sym->st_value); ++ ASSERT(symbol->addr != 0x0); ++ } ++ + if (ELF_ST_BIND(symbol->elf_sym->st_info) == STB_LOCAL) { + isLocal = true; + isWeak = false; From 079fcba3a679957690ebc3e3f6ef80f12b80f996 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Sat, 7 Oct 2023 12:17:56 +0000 Subject: [PATCH 004/109] Fix hadrian naming convenction cabal ends up with aarch64-android whereas hadrian ends up with aarch64-linux_android --- overlays/bootstrap.nix | 1 + overlays/patches/ghc/ghc-9.6-hadrian-android.patch | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 overlays/patches/ghc/ghc-9.6-hadrian-android.patch diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 08b1aa9019..f268990835 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -292,6 +292,7 @@ in { ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10.7-android-bionic-symbols.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10.7-bionic-libc.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch + ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "9.8" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-hadrian-android.patch ; in ({ ghc865 = final.callPackage ../compiler/ghc (traceWarnOld "8.6" { diff --git a/overlays/patches/ghc/ghc-9.6-hadrian-android.patch b/overlays/patches/ghc/ghc-9.6-hadrian-android.patch new file mode 100644 index 0000000000..fe0c1c4247 --- /dev/null +++ b/overlays/patches/ghc/ghc-9.6-hadrian-android.patch @@ -0,0 +1,10 @@ +diff --git a/hadrian/src/Hadrian/Haskell/Cabal.hs b/hadrian/src/Hadrian/Haskell/Cabal.hs +index f5864b6..69123e1 100644 +--- a/hadrian/src/Hadrian/Haskell/Cabal.hs ++++ b/hadrian/src/Hadrian/Haskell/Cabal.hs +@@ -71,4 +71,5 @@ cabalOsString :: String -> String + cabalOsString "mingw32" = "windows" + cabalOsString "darwin" = "osx" + cabalOsString "solaris2" = "solaris" ++cabalOsString "linux_android" = "android" + cabalOsString other = other \ No newline at end of file From 676aab265e95806e2413e966a27e0d5104d5f6d2 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Sat, 7 Oct 2023 12:18:06 +0000 Subject: [PATCH 005/109] Fix format --- overlays/patches/ghc/ghc-9.0-better-symbol-addr-debug.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/overlays/patches/ghc/ghc-9.0-better-symbol-addr-debug.patch b/overlays/patches/ghc/ghc-9.0-better-symbol-addr-debug.patch index 6ccc52a728..5d71d3c362 100644 --- a/overlays/patches/ghc/ghc-9.0-better-symbol-addr-debug.patch +++ b/overlays/patches/ghc/ghc-9.0-better-symbol-addr-debug.patch @@ -4,11 +4,11 @@ index d8c4f8b724..5e349f2839 100644 +++ b/rts/linker/elf_reloc_aarch64.c @@ -325,7 +325,8 @@ relocateObjectCodeAarch64(ObjectCode * oc) { ELF64_R_SYM((Elf64_Xword)rel->r_info)); - + CHECK(0x0 != symbol); - CHECK(0x0 != symbol->addr); + if(0x0 == symbol->addr) -+ barf("0x0 address for %s + %d of type %d in %s for relocation %d in section %d of kind: %d\n", symbol->name, rel->r_addend, ELF64_R_TYPE((Elf64_Xword)rel->r_info), OC_INFORMATIVE_FILENAME(oc), i, relaTab->targetSectionIndex, oc->sections[relaTab->targetSectionIndex].kind); - ++ barf("0x0 address for %s + %lld of type %llu in %s for relocation %d in section %d of kind: %d\n", symbol->name, rel->r_addend, ELF64_R_TYPE((Elf64_Xword)rel->r_info), OC_INFORMATIVE_FILENAME(oc), i, relaTab->targetSectionIndex, oc->sections[relaTab->targetSectionIndex].kind); + /* take explicit addend */ int64_t addend = rel->r_addend; From c1dfab03c6853fca36f02f966cf382dcb90e9b53 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Sun, 8 Oct 2023 02:44:20 +0000 Subject: [PATCH 006/109] newlines --- overlays/patches/ghc/ghc-9.6-hadrian-android.patch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/overlays/patches/ghc/ghc-9.6-hadrian-android.patch b/overlays/patches/ghc/ghc-9.6-hadrian-android.patch index fe0c1c4247..6e32aaadd2 100644 --- a/overlays/patches/ghc/ghc-9.6-hadrian-android.patch +++ b/overlays/patches/ghc/ghc-9.6-hadrian-android.patch @@ -7,4 +7,5 @@ index f5864b6..69123e1 100644 cabalOsString "darwin" = "osx" cabalOsString "solaris2" = "solaris" +cabalOsString "linux_android" = "android" - cabalOsString other = other \ No newline at end of file + cabalOsString other = other + From 9b3230dfd97621193759fafd49d3dfa9db2c14c3 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Tue, 10 Oct 2023 03:35:19 +0000 Subject: [PATCH 007/109] WIP tools --- builder/comp-builder.nix | 6 +- compiler/ghc/default.nix | 6 +- overlays/bootstrap.nix | 3 +- overlays/patches/ghc/ghc-9.6-32bit-cmm.patch | 24 ++++++++ .../ghc/ghc-9.6-hadrian-strip-cmd.patch | 56 +++++++++++++++++++ 5 files changed, 88 insertions(+), 7 deletions(-) create mode 100644 overlays/patches/ghc/ghc-9.6-32bit-cmm.patch create mode 100644 overlays/patches/ghc/ghc-9.6-hadrian-strip-cmd.patch diff --git a/builder/comp-builder.nix b/builder/comp-builder.nix index dc45ef3686..04d9ad73c0 100644 --- a/builder/comp-builder.nix +++ b/builder/comp-builder.nix @@ -496,17 +496,17 @@ let # See also https://gitlab.haskell.org/ghc/ghc/-/issues/12935 (if contentAddressed then '' runHook preBuild - $SETUP_HS build ${haskellLib.componentTarget componentId} -j1 ${lib.concatStringsSep " " (component.setupBuildFlags ++ setupBuildFlags)} + $SETUP_HS build ${haskellLib.componentTarget componentId} -j1 ${lib.concatStringsSep " " setupBuildFlags} runHook postBuild '' else if stdenv.hostPlatform.isGhcjs then '' runHook preBuild # https://gitlab.haskell.org/ghc/ghc/issues/9221 - $SETUP_HS build ${haskellLib.componentTarget componentId} ${lib.concatStringsSep " " (component.setupBuildFlags ++ setupBuildFlags)} + $SETUP_HS build ${haskellLib.componentTarget componentId} ${lib.concatStringsSep " " setupBuildFlags} runHook postBuild '' else '' runHook preBuild # https://gitlab.haskell.org/ghc/ghc/issues/9221 - $SETUP_HS build ${haskellLib.componentTarget componentId} -j$(($NIX_BUILD_CORES > 4 ? 4 : $NIX_BUILD_CORES)) ${lib.concatStringsSep " " (component.setupBuildFlags ++ setupBuildFlags)} + $SETUP_HS build ${haskellLib.componentTarget componentId} -j$(($NIX_BUILD_CORES > 4 ? 4 : $NIX_BUILD_CORES)) ${lib.concatStringsSep " " setupBuildFlags} runHook postBuild ''); diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index d32e1ee946..aee3e4cddf 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -243,7 +243,7 @@ let # for musl only; but I'd like to stay far away from the unnecessary # bindist logic as we can. It's slow, and buggy, and doesn't provide any # value for us. - installStage1 = useHadrian && (haskell-nix.haskellLib.isCrossTarget || stdenv.targetPlatform.isMusl); + installStage1 = useHadrian && (with haskell-nix.haskellLib; isCrossTarget || isNativeMusl); hadrian = let @@ -683,7 +683,7 @@ stdenv.mkDerivation (rec { --replace 'dynamic-library-dirs:' 'dynamic-library-dirs: ${libcxx}/lib ${libcxxabi}/lib' find . -name 'system*.conf*' cat mk/system-cxx-std-lib-1.0.conf - '' + lib.optionalString (installStage1 && stdenv.targetPlatform.isMusl) '' + '' + lib.optionalString (installStage1 && haskell-nix.haskellLib.isNativeMusl) '' substituteInPlace hadrian/cfg/system.config \ --replace 'cross-compiling = YES' \ 'cross-compiling = NO' @@ -768,7 +768,7 @@ stdenv.mkDerivation (rec { --replace 'dynamic-library-dirs:' 'dynamic-library-dirs: ${libcxx}/lib ${libcxxabi}/lib' find . -name 'system*.conf*' cat mk/system-cxx-std-lib-1.0.conf - '' + lib.optionalString (installStage1 && !haskell-nix.haskellLib.isCrossTarget && stdenv.targetPlatform.isMusl) '' + '' + lib.optionalString (installStage1 && haskell-nix.haskellLib.isNativeMusl) '' substituteInPlace hadrian/cfg/system.config \ --replace 'cross-compiling = YES' \ 'cross-compiling = NO' diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index f268990835..6abee87d00 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -251,7 +251,6 @@ in { ++ final.lib.optionals (final.stdenv.targetPlatform.isWindows) (fromUntil "9.4.1" "9.5" ./patches/ghc/ghc-9.4-hadrian-win-cross.patch) ++ fromUntil "9.6.1" "9.8" ./patches/ghc/MR10116.patch ++ fromUntil "9.4.1" "9.6" ./patches/ghc/hadrian-build-deriveConstants-genprimopcode-ghc94.patch - ++ fromUntil "9.6.1" "9.8" ./patches/ghc/hadrian-build-deriveConstants-genprimopcode.patch ++ final.lib.optional (versionAtLeast "8.10" && versionLessThan "9.4" && final.stdenv.targetPlatform != final.stdenv.hostPlatform) ./patches/ghc/ghc-make-stage-1-lib-ghc.patch # the following is a partial reversal of https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4391, to address haskell.nix#1227 @@ -293,6 +292,8 @@ in { ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10.7-bionic-libc.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.2" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "9.8" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-hadrian-android.patch + ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "9.8" && final.stdenv.targetPlatform.isMusl && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch + ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "10.0" && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-32bit-cmm.patch ; in ({ ghc865 = final.callPackage ../compiler/ghc (traceWarnOld "8.6" { diff --git a/overlays/patches/ghc/ghc-9.6-32bit-cmm.patch b/overlays/patches/ghc/ghc-9.6-32bit-cmm.patch new file mode 100644 index 0000000000..4267c8ec1d --- /dev/null +++ b/overlays/patches/ghc/ghc-9.6-32bit-cmm.patch @@ -0,0 +1,24 @@ +diff --git a/compiler/GHC/StgToCmm/CgUtils.hs b/compiler/GHC/StgToCmm/CgUtils.hs +index 4718cbf..07001c6 100644 +--- a/compiler/GHC/StgToCmm/CgUtils.hs ++++ b/compiler/GHC/StgToCmm/CgUtils.hs +@@ -173,15 +173,15 @@ fixStgRegStmt platform stmt = fixAssign $ mapExpDeep fixExpr stmt + BaseReg -> baseAddr + _other -> CmmLoad baseAddr (globalRegType platform reg) NaturallyAligned + +- CmmRegOff (CmmGlobal reg) offset -> ++ CmmRegOff greg@(CmmGlobal reg) offset -> + -- RegOf leaves are just a shorthand form. If the reg maps + -- to a real reg, we keep the shorthand, otherwise, we just + -- expand it and defer to the above code. + case reg `elem` activeStgRegs platform of + True -> expr +- False -> CmmMachOp (MO_Add (wordWidth platform)) [ +- fixExpr (CmmReg (CmmGlobal reg)), ++ False -> CmmMachOp (MO_Add (cmmRegWidth platform greg)) [ ++ fixExpr (CmmReg greg), + CmmLit (CmmInt (fromIntegral offset) +- (wordWidth platform))] ++ (cmmRegWidth platform greg))] + + other_expr -> other_expr \ No newline at end of file diff --git a/overlays/patches/ghc/ghc-9.6-hadrian-strip-cmd.patch b/overlays/patches/ghc/ghc-9.6-hadrian-strip-cmd.patch new file mode 100644 index 0000000000..f5652b35e9 --- /dev/null +++ b/overlays/patches/ghc/ghc-9.6-hadrian-strip-cmd.patch @@ -0,0 +1,56 @@ +diff --git a/hadrian/cfg/system.config.in b/hadrian/cfg/system.config.in +index 6a891b4..a2289f8 100644 +--- a/hadrian/cfg/system.config.in ++++ b/hadrian/cfg/system.config.in +@@ -18,6 +18,7 @@ merge-objects = @MergeObjsCmd@ + system-merge-objects = @LD_STAGE0@ + objdump = @ObjdumpCmd@ + ranlib = @REAL_RANLIB_CMD@ ++strip = @StripCmd@ + sphinx-build = @SPHINXBUILD@ + system-ar = @AR_STAGE0@ + system-cc = @CC_STAGE0@ +diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs +index 462d289..535cc5f 100644 +--- a/hadrian/src/Oracles/Setting.hs ++++ b/hadrian/src/Oracles/Setting.hs +@@ -69,6 +69,7 @@ data Setting = BuildArch + | ProjectPatchLevel + | ProjectPatchLevel1 + | ProjectPatchLevel2 ++ | Strip + | SystemGhc + | TargetArch + | TargetOs +@@ -171,6 +172,7 @@ setting key = lookupSystemConfig $ case key of + ProjectPatchLevel -> "project-patch-level" + ProjectPatchLevel1 -> "project-patch-level1" + ProjectPatchLevel2 -> "project-patch-level2" ++ Strip -> "strip" + SystemGhc -> "system-ghc" + TargetArch -> "target-arch" + TargetArmVersion -> "target-arm-version" +diff --git a/hadrian/src/Settings/Builders/Cabal.hs b/hadrian/src/Settings/Builders/Cabal.hs +index 2e42185..032ca72 100644 +--- a/hadrian/src/Settings/Builders/Cabal.hs ++++ b/hadrian/src/Settings/Builders/Cabal.hs +@@ -85,15 +85,11 @@ commonCabalArgs :: Stage -> Args + commonCabalArgs stage = do + verbosity <- expr getVerbosity + pkg <- getPackage ++ strip <- getSetting Strip + package_id <- expr $ pkgIdentifier pkg + let prefix = "${pkgroot}" ++ (if windowsHost then "" else "/..") +- mconcat [ -- Don't strip libraries when cross compiling. +- -- TODO: We need to set @--with-strip=(stripCmdPath :: Action FilePath)@, +- -- and if it's @:@ disable stripping as well. As it is now, I believe +- -- we might have issues with stripping on Windows, as I can't see a +- -- consumer of 'stripCmdPath'. +- -- TODO: See https://github.com/snowleopard/hadrian/issues/549. +- flag CrossCompiling ? pure [ "--disable-executable-stripping" ++ mconcat [ notStage0 ? strip /= "" ? pure [ "--with-strip=" ++ strip ] ++ , flag CrossCompiling ? pure [ "--disable-executable-stripping" + , "--disable-library-stripping" ] + -- We don't want to strip the debug RTS + , S.package rts ? pure [ "--disable-executable-stripping" + From 26379ae25394bdbe59665cb1444a1fae6a32136a Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Wed, 11 Oct 2023 04:53:27 +0000 Subject: [PATCH 008/109] Add iserv logic --- overlays/bootstrap.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 6abee87d00..15f124b4ff 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -294,6 +294,8 @@ in { ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "9.8" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-hadrian-android.patch ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "9.8" && final.stdenv.targetPlatform.isMusl && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "10.0" && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-32bit-cmm.patch + # this one is to allow linking extra symbols from iserv. + ++ final.lib.optional (versionAtLeast "9.6.1" && versionLessThan"9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/iserv-syms.patch ; in ({ ghc865 = final.callPackage ../compiler/ghc (traceWarnOld "8.6" { From 44af1d427b093891b913be62e91f0789c68e5d60 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Sun, 15 Oct 2023 13:04:09 +0000 Subject: [PATCH 009/109] WIP --- overlays/bootstrap.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 15f124b4ff..f59c860d25 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -296,6 +296,7 @@ in { ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "10.0" && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-32bit-cmm.patch # this one is to allow linking extra symbols from iserv. ++ final.lib.optional (versionAtLeast "9.6.1" && versionLessThan"9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/iserv-syms.patch + ++ final.lib.optional (versionAtLeast "9.4" && final.stdenv.targetPlatform.isWindows) ./patches/ghc/ghc-9.6-fix-code-symbol-jumps.patch ; in ({ ghc865 = final.callPackage ../compiler/ghc (traceWarnOld "8.6" { From fc0989b2aaf94df29ddb0e79e66a713d7374ed50 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Sun, 22 Oct 2023 13:10:50 +0000 Subject: [PATCH 010/109] Fix 9.6.3 aarch64 outline atomics --- overlays/bootstrap.nix | 1 + ...-9.6.3-fix-outline-atomics-signature.patch | 820 ++++++++++++++++++ 2 files changed, 821 insertions(+) create mode 100644 overlays/patches/ghc/ghc-9.6.3-fix-outline-atomics-signature.patch diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index f59c860d25..e99845690a 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -280,6 +280,7 @@ in { ++ final.lib.optional (versionAtLeast "9.4" && versionLessThan "9.4.8" && final.stdenv.targetPlatform.isWindows) ./patches/ghc/ghc-9.6-fix-code-symbol-jumps.patch ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.6.4" && final.stdenv.targetPlatform.isWindows) ./patches/ghc/ghc-9.6-fix-code-symbol-jumps.patch ++ final.lib.optional (versionAtLeast "9.8" && versionLessThan "9.9.20231203" && final.stdenv.targetPlatform.isWindows) ./patches/ghc/ghc-9.6-fix-code-symbol-jumps.patch + ++ final.lib.optional (versionAtLeast "9.6.3" && versionLessThan "9.10" && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-9.6.3-fix-outline-atomics-signature.patch # this one is to allow linking extra symbols from iserv. # ++ fromUntil "9.6.1" "9.10" ./patches/ghc/iserv-syms.patch # Fix the bad fixups: https://gitlab.haskell.org/ghc/ghc/-/commit/2adc050857a9c1b992040fbfd55fbe65b2851b19 diff --git a/overlays/patches/ghc/ghc-9.6.3-fix-outline-atomics-signature.patch b/overlays/patches/ghc/ghc-9.6.3-fix-outline-atomics-signature.patch new file mode 100644 index 0000000000..65b683b194 --- /dev/null +++ b/overlays/patches/ghc/ghc-9.6.3-fix-outline-atomics-signature.patch @@ -0,0 +1,820 @@ +diff --git a/rts/ARMOutlineAtomicsSymbols.h b/rts/ARMOutlineAtomicsSymbols.h +index c8a78b5..31c095e 100644 +--- a/rts/ARMOutlineAtomicsSymbols.h ++++ b/rts/ARMOutlineAtomicsSymbols.h +@@ -10,583 +10,583 @@ + #include + #include + +-uint8_t ghc___aarch64_cas1_relax(uint8_t old, uint8_t new, uint8_t* p); +-uint8_t ghc___aarch64_cas1_relax(uint8_t old, uint8_t new, uint8_t* p) { ++uint8_t ghc___aarch64_cas1_relax(uint8_t old, uint8_t new, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_cas1_relax(uint8_t old, uint8_t new, atomic_uint_least8_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_relaxed, memory_order_relaxed); return old; + } + +-uint8_t ghc___aarch64_cas1_acq(uint8_t old, uint8_t new, uint8_t* p); +-uint8_t ghc___aarch64_cas1_acq(uint8_t old, uint8_t new, uint8_t* p) { ++uint8_t ghc___aarch64_cas1_acq(uint8_t old, uint8_t new, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_cas1_acq(uint8_t old, uint8_t new, atomic_uint_least8_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_acquire, memory_order_acquire); return old; + } + +-uint8_t ghc___aarch64_cas1_acq_rel(uint8_t old, uint8_t new, uint8_t* p); +-uint8_t ghc___aarch64_cas1_acq_rel(uint8_t old, uint8_t new, uint8_t* p) { ++uint8_t ghc___aarch64_cas1_acq_rel(uint8_t old, uint8_t new, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_cas1_acq_rel(uint8_t old, uint8_t new, atomic_uint_least8_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_acq_rel, memory_order_acquire); return old; + } + +-uint8_t ghc___aarch64_cas1_sync(uint8_t old, uint8_t new, uint8_t* p); +-uint8_t ghc___aarch64_cas1_sync(uint8_t old, uint8_t new, uint8_t* p) { ++uint8_t ghc___aarch64_cas1_sync(uint8_t old, uint8_t new, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_cas1_sync(uint8_t old, uint8_t new, atomic_uint_least8_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_seq_cst, memory_order_seq_cst); return old; + } + +-uint16_t ghc___aarch64_cas2_relax(uint16_t old, uint16_t new, uint16_t* p); +-uint16_t ghc___aarch64_cas2_relax(uint16_t old, uint16_t new, uint16_t* p) { ++uint16_t ghc___aarch64_cas2_relax(uint16_t old, uint16_t new, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_cas2_relax(uint16_t old, uint16_t new, atomic_uint_least16_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_relaxed, memory_order_relaxed); return old; + } + +-uint16_t ghc___aarch64_cas2_acq(uint16_t old, uint16_t new, uint16_t* p); +-uint16_t ghc___aarch64_cas2_acq(uint16_t old, uint16_t new, uint16_t* p) { ++uint16_t ghc___aarch64_cas2_acq(uint16_t old, uint16_t new, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_cas2_acq(uint16_t old, uint16_t new, atomic_uint_least16_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_acquire, memory_order_acquire); return old; + } + +-uint16_t ghc___aarch64_cas2_acq_rel(uint16_t old, uint16_t new, uint16_t* p); +-uint16_t ghc___aarch64_cas2_acq_rel(uint16_t old, uint16_t new, uint16_t* p) { ++uint16_t ghc___aarch64_cas2_acq_rel(uint16_t old, uint16_t new, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_cas2_acq_rel(uint16_t old, uint16_t new, atomic_uint_least16_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_acq_rel, memory_order_acquire); return old; + } + +-uint16_t ghc___aarch64_cas2_sync(uint16_t old, uint16_t new, uint16_t* p); +-uint16_t ghc___aarch64_cas2_sync(uint16_t old, uint16_t new, uint16_t* p) { ++uint16_t ghc___aarch64_cas2_sync(uint16_t old, uint16_t new, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_cas2_sync(uint16_t old, uint16_t new, atomic_uint_least16_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_seq_cst, memory_order_seq_cst); return old; + } + +-uint32_t ghc___aarch64_cas4_relax(uint32_t old, uint32_t new, uint32_t* p); +-uint32_t ghc___aarch64_cas4_relax(uint32_t old, uint32_t new, uint32_t* p) { ++uint32_t ghc___aarch64_cas4_relax(uint32_t old, uint32_t new, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_cas4_relax(uint32_t old, uint32_t new, atomic_uint_least32_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_relaxed, memory_order_relaxed); return old; + } + +-uint32_t ghc___aarch64_cas4_acq(uint32_t old, uint32_t new, uint32_t* p); +-uint32_t ghc___aarch64_cas4_acq(uint32_t old, uint32_t new, uint32_t* p) { ++uint32_t ghc___aarch64_cas4_acq(uint32_t old, uint32_t new, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_cas4_acq(uint32_t old, uint32_t new, atomic_uint_least32_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_acquire, memory_order_acquire); return old; + } + +-uint32_t ghc___aarch64_cas4_acq_rel(uint32_t old, uint32_t new, uint32_t* p); +-uint32_t ghc___aarch64_cas4_acq_rel(uint32_t old, uint32_t new, uint32_t* p) { ++uint32_t ghc___aarch64_cas4_acq_rel(uint32_t old, uint32_t new, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_cas4_acq_rel(uint32_t old, uint32_t new, atomic_uint_least32_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_acq_rel, memory_order_acquire); return old; + } + +-uint32_t ghc___aarch64_cas4_sync(uint32_t old, uint32_t new, uint32_t* p); +-uint32_t ghc___aarch64_cas4_sync(uint32_t old, uint32_t new, uint32_t* p) { ++uint32_t ghc___aarch64_cas4_sync(uint32_t old, uint32_t new, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_cas4_sync(uint32_t old, uint32_t new, atomic_uint_least32_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_seq_cst, memory_order_seq_cst); return old; + } + +-uint64_t ghc___aarch64_cas8_relax(uint64_t old, uint64_t new, uint64_t* p); +-uint64_t ghc___aarch64_cas8_relax(uint64_t old, uint64_t new, uint64_t* p) { ++uint64_t ghc___aarch64_cas8_relax(uint64_t old, uint64_t new, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_cas8_relax(uint64_t old, uint64_t new, atomic_uint_least64_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_relaxed, memory_order_relaxed); return old; + } + +-uint64_t ghc___aarch64_cas8_acq(uint64_t old, uint64_t new, uint64_t* p); +-uint64_t ghc___aarch64_cas8_acq(uint64_t old, uint64_t new, uint64_t* p) { ++uint64_t ghc___aarch64_cas8_acq(uint64_t old, uint64_t new, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_cas8_acq(uint64_t old, uint64_t new, atomic_uint_least64_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_acquire, memory_order_acquire); return old; + } + +-uint64_t ghc___aarch64_cas8_acq_rel(uint64_t old, uint64_t new, uint64_t* p); +-uint64_t ghc___aarch64_cas8_acq_rel(uint64_t old, uint64_t new, uint64_t* p) { ++uint64_t ghc___aarch64_cas8_acq_rel(uint64_t old, uint64_t new, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_cas8_acq_rel(uint64_t old, uint64_t new, atomic_uint_least64_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_acq_rel, memory_order_acquire); return old; + } + +-uint64_t ghc___aarch64_cas8_sync(uint64_t old, uint64_t new, uint64_t* p); +-uint64_t ghc___aarch64_cas8_sync(uint64_t old, uint64_t new, uint64_t* p) { ++uint64_t ghc___aarch64_cas8_sync(uint64_t old, uint64_t new, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_cas8_sync(uint64_t old, uint64_t new, atomic_uint_least64_t* p) { + atomic_compare_exchange_strong_explicit(p, &old, new, memory_order_seq_cst, memory_order_seq_cst); return old; + } + +-uint8_t ghc___aarch64_swp1_relax(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_swp1_relax(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_swp1_relax(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_swp1_relax(uint8_t v, atomic_uint_least8_t* p) { + return atomic_exchange_explicit(p, v, memory_order_relaxed); + } + +-uint8_t ghc___aarch64_swp1_acq(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_swp1_acq(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_swp1_acq(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_swp1_acq(uint8_t v, atomic_uint_least8_t* p) { + return atomic_exchange_explicit(p, v, memory_order_acquire); + } + +-uint8_t ghc___aarch64_swp1_rel(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_swp1_rel(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_swp1_rel(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_swp1_rel(uint8_t v, atomic_uint_least8_t* p) { + return atomic_exchange_explicit(p, v, memory_order_release); + } + +-uint8_t ghc___aarch64_swp1_acq_rel(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_swp1_acq_rel(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_swp1_acq_rel(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_swp1_acq_rel(uint8_t v, atomic_uint_least8_t* p) { + return atomic_exchange_explicit(p, v, memory_order_acq_rel); + } + +-uint8_t ghc___aarch64_swp1_sync(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_swp1_sync(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_swp1_sync(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_swp1_sync(uint8_t v, atomic_uint_least8_t* p) { + return atomic_exchange_explicit(p, v, memory_order_seq_cst); + } + +-uint16_t ghc___aarch64_swp2_relax(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_swp2_relax(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_swp2_relax(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_swp2_relax(uint16_t v, atomic_uint_least16_t* p) { + return atomic_exchange_explicit(p, v, memory_order_relaxed); + } + +-uint16_t ghc___aarch64_swp2_acq(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_swp2_acq(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_swp2_acq(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_swp2_acq(uint16_t v, atomic_uint_least16_t* p) { + return atomic_exchange_explicit(p, v, memory_order_acquire); + } + +-uint16_t ghc___aarch64_swp2_rel(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_swp2_rel(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_swp2_rel(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_swp2_rel(uint16_t v, atomic_uint_least16_t* p) { + return atomic_exchange_explicit(p, v, memory_order_release); + } + +-uint16_t ghc___aarch64_swp2_acq_rel(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_swp2_acq_rel(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_swp2_acq_rel(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_swp2_acq_rel(uint16_t v, atomic_uint_least16_t* p) { + return atomic_exchange_explicit(p, v, memory_order_acq_rel); + } + +-uint16_t ghc___aarch64_swp2_sync(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_swp2_sync(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_swp2_sync(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_swp2_sync(uint16_t v, atomic_uint_least16_t* p) { + return atomic_exchange_explicit(p, v, memory_order_seq_cst); + } + +-uint32_t ghc___aarch64_swp4_relax(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_swp4_relax(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_swp4_relax(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_swp4_relax(uint32_t v, atomic_uint_least32_t* p) { + return atomic_exchange_explicit(p, v, memory_order_relaxed); + } + +-uint32_t ghc___aarch64_swp4_acq(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_swp4_acq(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_swp4_acq(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_swp4_acq(uint32_t v, atomic_uint_least32_t* p) { + return atomic_exchange_explicit(p, v, memory_order_acquire); + } + +-uint32_t ghc___aarch64_swp4_rel(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_swp4_rel(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_swp4_rel(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_swp4_rel(uint32_t v, atomic_uint_least32_t* p) { + return atomic_exchange_explicit(p, v, memory_order_release); + } + +-uint32_t ghc___aarch64_swp4_acq_rel(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_swp4_acq_rel(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_swp4_acq_rel(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_swp4_acq_rel(uint32_t v, atomic_uint_least32_t* p) { + return atomic_exchange_explicit(p, v, memory_order_acq_rel); + } + +-uint32_t ghc___aarch64_swp4_sync(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_swp4_sync(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_swp4_sync(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_swp4_sync(uint32_t v, atomic_uint_least32_t* p) { + return atomic_exchange_explicit(p, v, memory_order_seq_cst); + } + +-uint64_t ghc___aarch64_swp8_relax(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_swp8_relax(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_swp8_relax(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_swp8_relax(uint64_t v, atomic_uint_least64_t* p) { + return atomic_exchange_explicit(p, v, memory_order_relaxed); + } + +-uint64_t ghc___aarch64_swp8_acq(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_swp8_acq(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_swp8_acq(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_swp8_acq(uint64_t v, atomic_uint_least64_t* p) { + return atomic_exchange_explicit(p, v, memory_order_acquire); + } + +-uint64_t ghc___aarch64_swp8_rel(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_swp8_rel(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_swp8_rel(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_swp8_rel(uint64_t v, atomic_uint_least64_t* p) { + return atomic_exchange_explicit(p, v, memory_order_release); + } + +-uint64_t ghc___aarch64_swp8_acq_rel(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_swp8_acq_rel(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_swp8_acq_rel(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_swp8_acq_rel(uint64_t v, atomic_uint_least64_t* p) { + return atomic_exchange_explicit(p, v, memory_order_acq_rel); + } + +-uint64_t ghc___aarch64_swp8_sync(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_swp8_sync(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_swp8_sync(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_swp8_sync(uint64_t v, atomic_uint_least64_t* p) { + return atomic_exchange_explicit(p, v, memory_order_seq_cst); + } + +-uint8_t ghc___aarch64_ldadd1_relax(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldadd1_relax(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldadd1_relax(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldadd1_relax(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_relaxed); + } + +-uint8_t ghc___aarch64_ldadd1_acq(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldadd1_acq(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldadd1_acq(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldadd1_acq(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_acquire); + } + +-uint8_t ghc___aarch64_ldadd1_rel(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldadd1_rel(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldadd1_rel(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldadd1_rel(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_release); + } + +-uint8_t ghc___aarch64_ldadd1_acq_rel(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldadd1_acq_rel(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldadd1_acq_rel(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldadd1_acq_rel(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_acq_rel); + } + +-uint8_t ghc___aarch64_ldadd1_sync(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldadd1_sync(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldadd1_sync(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldadd1_sync(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_seq_cst); + } + +-uint16_t ghc___aarch64_ldadd2_relax(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldadd2_relax(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldadd2_relax(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldadd2_relax(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_relaxed); + } + +-uint16_t ghc___aarch64_ldadd2_acq(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldadd2_acq(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldadd2_acq(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldadd2_acq(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_acquire); + } + +-uint16_t ghc___aarch64_ldadd2_rel(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldadd2_rel(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldadd2_rel(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldadd2_rel(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_release); + } + +-uint16_t ghc___aarch64_ldadd2_acq_rel(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldadd2_acq_rel(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldadd2_acq_rel(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldadd2_acq_rel(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_acq_rel); + } + +-uint16_t ghc___aarch64_ldadd2_sync(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldadd2_sync(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldadd2_sync(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldadd2_sync(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_seq_cst); + } + +-uint32_t ghc___aarch64_ldadd4_relax(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldadd4_relax(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldadd4_relax(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldadd4_relax(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_relaxed); + } + +-uint32_t ghc___aarch64_ldadd4_acq(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldadd4_acq(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldadd4_acq(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldadd4_acq(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_acquire); + } + +-uint32_t ghc___aarch64_ldadd4_rel(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldadd4_rel(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldadd4_rel(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldadd4_rel(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_release); + } + +-uint32_t ghc___aarch64_ldadd4_acq_rel(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldadd4_acq_rel(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldadd4_acq_rel(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldadd4_acq_rel(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_acq_rel); + } + +-uint32_t ghc___aarch64_ldadd4_sync(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldadd4_sync(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldadd4_sync(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldadd4_sync(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_seq_cst); + } + +-uint64_t ghc___aarch64_ldadd8_relax(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldadd8_relax(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldadd8_relax(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldadd8_relax(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_relaxed); + } + +-uint64_t ghc___aarch64_ldadd8_acq(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldadd8_acq(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldadd8_acq(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldadd8_acq(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_acquire); + } + +-uint64_t ghc___aarch64_ldadd8_rel(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldadd8_rel(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldadd8_rel(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldadd8_rel(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_release); + } + +-uint64_t ghc___aarch64_ldadd8_acq_rel(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldadd8_acq_rel(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldadd8_acq_rel(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldadd8_acq_rel(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_acq_rel); + } + +-uint64_t ghc___aarch64_ldadd8_sync(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldadd8_sync(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldadd8_sync(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldadd8_sync(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_add_explicit(p, v, memory_order_seq_cst); + } + +-uint8_t ghc___aarch64_ldclr1_relax(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldclr1_relax(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldclr1_relax(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldclr1_relax(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_relaxed); + } + +-uint8_t ghc___aarch64_ldclr1_acq(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldclr1_acq(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldclr1_acq(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldclr1_acq(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_acquire); + } + +-uint8_t ghc___aarch64_ldclr1_rel(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldclr1_rel(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldclr1_rel(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldclr1_rel(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_release); + } + +-uint8_t ghc___aarch64_ldclr1_acq_rel(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldclr1_acq_rel(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldclr1_acq_rel(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldclr1_acq_rel(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_acq_rel); + } + +-uint8_t ghc___aarch64_ldclr1_sync(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldclr1_sync(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldclr1_sync(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldclr1_sync(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_seq_cst); + } + +-uint16_t ghc___aarch64_ldclr2_relax(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldclr2_relax(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldclr2_relax(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldclr2_relax(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_relaxed); + } + +-uint16_t ghc___aarch64_ldclr2_acq(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldclr2_acq(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldclr2_acq(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldclr2_acq(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_acquire); + } + +-uint16_t ghc___aarch64_ldclr2_rel(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldclr2_rel(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldclr2_rel(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldclr2_rel(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_release); + } + +-uint16_t ghc___aarch64_ldclr2_acq_rel(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldclr2_acq_rel(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldclr2_acq_rel(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldclr2_acq_rel(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_acq_rel); + } + +-uint16_t ghc___aarch64_ldclr2_sync(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldclr2_sync(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldclr2_sync(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldclr2_sync(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_seq_cst); + } + +-uint32_t ghc___aarch64_ldclr4_relax(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldclr4_relax(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldclr4_relax(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldclr4_relax(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_relaxed); + } + +-uint32_t ghc___aarch64_ldclr4_acq(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldclr4_acq(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldclr4_acq(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldclr4_acq(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_acquire); + } + +-uint32_t ghc___aarch64_ldclr4_rel(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldclr4_rel(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldclr4_rel(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldclr4_rel(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_release); + } + +-uint32_t ghc___aarch64_ldclr4_acq_rel(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldclr4_acq_rel(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldclr4_acq_rel(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldclr4_acq_rel(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_acq_rel); + } + +-uint32_t ghc___aarch64_ldclr4_sync(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldclr4_sync(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldclr4_sync(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldclr4_sync(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_seq_cst); + } + +-uint64_t ghc___aarch64_ldclr8_relax(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldclr8_relax(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldclr8_relax(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldclr8_relax(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_relaxed); + } + +-uint64_t ghc___aarch64_ldclr8_acq(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldclr8_acq(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldclr8_acq(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldclr8_acq(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_acquire); + } + +-uint64_t ghc___aarch64_ldclr8_rel(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldclr8_rel(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldclr8_rel(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldclr8_rel(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_release); + } + +-uint64_t ghc___aarch64_ldclr8_acq_rel(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldclr8_acq_rel(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldclr8_acq_rel(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldclr8_acq_rel(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_acq_rel); + } + +-uint64_t ghc___aarch64_ldclr8_sync(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldclr8_sync(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldclr8_sync(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldclr8_sync(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_and_explicit(p, v, memory_order_seq_cst); + } + +-uint8_t ghc___aarch64_ldeor1_relax(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldeor1_relax(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldeor1_relax(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldeor1_relax(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_relaxed); + } + +-uint8_t ghc___aarch64_ldeor1_acq(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldeor1_acq(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldeor1_acq(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldeor1_acq(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_acquire); + } + +-uint8_t ghc___aarch64_ldeor1_rel(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldeor1_rel(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldeor1_rel(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldeor1_rel(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_release); + } + +-uint8_t ghc___aarch64_ldeor1_acq_rel(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldeor1_acq_rel(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldeor1_acq_rel(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldeor1_acq_rel(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_acq_rel); + } + +-uint8_t ghc___aarch64_ldeor1_sync(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldeor1_sync(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldeor1_sync(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldeor1_sync(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_seq_cst); + } + +-uint16_t ghc___aarch64_ldeor2_relax(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldeor2_relax(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldeor2_relax(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldeor2_relax(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_relaxed); + } + +-uint16_t ghc___aarch64_ldeor2_acq(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldeor2_acq(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldeor2_acq(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldeor2_acq(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_acquire); + } + +-uint16_t ghc___aarch64_ldeor2_rel(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldeor2_rel(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldeor2_rel(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldeor2_rel(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_release); + } + +-uint16_t ghc___aarch64_ldeor2_acq_rel(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldeor2_acq_rel(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldeor2_acq_rel(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldeor2_acq_rel(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_acq_rel); + } + +-uint16_t ghc___aarch64_ldeor2_sync(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldeor2_sync(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldeor2_sync(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldeor2_sync(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_seq_cst); + } + +-uint32_t ghc___aarch64_ldeor4_relax(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldeor4_relax(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldeor4_relax(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldeor4_relax(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_relaxed); + } + +-uint32_t ghc___aarch64_ldeor4_acq(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldeor4_acq(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldeor4_acq(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldeor4_acq(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_acquire); + } + +-uint32_t ghc___aarch64_ldeor4_rel(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldeor4_rel(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldeor4_rel(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldeor4_rel(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_release); + } + +-uint32_t ghc___aarch64_ldeor4_acq_rel(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldeor4_acq_rel(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldeor4_acq_rel(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldeor4_acq_rel(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_acq_rel); + } + +-uint32_t ghc___aarch64_ldeor4_sync(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldeor4_sync(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldeor4_sync(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldeor4_sync(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_seq_cst); + } + +-uint64_t ghc___aarch64_ldeor8_relax(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldeor8_relax(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldeor8_relax(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldeor8_relax(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_relaxed); + } + +-uint64_t ghc___aarch64_ldeor8_acq(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldeor8_acq(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldeor8_acq(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldeor8_acq(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_acquire); + } + +-uint64_t ghc___aarch64_ldeor8_rel(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldeor8_rel(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldeor8_rel(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldeor8_rel(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_release); + } + +-uint64_t ghc___aarch64_ldeor8_acq_rel(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldeor8_acq_rel(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldeor8_acq_rel(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldeor8_acq_rel(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_acq_rel); + } + +-uint64_t ghc___aarch64_ldeor8_sync(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldeor8_sync(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldeor8_sync(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldeor8_sync(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_xor_explicit(p, v, memory_order_seq_cst); + } + +-uint8_t ghc___aarch64_ldset1_relax(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldset1_relax(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldset1_relax(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldset1_relax(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_relaxed); + } + +-uint8_t ghc___aarch64_ldset1_acq(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldset1_acq(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldset1_acq(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldset1_acq(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_acquire); + } + +-uint8_t ghc___aarch64_ldset1_rel(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldset1_rel(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldset1_rel(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldset1_rel(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_release); + } + +-uint8_t ghc___aarch64_ldset1_acq_rel(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldset1_acq_rel(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldset1_acq_rel(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldset1_acq_rel(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_acq_rel); + } + +-uint8_t ghc___aarch64_ldset1_sync(uint8_t v, uint8_t* p); +-uint8_t ghc___aarch64_ldset1_sync(uint8_t v, uint8_t* p) { ++uint8_t ghc___aarch64_ldset1_sync(uint8_t v, atomic_uint_least8_t* p); ++uint8_t ghc___aarch64_ldset1_sync(uint8_t v, atomic_uint_least8_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_seq_cst); + } + +-uint16_t ghc___aarch64_ldset2_relax(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldset2_relax(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldset2_relax(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldset2_relax(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_relaxed); + } + +-uint16_t ghc___aarch64_ldset2_acq(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldset2_acq(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldset2_acq(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldset2_acq(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_acquire); + } + +-uint16_t ghc___aarch64_ldset2_rel(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldset2_rel(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldset2_rel(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldset2_rel(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_release); + } + +-uint16_t ghc___aarch64_ldset2_acq_rel(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldset2_acq_rel(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldset2_acq_rel(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldset2_acq_rel(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_acq_rel); + } + +-uint16_t ghc___aarch64_ldset2_sync(uint16_t v, uint16_t* p); +-uint16_t ghc___aarch64_ldset2_sync(uint16_t v, uint16_t* p) { ++uint16_t ghc___aarch64_ldset2_sync(uint16_t v, atomic_uint_least16_t* p); ++uint16_t ghc___aarch64_ldset2_sync(uint16_t v, atomic_uint_least16_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_seq_cst); + } + +-uint32_t ghc___aarch64_ldset4_relax(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldset4_relax(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldset4_relax(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldset4_relax(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_relaxed); + } + +-uint32_t ghc___aarch64_ldset4_acq(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldset4_acq(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldset4_acq(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldset4_acq(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_acquire); + } + +-uint32_t ghc___aarch64_ldset4_rel(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldset4_rel(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldset4_rel(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldset4_rel(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_release); + } + +-uint32_t ghc___aarch64_ldset4_acq_rel(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldset4_acq_rel(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldset4_acq_rel(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldset4_acq_rel(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_acq_rel); + } + +-uint32_t ghc___aarch64_ldset4_sync(uint32_t v, uint32_t* p); +-uint32_t ghc___aarch64_ldset4_sync(uint32_t v, uint32_t* p) { ++uint32_t ghc___aarch64_ldset4_sync(uint32_t v, atomic_uint_least32_t* p); ++uint32_t ghc___aarch64_ldset4_sync(uint32_t v, atomic_uint_least32_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_seq_cst); + } + +-uint64_t ghc___aarch64_ldset8_relax(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldset8_relax(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldset8_relax(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldset8_relax(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_relaxed); + } + +-uint64_t ghc___aarch64_ldset8_acq(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldset8_acq(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldset8_acq(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldset8_acq(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_acquire); + } + +-uint64_t ghc___aarch64_ldset8_rel(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldset8_rel(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldset8_rel(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldset8_rel(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_release); + } + +-uint64_t ghc___aarch64_ldset8_acq_rel(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldset8_acq_rel(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldset8_acq_rel(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldset8_acq_rel(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_acq_rel); + } + +-uint64_t ghc___aarch64_ldset8_sync(uint64_t v, uint64_t* p); +-uint64_t ghc___aarch64_ldset8_sync(uint64_t v, uint64_t* p) { ++uint64_t ghc___aarch64_ldset8_sync(uint64_t v, atomic_uint_least64_t* p); ++uint64_t ghc___aarch64_ldset8_sync(uint64_t v, atomic_uint_least64_t* p) { + return atomic_fetch_or_explicit(p, v, memory_order_seq_cst); + } + From 8c33c01ba053c6847ea74c7a4b1a2e7de84bb292 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Mon, 23 Oct 2023 08:00:12 +0000 Subject: [PATCH 011/109] Better patch --- .../iserv-proxy-interpreter-9.3-android.patch | 166 ++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 overlays/patches/iserv-proxy-interpreter-9.3-android.patch diff --git a/overlays/patches/iserv-proxy-interpreter-9.3-android.patch b/overlays/patches/iserv-proxy-interpreter-9.3-android.patch new file mode 100644 index 0000000000..0f40f148b9 --- /dev/null +++ b/overlays/patches/iserv-proxy-interpreter-9.3-android.patch @@ -0,0 +1,166 @@ +diff --git a/cbits/symbols.c b/cbits/symbols.c +new file mode 100644 +index 0000000..d447895 +--- /dev/null ++++ b/cbits/symbols.c +@@ -0,0 +1,147 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++// #include ++// #include // this includes too many overloaded items. ++#include ++#include ++#include ++#include ++#include ++#include ++ ++// fnctl stubs, see above ++extern void open(void); ++extern void creat(void); ++extern void eventfd(void); ++extern void eventfd_write(void); ++extern void __stack_chk_fail(void); ++ ++typedef void SymbolAddr; ++typedef char SymbolName; ++ ++typedef enum _SymStrength { ++ STRENGTH_NORMAL, ++ STRENGTH_WEAK, ++ STRENGTH_STRONG, ++} SymStrength; ++ ++typedef enum _SymType { ++ SYM_TYPE_CODE = 1 << 0, /* the symbol is a function and can be relocated via a jump island */ ++ SYM_TYPE_DATA = 1 << 1, /* the symbol is data */ ++ SYM_TYPE_INDIRECT_DATA = 1 << 2, /* see Note [_iob_func symbol] */ ++ SYM_TYPE_DUP_DISCARD = 1 << 3, /* the symbol is a symbol in a BFD import library ++ however if a duplicate is found with a mismatching ++ SymType then discard this one. */ ++} SymType; ++ ++typedef struct _RtsSymbolVal { ++ const SymbolName* lbl; ++ SymbolAddr* addr; ++ SymStrength strength; ++ SymType type; ++} RtsSymbolVal; ++ ++#define SYM(x) { #x, (void*)(&x), STRENGTH_NORMAL, 1 } ++typedef mode_t (*umask_func_ptr_t)(mode_t); ++ ++RtsSymbolVal my_iserv_syms[] = { ++ // time.h ++ SYM(clock), ++ // sys/time.h ++ SYM(gettimeofday),SYM(clock_getres),SYM(clock_gettime),SYM(localtime_r),SYM(tzset), ++ // unistd.h ++ SYM(environ), ++ SYM(ftruncate), ++ SYM(getenv), ++ SYM(putenv), ++ SYM(unsetenv), ++ SYM(read), ++ SYM(write), ++ SYM(isatty), ++ SYM(link), ++ SYM(pipe), ++ SYM(unlink), ++ // errno.h ++ SYM(__errno), ++ // math.h ++ SYM(sinhf), SYM(sinh), SYM(sinf), SYM(sin), ++ SYM(coshf), SYM(cosh), SYM(cosf), SYM(cos), ++ SYM(atanhf), SYM(atanh), SYM(atanf), SYM(atan), ++ SYM(asinhf), SYM(asinh), SYM(asinf), SYM(asin), ++ SYM(acoshf), SYM(acosh), SYM(acosf), SYM(acos), ++ SYM(log1pf), SYM(log1p), SYM(logf), SYM(log), ++ SYM(expm1f), SYM(expm1), ++ SYM(expf), SYM(exp), ++ SYM(ldexp), ++ SYM(powf), SYM(pow), ++ SYM(sqrtf), SYM(sqrt), ++ SYM(tanhf), SYM(tanh), SYM(tanf), SYM(tan), ++ // assert.h ++ SYM(__assert2), ++ // signal.h ++ SYM(raise), SYM(sigaddset), SYM(sigemptyset), SYM(sigprocmask), ++ // sys/eventfd.h ++ SYM(eventfd), SYM(eventfd_write), ++ // sys/stat.h ++ SYM(fstat), ++ SYM(lstat), ++ SYM(stat), ++ SYM(chmod), ++ SYM(mkfifo), ++ // SYM(umask), ++ { "umask", (umask_func_ptr_t)(&umask), STRENGTH_NORMAL, 1 }, ++ // sys/wait.h ++ SYM(waitpid), ++ // sym/epoll.h ++ SYM(epoll_create), SYM(epoll_ctl), SYM(epoll_wait), ++ // poll.h ++ SYM(poll), ++ // fcntl.h ++ SYM(open), SYM(creat), SYM(fcntl), SYM(ioctl), ++ // string.h ++ SYM(strerror), ++ SYM(strcmp), ++ SYM(memchr), ++ // ctype.h ++ SYM(__ctype_get_mb_cur_max), ++ // wchar.h ++ SYM(mbrtowc), SYM(wcrtomb), ++ // stdlib.h ++ SYM(qsort), ++ // unistd.h ++ SYM(access), SYM(close), SYM(dup), SYM(dup2), SYM(fork), SYM(getpid), ++ SYM(lseek), ++ // utime.h ++ SYM(utime), ++ // ... ++ SYM(__stack_chk_fail), ++ SYM(memmove), ++ SYM(memcmp), ++ SYM(memcpy), ++ SYM(memset), ++ SYM(stderr), ++ SYM(realloc), ++ SYM(calloc), ++ SYM(malloc), ++ SYM(free), ++ SYM(fprintf), ++ SYM(fopen), SYM(fclose), ++ SYM(fread), ++ SYM(abort), ++ SYM(strlen), ++ { 0, 0, STRENGTH_NORMAL, 1 } /* sentinel */ ++}; ++ ++RtsSymbolVal* iserv_syms() { ++ return my_iserv_syms; ++} +\ No newline at end of file +diff --git a/iserv-proxy.cabal b/iserv-proxy.cabal +index a0eeaeb..a146108 100644 +--- a/iserv-proxy.cabal ++++ b/iserv-proxy.cabal +@@ -101,6 +101,7 @@ Executable iserv-proxy + Executable iserv-proxy-interpreter + Default-Language: Haskell2010 + Main-Is: Interpreter.hs ++ c-sources: cbits/symbols.c + Build-Depends: base >= 4 && < 5, + iserv-proxy + From e8198e9b77d2454c42496d8ab518eda4a245df56 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Mon, 23 Oct 2023 08:00:18 +0000 Subject: [PATCH 012/109] Better linux cross --- overlays/linux-cross.nix | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/overlays/linux-cross.nix b/overlays/linux-cross.nix index 36861dde24..f4940779e5 100644 --- a/overlays/linux-cross.nix +++ b/overlays/linux-cross.nix @@ -42,14 +42,21 @@ let writeShellScriptBin ("iserv-wrapper" + lib.optionalString enableProfiling "-prof") '' #!${stdenv.shell} set -euo pipefail + ISERV_ARGS=''${ISERV_ARGS:-} + PROXY_ARGS=''${PROXY_ARGS:-} # Unset configure flags as configure should have run already unset configureFlags PORT=$((5000 + $RANDOM % 5000)) (>&2 echo "---> Starting ${interpreter.exeName} on port $PORT") - ${qemu}/bin/qemu-${qemuSuffix} ${interpreter.override (lib.optionalAttrs hostPlatform.isAndroid { setupBuildFlags = ["--ghc-option=-optl-static" ] ++ lib.optional hostPlatform.isAarch32 "--ghc-option=-optl-no-pie";})}/bin/${interpreter.exeName} tmp $PORT & + ${qemu}/bin/qemu-${qemuSuffix} ${interpreter.override + (lib.optionalAttrs hostPlatform.isAndroid { + setupBuildFlags = ["--ghc-option=-optl-static" ] ++ lib.optional hostPlatform.isAarch32 "--ghc-option=-optl-no-pie"; + patches = [ ./patches/iserv-proxy-interpreter-9.3-android.patch ]; + enableDebugRTS = true; + })}/bin/${interpreter.exeName} tmp $PORT $ISERV_ARGS & (>&2 echo "---| ${interpreter.exeName} should have started on $PORT") RISERV_PID="$!" - ${iserv-proxy}/bin/iserv-proxy $@ 127.0.0.1 "$PORT" + ${iserv-proxy}/bin/iserv-proxy $@ 127.0.0.1 "$PORT" $PROXY_ARGS (>&2 echo "---> killing ${interpreter.exeName}...") kill $RISERV_PID ''; From 4009bb7437194bb179f8826b8ce9f5cb08126900 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Mon, 23 Oct 2023 08:00:33 +0000 Subject: [PATCH 013/109] Fix ghc:-dynamic-system-linker for android --- compiler/ghc/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index aee3e4cddf..c52f8deae1 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -322,6 +322,8 @@ let # `-fexternal-dynamic-refs` causes `undefined reference` errors when building GHC cross compiler for windows + lib.optionalString (enableRelocatedStaticLibs && targetPlatform.isx86_64 && !targetPlatform.isWindows) " '*.*.ghc.*.opts += -fexternal-dynamic-refs'" + + lib.optionalString targetPlatform.isAndroid + " '*.ghc.cabal.configure.opts += --flags=-dynamic-system-linker'" # The following is required if we build on aarch64-darwin for aarch64-iOS. Otherwise older # iPhones/iPads/... won't understand the compiled code, as the compiler will emit LDSETALH # + lib.optionalString (targetPlatform.???) "'*.rts.ghc.c.opts += -optc-mcpu=apple-a7 -optc-march=armv8-a+norcpc'" From 0c9b2acb33edb12f0aa009325df52f27274b40a7 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Thu, 26 Oct 2023 07:37:48 +0000 Subject: [PATCH 014/109] Fixup arm --- builder/comp-builder.nix | 10 +- overlays/linux-cross.nix | 2 +- .../iserv-proxy-interpreter-9.3-android.patch | 179 +++++++++++++++++- 3 files changed, 185 insertions(+), 6 deletions(-) diff --git a/builder/comp-builder.nix b/builder/comp-builder.nix index 04d9ad73c0..384a917245 100644 --- a/builder/comp-builder.nix +++ b/builder/comp-builder.nix @@ -206,7 +206,15 @@ let (enableFeature enableShared "shared") (enableFeature enableExecutableDynamic "executable-dynamic") (enableFeature doCoverage "coverage") - (enableFeature (enableLibraryForGhci && !stdenv.hostPlatform.isGhcjs) "library-for-ghci") + # For Android (or really anything that uses lld), -r will silently drop + # "lazy" symbols. Those are leaf symbols with no referenes. This however + # does not work when loading the objects into the linker, because then we + # occationally miss symbols when subsequent libraries depending on the one + # that dropped the symbol are loaded. bfd and lld support --whole-archive + # lld -r --whole-archive ... will _not_ drop lazy symbols. However the + # --whole-archive flag needs to come _before_ the objects, it's applied in + # sequence. The proper fix is thusly to add --while-archive to Cabal. + (enableFeature (enableLibraryForGhci && !stdenv.hostPlatform.isGhcjs && !stdenv.hostPlatform.isAndroid) "library-for-ghci") ] ++ lib.optionals (stdenv.hostPlatform.isMusl && (haskellLib.isExecutableType componentId)) [ # These flags will make sure the resulting executable is statically linked. # If it uses other libraries it may be necessary for to add more diff --git a/overlays/linux-cross.nix b/overlays/linux-cross.nix index f4940779e5..55e26c960b 100644 --- a/overlays/linux-cross.nix +++ b/overlays/linux-cross.nix @@ -61,7 +61,7 @@ let kill $RISERV_PID ''; qemuIservWrapper = symlinkJoin { name = "iserv-wrapper"; paths = [ (qemuIservWrapperScript false) (qemuIservWrapperScript true) ]; }; - configureFlags = lib.optional hostPlatform.isAarch32 "--disable-split-sections"; + configureFlags = lib.optional (hostPlatform.isAarch32 || hostPlatform.isAndroid) "--disable-split-sections"; setupBuildFlags = map (opt: "--ghc-option=" + opt) ((lib.optionals isLinuxCross [ "-fexternal-interpreter" "-pgmi" "${qemuIservWrapper}/bin/iserv-wrapper" diff --git a/overlays/patches/iserv-proxy-interpreter-9.3-android.patch b/overlays/patches/iserv-proxy-interpreter-9.3-android.patch index 0f40f148b9..77f79c7ba2 100644 --- a/overlays/patches/iserv-proxy-interpreter-9.3-android.patch +++ b/overlays/patches/iserv-proxy-interpreter-9.3-android.patch @@ -3,7 +3,7 @@ new file mode 100644 index 0000000..d447895 --- /dev/null +++ b/cbits/symbols.c -@@ -0,0 +1,147 @@ +@@ -0,0 +1,318 @@ +#include +#include +#include @@ -24,13 +24,56 @@ index 0000000..d447895 +#include +#include +#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include + +// fnctl stubs, see above +extern void open(void); ++extern void openat(void); +extern void creat(void); +extern void eventfd(void); +extern void eventfd_write(void); ++ ++extern void futimes(void); ++extern void lutimes(void); ++extern void statx(void); ++ +extern void __stack_chk_fail(void); ++extern void __vsprintf_chk(void); ++extern void __open_2(void); ++extern void __memcpy_chk(void); ++extern void __memset_chk(void); ++extern void __memmove_chk(void); ++// GCC stuff ++extern void __addtf3(void); ++extern void __divtf3(void); ++extern void __extenddftf2(void); ++extern void __fixtfsi(void); ++extern void __floatditf(void); ++extern void __floatsitf(void); ++extern void __getf2(void); ++extern void __gttf2(void); ++extern void __lttf2(void); ++extern void __multf3(void); ++extern void __subtf3(void); ++extern void __trunctfdf2(void); ++ ++#define MISSING_FUN(f) void (f)(void) { printf("Unknown call to `%s'\n", #f); exit(1); } ++ ++MISSING_FUN(c_format_unix_time) ++MISSING_FUN(c_format_unix_time_gmt) ++MISSING_FUN(c_parse_unix_time) ++MISSING_FUN(c_parse_unix_time_gmt) + +typedef void SymbolAddr; +typedef char SymbolName; @@ -61,11 +104,78 @@ index 0000000..d447895 +typedef mode_t (*umask_func_ptr_t)(mode_t); + +RtsSymbolVal my_iserv_syms[] = { ++ // arpa/inet.h ++ SYM(htons), ++ SYM(ntohs), ++ SYM(htonl), ++ SYM(ntohl), ++ // sys/random.h ++ SYM(getentropy), ++ SYM(getrandom), ++ // sys/auxv.h ++ SYM(getauxval), ++ // sys/mman.h ++ SYM(madvise),SYM(mlock),SYM(mmap),SYM(mprotect),SYM(munmap), ++ SYM(mremap), ++ SYM(munlock), ++ // select.h ++ SYM(__FD_SET_chk), ++ // sys/socket ++ SYM(accept),SYM(bind),SYM(connect),SYM(getsockopt),SYM(listen), ++ SYM(setsockopt),SYM(socket),SYM(getsockname),SYM(select), ++ SYM(getpeername),SYM(__cmsg_nxthdr),SYM(recv),SYM(recvfrom), ++ SYM(recvmsg),SYM(send),SYM(sendmsg),SYM(sendto),SYM(writev), ++ SYM(accept4), ++ // pthread.h ++ SYM(pthread_equal),SYM(pthread_getspecific),SYM(pthread_key_create), ++ SYM(pthread_key_delete),SYM(pthread_once),SYM(pthread_rwlock_destroy), ++ SYM(pthread_rwlock_init),SYM(pthread_rwlock_rdlock),SYM(pthread_rwlock_unlock), ++ SYM(pthread_rwlock_wrlock),SYM(pthread_self),SYM(pthread_setspecific), ++ SYM(pthread_create),SYM(pthread_join),SYM(pthread_mutex_destroy), ++ SYM(pthread_mutex_init),SYM(pthread_mutex_lock),SYM(pthread_mutex_trylock), ++ SYM(pthread_mutex_unlock),SYM(pthread_mutexattr_destroy), ++ SYM(pthread_mutexattr_init),SYM(pthread_mutexattr_settype), ++ // chk.h ++ SYM(__read_chk),SYM(__write_chk), ++ // netdb.h ++ SYM(freeaddrinfo),SYM(gai_strerror),SYM(getaddrinfo),SYM(getnameinfo), ++ SYM(gethostbyname), ++ // dirent.h ++ SYM(readdir_r),SYM(readdir), ++ SYM(opendir),SYM(closedir), + // time.h -+ SYM(clock), ++ SYM(clock),SYM(gmtime_r), + // sys/time.h + SYM(gettimeofday),SYM(clock_getres),SYM(clock_gettime),SYM(localtime_r),SYM(tzset), + // unistd.h ++ SYM(readlink), ++ SYM(rename), ++ SYM(rmdir), ++ SYM(chown), ++ SYM(realpath), ++ SYM(fchdir), ++ SYM(fdopendir), ++ SYM(rewinddir), ++ SYM(futimens),SYM(futimes),SYM(lutimes), ++ SYM(mknod), ++ SYM(lchown), ++ SYM(symlink), ++ SYM(endgrent),SYM(endpwent), ++ SYM(pathconf), ++ SYM(truncate), ++ SYM(utimensat), ++ SYM(statx), ++ SYM(seekdir), ++ SYM(telldir), ++ SYM(clearenv), ++ SYM(chdir), ++ SYM(sleep), ++ SYM(stdout), ++ SYM(strftime), ++ SYM(utimes), ++ SYM(setenv), ++ SYM(fpathconf), ++ SYM(exit), + SYM(environ), + SYM(ftruncate), + SYM(getenv), @@ -77,6 +187,8 @@ index 0000000..d447895 + SYM(link), + SYM(pipe), + SYM(unlink), ++ SYM(execv),SYM(execve),SYM(execvp),SYM(execvpe), ++ SYM(syscall),SYM(sysconf), + // errno.h + SYM(__errno), + // math.h @@ -95,6 +207,7 @@ index 0000000..d447895 + // assert.h + SYM(__assert2), + // signal.h ++ SYM(signal),SYM(sigaction), + SYM(raise), SYM(sigaddset), SYM(sigemptyset), SYM(sigprocmask), + // sys/eventfd.h + SYM(eventfd), SYM(eventfd_write), @@ -114,10 +227,14 @@ index 0000000..d447895 + SYM(poll), + // fcntl.h + SYM(open), SYM(creat), SYM(fcntl), SYM(ioctl), ++ SYM(openat),SYM(__open_2), + // string.h + SYM(strerror), + SYM(strcmp), -+ SYM(memchr), ++ SYM(memchr),SYM(strcpy),SYM(strchr),SYM(strncpy),SYM(strrchr), ++ SYM(strcat),SYM(strncmp),SYM(strdup), ++ SYM(strtoul),SYM(strspn),SYM(strtol),SYM(strstr),SYM(strcspn), ++ SYM(__strncpy_chk2),SYM(__memcpy_chk), + // ctype.h + SYM(__ctype_get_mb_cur_max), + // wchar.h @@ -128,8 +245,14 @@ index 0000000..d447895 + SYM(access), SYM(close), SYM(dup), SYM(dup2), SYM(fork), SYM(getpid), + SYM(lseek), + // utime.h -+ SYM(utime), ++ SYM(utime),SYM(time), + // ... ++ SYM(fileno), ++ SYM(__vsprintf_chk), ++ SYM(__strlen_chk), ++ SYM(__strchr_chk), ++ SYM(__memset_chk), ++ SYM(__memmove_chk), + SYM(__stack_chk_fail), + SYM(memmove), + SYM(memcmp), @@ -141,10 +264,58 @@ index 0000000..d447895 + SYM(malloc), + SYM(free), + SYM(fprintf), ++ SYM(vfprintf), + SYM(fopen), SYM(fclose), ++ SYM(getegid),SYM(getgid), ++ SYM(getpwent), ++ SYM(getgrent), ++ SYM(getgroups), ++ SYM(getlogin), ++ SYM(getuid), ++ SYM(getgrgid_r),SYM(getgrnam_r),SYM(getpwnam_r),SYM(getpwuid_r), ++ SYM(setegid),SYM(seteuid),SYM(setgid),SYM(setgrent),SYM(setgroups), ++ SYM(setpwent),SYM(setuid), + SYM(fread), + SYM(abort), + SYM(strlen), ++ SYM(fwrite), ++ SYM(feof), ++ SYM(ferror), ++ SYM(fflush), ++ SYM(fgets),SYM(fputc),SYM(fputs), ++ SYM(fseek),SYM(ftell), ++ SYM(sscanf), ++ SYM(shutdown), ++ SYM(atoi), ++ SYM(stdin), ++ SYM(atexit), ++ SYM(usleep), ++ SYM(fchmod), ++ SYM(fchown), ++ SYM(fsync), ++ SYM(getcwd), ++ SYM(geteuid), ++ SYM(localtime), ++ SYM(lseek64), ++ SYM(mkdir), ++ SYM(mktime), ++ SYM(fdopen), ++ SYM(c_format_unix_time), ++ SYM(c_format_unix_time_gmt), ++ SYM(c_parse_unix_time), ++ SYM(c_parse_unix_time_gmt), ++ SYM(__addtf3), ++ SYM(__divtf3), ++ SYM(__extenddftf2), ++ SYM(__fixtfsi), ++ SYM(__floatditf), ++ SYM(__floatsitf), ++ SYM(__getf2), ++ SYM(__gttf2), ++ SYM(__lttf2), ++ SYM(__multf3), ++ SYM(__subtf3), ++ SYM(__trunctfdf2), + { 0, 0, STRENGTH_NORMAL, 1 } /* sentinel */ +}; + From 90094fddda7152b8ceeafec24d159b2dc3353649 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Mon, 30 Oct 2023 11:44:10 +0000 Subject: [PATCH 015/109] Patch only for aarch64 --- overlays/linux-cross.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlays/linux-cross.nix b/overlays/linux-cross.nix index 55e26c960b..64de610c61 100644 --- a/overlays/linux-cross.nix +++ b/overlays/linux-cross.nix @@ -51,7 +51,7 @@ let ${qemu}/bin/qemu-${qemuSuffix} ${interpreter.override (lib.optionalAttrs hostPlatform.isAndroid { setupBuildFlags = ["--ghc-option=-optl-static" ] ++ lib.optional hostPlatform.isAarch32 "--ghc-option=-optl-no-pie"; - patches = [ ./patches/iserv-proxy-interpreter-9.3-android.patch ]; + patches = lib.optional hostPlatform.isAarch64 ./patches/iserv-proxy-interpreter-9.3-android.patch; enableDebugRTS = true; })}/bin/${interpreter.exeName} tmp $PORT $ISERV_ARGS & (>&2 echo "---| ${interpreter.exeName} should have started on $PORT") From 79882ce9d092e37330e233a9fe42becbbc3f4555 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Wed, 1 Nov 2023 10:47:21 +0800 Subject: [PATCH 016/109] add aggregated ghc-9.6 patch --- overlays/bootstrap.nix | 1 + overlays/patches/ghc/ghc-9.6-iog.patch | 353 +++++++++++++++++++++++++ 2 files changed, 354 insertions(+) create mode 100644 overlays/patches/ghc/ghc-9.6-iog.patch diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index e99845690a..b9683505ea 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -298,6 +298,7 @@ in { # this one is to allow linking extra symbols from iserv. ++ final.lib.optional (versionAtLeast "9.6.1" && versionLessThan"9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/iserv-syms.patch ++ final.lib.optional (versionAtLeast "9.4" && final.stdenv.targetPlatform.isWindows) ./patches/ghc/ghc-9.6-fix-code-symbol-jumps.patch + ++ final.lib.optional (versionAtLeast "9.6.3" && versionLessThan "9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-iog.patch ; in ({ ghc865 = final.callPackage ../compiler/ghc (traceWarnOld "8.6" { diff --git a/overlays/patches/ghc/ghc-9.6-iog.patch b/overlays/patches/ghc/ghc-9.6-iog.patch new file mode 100644 index 0000000000..1c8a306064 --- /dev/null +++ b/overlays/patches/ghc/ghc-9.6-iog.patch @@ -0,0 +1,353 @@ +diff --git a/rts/Linker.c b/rts/Linker.c +index 59e2ff9397..78e43cd471 100644 +--- a/rts/Linker.c ++++ b/rts/Linker.c +@@ -267,7 +267,7 @@ int ghciInsertSymbolTable( + RtsSymbolInfo *pinfo = lookupStrHashTable(table, key); + if (!pinfo) /* new entry */ + { +- pinfo = stgMallocBytes(sizeof (*pinfo), "ghciInsertToSymbolTable"); ++ pinfo = stgCallocBytes(1, sizeof (*pinfo), "ghciInsertToSymbolTable"); + pinfo->value = data; + pinfo->owner = owner; + pinfo->strength = strength; +@@ -605,11 +605,11 @@ internal_dlopen(const char *dll_name) + /* dlopen failed; return a ptr to the error msg. */ + errmsg = dlerror(); + if (errmsg == NULL) errmsg = "addDLL: unknown error"; +- errmsg_copy = stgMallocBytes(strlen(errmsg)+1, "addDLL"); ++ errmsg_copy = stgCallocBytes(1,strlen(errmsg)+1, "addDLL"); + strcpy(errmsg_copy, errmsg); + errmsg = errmsg_copy; + } else { +- o_so = stgMallocBytes(sizeof(OpenedSO), "addDLL"); ++ o_so = stgCallocBytes(1,sizeof(OpenedSO), "addDLL"); + o_so->handle = hdl; + o_so->next = openedSOs; + openedSOs = o_so; +@@ -1314,7 +1314,7 @@ mkOc( ObjectType type, pathchar *path, char *image, int imageSize, + + + IF_DEBUG(linker, debugBelch("mkOc: %" PATH_FMT "\n", path)); +- oc = stgMallocBytes(sizeof(ObjectCode), "mkOc(oc)"); ++ oc = stgCallocBytes(1, sizeof(ObjectCode), "mkOc(oc)"); + + oc->info = NULL; + oc->type = type; +@@ -1334,7 +1334,7 @@ mkOc( ObjectType type, pathchar *path, char *image, int imageSize, + oc->fileName = pathdup(path); + + if (archiveMemberName) { +- oc->archiveMemberName = stgMallocBytes( (pathlen(archiveMemberName)+1) * pathsize, ++ oc->archiveMemberName = stgCallocBytes(1, (pathlen(archiveMemberName)+1) * pathsize, + "loadObj" ); + pathcopy(oc->archiveMemberName, archiveMemberName); + } else { +@@ -1489,12 +1489,12 @@ preloadObjectFile (pathchar *path) + // reading the file, and then we misalign image on purpose so + // that the actual sections end up aligned again. + misalignment = machoGetMisalignment(f); +- image = stgMallocBytes(fileSize + misalignment, "loadObj(image)"); ++ image = stgCallocBytes(1, fileSize + misalignment, "loadObj(image)"); + image += misalignment; + + # else /* !defined(darwin_HOST_OS) */ + +- image = stgMallocBytes(fileSize, "loadObj(image)"); ++ image = stgCallocBytes(1, fileSize, "loadObj(image)"); + + #endif /* !defined(darwin_HOST_OS) */ + +@@ -1787,6 +1787,8 @@ static HsInt resolveObjs_ (void) + IF_DEBUG(linker, debugBelch("resolveObjs: start\n")); + + for (ObjectCode *oc = objects; oc; oc = oc->next) { ++ if(oc->status == OBJECT_RESOLVED) ++ continue; + int r = ocTryLoad(oc); + if (!r) { + errorBelch("Could not load Object Code %" PATH_FMT ".\n", OC_INFORMATIVE_FILENAME(oc)); +@@ -1907,7 +1909,7 @@ void + addProddableBlock ( ObjectCode* oc, void* start, int size ) + { + ProddableBlock* pb +- = stgMallocBytes(sizeof(ProddableBlock), "addProddableBlock"); ++ = stgCallocBytes(1,sizeof(ProddableBlock), "addProddableBlock"); + + IF_DEBUG(linker, debugBelch("addProddableBlock: %p %p %d\n", oc, start, size)); + ASSERT(size > 0); +diff --git a/rts/LinkerInternals.h b/rts/LinkerInternals.h +index 271611a249..784bb19c10 100644 +--- a/rts/LinkerInternals.h ++++ b/rts/LinkerInternals.h +@@ -299,6 +299,10 @@ struct _ObjectCode { + int n_segments; + Segment *segments; + ++ // COMMON section ++ void * common_mem; ++ unsigned long common_size; ++ + // + // Garbage collection fields + // +diff --git a/rts/RtsUtils.c b/rts/RtsUtils.c +index 4cac10ba15..fe0d8ca40e 100644 +--- a/rts/RtsUtils.c ++++ b/rts/RtsUtils.c +@@ -104,6 +104,11 @@ stgCallocBytes (size_t count, size_t size, char *msg) + rtsConfig.mallocFailHook((W_) count*size, msg); + stg_exit(EXIT_INTERNAL_ERROR); + } ++ // If we run under qemu with jemalloc, calloc is not guaranteed ++ // to zero memory. ++ // - https://giters.com/jemalloc/jemalloc/issues/1844 ++ // - https://lists.nongnu.org/archive/html/qemu-devel/2020-05/msg03119.html ++ memset(space, 0, count*size); + return space; + } + +diff --git a/rts/linker/Elf.c b/rts/linker/Elf.c +index bab2ca3041..5d91301c51 100644 +--- a/rts/linker/Elf.c ++++ b/rts/linker/Elf.c +@@ -303,6 +303,15 @@ ocInit_ELF(ObjectCode * oc) + } + } + } ++ if(NULL != oc->common_mem) { ++#if RTS_LINKER_USE_MMAP ++ munmap(oc->common_mem, oc->common_size); ++#else ++ stgFree(oc->common_mem); ++#endif ++ } ++ oc->common_mem = NULL; ++ oc->common_size = 0; + } + + void +@@ -961,14 +970,17 @@ ocGetNames_ELF ( ObjectCode* oc ) + for (size_t j = 0; j < symTab->n_symbols; j++) { + ElfSymbol *symbol = &symTab->symbols[j]; + if (SHN_COMMON == symTab->symbols[j].elf_sym->st_shndx) { +- common_size += symbol->elf_sym->st_size; ++ // st_value holds the alignment. Adding alignment always ++ // should give us some wiggle room to get alignment right. ++ common_size += symbol->elf_sym->st_size + symbol->elf_sym->st_value; + } + } + } +- void * common_mem = NULL; ++ oc->common_mem = NULL; ++ oc->common_size = common_size; + if(common_size > 0) { +- common_mem = mmapAnonForLinker(common_size); +- if (common_mem == NULL) { ++ oc->common_mem = mmapAnonForLinker(common_size); ++ if (oc->common_mem == NULL) { + barf("ocGetNames_ELF: Failed to allocate memory for SHN_COMMONs"); + } + } +@@ -1010,8 +1022,9 @@ ocGetNames_ELF ( ObjectCode* oc ) + isLocal = false; + CHECK(common_used < common_size); + CHECK(common_mem); +- symbol->addr = (void*)((uintptr_t)common_mem + common_used); +- common_used += symbol->elf_sym->st_size; ++ int alignment = symbol->elf_sym->st_value-1; ++ symbol->addr = (void*)(((uintptr_t)oc->common_mem + common_used + alignment) & ~alignment); ++ common_used = (uintptr_t)symbol->addr - (uintptr_t)oc->common_mem + symbol->elf_sym->st_size; + CHECK(common_used <= common_size); + + IF_DEBUG(linker_verbose, +@@ -1025,7 +1038,9 @@ ocGetNames_ELF ( ObjectCode* oc ) + || ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK + ) + /* and not an undefined symbol */ +- && shndx != SHN_UNDEF ++ && (shndx != SHN_UNDEF ++ /* unless it's weak */ ++ || (shndx == SHN_UNDEF && ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK)) + /* and not in a "special section" */ + && (shndx < SHN_LORESERVE + #if defined(SHN_XINDEX) +@@ -1052,6 +1067,14 @@ ocGetNames_ELF ( ObjectCode* oc ) + (intptr_t) oc->sections[secno].start + + (intptr_t) symbol->elf_sym->st_value); + CHECK(symbol->addr != 0x0); ++ if(shndx == SHN_UNDEF && ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK) { ++ symbol->addr = NULL; ++ } else { ++ symbol->addr = (SymbolAddr*)( ++ (intptr_t) oc->sections[secno].start + ++ (intptr_t) symbol->elf_sym->st_value); ++ CHECK(symbol->addr != 0x0); ++ } + if (ELF_ST_BIND(symbol->elf_sym->st_info) == STB_LOCAL) { + isLocal = true; + isWeak = false; +@@ -1070,35 +1093,20 @@ ocGetNames_ELF ( ObjectCode* oc ) + sym_type = SYM_TYPE_CODE; + } else { + sym_type = SYM_TYPE_DATA; +- } +- +- /* And the decision is ... */ +- +- if (symbol->addr != NULL) { +- CHECK(nm != NULL); +- /* Acquire! */ +- if (!isLocal) { +- +- if (isWeak == HS_BOOL_TRUE) { +- setWeakSymbol(oc, nm); +- } +- if (!ghciInsertSymbolTable(oc->fileName, symhash, +- nm, symbol->addr, isWeak, sym_type, oc) +- ) { +- goto fail; +- } +- oc->symbols[curSymbol].name = nm; +- oc->symbols[curSymbol].addr = symbol->addr; +- oc->symbols[curSymbol].type = sym_type; +- curSymbol++; +- } +- } else { +- /* Skip. */ ++ } else if (ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK ++ && shndx == SHN_UNDEF ++ && (ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_FUNC ++ || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_OBJECT ++ || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_NOTYPE)) { ++ symbol->addr = NULL; ++ isLocal = false; ++ isWeak = true; ++ } else { ++ /* skip this symbol */ + IF_DEBUG(linker_verbose, + debugBelch("skipping `%s'\n", + nm) + ); +- + /* + debugBelch( + "skipping bind = %d, type = %d, secno = %d `%s'\n", +@@ -1108,7 +1116,24 @@ ocGetNames_ELF ( ObjectCode* oc ) + nm + ); + */ +- } ++ continue; ++ } ++ ++ /* And the decision is ... */ ++ ASSERT(nm != NULL); ++ /* Acquire! */ ++ if (!isLocal) { ++ ++ if (isWeak == HS_BOOL_TRUE) { ++ setWeakSymbol(oc, nm); ++ } ++ if (!ghciInsertSymbolTable(oc->fileName, symhash, ++ nm, symbol->addr, isWeak, oc)) { ++ goto fail; ++ } ++ oc->symbols[curSymbol++].name = nm; ++ oc->symbols[curSymbol].addr = symbol->addr; ++ } + } + } + } +diff --git a/rts/linker/elf_plt.c b/rts/linker/elf_plt.c +index 9cd42efff2..70817d8b0b 100644 +--- a/rts/linker/elf_plt.c ++++ b/rts/linker/elf_plt.c +@@ -1,4 +1,5 @@ + #include "Rts.h" ++#include "RtsUtils.h" + #include "elf_plt.h" + + #include +@@ -51,7 +52,7 @@ makeStub(Section * section, + void* * addr, + uint8_t flags) { + +- Stub * s = calloc(1, sizeof(Stub)); ++ Stub * s = stgCallocBytes(1, sizeof(Stub), "makeStub"); + ASSERT(s != NULL); + s->target = *addr; + s->flags = flags; +diff --git a/rts/linker/elf_plt_aarch64.c b/rts/linker/elf_plt_aarch64.c +index 11354a63db..6b27a2c73d 100644 +--- a/rts/linker/elf_plt_aarch64.c ++++ b/rts/linker/elf_plt_aarch64.c +@@ -25,6 +25,7 @@ const size_t stubSizeAarch64 = 5 * 4; + */ + bool needStubForRelAarch64(Elf_Rel * rel) { + switch(ELF64_R_TYPE(rel->r_info)) { ++ case COMPAT_R_AARCH64_CONDBR19: + case COMPAT_R_AARCH64_CALL26: + case COMPAT_R_AARCH64_JUMP26: + return true; +@@ -34,6 +35,7 @@ bool needStubForRelAarch64(Elf_Rel * rel) { + } + bool needStubForRelaAarch64(Elf_Rela * rela) { + switch(ELF64_R_TYPE(rela->r_info)) { ++ case COMPAT_R_AARCH64_CONDBR19: + case COMPAT_R_AARCH64_CALL26: + case COMPAT_R_AARCH64_JUMP26: + return true; +diff --git a/rts/linker/elf_reloc_aarch64.c b/rts/linker/elf_reloc_aarch64.c +index 4743e81ea2..f37e3699f1 100644 +--- a/rts/linker/elf_reloc_aarch64.c ++++ b/rts/linker/elf_reloc_aarch64.c +@@ -105,8 +105,24 @@ encodeAddendAarch64(Section * section, Elf_Rel * rel, int64_t addend) { + break; + } + /* - control flow relocations */ ++ case COMPAT_R_AARCH64_CONDBR19: { /* relocate b.* ... */ ++ // 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 ++ // 0 1 0 1 0 1 0 0 [ imm19 ... ++ // ++ // 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ++ // ... imm19 ] 0 [ cond ] ++ CHECK(isInt64(19+2, addend)); /* X in range */ ++ *(inst_t *)P = (*(inst_t *)P & 0xff00001f) ++ | ((uint32_t)(addend << (5-2)) & 0x00ffffe0); ++ break; ++ } + case COMPAT_R_AARCH64_JUMP26: /* relocate b ... */ + case COMPAT_R_AARCH64_CALL26: { /* relocate bl ... */ ++ // 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 ++ // 0|1 0 0 1 0 1 [ imm26 ... ++ ++ // 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ++ // ... imm26 ] + CHECK(isInt64(26+2, addend)); /* X in range */ + *(inst_t *)P = (*(inst_t *)P & 0xfc000000) /* keep upper 6 (32-6) + * bits */ +@@ -222,6 +238,23 @@ computeAddend(Section * section, Elf_Rel * rel, + case COMPAT_R_AARCH64_ADD_ABS_LO12_NC: + /* type: static, class: aarch64, op: S + A */ + return (S + A) & 0xfff; ++ case COMPAT_R_AARCH64_CONDBR19: { ++ int64_t V = S + A - P; ++ if(!isInt64(19+2, V)) { ++ /* need a stub */ ++ /* check if we already have that stub */ ++ if(findStub(section, (void**)&S, 0)) { ++ /* did not find it. Crete a new stub. */ ++ if(makeStub(section, (void**)&S, 0)) { ++ abort(/* could not find or make stub */); ++ } ++ } ++ ++ V = S + A -P; ++ assert(isInt64(19+2, V)); ++ } ++ return V; ++ } + case COMPAT_R_AARCH64_JUMP26: + case COMPAT_R_AARCH64_CALL26: { + // S+A-P From 6922b2222c4e47ff0b84fafa7500955059b885a2 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Sun, 12 Nov 2023 08:21:38 +0000 Subject: [PATCH 017/109] More android patches --- compiler/ghc/default.nix | 4 +- overlays/patches/ghc/ghc-9.6-iog.patch | 93 +++++++++++++++----------- 2 files changed, 58 insertions(+), 39 deletions(-) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index c52f8deae1..e422756aca 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -326,7 +326,9 @@ let " '*.ghc.cabal.configure.opts += --flags=-dynamic-system-linker'" # The following is required if we build on aarch64-darwin for aarch64-iOS. Otherwise older # iPhones/iPads/... won't understand the compiled code, as the compiler will emit LDSETALH - # + lib.optionalString (targetPlatform.???) "'*.rts.ghc.c.opts += -optc-mcpu=apple-a7 -optc-march=armv8-a+norcpc'" + # FIXME: we should have iOS as an argument to this derivation, and then make this, as well as + # disableLargeAddress space conditional on iOS = true. + + lib.optionalString (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) "'*.rts.ghc.c.opts += -optc-mcpu=apple-a7 -optc-march=armv8-a+norcpc'" # For GHC versions in the 9.x range that don't support the +native_bignum flavour transformer yet + lib.optionalString ((enableNativeBignum && !hadrianHasNativeBignumFlavour)) " --bignum=native" diff --git a/overlays/patches/ghc/ghc-9.6-iog.patch b/overlays/patches/ghc/ghc-9.6-iog.patch index 1c8a306064..849b867311 100644 --- a/overlays/patches/ghc/ghc-9.6-iog.patch +++ b/overlays/patches/ghc/ghc-9.6-iog.patch @@ -26,17 +26,17 @@ index 59e2ff9397..78e43cd471 100644 o_so->next = openedSOs; openedSOs = o_so; @@ -1314,7 +1314,7 @@ mkOc( ObjectType type, pathchar *path, char *image, int imageSize, - - + + IF_DEBUG(linker, debugBelch("mkOc: %" PATH_FMT "\n", path)); - oc = stgMallocBytes(sizeof(ObjectCode), "mkOc(oc)"); + oc = stgCallocBytes(1, sizeof(ObjectCode), "mkOc(oc)"); - + oc->info = NULL; oc->type = type; @@ -1334,7 +1334,7 @@ mkOc( ObjectType type, pathchar *path, char *image, int imageSize, oc->fileName = pathdup(path); - + if (archiveMemberName) { - oc->archiveMemberName = stgMallocBytes( (pathlen(archiveMemberName)+1) * pathsize, + oc->archiveMemberName = stgCallocBytes(1, (pathlen(archiveMemberName)+1) * pathsize, @@ -50,17 +50,17 @@ index 59e2ff9397..78e43cd471 100644 - image = stgMallocBytes(fileSize + misalignment, "loadObj(image)"); + image = stgCallocBytes(1, fileSize + misalignment, "loadObj(image)"); image += misalignment; - + # else /* !defined(darwin_HOST_OS) */ - + - image = stgMallocBytes(fileSize, "loadObj(image)"); + image = stgCallocBytes(1, fileSize, "loadObj(image)"); - + #endif /* !defined(darwin_HOST_OS) */ - + @@ -1787,6 +1787,8 @@ static HsInt resolveObjs_ (void) IF_DEBUG(linker, debugBelch("resolveObjs: start\n")); - + for (ObjectCode *oc = objects; oc; oc = oc->next) { + if(oc->status == OBJECT_RESOLVED) + continue; @@ -73,7 +73,7 @@ index 59e2ff9397..78e43cd471 100644 ProddableBlock* pb - = stgMallocBytes(sizeof(ProddableBlock), "addProddableBlock"); + = stgCallocBytes(1,sizeof(ProddableBlock), "addProddableBlock"); - + IF_DEBUG(linker, debugBelch("addProddableBlock: %p %p %d\n", oc, start, size)); ASSERT(size > 0); diff --git a/rts/LinkerInternals.h b/rts/LinkerInternals.h @@ -83,7 +83,7 @@ index 271611a249..784bb19c10 100644 @@ -299,6 +299,10 @@ struct _ObjectCode { int n_segments; Segment *segments; - + + // COMMON section + void * common_mem; + unsigned long common_size; @@ -106,9 +106,9 @@ index 4cac10ba15..fe0d8ca40e 100644 + memset(space, 0, count*size); return space; } - + diff --git a/rts/linker/Elf.c b/rts/linker/Elf.c -index bab2ca3041..5d91301c51 100644 +index bab2ca3041..9f623a62da 100644 --- a/rts/linker/Elf.c +++ b/rts/linker/Elf.c @@ -303,6 +303,15 @@ ocInit_ELF(ObjectCode * oc) @@ -125,7 +125,7 @@ index bab2ca3041..5d91301c51 100644 + oc->common_mem = NULL; + oc->common_size = 0; } - + void @@ -961,14 +970,17 @@ ocGetNames_ELF ( ObjectCode* oc ) for (size_t j = 0; j < symTab->n_symbols; j++) { @@ -149,17 +149,19 @@ index bab2ca3041..5d91301c51 100644 barf("ocGetNames_ELF: Failed to allocate memory for SHN_COMMONs"); } } -@@ -1010,8 +1022,9 @@ ocGetNames_ELF ( ObjectCode* oc ) +@@ -1009,9 +1021,10 @@ ocGetNames_ELF ( ObjectCode* oc ) + if (shndx == SHN_COMMON) { isLocal = false; CHECK(common_used < common_size); - CHECK(common_mem); +- CHECK(common_mem); - symbol->addr = (void*)((uintptr_t)common_mem + common_used); - common_used += symbol->elf_sym->st_size; ++ CHECK(oc->common_mem); + int alignment = symbol->elf_sym->st_value-1; + symbol->addr = (void*)(((uintptr_t)oc->common_mem + common_used + alignment) & ~alignment); + common_used = (uintptr_t)symbol->addr - (uintptr_t)oc->common_mem + symbol->elf_sym->st_size; CHECK(common_used <= common_size); - + IF_DEBUG(linker_verbose, @@ -1025,7 +1038,9 @@ ocGetNames_ELF ( ObjectCode* oc ) || ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK @@ -187,10 +189,25 @@ index bab2ca3041..5d91301c51 100644 if (ELF_ST_BIND(symbol->elf_sym->st_info) == STB_LOCAL) { isLocal = true; isWeak = false; -@@ -1070,35 +1093,20 @@ ocGetNames_ELF ( ObjectCode* oc ) - sym_type = SYM_TYPE_CODE; +@@ -1063,42 +1086,20 @@ ocGetNames_ELF ( ObjectCode* oc ) + isWeak = ELF_ST_BIND(symbol->elf_sym->st_info) + == STB_WEAK; + } +- } +- +- SymType sym_type; +- if (ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_FUNC) { +- sym_type = SYM_TYPE_CODE; ++ } else if (ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK ++ && shndx == SHN_UNDEF ++ && (ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_FUNC ++ || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_OBJECT ++ || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_NOTYPE)) { ++ symbol->addr = NULL; ++ isLocal = false; ++ isWeak = true; } else { - sym_type = SYM_TYPE_DATA; +- sym_type = SYM_TYPE_DATA; - } - - /* And the decision is ... */ @@ -215,16 +232,7 @@ index bab2ca3041..5d91301c51 100644 - } - } else { - /* Skip. */ -+ } else if (ELF_ST_BIND(symbol->elf_sym->st_info) == STB_WEAK -+ && shndx == SHN_UNDEF -+ && (ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_FUNC -+ || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_OBJECT -+ || ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_NOTYPE)) { -+ symbol->addr = NULL; -+ isLocal = false; -+ isWeak = true; -+ } else { -+ /* skip this symbol */ ++ /* Skip. */ IF_DEBUG(linker_verbose, debugBelch("skipping `%s'\n", nm) @@ -233,16 +241,22 @@ index bab2ca3041..5d91301c51 100644 /* debugBelch( "skipping bind = %d, type = %d, secno = %d `%s'\n", -@@ -1108,7 +1116,24 @@ ocGetNames_ELF ( ObjectCode* oc ) +@@ -1108,7 +1109,34 @@ ocGetNames_ELF ( ObjectCode* oc ) nm ); */ -- } + continue; -+ } + } ++ ++ SymType sym_type; ++ if (ELF_ST_TYPE(symbol->elf_sym->st_info) == STT_FUNC) { ++ sym_type = SYM_TYPE_CODE; ++ } else { ++ sym_type = SYM_TYPE_DATA; ++ } + + /* And the decision is ... */ -+ ASSERT(nm != NULL); ++ CHECK(nm != NULL); + /* Acquire! */ + if (!isLocal) { + @@ -250,11 +264,14 @@ index bab2ca3041..5d91301c51 100644 + setWeakSymbol(oc, nm); + } + if (!ghciInsertSymbolTable(oc->fileName, symhash, -+ nm, symbol->addr, isWeak, oc)) { ++ nm, symbol->addr, isWeak, sym_type, oc) ++ ) { + goto fail; + } -+ oc->symbols[curSymbol++].name = nm; ++ oc->symbols[curSymbol].name = nm; + oc->symbols[curSymbol].addr = symbol->addr; ++ oc->symbols[curSymbol].type = sym_type; ++ curSymbol++; + } } } @@ -267,12 +284,12 @@ index 9cd42efff2..70817d8b0b 100644 #include "Rts.h" +#include "RtsUtils.h" #include "elf_plt.h" - + #include @@ -51,7 +52,7 @@ makeStub(Section * section, void* * addr, uint8_t flags) { - + - Stub * s = calloc(1, sizeof(Stub)); + Stub * s = stgCallocBytes(1, sizeof(Stub), "makeStub"); ASSERT(s != NULL); From eb3d14156bfd50d956b7c74beaaeaae4df913e1e Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Mon, 13 Nov 2023 05:21:49 +0000 Subject: [PATCH 018/109] Adds genapply patch for 9.6 GenApply suffers from having GHC pollute its defines. --- overlays/bootstrap.nix | 3 +- .../ghc/ghc-9.6-genapply-cross-arch.patch | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 overlays/patches/ghc/ghc-9.6-genapply-cross-arch.patch diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index b9683505ea..3f1dd25499 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -298,7 +298,8 @@ in { # this one is to allow linking extra symbols from iserv. ++ final.lib.optional (versionAtLeast "9.6.1" && versionLessThan"9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/iserv-syms.patch ++ final.lib.optional (versionAtLeast "9.4" && final.stdenv.targetPlatform.isWindows) ./patches/ghc/ghc-9.6-fix-code-symbol-jumps.patch - ++ final.lib.optional (versionAtLeast "9.6.3" && versionLessThan "9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-iog.patch + ++ final.lib.optional (versionAtLeast "9.6.3" && versionLessThan "9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-iog.patch ./patches/ghc/iserv-syms.patch + ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.12" && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-genapply-cross-arch.patch ; in ({ ghc865 = final.callPackage ../compiler/ghc (traceWarnOld "8.6" { diff --git a/overlays/patches/ghc/ghc-9.6-genapply-cross-arch.patch b/overlays/patches/ghc/ghc-9.6-genapply-cross-arch.patch new file mode 100644 index 0000000000..8aa2b81077 --- /dev/null +++ b/overlays/patches/ghc/ghc-9.6-genapply-cross-arch.patch @@ -0,0 +1,35 @@ +diff --git a/utils/genapply/Main.hs b/utils/genapply/Main.hs +index 74351ee..8a6513c 100644 +--- a/utils/genapply/Main.hs ++++ b/utils/genapply/Main.hs +@@ -12,6 +12,17 @@ + -- for details + module Main(main) where + ++-- GHC will helpfully pass ++-- -Dlinux_BUILD_OS -Dx86_64_BUILD_ARCH -Dlinux_HOST_OS -Dx86_64_HOST_ARCH -D__GLASGOW_HASKELL_TH__ -D__SSE__ -D__SSE2__ '-D__IO_MANAGER_MIO__=1' ++-- to cc -E when running the CPP phase. :-/ So we have to undefine them. ++#if defined(linux_BUILD_OS) || defined(x86_64_BUILD_ARCH) || defined(linux_HOST_OS) || defined(x86_64_HOST_ARCH) ++#warning "Undefining macros that GHC passes to CPP" ++#undef linux_BUILD_OS ++#undef x86_64_BUILD_ARCH ++#undef linux_HOST_OS ++#undef x86_64_HOST_ARCH ++#endif ++ + -- Note [Genapply target as host for RTS macros] + -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + -- We improperly include *HOST* macros for our target... +@@ -957,6 +968,12 @@ main = do + text "// DO NOT EDIT!", + text "// Automatically generated by utils/genapply/Main.hs", + text "", ++ text "// DEBUG: SIZEOF_VOID_P " <> int SIZEOF_VOID_P, ++ text "// DEBUG: HOST_ARCH " <> text HOST_ARCH, ++ text "// DEBUG: HOST_OS " <> text HOST_OS, ++ text "// DEBUG: BUILD_ARCH " <> text BUILD_ARCH, ++ text "// DEBUG: BUILD_OS " <> text BUILD_OS, ++ text "", + text "#include \"Cmm.h\"", + text "#include \"AutoApply.h\"", + text "#if !defined(UnregisterisedCompiler)", From 315446dcf1898db5c4519ebcf8128c886506bc17 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Sun, 12 Nov 2023 08:26:38 +0000 Subject: [PATCH 019/109] Add [PATCH] AArch64: Fix broken conditional jumps for offsets >= 1MB This is added for aarch64 for now only as that's the only affeted platform. --- overlays/bootstrap.nix | 2 +- ...050857a9c1b992040fbfd55fbe65b2851b19.patch | 54 +++++++++---------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 3f1dd25499..2b5d8f8fe5 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -298,7 +298,7 @@ in { # this one is to allow linking extra symbols from iserv. ++ final.lib.optional (versionAtLeast "9.6.1" && versionLessThan"9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/iserv-syms.patch ++ final.lib.optional (versionAtLeast "9.4" && final.stdenv.targetPlatform.isWindows) ./patches/ghc/ghc-9.6-fix-code-symbol-jumps.patch - ++ final.lib.optional (versionAtLeast "9.6.3" && versionLessThan "9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-iog.patch ./patches/ghc/iserv-syms.patch + ++ final.lib.optional (versionAtLeast "9.6.3" && versionLessThan "9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-iog.patch ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.12" && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-genapply-cross-arch.patch ; in ({ diff --git a/overlays/patches/ghc/2adc050857a9c1b992040fbfd55fbe65b2851b19.patch b/overlays/patches/ghc/2adc050857a9c1b992040fbfd55fbe65b2851b19.patch index c43e4aeffc..427e976b22 100644 --- a/overlays/patches/ghc/2adc050857a9c1b992040fbfd55fbe65b2851b19.patch +++ b/overlays/patches/ghc/2adc050857a9c1b992040fbfd55fbe65b2851b19.patch @@ -26,7 +26,7 @@ index 1d489178673..a251370bfaf 100644 +++ b/compiler/GHC/CmmToAsm.hs @@ -655,13 +655,14 @@ cmmNativeGen logger ncgImpl us fileIds dbgMap cmm count text "cfg not in lockstep") () - + ---- sequence blocks - let sequenced :: [NatCmmDecl statics instr] - sequenced = @@ -43,20 +43,20 @@ index 1d489178673..a251370bfaf 100644 + shorted + + -- massert (checkLayout shorted sequenced) - + let branchOpt :: [NatCmmDecl statics instr] branchOpt = @@ -684,7 +685,7 @@ cmmNativeGen logger ncgImpl us fileIds dbgMap cmm count addUnwind acc proc = acc `mapUnion` computeUnwinding config ncgImpl proc - + - return ( usAlloc + return ( us_seq , fileIds' , branchOpt , lastMinuteImports ++ imports @@ -704,10 +705,10 @@ maybeDumpCfg logger (Just cfg) msg proc_name - + -- | Make sure all blocks we want the layout algorithm to place have been placed. checkLayout :: [NatCmmDecl statics instr] -> [NatCmmDecl statics instr] - -> [NatCmmDecl statics instr] @@ -94,7 +94,7 @@ index b77aa73e52b..2a1fa03b1bc 100644 , generateJumpTableForInstr + , makeFarBranches ) - + where @@ -43,9 +44,11 @@ import GHC.Cmm.Utils import GHC.Cmm.Switch @@ -105,7 +105,7 @@ index b77aa73e52b..2a1fa03b1bc 100644 import GHC.Types.Tickish ( GenTickish(..) ) import GHC.Types.SrcLoc ( srcSpanFile, srcSpanStartLine, srcSpanStartCol ) +import GHC.Types.Unique.Supply - + -- The rest: import GHC.Data.OrdList @@ -61,6 +64,9 @@ import GHC.Data.FastString @@ -115,13 +115,13 @@ index b77aa73e52b..2a1fa03b1bc 100644 +import GHC.Utils.Monad (mapAccumLM) + +import GHC.Cmm.Dataflow.Collections - + -- Note [General layout of an NCG] -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -161,15 +167,17 @@ basicBlockCodeGen block = do let (top,other_blocks,statics) = foldrOL mkBlocks ([],[],[]) instrs - + - mkBlocks (NEWBLOCK id) (instrs,blocks,statics) - = ([], BasicBlock id instrs : blocks, statics) - mkBlocks (LDATA sec dat) (instrs,blocks,statics) @@ -129,7 +129,7 @@ index b77aa73e52b..2a1fa03b1bc 100644 - mkBlocks instr (instrs,blocks,statics) - = (instr:instrs, blocks, statics) return (BasicBlock id top : other_blocks, statics) - + - +mkBlocks :: Instr + -> ([Instr], [GenBasicBlock Instr], [GenCmmDecl RawCmmStatics h g]) @@ -144,7 +144,7 @@ index b77aa73e52b..2a1fa03b1bc 100644 -- | Utilities ann :: SDoc -> Instr -> Instr @@ -1217,6 +1225,7 @@ assignReg_FltCode = assignReg_IntCode - + -- ----------------------------------------------------------------------------- -- Jumps + @@ -154,7 +154,7 @@ index b77aa73e52b..2a1fa03b1bc 100644 @@ -1302,6 +1311,22 @@ genCondJump bid expr = do _ -> pprPanic "AArch64.genCondJump:case mop: " (text $ show expr) _ -> pprPanic "AArch64.genCondJump: " (text $ show expr) - + +-- A conditional jump with at least +/-128M jump range +genCondFarJump :: MonadUnique m => Cond -> Target -> m InstrBlock +genCondFarJump cond far_target = do @@ -171,7 +171,7 @@ index b77aa73e52b..2a1fa03b1bc 100644 + , NEWBLOCK jmp_lbl_id + , B far_target + , NEWBLOCK skip_lbl_id] - + genCondBranch :: BlockId -- the source of the jump @@ -1816,3 +1841,163 @@ genCCall target dest_regs arg_regs bid = do @@ -344,12 +344,12 @@ index 687daccfda1..7efbb9c70bf 100644 +++ b/compiler/GHC/CmmToAsm/AArch64/Cond.hs @@ -1,6 +1,6 @@ module GHC.CmmToAsm.AArch64.Cond where - + -import GHC.Prelude +import GHC.Prelude hiding (EQ) - + -- https://developer.arm.com/documentation/den0024/a/the-a64-instruction-set/data-processing-instructions/conditional-instructions - + @@ -60,7 +60,13 @@ data Cond | UOGE -- b.pl | UOGT -- b.hi @@ -374,8 +374,8 @@ index d8dd1a4dc0c..1fb8193612f 100644 | TLabel CLabel | TReg Reg + deriving (Eq, Ord) - - + + -- Extension diff --git a/compiler/GHC/CmmToAsm/AArch64/Ppr.hs b/compiler/GHC/CmmToAsm/AArch64/Ppr.hs index fd56d37cd39..c672c342376 100644 @@ -384,12 +384,12 @@ index fd56d37cd39..c672c342376 100644 @@ -1,7 +1,7 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} {-# LANGUAGE CPP #-} - + -module GHC.CmmToAsm.AArch64.Ppr (pprNatCmmDecl, pprInstr) where +module GHC.CmmToAsm.AArch64.Ppr (pprNatCmmDecl, pprInstr, pprBasicBlock) where - + import GHC.Prelude hiding (EQ) - + @@ -353,7 +353,10 @@ pprInstr platform instr = case instr of -> line (text "\t.loc" <+> int file <+> int line' <+> int col) DELTA d -> dualDoc (asmComment $ text "\tdelta = " <> int d) empty @@ -400,17 +400,17 @@ index fd56d37cd39..c672c342376 100644 + -- print it for debugging purposes. + line (text "BLOCK " <> pprAsmLabel platform (blockLbl blockid)) LDATA _ _ -> panic "pprInstr: LDATA" - + -- Pseudo Instructions ------------------------------------------------------- @@ -567,7 +570,7 @@ pprCond c = case c of UGE -> text "hs" -- Carry set/unsigned higher or same ; Greater than or equal, or unordered UGT -> text "hi" -- Unsigned higher ; Greater than, or unordered - + - NEVER -> text "nv" -- Never + -- NEVER -> text "nv" -- Never VS -> text "vs" -- Overflow ; Unordered (at least one NaN operand) VC -> text "vc" -- No overflow ; Not unordered - + diff --git a/compiler/GHC/CmmToAsm/BlockLayout.hs b/compiler/GHC/CmmToAsm/BlockLayout.hs index fa0929348ce..e2096c90209 100644 --- a/compiler/GHC/CmmToAsm/BlockLayout.hs @@ -420,7 +420,7 @@ index fa0929348ce..e2096c90209 100644 import Control.Monad (foldM, unless) import GHC.Data.UnionFind +import GHC.Types.Unique.Supply (UniqSM) - + {- Note [CFG based code layout] @@ -794,29 +795,32 @@ sequenceTop @@ -476,7 +476,7 @@ index fa0929348ce..e2096c90209 100644 + far_blocks <- (ncgMakeFarBranches ncgImpl) platform info seq_blocks + pure $ CmmProc info lbl live $ ListGraph far_blocks + - + -- The old algorithm: -- It is very simple (and stupid): We make a graph out of diff --git a/compiler/GHC/CmmToAsm/Monad.hs b/compiler/GHC/CmmToAsm/Monad.hs @@ -508,7 +508,7 @@ index 3fedcc1fc40..8682d1db9d8 100644 +++ b/compiler/GHC/CmmToAsm/PPC/Instr.hs @@ -688,12 +688,13 @@ takeRegRegMoveInstr _ = Nothing -- big, we have to work around this limitation. - + makeFarBranches - :: LabelMap RawCmmStatics + :: Platform @@ -538,6 +538,6 @@ index a82674afe8f..a13fa2e4656 100644 , extractUnwindPoints = X86.extractUnwindPoints , invertCondBranches = X86.invertCondBranches } --- +-- GitLab From cd404c49eb76e484884331ca139726ac7b9bcc23 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Tue, 14 Nov 2023 08:03:02 +0800 Subject: [PATCH 020/109] Update default.nix --- compiler/ghc/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index e422756aca..52c6cb03cf 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -328,7 +328,7 @@ let # iPhones/iPads/... won't understand the compiled code, as the compiler will emit LDSETALH # FIXME: we should have iOS as an argument to this derivation, and then make this, as well as # disableLargeAddress space conditional on iOS = true. - + lib.optionalString (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) "'*.rts.ghc.c.opts += -optc-mcpu=apple-a7 -optc-march=armv8-a+norcpc'" + + lib.optionalString (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) " '*.rts.ghc.c.opts += -optc-mcpu=apple-a7 -optc-march=armv8-a+norcpc'" # For GHC versions in the 9.x range that don't support the +native_bignum flavour transformer yet + lib.optionalString ((enableNativeBignum && !hadrianHasNativeBignumFlavour)) " --bignum=native" From 72d622c31661abf890cc133d266415f6b172f385 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Tue, 14 Nov 2023 08:54:13 +0000 Subject: [PATCH 021/109] fix native musl --- lib/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/default.nix b/lib/default.nix index 88d0ab813c..f602949e06 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -256,8 +256,8 @@ in { && !(stdenv.hostPlatform.isLinux && stdenv.targetPlatform.isMusl && stdenv.hostPlatform.linuxArch == stdenv.targetPlatform.linuxArch); # Native musl build-host-target combo isNativeMusl = stdenv.hostPlatform.isMusl - && stdenv.buildPlatform == stdenv.hostPlatform - && stdenv.hostPlatform == stdenv.targetPlatform; + && stdenv.buildPlatform.linuxArch == stdenv.hostPlatform.linuxArch + && stdenv.hostPlatform.linuxArch == stdenv.targetPlatform.linuxArch; # Takes a version number, module or list of modules (for cabalProject) # and converts it to an list of project modules. This allows From 2884b5f4ebd27ecb89e8c9d52e156d9ba92eed4f Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Wed, 15 Nov 2023 05:06:27 +0000 Subject: [PATCH 022/109] add debug secno patch --- overlays/bootstrap.nix | 1 + overlays/patches/ghc/ghc-9.6-debug-secno.patch | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 overlays/patches/ghc/ghc-9.6-debug-secno.patch diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 2b5d8f8fe5..bd1fee24c7 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -300,6 +300,7 @@ in { ++ final.lib.optional (versionAtLeast "9.4" && final.stdenv.targetPlatform.isWindows) ./patches/ghc/ghc-9.6-fix-code-symbol-jumps.patch ++ final.lib.optional (versionAtLeast "9.6.3" && versionLessThan "9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-iog.patch ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.12" && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-genapply-cross-arch.patch + ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.9" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-debug-secno.patch ; in ({ ghc865 = final.callPackage ../compiler/ghc (traceWarnOld "8.6" { diff --git a/overlays/patches/ghc/ghc-9.6-debug-secno.patch b/overlays/patches/ghc/ghc-9.6-debug-secno.patch new file mode 100644 index 0000000000..3b0ffd738a --- /dev/null +++ b/overlays/patches/ghc/ghc-9.6-debug-secno.patch @@ -0,0 +1,16 @@ +diff --git a/rts/linker/Elf.c b/rts/linker/Elf.c +index 9f623a6..d5fc91c 100644 +--- a/rts/linker/Elf.c ++++ b/rts/linker/Elf.c +@@ -1056,6 +1056,11 @@ ocGetNames_ELF ( ObjectCode* oc ) + ) + ) { + /* Section 0 is the undefined section, hence > and not >=. */ ++ if (!(secno > 0 && secno < shnum)) { ++ debugBelch("while processing %s\n", OC_INFORMATIVE_FILENAME(oc)); ++ debugBelch("while processing symbol %s (%d)\n", nm, j); ++ barf("secno %d out of range (0, %d)\n", secno, shnum); ++ } + CHECK(secno > 0 && secno < shnum); + /* + if (shdr[secno].sh_type == SHT_NOBITS) { From 9ad088f26a86c44671fdd5d551b3d2d32e626047 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Wed, 15 Nov 2023 06:26:04 +0000 Subject: [PATCH 023/109] fix musl being considered stage2 --- lib/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/default.nix b/lib/default.nix index f602949e06..03bae7eab4 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -255,7 +255,7 @@ in { isCrossTarget = stdenv.targetPlatform != stdenv.hostPlatform && !(stdenv.hostPlatform.isLinux && stdenv.targetPlatform.isMusl && stdenv.hostPlatform.linuxArch == stdenv.targetPlatform.linuxArch); # Native musl build-host-target combo - isNativeMusl = stdenv.hostPlatform.isMusl + isNativeMusl = stdenv.targetPlatform.isMusl && stdenv.buildPlatform.linuxArch == stdenv.hostPlatform.linuxArch && stdenv.hostPlatform.linuxArch == stdenv.targetPlatform.linuxArch; From 4e9820c4cedb3f3c3f530204d0b86c0880620536 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Wed, 15 Nov 2023 06:37:59 +0000 Subject: [PATCH 024/109] Allow undefined weak symbols. --- .../patches/ghc/ghc-9.6-debug-secno.patch | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/overlays/patches/ghc/ghc-9.6-debug-secno.patch b/overlays/patches/ghc/ghc-9.6-debug-secno.patch index 3b0ffd738a..6564734a76 100644 --- a/overlays/patches/ghc/ghc-9.6-debug-secno.patch +++ b/overlays/patches/ghc/ghc-9.6-debug-secno.patch @@ -1,16 +1,22 @@ diff --git a/rts/linker/Elf.c b/rts/linker/Elf.c -index 9f623a6..d5fc91c 100644 +index 9f623a6..f4ee928 100644 --- a/rts/linker/Elf.c +++ b/rts/linker/Elf.c -@@ -1056,6 +1056,11 @@ ocGetNames_ELF ( ObjectCode* oc ) +@@ -1056,7 +1056,15 @@ ocGetNames_ELF ( ObjectCode* oc ) ) ) { /* Section 0 is the undefined section, hence > and not >=. */ -+ if (!(secno > 0 && secno < shnum)) { -+ debugBelch("while processing %s\n", OC_INFORMATIVE_FILENAME(oc)); -+ debugBelch("while processing symbol %s (%d)\n", nm, j); -+ barf("secno %d out of range (0, %d)\n", secno, shnum); -+ } - CHECK(secno > 0 && secno < shnum); +- CHECK(secno > 0 && secno < shnum); ++ // This is only a problem if the symbol is _not_ WEAK. If it's ++ // weak this is perfectly ok. See below how we set the symbol's ++ // address to NULL in that case. ++ // if (!(secno > 0 && secno < shnum)) { ++ // debugBelch("while processing %s\n", OC_INFORMATIVE_FILENAME(oc)); ++ // debugBelch("while processing symbol %s (%d)\n", nm, j); ++ // barf("secno %d out of range (0, %d)\n", secno, shnum); ++ // } ++ // CHECK(secno > 0 && secno < shnum); /* if (shdr[secno].sh_type == SHT_NOBITS) { + debugBelch(" BSS symbol, size %d off %d name %s\n", + From d1321de6b83b5347c96535778c6c071e57df669d Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Wed, 15 Nov 2023 08:26:00 +0000 Subject: [PATCH 025/109] Map missing symbols to 0xDEADBEEF. --- overlays/bootstrap.nix | 1 + .../ghc/ghc-9.6-missing-symbols-deadbeef.patch | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 overlays/patches/ghc/ghc-9.6-missing-symbols-deadbeef.patch diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index bd1fee24c7..7b2372f4ef 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -301,6 +301,7 @@ in { ++ final.lib.optional (versionAtLeast "9.6.3" && versionLessThan "9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-iog.patch ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.12" && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-genapply-cross-arch.patch ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.9" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-debug-secno.patch + ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.9" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-missing-symbols-deadbeef.patch ; in ({ ghc865 = final.callPackage ../compiler/ghc (traceWarnOld "8.6" { diff --git a/overlays/patches/ghc/ghc-9.6-missing-symbols-deadbeef.patch b/overlays/patches/ghc/ghc-9.6-missing-symbols-deadbeef.patch new file mode 100644 index 0000000000..5e1bcbdfb1 --- /dev/null +++ b/overlays/patches/ghc/ghc-9.6-missing-symbols-deadbeef.patch @@ -0,0 +1,14 @@ +diff --git a/rts/linker/elf_got.c b/rts/linker/elf_got.c +index 4d0c978..96a9d60 100644 +--- a/rts/linker/elf_got.c ++++ b/rts/linker/elf_got.c +@@ -99,7 +99,8 @@ fillGot(ObjectCode * oc) { + } else { + errorBelch("Failed to lookup symbol: %s\n", + symbol->name); +- return EXIT_FAILURE; ++ // return EXIT_FAILURE; ++ symbol->addr = 0xDEADBEEF; + } + } + } else { From 746a154fee358bb48c61adf170560a94985bf606 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Wed, 15 Nov 2023 09:21:09 +0000 Subject: [PATCH 026/109] Set -dynamic-system-linker if musl and not x86_64 --- compiler/ghc/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index 52c6cb03cf..70ac6751b6 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -322,7 +322,10 @@ let # `-fexternal-dynamic-refs` causes `undefined reference` errors when building GHC cross compiler for windows + lib.optionalString (enableRelocatedStaticLibs && targetPlatform.isx86_64 && !targetPlatform.isWindows) " '*.*.ghc.*.opts += -fexternal-dynamic-refs'" - + lib.optionalString targetPlatform.isAndroid + # The fact that we need to set this here is pretty idiotic. GHC should figure this out on it's own. + # Either have a runtime flag/setting to disable it or if dlopen fails, remember that it failed and + # fall back to non-dynamic. We only have x86_64 dynamic linker with musl. + + lib.optionalString targetPlatform.isAndroid || (targetPlatform.isMusl && !targetPlatform.isx86) " '*.ghc.cabal.configure.opts += --flags=-dynamic-system-linker'" # The following is required if we build on aarch64-darwin for aarch64-iOS. Otherwise older # iPhones/iPads/... won't understand the compiled code, as the compiler will emit LDSETALH From 3623f1b4b6411411492ad02d4e8a5cef9ed564e5 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Wed, 15 Nov 2023 10:02:04 +0000 Subject: [PATCH 027/109] proper parens --- compiler/ghc/default.nix | 2 +- .../ghc/ghc-9.6-missing-symbols-deadbeef.patch | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index 70ac6751b6..26e9382dc8 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -325,7 +325,7 @@ let # The fact that we need to set this here is pretty idiotic. GHC should figure this out on it's own. # Either have a runtime flag/setting to disable it or if dlopen fails, remember that it failed and # fall back to non-dynamic. We only have x86_64 dynamic linker with musl. - + lib.optionalString targetPlatform.isAndroid || (targetPlatform.isMusl && !targetPlatform.isx86) + + lib.optionalString (targetPlatform.isAndroid || (targetPlatform.isMusl && !targetPlatform.isx86)) " '*.ghc.cabal.configure.opts += --flags=-dynamic-system-linker'" # The following is required if we build on aarch64-darwin for aarch64-iOS. Otherwise older # iPhones/iPads/... won't understand the compiled code, as the compiler will emit LDSETALH diff --git a/overlays/patches/ghc/ghc-9.6-missing-symbols-deadbeef.patch b/overlays/patches/ghc/ghc-9.6-missing-symbols-deadbeef.patch index 5e1bcbdfb1..cd02ae8291 100644 --- a/overlays/patches/ghc/ghc-9.6-missing-symbols-deadbeef.patch +++ b/overlays/patches/ghc/ghc-9.6-missing-symbols-deadbeef.patch @@ -12,3 +12,15 @@ index 4d0c978..96a9d60 100644 } } } else { +diff --git a/rts/Linker.c b/rts/Linker.c +index 2356818..727e845 100644 +--- a/rts/Linker.c ++++ b/rts/Linker.c +@@ -1088,6 +1088,7 @@ SymbolAddr* lookupSymbol( SymbolName* lbl ) + "See top entry above.\n", lbl); + IF_DEBUG(linker, printLoadedObjects()); + fflush(stderr); ++ r = 0xDEADBEEF; + } + + if (!runPendingInitializers()) { From 74026f981a1d6546bb712dc73dd07f2e707e7ef0 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Thu, 16 Nov 2023 00:12:18 +0000 Subject: [PATCH 028/109] Add i686 cross --- lib/default.nix | 2 ++ overlays/linux-cross.nix | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/default.nix b/lib/default.nix index 03bae7eab4..03ea17c466 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -585,6 +585,8 @@ in { then "arm" else if hostPlatform.isAarch64 then "aarch64" + else if hostPlatform.isi686 + then "i386" else abort "Don't know which QEMU to use for hostPlatform ${hostPlatform.config}. Please provide qemuSuffix"; # How to run ldd when checking for static linking diff --git a/overlays/linux-cross.nix b/overlays/linux-cross.nix index 64de610c61..abae29011e 100644 --- a/overlays/linux-cross.nix +++ b/overlays/linux-cross.nix @@ -31,7 +31,7 @@ let # of nix build envs. # we want this to hold only for arm (32 and 64bit) for now. - isLinuxCross = haskellLib.isCrossHost && hostPlatform.isLinux && (hostPlatform.isAarch32 || hostPlatform.isAarch64); + isLinuxCross = haskellLib.isCrossHost && hostPlatform.isLinux && (hostPlatform.isAarch32 || hostPlatform.isAarch64 || hostPlatform.isi686); qemuIservWrapperScript = enableProfiling: let interpreter = From b953554327fa3e789356ae4a324deb0759f39d19 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Thu, 16 Nov 2023 00:12:28 +0000 Subject: [PATCH 029/109] more patches --- overlays/linux-cross.nix | 10 +- ...serv-proxy-interpreter-9.3-android32.patch | 337 ++++++++++++++++++ overlays/patches/iserv-proxy-keep-cafs.patch | 33 ++ 3 files changed, 377 insertions(+), 3 deletions(-) create mode 100644 overlays/patches/iserv-proxy-interpreter-9.3-android32.patch create mode 100644 overlays/patches/iserv-proxy-keep-cafs.patch diff --git a/overlays/linux-cross.nix b/overlays/linux-cross.nix index abae29011e..720ae3737f 100644 --- a/overlays/linux-cross.nix +++ b/overlays/linux-cross.nix @@ -49,11 +49,15 @@ let PORT=$((5000 + $RANDOM % 5000)) (>&2 echo "---> Starting ${interpreter.exeName} on port $PORT") ${qemu}/bin/qemu-${qemuSuffix} ${interpreter.override - (lib.optionalAttrs hostPlatform.isAndroid { + ({ + patches = [ ./patches/iserv-proxy-keep-cafs.patch ] + ++ lib.optional (hostPlatform.isAndroid && hostPlatform.isAarch32) ./patches/iserv-proxy-interpreter-9.3-android32.patch + ++ lib.optional (hostPlatform.isAndroid && hostPlatform.isAarch64) ./patches/iserv-proxy-interpreter-9.3-android.patch + ; + } // lib.optionalAttrs hostPlatform.isAndroid { setupBuildFlags = ["--ghc-option=-optl-static" ] ++ lib.optional hostPlatform.isAarch32 "--ghc-option=-optl-no-pie"; - patches = lib.optional hostPlatform.isAarch64 ./patches/iserv-proxy-interpreter-9.3-android.patch; enableDebugRTS = true; - })}/bin/${interpreter.exeName} tmp $PORT $ISERV_ARGS & + })}/bin/${interpreter.exeName} tmp $PORT $ISERV_ARGS & (>&2 echo "---| ${interpreter.exeName} should have started on $PORT") RISERV_PID="$!" ${iserv-proxy}/bin/iserv-proxy $@ 127.0.0.1 "$PORT" $PROXY_ARGS diff --git a/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch b/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch new file mode 100644 index 0000000000..77f79c7ba2 --- /dev/null +++ b/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch @@ -0,0 +1,337 @@ +diff --git a/cbits/symbols.c b/cbits/symbols.c +new file mode 100644 +index 0000000..d447895 +--- /dev/null ++++ b/cbits/symbols.c +@@ -0,0 +1,318 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++// #include ++// #include // this includes too many overloaded items. ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++// fnctl stubs, see above ++extern void open(void); ++extern void openat(void); ++extern void creat(void); ++extern void eventfd(void); ++extern void eventfd_write(void); ++ ++extern void futimes(void); ++extern void lutimes(void); ++extern void statx(void); ++ ++extern void __stack_chk_fail(void); ++extern void __vsprintf_chk(void); ++extern void __open_2(void); ++extern void __memcpy_chk(void); ++extern void __memset_chk(void); ++extern void __memmove_chk(void); ++// GCC stuff ++extern void __addtf3(void); ++extern void __divtf3(void); ++extern void __extenddftf2(void); ++extern void __fixtfsi(void); ++extern void __floatditf(void); ++extern void __floatsitf(void); ++extern void __getf2(void); ++extern void __gttf2(void); ++extern void __lttf2(void); ++extern void __multf3(void); ++extern void __subtf3(void); ++extern void __trunctfdf2(void); ++ ++#define MISSING_FUN(f) void (f)(void) { printf("Unknown call to `%s'\n", #f); exit(1); } ++ ++MISSING_FUN(c_format_unix_time) ++MISSING_FUN(c_format_unix_time_gmt) ++MISSING_FUN(c_parse_unix_time) ++MISSING_FUN(c_parse_unix_time_gmt) ++ ++typedef void SymbolAddr; ++typedef char SymbolName; ++ ++typedef enum _SymStrength { ++ STRENGTH_NORMAL, ++ STRENGTH_WEAK, ++ STRENGTH_STRONG, ++} SymStrength; ++ ++typedef enum _SymType { ++ SYM_TYPE_CODE = 1 << 0, /* the symbol is a function and can be relocated via a jump island */ ++ SYM_TYPE_DATA = 1 << 1, /* the symbol is data */ ++ SYM_TYPE_INDIRECT_DATA = 1 << 2, /* see Note [_iob_func symbol] */ ++ SYM_TYPE_DUP_DISCARD = 1 << 3, /* the symbol is a symbol in a BFD import library ++ however if a duplicate is found with a mismatching ++ SymType then discard this one. */ ++} SymType; ++ ++typedef struct _RtsSymbolVal { ++ const SymbolName* lbl; ++ SymbolAddr* addr; ++ SymStrength strength; ++ SymType type; ++} RtsSymbolVal; ++ ++#define SYM(x) { #x, (void*)(&x), STRENGTH_NORMAL, 1 } ++typedef mode_t (*umask_func_ptr_t)(mode_t); ++ ++RtsSymbolVal my_iserv_syms[] = { ++ // arpa/inet.h ++ SYM(htons), ++ SYM(ntohs), ++ SYM(htonl), ++ SYM(ntohl), ++ // sys/random.h ++ SYM(getentropy), ++ SYM(getrandom), ++ // sys/auxv.h ++ SYM(getauxval), ++ // sys/mman.h ++ SYM(madvise),SYM(mlock),SYM(mmap),SYM(mprotect),SYM(munmap), ++ SYM(mremap), ++ SYM(munlock), ++ // select.h ++ SYM(__FD_SET_chk), ++ // sys/socket ++ SYM(accept),SYM(bind),SYM(connect),SYM(getsockopt),SYM(listen), ++ SYM(setsockopt),SYM(socket),SYM(getsockname),SYM(select), ++ SYM(getpeername),SYM(__cmsg_nxthdr),SYM(recv),SYM(recvfrom), ++ SYM(recvmsg),SYM(send),SYM(sendmsg),SYM(sendto),SYM(writev), ++ SYM(accept4), ++ // pthread.h ++ SYM(pthread_equal),SYM(pthread_getspecific),SYM(pthread_key_create), ++ SYM(pthread_key_delete),SYM(pthread_once),SYM(pthread_rwlock_destroy), ++ SYM(pthread_rwlock_init),SYM(pthread_rwlock_rdlock),SYM(pthread_rwlock_unlock), ++ SYM(pthread_rwlock_wrlock),SYM(pthread_self),SYM(pthread_setspecific), ++ SYM(pthread_create),SYM(pthread_join),SYM(pthread_mutex_destroy), ++ SYM(pthread_mutex_init),SYM(pthread_mutex_lock),SYM(pthread_mutex_trylock), ++ SYM(pthread_mutex_unlock),SYM(pthread_mutexattr_destroy), ++ SYM(pthread_mutexattr_init),SYM(pthread_mutexattr_settype), ++ // chk.h ++ SYM(__read_chk),SYM(__write_chk), ++ // netdb.h ++ SYM(freeaddrinfo),SYM(gai_strerror),SYM(getaddrinfo),SYM(getnameinfo), ++ SYM(gethostbyname), ++ // dirent.h ++ SYM(readdir_r),SYM(readdir), ++ SYM(opendir),SYM(closedir), ++ // time.h ++ SYM(clock),SYM(gmtime_r), ++ // sys/time.h ++ SYM(gettimeofday),SYM(clock_getres),SYM(clock_gettime),SYM(localtime_r),SYM(tzset), ++ // unistd.h ++ SYM(readlink), ++ SYM(rename), ++ SYM(rmdir), ++ SYM(chown), ++ SYM(realpath), ++ SYM(fchdir), ++ SYM(fdopendir), ++ SYM(rewinddir), ++ SYM(futimens),SYM(futimes),SYM(lutimes), ++ SYM(mknod), ++ SYM(lchown), ++ SYM(symlink), ++ SYM(endgrent),SYM(endpwent), ++ SYM(pathconf), ++ SYM(truncate), ++ SYM(utimensat), ++ SYM(statx), ++ SYM(seekdir), ++ SYM(telldir), ++ SYM(clearenv), ++ SYM(chdir), ++ SYM(sleep), ++ SYM(stdout), ++ SYM(strftime), ++ SYM(utimes), ++ SYM(setenv), ++ SYM(fpathconf), ++ SYM(exit), ++ SYM(environ), ++ SYM(ftruncate), ++ SYM(getenv), ++ SYM(putenv), ++ SYM(unsetenv), ++ SYM(read), ++ SYM(write), ++ SYM(isatty), ++ SYM(link), ++ SYM(pipe), ++ SYM(unlink), ++ SYM(execv),SYM(execve),SYM(execvp),SYM(execvpe), ++ SYM(syscall),SYM(sysconf), ++ // errno.h ++ SYM(__errno), ++ // math.h ++ SYM(sinhf), SYM(sinh), SYM(sinf), SYM(sin), ++ SYM(coshf), SYM(cosh), SYM(cosf), SYM(cos), ++ SYM(atanhf), SYM(atanh), SYM(atanf), SYM(atan), ++ SYM(asinhf), SYM(asinh), SYM(asinf), SYM(asin), ++ SYM(acoshf), SYM(acosh), SYM(acosf), SYM(acos), ++ SYM(log1pf), SYM(log1p), SYM(logf), SYM(log), ++ SYM(expm1f), SYM(expm1), ++ SYM(expf), SYM(exp), ++ SYM(ldexp), ++ SYM(powf), SYM(pow), ++ SYM(sqrtf), SYM(sqrt), ++ SYM(tanhf), SYM(tanh), SYM(tanf), SYM(tan), ++ // assert.h ++ SYM(__assert2), ++ // signal.h ++ SYM(signal),SYM(sigaction), ++ SYM(raise), SYM(sigaddset), SYM(sigemptyset), SYM(sigprocmask), ++ // sys/eventfd.h ++ SYM(eventfd), SYM(eventfd_write), ++ // sys/stat.h ++ SYM(fstat), ++ SYM(lstat), ++ SYM(stat), ++ SYM(chmod), ++ SYM(mkfifo), ++ // SYM(umask), ++ { "umask", (umask_func_ptr_t)(&umask), STRENGTH_NORMAL, 1 }, ++ // sys/wait.h ++ SYM(waitpid), ++ // sym/epoll.h ++ SYM(epoll_create), SYM(epoll_ctl), SYM(epoll_wait), ++ // poll.h ++ SYM(poll), ++ // fcntl.h ++ SYM(open), SYM(creat), SYM(fcntl), SYM(ioctl), ++ SYM(openat),SYM(__open_2), ++ // string.h ++ SYM(strerror), ++ SYM(strcmp), ++ SYM(memchr),SYM(strcpy),SYM(strchr),SYM(strncpy),SYM(strrchr), ++ SYM(strcat),SYM(strncmp),SYM(strdup), ++ SYM(strtoul),SYM(strspn),SYM(strtol),SYM(strstr),SYM(strcspn), ++ SYM(__strncpy_chk2),SYM(__memcpy_chk), ++ // ctype.h ++ SYM(__ctype_get_mb_cur_max), ++ // wchar.h ++ SYM(mbrtowc), SYM(wcrtomb), ++ // stdlib.h ++ SYM(qsort), ++ // unistd.h ++ SYM(access), SYM(close), SYM(dup), SYM(dup2), SYM(fork), SYM(getpid), ++ SYM(lseek), ++ // utime.h ++ SYM(utime),SYM(time), ++ // ... ++ SYM(fileno), ++ SYM(__vsprintf_chk), ++ SYM(__strlen_chk), ++ SYM(__strchr_chk), ++ SYM(__memset_chk), ++ SYM(__memmove_chk), ++ SYM(__stack_chk_fail), ++ SYM(memmove), ++ SYM(memcmp), ++ SYM(memcpy), ++ SYM(memset), ++ SYM(stderr), ++ SYM(realloc), ++ SYM(calloc), ++ SYM(malloc), ++ SYM(free), ++ SYM(fprintf), ++ SYM(vfprintf), ++ SYM(fopen), SYM(fclose), ++ SYM(getegid),SYM(getgid), ++ SYM(getpwent), ++ SYM(getgrent), ++ SYM(getgroups), ++ SYM(getlogin), ++ SYM(getuid), ++ SYM(getgrgid_r),SYM(getgrnam_r),SYM(getpwnam_r),SYM(getpwuid_r), ++ SYM(setegid),SYM(seteuid),SYM(setgid),SYM(setgrent),SYM(setgroups), ++ SYM(setpwent),SYM(setuid), ++ SYM(fread), ++ SYM(abort), ++ SYM(strlen), ++ SYM(fwrite), ++ SYM(feof), ++ SYM(ferror), ++ SYM(fflush), ++ SYM(fgets),SYM(fputc),SYM(fputs), ++ SYM(fseek),SYM(ftell), ++ SYM(sscanf), ++ SYM(shutdown), ++ SYM(atoi), ++ SYM(stdin), ++ SYM(atexit), ++ SYM(usleep), ++ SYM(fchmod), ++ SYM(fchown), ++ SYM(fsync), ++ SYM(getcwd), ++ SYM(geteuid), ++ SYM(localtime), ++ SYM(lseek64), ++ SYM(mkdir), ++ SYM(mktime), ++ SYM(fdopen), ++ SYM(c_format_unix_time), ++ SYM(c_format_unix_time_gmt), ++ SYM(c_parse_unix_time), ++ SYM(c_parse_unix_time_gmt), ++ SYM(__addtf3), ++ SYM(__divtf3), ++ SYM(__extenddftf2), ++ SYM(__fixtfsi), ++ SYM(__floatditf), ++ SYM(__floatsitf), ++ SYM(__getf2), ++ SYM(__gttf2), ++ SYM(__lttf2), ++ SYM(__multf3), ++ SYM(__subtf3), ++ SYM(__trunctfdf2), ++ { 0, 0, STRENGTH_NORMAL, 1 } /* sentinel */ ++}; ++ ++RtsSymbolVal* iserv_syms() { ++ return my_iserv_syms; ++} +\ No newline at end of file +diff --git a/iserv-proxy.cabal b/iserv-proxy.cabal +index a0eeaeb..a146108 100644 +--- a/iserv-proxy.cabal ++++ b/iserv-proxy.cabal +@@ -101,6 +101,7 @@ Executable iserv-proxy + Executable iserv-proxy-interpreter + Default-Language: Haskell2010 + Main-Is: Interpreter.hs ++ c-sources: cbits/symbols.c + Build-Depends: base >= 4 && < 5, + iserv-proxy + diff --git a/overlays/patches/iserv-proxy-keep-cafs.patch b/overlays/patches/iserv-proxy-keep-cafs.patch new file mode 100644 index 0000000000..ee17f934a0 --- /dev/null +++ b/overlays/patches/iserv-proxy-keep-cafs.patch @@ -0,0 +1,33 @@ +From 320b0783de5155b18f1ed68dff2be52e75c3377a Mon Sep 17 00:00:00 2001 +From: Sylvain Henry +Date: Wed, 15 Nov 2023 16:06:23 +0100 +Subject: [PATCH] Retain CAFs in the interpreter + +iserv-proxy-interpreter dynamically loads libraries. It must retain CAFs +to avoid issues like: + +> iserv-proxy-interpreter.exe:internal error:Evaluated a CAF that was GC'd! + +ghc-lib uses a hacky keepCAFsForGHCi.c file; iserv still uses a custom +hs-main C file. We use -fkeep-cafs as it has the same effect. +--- + iserv-proxy.cabal | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/iserv-proxy.cabal b/iserv-proxy.cabal +index 7179864..39e5cc6 100644 +--- a/iserv-proxy.cabal ++++ b/iserv-proxy.cabal +@@ -99,6 +99,9 @@ Executable iserv-proxy + Executable iserv-proxy-interpreter + Default-Language: Haskell2010 + Main-Is: Interpreter.hs ++ -- We need to pass -fkeep-cafs to ensure that the interpreter retains CAFs ++ -- Iserv and GHC do something similar. ++ ghc-options: -fkeep-cafs + Build-Depends: base >= 4 && < 5, + iserv-proxy + +-- +GitLab + From 8ccbc65c5928a1c284a0364ab1bf3b4f61a67b33 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Thu, 16 Nov 2023 00:29:39 +0000 Subject: [PATCH 030/109] :facepalm: --- overlays/patches/iserv-proxy-interpreter-9.3-android.patch | 5 ++++- overlays/patches/iserv-proxy-interpreter-9.3-android32.patch | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/overlays/patches/iserv-proxy-interpreter-9.3-android.patch b/overlays/patches/iserv-proxy-interpreter-9.3-android.patch index 77f79c7ba2..5170a536d7 100644 --- a/overlays/patches/iserv-proxy-interpreter-9.3-android.patch +++ b/overlays/patches/iserv-proxy-interpreter-9.3-android.patch @@ -327,10 +327,13 @@ diff --git a/iserv-proxy.cabal b/iserv-proxy.cabal index a0eeaeb..a146108 100644 --- a/iserv-proxy.cabal +++ b/iserv-proxy.cabal -@@ -101,6 +101,7 @@ Executable iserv-proxy +@@ -103,6 +103,7 @@ Executable iserv-proxy Executable iserv-proxy-interpreter Default-Language: Haskell2010 Main-Is: Interpreter.hs + -- We need to pass -fkeep-cafs to ensure that the interpreter retains CAFs + -- Iserv and GHC do something similar. + ghc-options: -fkeep-cafs + c-sources: cbits/symbols.c Build-Depends: base >= 4 && < 5, iserv-proxy diff --git a/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch b/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch index 77f79c7ba2..5170a536d7 100644 --- a/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch +++ b/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch @@ -327,10 +327,13 @@ diff --git a/iserv-proxy.cabal b/iserv-proxy.cabal index a0eeaeb..a146108 100644 --- a/iserv-proxy.cabal +++ b/iserv-proxy.cabal -@@ -101,6 +101,7 @@ Executable iserv-proxy +@@ -103,6 +103,7 @@ Executable iserv-proxy Executable iserv-proxy-interpreter Default-Language: Haskell2010 Main-Is: Interpreter.hs + -- We need to pass -fkeep-cafs to ensure that the interpreter retains CAFs + -- Iserv and GHC do something similar. + ghc-options: -fkeep-cafs + c-sources: cbits/symbols.c Build-Depends: base >= 4 && < 5, iserv-proxy From 12b7e016fa1b3f6e3451113da2ab731af9c81f5c Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Thu, 16 Nov 2023 00:32:41 +0000 Subject: [PATCH 031/109] patch interpreter also for windows. --- overlays/mingw_w64.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/overlays/mingw_w64.nix b/overlays/mingw_w64.nix index b23fe4cd39..7e4738c9a2 100644 --- a/overlays/mingw_w64.nix +++ b/overlays/mingw_w64.nix @@ -34,7 +34,12 @@ let PORT=$((5000 + $RANDOM % 5000)) (>&2 echo "---> Starting ${interpreter.exeName} on port $PORT") REMOTE_ISERV=$(mktemp -d) - ln -s ${interpreter.override { enableDebugRTS = true; }}/bin/* $REMOTE_ISERV + ln -s ${interpreter.override + { + patches = [ ./patches/iserv-proxy-keep-cafs.patch ] + ; + enableDebugRTS = true; + }}/bin/* $REMOTE_ISERV # See coment in comp-builder.nix for where this comes from and why it's here # TODO use `LINK_DLL_FOLDERS` here once it is in all the nixpkgs we want to support. for p in $pkgsHostTargetAsString; do From 793163e0b13fcb42088d2066c9bdab720d04a39f Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Thu, 16 Nov 2023 00:36:12 +0000 Subject: [PATCH 032/109] No dynamic loading on x86. --- compiler/ghc/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index 26e9382dc8..0336b1cb1a 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -163,8 +163,9 @@ let WITH_TERMINFO=NO '' # musl doesn't have a system-linker. Only on x86, and on x86 we need it, as - # our elf linker for x86_64 is broken. - + lib.optionalString (targetPlatform.isAndroid || (targetPlatform.isMusl && !targetPlatform.isx86)) '' + # our elf linker for x86_64 is broken. The i686 one seems also to not exist. + # So it's really _just_ x86_64. + + lib.optionalString (targetPlatform.isAndroid || (targetPlatform.isMusl && !targetPlatform.isx86_64)) '' compiler_CONFIGURE_OPTS += --flags=-dynamic-system-linker '' # While split sections are now enabled by default in ghc 8.8 for windows, @@ -325,7 +326,7 @@ let # The fact that we need to set this here is pretty idiotic. GHC should figure this out on it's own. # Either have a runtime flag/setting to disable it or if dlopen fails, remember that it failed and # fall back to non-dynamic. We only have x86_64 dynamic linker with musl. - + lib.optionalString (targetPlatform.isAndroid || (targetPlatform.isMusl && !targetPlatform.isx86)) + + lib.optionalString (targetPlatform.isAndroid || (targetPlatform.isMusl && !targetPlatform.isx86_64)) " '*.ghc.cabal.configure.opts += --flags=-dynamic-system-linker'" # The following is required if we build on aarch64-darwin for aarch64-iOS. Otherwise older # iPhones/iPads/... won't understand the compiled code, as the compiler will emit LDSETALH From 8ec031ecf21fb17b6cd3d90ae66daf4c075abd76 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Thu, 16 Nov 2023 00:54:37 +0000 Subject: [PATCH 033/109] :facepalm: --- overlays/patches/iserv-proxy-interpreter-9.3-android.patch | 3 --- overlays/patches/iserv-proxy-interpreter-9.3-android32.patch | 3 --- 2 files changed, 6 deletions(-) diff --git a/overlays/patches/iserv-proxy-interpreter-9.3-android.patch b/overlays/patches/iserv-proxy-interpreter-9.3-android.patch index 5170a536d7..12f3dda3fe 100644 --- a/overlays/patches/iserv-proxy-interpreter-9.3-android.patch +++ b/overlays/patches/iserv-proxy-interpreter-9.3-android.patch @@ -328,9 +328,6 @@ index a0eeaeb..a146108 100644 --- a/iserv-proxy.cabal +++ b/iserv-proxy.cabal @@ -103,6 +103,7 @@ Executable iserv-proxy - Executable iserv-proxy-interpreter - Default-Language: Haskell2010 - Main-Is: Interpreter.hs -- We need to pass -fkeep-cafs to ensure that the interpreter retains CAFs -- Iserv and GHC do something similar. ghc-options: -fkeep-cafs diff --git a/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch b/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch index 5170a536d7..12f3dda3fe 100644 --- a/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch +++ b/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch @@ -328,9 +328,6 @@ index a0eeaeb..a146108 100644 --- a/iserv-proxy.cabal +++ b/iserv-proxy.cabal @@ -103,6 +103,7 @@ Executable iserv-proxy - Executable iserv-proxy-interpreter - Default-Language: Haskell2010 - Main-Is: Interpreter.hs -- We need to pass -fkeep-cafs to ensure that the interpreter retains CAFs -- Iserv and GHC do something similar. ghc-options: -fkeep-cafs From 2dfd8584996c4171871e9660ed9b0fb42a15409d Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Thu, 16 Nov 2023 02:03:53 +0000 Subject: [PATCH 034/109] Sigh --- overlays/bootstrap.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 7b2372f4ef..c5ac836bda 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -296,7 +296,7 @@ in { ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "9.8" && final.stdenv.targetPlatform.isMusl && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "10.0" && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-32bit-cmm.patch # this one is to allow linking extra symbols from iserv. - ++ final.lib.optional (versionAtLeast "9.6.1" && versionLessThan"9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/iserv-syms.patch + ++ final.lib.optional (versionAtLeast "9.6.1" && versionLessThan"9.10" && (final.stdenv.targetPlatform.isAndroid || final.stdenv.targetPlatform.isAarch64 || final.stdenv.targetPlatform.is32bit)) ./patches/ghc/iserv-syms.patch ++ final.lib.optional (versionAtLeast "9.4" && final.stdenv.targetPlatform.isWindows) ./patches/ghc/ghc-9.6-fix-code-symbol-jumps.patch ++ final.lib.optional (versionAtLeast "9.6.3" && versionLessThan "9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-iog.patch ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.12" && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-genapply-cross-arch.patch From 22dae4d817851b6880ebcd7598840b4a4ae22755 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Thu, 16 Nov 2023 02:07:35 +0000 Subject: [PATCH 035/109] Disable linux cross patch for now. --- overlays/linux-cross.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlays/linux-cross.nix b/overlays/linux-cross.nix index 720ae3737f..7205061e9f 100644 --- a/overlays/linux-cross.nix +++ b/overlays/linux-cross.nix @@ -51,7 +51,7 @@ let ${qemu}/bin/qemu-${qemuSuffix} ${interpreter.override ({ patches = [ ./patches/iserv-proxy-keep-cafs.patch ] - ++ lib.optional (hostPlatform.isAndroid && hostPlatform.isAarch32) ./patches/iserv-proxy-interpreter-9.3-android32.patch + # ++ lib.optional (hostPlatform.isAndroid && hostPlatform.isAarch32) ./patches/iserv-proxy-interpreter-9.3-android32.patch ++ lib.optional (hostPlatform.isAndroid && hostPlatform.isAarch64) ./patches/iserv-proxy-interpreter-9.3-android.patch ; } // lib.optionalAttrs hostPlatform.isAndroid { From a9035e4da599f963fe940450e9d4296adf07ca5e Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Thu, 16 Nov 2023 04:07:42 +0000 Subject: [PATCH 036/109] Fix 32bit patch --- overlays/linux-cross.nix | 2 +- ...serv-proxy-interpreter-9.3-android32.patch | 627 +++++++++++------- 2 files changed, 379 insertions(+), 250 deletions(-) diff --git a/overlays/linux-cross.nix b/overlays/linux-cross.nix index 7205061e9f..720ae3737f 100644 --- a/overlays/linux-cross.nix +++ b/overlays/linux-cross.nix @@ -51,7 +51,7 @@ let ${qemu}/bin/qemu-${qemuSuffix} ${interpreter.override ({ patches = [ ./patches/iserv-proxy-keep-cafs.patch ] - # ++ lib.optional (hostPlatform.isAndroid && hostPlatform.isAarch32) ./patches/iserv-proxy-interpreter-9.3-android32.patch + ++ lib.optional (hostPlatform.isAndroid && hostPlatform.isAarch32) ./patches/iserv-proxy-interpreter-9.3-android32.patch ++ lib.optional (hostPlatform.isAndroid && hostPlatform.isAarch64) ./patches/iserv-proxy-interpreter-9.3-android.patch ; } // lib.optionalAttrs hostPlatform.isAndroid { diff --git a/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch b/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch index 12f3dda3fe..7aeba03e07 100644 --- a/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch +++ b/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch @@ -1,74 +1,174 @@ diff --git a/cbits/symbols.c b/cbits/symbols.c new file mode 100644 -index 0000000..d447895 +index 0000000..9974c73 --- /dev/null +++ b/cbits/symbols.c -@@ -0,0 +1,318 @@ +@@ -0,0 +1,447 @@ +#include +#include +#include +#include -+#include -+#include +#include +#include -+#include -+#include -+#include -+#include -+// #include -+// #include // this includes too many overloaded items. -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include + -+// fnctl stubs, see above -+extern void open(void); -+extern void openat(void); -+extern void creat(void); -+extern void eventfd(void); ++extern void __aeabi_idiv(void); ++extern void __aeabi_idivmod(void); ++extern void __aeabi_memcpy(void); ++extern void __aeabi_memclr(void); ++extern void __aeabi_memclr4(void); ++extern void __aeabi_ldivmod(void); ++extern void __aeabi_memcpy4(void); ++extern void __aeabi_memmove(void); ++extern void __aeabi_memset4(void); ++extern void __aeabi_uidiv(void); ++extern void __aeabi_uidivmod(void); ++extern void __aeabi_uldivmod(void); ++ +extern void eventfd_write(void); ++extern void ioctl(void); ++extern void close(void); ++extern void epoll_wait(void); ++// extern void expf(void); ++extern void getpid(void); ++extern void isatty(void); ++extern void waitpid(void); + -+extern void futimes(void); -+extern void lutimes(void); -+extern void statx(void); ++extern void dup2(void); ++extern void epoll_ctl(void); ++extern void ftruncate64(void); ++extern void link(void); ++extern void pipe(void); + ++extern void __assert2(void); ++extern void dup(void); ++extern void epoll_create(void); ++extern void eventfd(void); ++extern void fork(void); ++extern void unlink(void); ++extern void creat(void); ++extern void fcntl(void); ++extern void open(void); ++extern void access(void); ++extern void environ(void); ++extern void lseek64(void); ++extern void umask(void); ++extern void poll(void); ++extern void raise(void); ++extern void mbrtowc(void); ++extern void sigprocmask(void); ++extern void sigaddset(void); ++extern void sigemptyset(void); ++extern void stat(void); ++extern void utime(void); ++extern void chmod(void); ++extern void mkfifo(void); ++extern void wcrtomb(void); ++extern void lstat(void); ++extern void fstat(void); ++extern void write(void); ++extern void read(void); +extern void __stack_chk_fail(void); -+extern void __vsprintf_chk(void); -+extern void __open_2(void); -+extern void __memcpy_chk(void); ++extern void __stack_chk_guard(void); ++extern void __aeabi_memclr8(void); ++extern void __aeabi_memcpy8(void); ++extern void __aeabi_memmove4(void); ++extern void __write_chk(void); ++extern void time(void); ++extern void uname(void); ++extern void tzset(void); ++extern void sysconf(void); ++extern void socket(void); ++extern void readdir(void); ++extern void pthread_rwlock_init(void); +extern void __memset_chk(void); ++extern void __memcpy_chk(void); ++extern void gmtime_r(void); ++extern void getauxval(void); ++extern void clock_gettime(void); ++extern void __aeabi_memset4(void); ++extern void __aeabi_memset8(void); ++extern void __aeabi_memset(void); ++extern void __vsprintf_chk(void); ++extern void usleep(void); ++extern void setsockopt(void); ++extern void __read_chk(void); ++extern void opendir(void); ++extern void mmap(void); ++extern void pthread_rwlock_rdlock(void); +extern void __memmove_chk(void); -+// GCC stuff -+extern void __addtf3(void); -+extern void __divtf3(void); -+extern void __extenddftf2(void); -+extern void __fixtfsi(void); -+extern void __floatditf(void); -+extern void __floatsitf(void); -+extern void __getf2(void); -+extern void __gttf2(void); -+extern void __lttf2(void); -+extern void __multf3(void); -+extern void __subtf3(void); -+extern void __trunctfdf2(void); ++extern void localtime_r(void); ++extern void getsockopt(void); ++extern void getnameinfo(void); ++extern void getentropy(void); ++extern void clock_getres(void); ++extern void __aeabi_d2lz(void); ++extern void __aeabi_l2d(void); ++extern void __aeabi_d2ulz(void); ++extern void syscall(void); ++extern void shutdown(void); ++extern void pthread_rwlock_wrlock(void); ++extern void mprotect(void); ++extern void gettimeofday(void); ++extern void gethostbyname(void); ++extern void gai_strerror(void); ++extern void fsync(void); ++extern void connect(void); ++extern void closedir(void); ++extern void bind(void); ++extern void sleep(void); ++extern void pthread_rwlock_unlock(void); ++extern void __open_2(void); ++extern void mlock(void); ++extern void listen(void); ++extern void freeaddrinfo(void); ++extern void clock(void); ++extern void __aeabi_ul2d(void); ++extern void accept(void); ++extern void strftime(void); ++extern void pthread_rwlock_destroy(void); ++extern void madvise(void); ++extern void getsockname(void); ++extern void getaddrinfo(void); ++extern void sigaction(void); ++extern void pthread_once(void); ++extern void munmap(void); ++extern void __FD_SET_chk(void); ++extern void __cmsg_nxthdr(void); ++extern void pthread_key_create(void); ++extern void select(void); ++extern void sendmsg(void); ++extern void signal(void); ++extern void pthread_getspecific(void); ++extern void pthread_setspecific(void); ++extern void munlock(void); ++extern void pthread_key_delete(void); ++extern void pthread_key_create(void); ++extern void pthread_mutexattr_init(void); ++extern void pthread_self(void); ++extern void pthread_mutexattr_settype(void); ++extern void pthread_equal(void); ++extern void pthread_mutex_init(void); ++extern void pthread_mutexattr_destroy(void); ++extern void pthread_mutex_destroy(void); ++extern void pthread_mutex_lock(void); ++extern void pthread_mutex_trylock(void); ++extern void pthread_mutex_unlock(void); ++extern void utimes(void); ++extern void pthread_join(void); ++extern void __aeabi_l2f(void); ++extern void pthread_create(void); ++extern void localtime(void); ++extern void getcwd(void); ++extern void fchmod(void); ++extern void mkdir(void); ++extern void rmdir(void); ++extern void fchown(void); ++extern void geteuid(void); ++extern void mmap64(void); ++extern void mremap(void); ++extern void readlink(void); + -+#define MISSING_FUN(f) void (f)(void) { printf("Unknown call to `%s'\n", #f); exit(1); } ++#define MISSING_FUN(f) void (f)(void) { printf("Unknown call to %s\n", #f); exit(1); } + +MISSING_FUN(c_format_unix_time) +MISSING_FUN(c_format_unix_time_gmt) @@ -104,218 +204,247 @@ index 0000000..d447895 +typedef mode_t (*umask_func_ptr_t)(mode_t); + +RtsSymbolVal my_iserv_syms[] = { -+ // arpa/inet.h -+ SYM(htons), -+ SYM(ntohs), -+ SYM(htonl), -+ SYM(ntohl), -+ // sys/random.h -+ SYM(getentropy), -+ SYM(getrandom), -+ // sys/auxv.h -+ SYM(getauxval), -+ // sys/mman.h -+ SYM(madvise),SYM(mlock),SYM(mmap),SYM(mprotect),SYM(munmap), -+ SYM(mremap), -+ SYM(munlock), -+ // select.h -+ SYM(__FD_SET_chk), -+ // sys/socket -+ SYM(accept),SYM(bind),SYM(connect),SYM(getsockopt),SYM(listen), -+ SYM(setsockopt),SYM(socket),SYM(getsockname),SYM(select), -+ SYM(getpeername),SYM(__cmsg_nxthdr),SYM(recv),SYM(recvfrom), -+ SYM(recvmsg),SYM(send),SYM(sendmsg),SYM(sendto),SYM(writev), -+ SYM(accept4), -+ // pthread.h -+ SYM(pthread_equal),SYM(pthread_getspecific),SYM(pthread_key_create), -+ SYM(pthread_key_delete),SYM(pthread_once),SYM(pthread_rwlock_destroy), -+ SYM(pthread_rwlock_init),SYM(pthread_rwlock_rdlock),SYM(pthread_rwlock_unlock), -+ SYM(pthread_rwlock_wrlock),SYM(pthread_self),SYM(pthread_setspecific), -+ SYM(pthread_create),SYM(pthread_join),SYM(pthread_mutex_destroy), -+ SYM(pthread_mutex_init),SYM(pthread_mutex_lock),SYM(pthread_mutex_trylock), -+ SYM(pthread_mutex_unlock),SYM(pthread_mutexattr_destroy), -+ SYM(pthread_mutexattr_init),SYM(pthread_mutexattr_settype), -+ // chk.h -+ SYM(__read_chk),SYM(__write_chk), -+ // netdb.h -+ SYM(freeaddrinfo),SYM(gai_strerror),SYM(getaddrinfo),SYM(getnameinfo), -+ SYM(gethostbyname), -+ // dirent.h -+ SYM(readdir_r),SYM(readdir), -+ SYM(opendir),SYM(closedir), -+ // time.h -+ SYM(clock),SYM(gmtime_r), -+ // sys/time.h -+ SYM(gettimeofday),SYM(clock_getres),SYM(clock_gettime),SYM(localtime_r),SYM(tzset), -+ // unistd.h -+ SYM(readlink), -+ SYM(rename), -+ SYM(rmdir), -+ SYM(chown), -+ SYM(realpath), -+ SYM(fchdir), -+ SYM(fdopendir), -+ SYM(rewinddir), -+ SYM(futimens),SYM(futimes),SYM(lutimes), -+ SYM(mknod), -+ SYM(lchown), -+ SYM(symlink), -+ SYM(endgrent),SYM(endpwent), -+ SYM(pathconf), -+ SYM(truncate), -+ SYM(utimensat), -+ SYM(statx), -+ SYM(seekdir), -+ SYM(telldir), -+ SYM(clearenv), -+ SYM(chdir), -+ SYM(sleep), -+ SYM(stdout), -+ SYM(strftime), -+ SYM(utimes), -+ SYM(setenv), -+ SYM(fpathconf), -+ SYM(exit), -+ SYM(environ), -+ SYM(ftruncate), ++ SYM(strlen), ++ SYM(__aeabi_idiv), ++ SYM(__aeabi_idivmod), ++ SYM(__aeabi_memcpy), ++ SYM(__aeabi_memclr), ++ SYM(__aeabi_memclr4), ++ SYM(__aeabi_ldivmod), ++ SYM(__aeabi_memcpy4), ++ SYM(__aeabi_memmove), ++ SYM(__aeabi_memset4), ++ SYM(__aeabi_uidiv), ++ SYM(__aeabi_uidivmod), ++ SYM(__aeabi_uldivmod), ++ SYM(calloc), ++ SYM(malloc), ++ SYM(free), ++ SYM(realloc), ++ SYM(abort), ++ SYM(close), ++ SYM(epoll_wait), ++ SYM(__errno), ++ SYM(eventfd_write), ++ SYM(expf), ++ SYM(fprintf), + SYM(getenv), -+ SYM(putenv), -+ SYM(unsetenv), -+ SYM(read), -+ SYM(write), ++ SYM(getpid), ++ SYM(ioctl), + SYM(isatty), ++ SYM(memcmp), ++ SYM(poll), ++ SYM(raise), ++ SYM(strcmp), ++ SYM(strerror), ++ SYM(unsetenv), ++ SYM(waitpid), ++ SYM(dup2), ++ SYM(epoll_ctl), ++ SYM(ftruncate64), ++ SYM(ldexp), + SYM(link), ++ SYM(log1pf), ++ SYM(mbrtowc), + SYM(pipe), -+ SYM(unlink), -+ SYM(execv),SYM(execve),SYM(execvp),SYM(execvpe), -+ SYM(syscall),SYM(sysconf), -+ // errno.h -+ SYM(__errno), -+ // math.h -+ SYM(sinhf), SYM(sinh), SYM(sinf), SYM(sin), -+ SYM(coshf), SYM(cosh), SYM(cosf), SYM(cos), -+ SYM(atanhf), SYM(atanh), SYM(atanf), SYM(atan), -+ SYM(asinhf), SYM(asinh), SYM(asinf), SYM(asin), -+ SYM(acoshf), SYM(acosh), SYM(acosf), SYM(acos), -+ SYM(log1pf), SYM(log1p), SYM(logf), SYM(log), -+ SYM(expm1f), SYM(expm1), -+ SYM(expf), SYM(exp), -+ SYM(ldexp), -+ SYM(powf), SYM(pow), -+ SYM(sqrtf), SYM(sqrt), -+ SYM(tanhf), SYM(tanh), SYM(tanf), SYM(tan), -+ // assert.h ++ SYM(putenv), ++ SYM(sigprocmask), ++ SYM(stderr), + SYM(__assert2), -+ // signal.h -+ SYM(signal),SYM(sigaction), -+ SYM(raise), SYM(sigaddset), SYM(sigemptyset), SYM(sigprocmask), -+ // sys/eventfd.h -+ SYM(eventfd), SYM(eventfd_write), -+ // sys/stat.h ++ SYM(dup), ++ SYM(epoll_create), ++ SYM(eventfd), ++ SYM(expm1f), ++ SYM(fork), ++ SYM(sigaddset), ++ SYM(stat), ++ SYM(wcrtomb), ++ SYM(__ctype_get_mb_cur_max), + SYM(fstat), ++ SYM(logf), ++ SYM(sigemptyset), ++ SYM(unlink), ++ SYM(creat), + SYM(lstat), -+ SYM(stat), -+ SYM(chmod), + SYM(mkfifo), -+ // SYM(umask), -+ { "umask", (umask_func_ptr_t)(&umask), STRENGTH_NORMAL, 1 }, -+ // sys/wait.h -+ SYM(waitpid), -+ // sym/epoll.h -+ SYM(epoll_create), SYM(epoll_ctl), SYM(epoll_wait), -+ // poll.h -+ SYM(poll), -+ // fcntl.h -+ SYM(open), SYM(creat), SYM(fcntl), SYM(ioctl), -+ SYM(openat),SYM(__open_2), -+ // string.h -+ SYM(strerror), -+ SYM(strcmp), -+ SYM(memchr),SYM(strcpy),SYM(strchr),SYM(strncpy),SYM(strrchr), -+ SYM(strcat),SYM(strncmp),SYM(strdup), -+ SYM(strtoul),SYM(strspn),SYM(strtol),SYM(strstr),SYM(strcspn), -+ SYM(__strncpy_chk2),SYM(__memcpy_chk), -+ // ctype.h -+ SYM(__ctype_get_mb_cur_max), -+ // wchar.h -+ SYM(mbrtowc), SYM(wcrtomb), -+ // stdlib.h + SYM(qsort), -+ // unistd.h -+ SYM(access), SYM(close), SYM(dup), SYM(dup2), SYM(fork), SYM(getpid), -+ SYM(lseek), -+ // utime.h -+ SYM(utime),SYM(time), -+ // ... -+ SYM(fileno), -+ SYM(__vsprintf_chk), -+ SYM(__strlen_chk), -+ SYM(__strchr_chk), ++ SYM(sinf), ++ SYM(chmod), ++ SYM(cosf), ++ SYM(fcntl), ++ SYM(open), ++ SYM(access), ++ SYM(environ), ++ SYM(tanf), ++ SYM(utime), ++ SYM(asinf), ++ SYM(lseek64), ++ SYM(umask), ++ SYM(acosf), ++ SYM(write), ++ SYM(atanf), ++ SYM(read), ++ SYM(sinhf), ++ SYM(coshf), ++ SYM(tanhf), ++ SYM(asinhf), ++ SYM(acoshf), ++ SYM(atanhf), ++ SYM(powf), ++ SYM(exp), ++ SYM(log1p), ++ SYM(expm1), ++ SYM(log), ++ SYM(sin), ++ SYM(cos), ++ SYM(tan), ++ SYM(asin), ++ SYM(acos), ++ SYM(atan), ++ SYM(sinh), ++ SYM(cosh), ++ SYM(tanh), ++ SYM(asinh), ++ SYM(acosh), ++ SYM(atanh), ++ SYM(pow), ++ SYM(__aeabi_memclr8), ++ SYM(__aeabi_memcpy8), ++ SYM(__aeabi_memmove4), ++ SYM(__aeabi_memset), ++ SYM(__aeabi_memset8), ++ SYM(clock_gettime), ++ SYM(fopen), ++ SYM(fwrite), ++ SYM(getauxval), ++ SYM(gmtime_r), ++ SYM(memchr), ++ SYM(__memcpy_chk), ++ SYM(memset), + SYM(__memset_chk), -+ SYM(__memmove_chk), ++ SYM(pthread_rwlock_init), ++ SYM(readdir), ++ SYM(socket), + SYM(__stack_chk_fail), -+ SYM(memmove), -+ SYM(memcmp), -+ SYM(memcpy), -+ SYM(memset), -+ SYM(stderr), -+ SYM(realloc), -+ SYM(calloc), -+ SYM(malloc), -+ SYM(free), -+ SYM(fprintf), ++ SYM(__stack_chk_guard), ++ SYM(strchr), ++ SYM(__strchr_chk), ++ SYM(strcpy), ++ SYM(strdup), ++ SYM(__strlen_chk), ++ SYM(strncmp), ++ SYM(strncpy), ++ SYM(__strncpy_chk2), ++ SYM(strrchr), ++ SYM(strspn), ++ SYM(strstr), ++ SYM(strtoul), ++ SYM(sysconf), ++ SYM(time), ++ SYM(tzset), ++ SYM(uname), + SYM(vfprintf), -+ SYM(fopen), SYM(fclose), -+ SYM(getegid),SYM(getgid), -+ SYM(getpwent), -+ SYM(getgrent), -+ SYM(getgroups), -+ SYM(getlogin), -+ SYM(getuid), -+ SYM(getgrgid_r),SYM(getgrnam_r),SYM(getpwnam_r),SYM(getpwuid_r), -+ SYM(setegid),SYM(seteuid),SYM(setgid),SYM(setgrent),SYM(setgroups), -+ SYM(setpwent),SYM(setuid), ++ SYM(__write_chk), ++ SYM(__aeabi_d2lz), ++ SYM(__aeabi_l2d), ++ SYM(atexit), ++ SYM(atoi), ++ SYM(clock_getres), ++ SYM(fclose), ++ SYM(fileno), + SYM(fread), -+ SYM(abort), -+ SYM(strlen), -+ SYM(fwrite), -+ SYM(feof), -+ SYM(ferror), -+ SYM(fflush), -+ SYM(fgets),SYM(fputc),SYM(fputs), -+ SYM(fseek),SYM(ftell), ++ SYM(fseek), ++ SYM(getentropy), ++ SYM(getnameinfo), ++ SYM(getsockopt), ++ SYM(localtime_r), ++ SYM(__memmove_chk), ++ SYM(mmap), ++ SYM(opendir), ++ SYM(pthread_rwlock_rdlock), ++ SYM(__read_chk), ++ SYM(setsockopt), + SYM(sscanf), ++ SYM(strcspn), ++ SYM(strtok), ++ SYM(strtol), ++ SYM(usleep), ++ SYM(__vsprintf_chk), ++ SYM(__aeabi_d2ulz), ++ SYM(bind), ++ SYM(closedir), ++ SYM(connect), ++ SYM(ferror), ++ SYM(fsync), ++ SYM(ftell), ++ SYM(gai_strerror), ++ SYM(gethostbyname), ++ SYM(gettimeofday), ++ SYM(mprotect), ++ SYM(pthread_rwlock_wrlock), + SYM(shutdown), -+ SYM(atoi), + SYM(stdin), -+ SYM(atexit), -+ SYM(usleep), ++ SYM(syscall), ++ SYM(accept), ++ SYM(__aeabi_ul2d), ++ SYM(clock), ++ SYM(fgets), ++ SYM(fputs), ++ SYM(freeaddrinfo), ++ SYM(listen), ++ SYM(mlock), ++ SYM(__open_2), ++ SYM(pthread_rwlock_unlock), ++ SYM(sleep), ++ SYM(strcat), ++ SYM(feof), ++ SYM(fflush), ++ SYM(getaddrinfo), ++ SYM(getsockname), ++ SYM(madvise), ++ SYM(perror), ++ SYM(pthread_rwlock_destroy), ++ SYM(strftime), ++ SYM(__cmsg_nxthdr), ++ SYM(__FD_SET_chk), ++ SYM(fputc), ++ SYM(munmap), ++ SYM(pthread_once), ++ SYM(sigaction), ++ SYM(pthread_key_create), ++ SYM(select), ++ SYM(sendmsg), ++ SYM(signal), ++ SYM(stdout), ++ SYM(pthread_getspecific), ++ SYM(rename), ++ SYM(munlock), ++ SYM(pthread_setspecific), ++ SYM(pthread_key_delete), ++ SYM(pthread_mutexattr_init), ++ SYM(pthread_mutexattr_settype), ++ SYM(pthread_self), ++ SYM(pthread_equal), ++ SYM(pthread_mutex_init), ++ SYM(pthread_mutexattr_destroy), ++ SYM(pthread_mutex_destroy), ++ SYM(pthread_mutex_lock), ++ SYM(pthread_mutex_trylock), ++ SYM(pthread_mutex_unlock), ++ SYM(utimes), ++ SYM(pthread_join), ++ SYM(__aeabi_l2f), ++ SYM(pthread_create), ++ SYM(localtime), ++ SYM(getcwd), + SYM(fchmod), ++ SYM(mkdir), ++ SYM(rmdir), + SYM(fchown), -+ SYM(fsync), -+ SYM(getcwd), + SYM(geteuid), -+ SYM(localtime), -+ SYM(lseek64), -+ SYM(mkdir), -+ SYM(mktime), -+ SYM(fdopen), -+ SYM(c_format_unix_time), -+ SYM(c_format_unix_time_gmt), -+ SYM(c_parse_unix_time), -+ SYM(c_parse_unix_time_gmt), -+ SYM(__addtf3), -+ SYM(__divtf3), -+ SYM(__extenddftf2), -+ SYM(__fixtfsi), -+ SYM(__floatditf), -+ SYM(__floatsitf), -+ SYM(__getf2), -+ SYM(__gttf2), -+ SYM(__lttf2), -+ SYM(__multf3), -+ SYM(__subtf3), -+ SYM(__trunctfdf2), ++ SYM(mmap64), ++ SYM(mremap), ++ SYM(readlink), + { 0, 0, STRENGTH_NORMAL, 1 } /* sentinel */ +}; + @@ -324,14 +453,14 @@ index 0000000..d447895 +} \ No newline at end of file diff --git a/iserv-proxy.cabal b/iserv-proxy.cabal -index a0eeaeb..a146108 100644 +index eca2047..51a125b 100644 --- a/iserv-proxy.cabal +++ b/iserv-proxy.cabal -@@ -103,6 +103,7 @@ Executable iserv-proxy +@@ -104,6 +104,7 @@ Executable iserv-proxy-interpreter -- We need to pass -fkeep-cafs to ensure that the interpreter retains CAFs -- Iserv and GHC do something similar. ghc-options: -fkeep-cafs + c-sources: cbits/symbols.c Build-Depends: base >= 4 && < 5, iserv-proxy - + From 9b664106dc8d3cf82d01a9040e65a9776a5a7deb Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Thu, 16 Nov 2023 07:27:13 +0000 Subject: [PATCH 037/109] No symbol loading on darwin. The weak logic doesn't seem to work well there. --- overlays/bootstrap.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index c5ac836bda..21f06760ae 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -296,7 +296,8 @@ in { ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "9.8" && final.stdenv.targetPlatform.isMusl && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch ++ final.lib.optional (versionAtLeast "9.0" && versionLessThan "10.0" && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-32bit-cmm.patch # this one is to allow linking extra symbols from iserv. - ++ final.lib.optional (versionAtLeast "9.6.1" && versionLessThan"9.10" && (final.stdenv.targetPlatform.isAndroid || final.stdenv.targetPlatform.isAarch64 || final.stdenv.targetPlatform.is32bit)) ./patches/ghc/iserv-syms.patch + # This one will lead to segv's on darwin, when calling `strlen` during lookupStrHashTable. `strlen` ends up being called with 0x0. + ++ final.lib.optional (versionAtLeast "9.6.1" && versionLessThan"9.10" && (final.stdenv.targetPlatform.isAndroid || final.stdenv.targetPlatform.isLinux) && (final.stdenv.targetPlatform.isAarch64 || final.stdenv.targetPlatform.is32bit)) ./patches/ghc/iserv-syms.patch ++ final.lib.optional (versionAtLeast "9.4" && final.stdenv.targetPlatform.isWindows) ./patches/ghc/ghc-9.6-fix-code-symbol-jumps.patch ++ final.lib.optional (versionAtLeast "9.6.3" && versionLessThan "9.10" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/ghc-9.6-iog.patch ++ final.lib.optional (versionAtLeast "9.6" && versionLessThan "9.12" && final.stdenv.targetPlatform.is32bit) ./patches/ghc/ghc-9.6-genapply-cross-arch.patch From 56ab95e5f84dd3974d3f9483267e6fde01d44099 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Tue, 28 Nov 2023 09:28:20 +0000 Subject: [PATCH 038/109] all ghc c files apple-a7 --- compiler/ghc/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index 0336b1cb1a..a29c7a92c1 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -332,7 +332,8 @@ let # iPhones/iPads/... won't understand the compiled code, as the compiler will emit LDSETALH # FIXME: we should have iOS as an argument to this derivation, and then make this, as well as # disableLargeAddress space conditional on iOS = true. - + lib.optionalString (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) " '*.rts.ghc.c.opts += -optc-mcpu=apple-a7 -optc-march=armv8-a+norcpc'" + + lib.optionalString (stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64) + " '*.*.ghc.c.opts += -optc-mcpu=apple-a7 -optc-march=armv8-a+norcpc'" # For GHC versions in the 9.x range that don't support the +native_bignum flavour transformer yet + lib.optionalString ((enableNativeBignum && !hadrianHasNativeBignumFlavour)) " --bignum=native" From 8b72989fa730a1f16bd7908ffc0e43b3fa3cb42f Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Sat, 20 Jan 2024 07:54:35 +0000 Subject: [PATCH 039/109] Drop duplicate patch --- overlays/bootstrap.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 21f06760ae..5bd1b5166b 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -269,7 +269,6 @@ in { ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch32) ./patches/ghc/libc-memory-symbols-armv7a.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/libc-memory-symbols.patch ++ final.lib.optional (versionAtLeast "8.10.6" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAndroid) ./patches/ghc/android-base-needs-iconv.patch - ++ final.lib.optional (versionAtLeast "8.10" && versionLessThan "9.4" && final.stdenv.targetPlatform != final.stdenv.hostPlatform) ./patches/ghc/ghc-make-stage-1-lib-ghc.patch ++ final.lib.optional (versionAtLeast "8.10" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-8.10-better-symbol-addr-debug.patch ++ final.lib.optional (versionAtLeast "8.10" && versionLessThan "9.0" && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-8.10-aarch64-handle-none-rela.patch ++ final.lib.optional (versionAtLeast "9.0" && final.stdenv.targetPlatform.isAarch64) ./patches/ghc/ghc-9.0-better-symbol-addr-debug.patch From d0c35e75cbbc6858770af42ac32b0b85495fbd71 Mon Sep 17 00:00:00 2001 From: Moritz Angermann Date: Sun, 21 Jan 2024 10:38:20 +0000 Subject: [PATCH 040/109] Fixup compilers --- overlays/bootstrap.nix | 1 - overlays/linux-cross.nix | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 5bd1b5166b..f59e734a52 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -249,7 +249,6 @@ in { ++ fromUntil "9.8.1" "9.8.2" ./patches/ghc/ghc-9.8-cabal-c-soures-fix.patch ++ fromUntil "9.6.3" "9.9" ./patches/ghc/ghc-9.6.3-Cabal-9384.patch ++ final.lib.optionals (final.stdenv.targetPlatform.isWindows) (fromUntil "9.4.1" "9.5" ./patches/ghc/ghc-9.4-hadrian-win-cross.patch) - ++ fromUntil "9.6.1" "9.8" ./patches/ghc/MR10116.patch ++ fromUntil "9.4.1" "9.6" ./patches/ghc/hadrian-build-deriveConstants-genprimopcode-ghc94.patch ++ final.lib.optional (versionAtLeast "8.10" && versionLessThan "9.4" && final.stdenv.targetPlatform != final.stdenv.hostPlatform) ./patches/ghc/ghc-make-stage-1-lib-ghc.patch diff --git a/overlays/linux-cross.nix b/overlays/linux-cross.nix index 720ae3737f..c4068c98f0 100644 --- a/overlays/linux-cross.nix +++ b/overlays/linux-cross.nix @@ -50,9 +50,9 @@ let (>&2 echo "---> Starting ${interpreter.exeName} on port $PORT") ${qemu}/bin/qemu-${qemuSuffix} ${interpreter.override ({ - patches = [ ./patches/iserv-proxy-keep-cafs.patch ] - ++ lib.optional (hostPlatform.isAndroid && hostPlatform.isAarch32) ./patches/iserv-proxy-interpreter-9.3-android32.patch - ++ lib.optional (hostPlatform.isAndroid && hostPlatform.isAarch64) ./patches/iserv-proxy-interpreter-9.3-android.patch + patches = lib.optional (builtins.compareVersions interpreter.version "9.0" > 0) ./patches/iserv-proxy-keep-cafs.patch + ++ lib.optional (builtins.compareVersions interpreter.version "9.0" > 0 && hostPlatform.isAndroid && hostPlatform.isAarch32) ./patches/iserv-proxy-interpreter-9.3-android32.patch + ++ lib.optional (builtins.compareVersions interpreter.version "9.0" > 0 && hostPlatform.isAndroid && hostPlatform.isAarch64) ./patches/iserv-proxy-interpreter-9.3-android.patch ; } // lib.optionalAttrs hostPlatform.isAndroid { setupBuildFlags = ["--ghc-option=-optl-static" ] ++ lib.optional hostPlatform.isAarch32 "--ghc-option=-optl-no-pie"; From ee324323006afeebcb71d5838b7a11f8336a7a03 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Tue, 17 Sep 2024 22:15:02 +1200 Subject: [PATCH 041/109] Update nixpkgs pins --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index b265008ceb..2b032447ed 100644 --- a/flake.lock +++ b/flake.lock @@ -525,11 +525,11 @@ }, "nixpkgs-2405": { "locked": { - "lastModified": 1720122915, - "narHash": "sha256-Nby8WWxj0elBu1xuRaUcRjPi/rU3xVbkAt2kj4QwX2U=", + "lastModified": 1726447378, + "narHash": "sha256-2yV8nmYE1p9lfmLHhOCbYwQC/W8WYfGQABoGzJOb1JQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "835cf2d3f37989c5db6585a28de967a667a75fb1", + "rev": "086b448a5d54fd117f4dc2dee55c9f0ff461bdc1", "type": "github" }, "original": { @@ -557,11 +557,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1720181791, - "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", + "lastModified": 1726481836, + "narHash": "sha256-MWTBH4dd5zIz2iatDb8IkqSjIeFum9jAqkFxgHLdzO4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", + "rev": "20f9370d5f588fb8c72e844c54511cab054b5f40", "type": "github" }, "original": { From 3d7f4c4aff8e7bd17368a2a829a6b80c97bd3d2b Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Wed, 18 Sep 2024 01:46:23 +1200 Subject: [PATCH 042/109] ifdLevel 0 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 554c898495..6905cb4a6d 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 3; + ifdLevel = 0; runningHydraEvalTest = false; compiler = "ghc928"; config = import ./config.nix; From d7dac30916fd1950640639c40f71ad9a70dc03f9 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Wed, 18 Sep 2024 15:25:02 +1200 Subject: [PATCH 043/109] Simplify bootPkgs --- overlays/bootstrap.nix | 40 ++++++++-------------------------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 84601b2b48..fbc931e845 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -41,9 +41,7 @@ in { compiler = let bootPkgs = { ghc = final.buildPackages.buildPackages.haskell-nix.bootstrap.compiler."${buildBootstrapper.compilerNixName}"; - alex = final.haskell-nix.bootstrap.packages.alex-unchecked; - happy = final.haskell-nix.bootstrap.packages.happy-unchecked; - hscolour = final.haskell-nix.bootstrap.packages.hscolour-unchecked; + inherit (final.haskell-nix.bootstrap.packages) alex happy hscolour; }; bootPkgsGhc94 = bootPkgs // { alex = final.buildPackages.haskell-nix.tool "ghc902" "alex" { @@ -998,50 +996,28 @@ in { # hackage with haskell.nix. For alex and happy we # need to use the boot strap compiler as we need them # to build ghcs from source. - # guardMaterializationChecks is used here so we - # can turn off materialization checks when - # building ghc itself (since GHC is a dependency - # of the materialization check it would cause - # infinite recursion). - alex-tool = args: final.haskell-nix.tool buildBootstrapper.compilerNixName "alex" ({config, pkgs, ...}: { + alex = final.haskell-nix.tool buildBootstrapper.compilerNixName "alex" ({config, pkgs, ...}: { compilerSelection = p: p.haskell.compiler; - evalPackages = pkgs.buildPackages; version = "3.2.4"; inherit ghcOverride index-state; materialized = ../materialized/bootstrap + "/${buildBootstrapper.compilerNixName}/alex"; - modules = [{ reinstallableLibGhc = false; }]; - nix-tools = config.evalPackages.haskell-nix.nix-tools; - } // args); - alex = final.haskell-nix.bootstrap.packages.alex-tool {}; - alex-unchecked = final.haskell-nix.bootstrap.packages.alex-tool { checkMaterialization = false; }; - happy-tool = { version ? "1.19.12", ... }@args: final.haskell-nix.tool buildBootstrapper.compilerNixName "happy" + }); + happy = final.haskell-nix.tool buildBootstrapper.compilerNixName "happy" ({config, pkgs, ...}: { compilerSelection = p: p.haskell.compiler; - evalPackages = pkgs.buildPackages; + version = "1.19.12"; inherit version ghcOverride index-state; materialized = ../materialized/bootstrap + "/${buildBootstrapper.compilerNixName}/happy-${version}"; - modules = [{ reinstallableLibGhc = false; }]; - nix-tools = config.evalPackages.haskell-nix.nix-tools; - } // args); - happy = final.haskell-nix.bootstrap.packages.happy-tool {}; - happy-unchecked = final.haskell-nix.bootstrap.packages.happy-tool { checkMaterialization = false; }; - # Older version needed when building ghc 8.6.5 - happy-old = final.haskell-nix.bootstrap.packages.happy-tool { version = "1.19.11"; }; - happy-old-unchecked = final.haskell-nix.bootstrap.packages.happy-tool { version = "1.19.11"; checkMaterialization = false; }; - hscolour-tool = args: (final.haskell-nix.hackage-package + }); + hscolour = (final.haskell-nix.hackage-package ({config, pkgs, ...}: { compilerSelection = p: p.haskell.compiler; - evalPackages = pkgs.buildPackages; compiler-nix-name = buildBootstrapper.compilerNixName; name = "hscolour"; version = "1.24.4"; inherit ghcOverride index-state; materialized = ../materialized/bootstrap + "/${buildBootstrapper.compilerNixName}/hscolour"; - modules = [{ reinstallableLibGhc = false; }]; - nix-tools = config.evalPackages.haskell-nix.nix-tools; - } // args)).getComponent "exe:HsColour"; - hscolour = final.haskell-nix.bootstrap.packages.hscolour-tool {}; - hscolour-unchecked = final.haskell-nix.bootstrap.packages.hscolour-tool { checkMaterialization = false; }; + })).getComponent "exe:HsColour"; }; }; }; From 2ddccc0aeef17b7df1e8a008942cb1d1aa6e1406 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Wed, 18 Sep 2024 15:25:21 +1200 Subject: [PATCH 044/109] Update materialized files --- materialized/alex-3.2.7.1/plan.json | 1 + .../bootstrap/ghc8107/alex/.plan.nix/alex.nix | 22 ++--- .../bootstrap/ghc8107/alex/default.nix | 88 ++++++++++--------- materialized/bootstrap/ghc8107/alex/plan.json | 1 + .../ghc8107/happy-1.19.12/.plan.nix/happy.nix | 20 ++--- .../ghc8107/happy-1.19.12/default.nix | 86 ++++++++---------- .../bootstrap/ghc8107/happy-1.19.12/plan.json | 1 + .../ghc8107/hscolour/.plan.nix/hscolour.nix | 14 +-- .../bootstrap/ghc8107/hscolour/default.nix | 53 ++++++----- .../bootstrap/ghc8107/hscolour/plan.json | 1 + .../ghc948/bytestring.nix | 65 -------------- .../ghc-boot-packages-nix/ghc948/deepseq.nix | 45 ---------- .../ghc-boot-packages-nix/ghc948/pretty.nix | 56 ------------ .../ghc982-ghcjs/bytestring.nix | 66 -------------- .../ghc982-ghcjs/deepseq.nix | 45 ---------- .../ghc982-ghcjs/parsec.nix | 77 ---------------- .../ghc982-ghcjs/pretty.nix | 56 ------------ .../ghc982/bytestring.nix | 66 -------------- .../ghc-boot-packages-nix/ghc982/deepseq.nix | 45 ---------- .../ghc-boot-packages-nix/ghc982/parsec.nix | 77 ---------------- .../ghc-boot-packages-nix/ghc982/pretty.nix | 56 ------------ .../ghc964/hadrian-ghc910/hadrian/default.nix | 29 ++++++ materialized/ghc964/hadrian-ghc910/plan.json | 1 + .../ghc964/hadrian-ghc94/hadrian/default.nix | 19 ++++ materialized/ghc964/hadrian-ghc94/plan.json | 1 + .../ghc964/hadrian-ghc96/hadrian/default.nix | 27 ++++++ materialized/ghc964/hadrian-ghc96/plan.json | 1 + .../ghc964/hadrian-ghc98/hadrian/default.nix | 27 ++++++ materialized/ghc964/hadrian-ghc98/plan.json | 1 + materialized/ghcjs/alex/ghc8107/plan.json | 1 + materialized/ghcjs/cabal/ghc8107/plan.json | 1 + materialized/ghcjs/ghc8107/plan.json | 2 +- materialized/ghcjs/happy/ghc8107/plan.json | 1 + materialized/happy-1.20.0/plan.json | 1 + 34 files changed, 259 insertions(+), 794 deletions(-) create mode 100644 materialized/alex-3.2.7.1/plan.json create mode 100644 materialized/bootstrap/ghc8107/alex/plan.json create mode 100644 materialized/bootstrap/ghc8107/happy-1.19.12/plan.json create mode 100644 materialized/bootstrap/ghc8107/hscolour/plan.json delete mode 100644 materialized/ghc-boot-packages-nix/ghc948/bytestring.nix delete mode 100644 materialized/ghc-boot-packages-nix/ghc948/deepseq.nix delete mode 100644 materialized/ghc-boot-packages-nix/ghc948/pretty.nix delete mode 100644 materialized/ghc-boot-packages-nix/ghc982-ghcjs/bytestring.nix delete mode 100644 materialized/ghc-boot-packages-nix/ghc982-ghcjs/deepseq.nix delete mode 100644 materialized/ghc-boot-packages-nix/ghc982-ghcjs/parsec.nix delete mode 100644 materialized/ghc-boot-packages-nix/ghc982-ghcjs/pretty.nix delete mode 100644 materialized/ghc-boot-packages-nix/ghc982/bytestring.nix delete mode 100644 materialized/ghc-boot-packages-nix/ghc982/deepseq.nix delete mode 100644 materialized/ghc-boot-packages-nix/ghc982/parsec.nix delete mode 100644 materialized/ghc-boot-packages-nix/ghc982/pretty.nix create mode 100644 materialized/ghc964/hadrian-ghc910/plan.json create mode 100644 materialized/ghc964/hadrian-ghc94/plan.json create mode 100644 materialized/ghc964/hadrian-ghc96/plan.json create mode 100644 materialized/ghc964/hadrian-ghc98/plan.json create mode 100644 materialized/ghcjs/alex/ghc8107/plan.json create mode 100644 materialized/ghcjs/cabal/ghc8107/plan.json create mode 100644 materialized/ghcjs/happy/ghc8107/plan.json create mode 100644 materialized/happy-1.20.0/plan.json diff --git a/materialized/alex-3.2.7.1/plan.json b/materialized/alex-3.2.7.1/plan.json new file mode 100644 index 0000000000..b5534b6c56 --- /dev/null +++ b/materialized/alex-3.2.7.1/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-9.0.2","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"alex-3.2.7.1-inplace-alex","pkg-name":"alex","pkg-version":"3.2.7.1","flags":{},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-9.0.2/alex-3.2.7.1/x/alex","build-info":"./dist-newstyle/build/x86_64-linux/ghc-9.0.2/alex-3.2.7.1/x/alex/build-info.json","depends":["array-0.5.4.0","base-4.15.1.0","containers-0.6.4.1","directory-1.3.6.2"],"exe-depends":[],"component-name":"exe:alex","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-9.0.2/alex-3.2.7.1/x/alex/build/alex/alex"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.15.1.0"]},{"type":"pre-existing","id":"base-4.15.1.0","pkg-name":"base","pkg-version":"4.15.1.0","depends":["ghc-bignum-1.1","ghc-prim-0.7.0"]},{"type":"pre-existing","id":"bytestring-0.10.12.1","pkg-name":"bytestring","pkg-version":"0.10.12.1","depends":["base-4.15.1.0","deepseq-1.4.5.0","ghc-bignum-1.1","ghc-prim-0.7.0","integer-gmp-1.1"]},{"type":"pre-existing","id":"containers-0.6.4.1","pkg-name":"containers","pkg-version":"0.6.4.1","depends":["array-0.5.4.0","base-4.15.1.0","deepseq-1.4.5.0"]},{"type":"pre-existing","id":"deepseq-1.4.5.0","pkg-name":"deepseq","pkg-version":"1.4.5.0","depends":["array-0.5.4.0","base-4.15.1.0","ghc-prim-0.7.0"]},{"type":"pre-existing","id":"directory-1.3.6.2","pkg-name":"directory","pkg-version":"1.3.6.2","depends":["base-4.15.1.0","filepath-1.4.2.1","time-1.9.3","unix-2.7.2.2"]},{"type":"pre-existing","id":"filepath-1.4.2.1","pkg-name":"filepath","pkg-version":"1.4.2.1","depends":["base-4.15.1.0"]},{"type":"pre-existing","id":"ghc-bignum-1.1","pkg-name":"ghc-bignum","pkg-version":"1.1","depends":["ghc-prim-0.7.0"]},{"type":"pre-existing","id":"ghc-prim-0.7.0","pkg-name":"ghc-prim","pkg-version":"0.7.0","depends":[]},{"type":"pre-existing","id":"integer-gmp-1.1","pkg-name":"integer-gmp","pkg-version":"1.1","depends":["base-4.15.1.0","ghc-bignum-1.1","ghc-prim-0.7.0"]},{"type":"pre-existing","id":"time-1.9.3","pkg-name":"time","pkg-version":"1.9.3","depends":["base-4.15.1.0","deepseq-1.4.5.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.15.1.0","bytestring-0.10.12.1","time-1.9.3"]}],"targets":[{"pkg-name":"alex","pkg-version":"3.2.7.1","component-name":"exe:alex","available":[{"id":"alex-3.2.7.1-inplace-alex","component-name":"exe:alex","build-by-default":true}]},{"pkg-name":"alex","pkg-version":"3.2.7.1","component-name":"test:tests","available":["TargetDisabledByUser"]},{"pkg-name":"array","pkg-version":"0.5.4.0","component-name":"lib","available":[{"id":"array-0.5.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base","pkg-version":"4.15.1.0","component-name":"lib","available":[{"id":"base-4.15.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring","pkg-version":"0.10.12.1","component-name":"lib","available":[{"id":"bytestring-0.10.12.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"containers","pkg-version":"0.6.4.1","component-name":"lib","available":[{"id":"containers-0.6.4.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"deepseq","pkg-version":"1.4.5.0","component-name":"lib","available":[{"id":"deepseq-1.4.5.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory","pkg-version":"1.3.6.2","component-name":"lib","available":[{"id":"directory-1.3.6.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepath","pkg-version":"1.4.2.1","component-name":"lib","available":[{"id":"filepath-1.4.2.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-bignum","pkg-version":"1.1","component-name":"lib","available":[{"id":"ghc-bignum-1.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.7.0","component-name":"lib","available":[{"id":"ghc-prim-0.7.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"integer-gmp","pkg-version":"1.1","component-name":"lib","available":[{"id":"integer-gmp-1.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"time","pkg-version":"1.9.3","component-name":"lib","available":[{"id":"time-1.9.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix","pkg-version":"2.7.2.2","component-name":"lib","available":[{"id":"unix-2.7.2.2","component-name":"lib","build-by-default":true}]}]} \ No newline at end of file diff --git a/materialized/bootstrap/ghc8107/alex/.plan.nix/alex.nix b/materialized/bootstrap/ghc8107/alex/.plan.nix/alex.nix index 5294056b9c..c388ddff87 100644 --- a/materialized/bootstrap/ghc8107/alex/.plan.nix/alex.nix +++ b/materialized/bootstrap/ghc8107/alex/.plan.nix/alex.nix @@ -41,7 +41,7 @@ "AlexWrapper-monadUserState" "AlexWrapper-monadUserState-bytestring" "AlexWrapper-gscan" - ]; + ]; extraSrcFiles = [ "CHANGELOG.md" "README.md" @@ -98,22 +98,22 @@ "tests/posn_typeclass_bytestring.x" "tests/strict_typeclass.x" "tests/unicode.x" - ]; + ]; extraTmpFiles = []; extraDocFiles = []; - }; + }; components = { exes = { "alex" = { depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) - ] ++ (if flags.small_base + ] ++ (if flags.small_base then [ (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."array" or (errorHandler.buildDepError "array")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) (hsPkgs."directory" or (errorHandler.buildDepError "directory")) - ] + ] else [ (hsPkgs."base" or (errorHandler.buildDepError "base")) ]); buildable = true; modules = [ @@ -138,23 +138,23 @@ "Data/Ranged/Boundaries" "Data/Ranged/RangedSet" "Data/Ranged/Ranges" - ]; + ]; hsSourceDirs = [ "src" ]; mainPath = [ "Main.hs" ] ++ [ "" ]; - }; }; + }; tests = { "tests" = { depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."process" or (errorHandler.buildDepError "process")) - ]; + ]; build-tools = [ (hsPkgs.pkgsBuildBuild.alex.components.exes.alex or (pkgs.pkgsBuildBuild.alex or (errorHandler.buildToolDepError "alex:alex"))) - ]; + ]; buildable = true; mainPath = [ "test.hs" ]; - }; }; }; - } // rec { src = (pkgs.lib).mkDefault ../.; } \ No newline at end of file + }; + } // rec { src = pkgs.lib.mkDefault ../.; } \ No newline at end of file diff --git a/materialized/bootstrap/ghc8107/alex/default.nix b/materialized/bootstrap/ghc8107/alex/default.nix index af9ebc4515..358d0e1ec0 100644 --- a/materialized/bootstrap/ghc8107/alex/default.nix +++ b/materialized/bootstrap/ghc8107/alex/default.nix @@ -2,68 +2,76 @@ pkgs = hackage: { packages = { - "ghc-prim".revision = (((hackage."ghc-prim")."0.6.1").revisions).default; - "array".revision = (((hackage."array")."0.5.4.0").revisions).default; - "integer-gmp".revision = (((hackage."integer-gmp")."1.0.3.0").revisions).default; - "process".revision = (((hackage."process")."1.6.13.2").revisions).default; - "base".revision = (((hackage."base")."4.14.3.0").revisions).default; - "rts".revision = (((hackage."rts")."1.0.1").revisions).default; - "time".revision = (((hackage."time")."1.9.3").revisions).default; - "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default; - "bytestring".revision = (((hackage."bytestring")."0.10.12.0").revisions).default; - "containers".revision = (((hackage."containers")."0.6.5.1").revisions).default; - "directory".revision = (((hackage."directory")."1.3.6.0").revisions).default; - "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default; - "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default; - }; + ghc-prim.revision = hackage.ghc-prim."0.6.1".revisions.default; + time.revision = hackage.time."1.9.3".revisions.default; + base.revision = hackage.base."4.14.3.0".revisions.default; + unix.revision = hackage.unix."2.7.2.2".revisions.default; + deepseq.revision = hackage.deepseq."1.4.4.0".revisions.default; + integer-gmp.revision = hackage.integer-gmp."1.0.3.0".revisions.default; + containers.revision = hackage.containers."0.6.5.1".revisions.default; + array.revision = hackage.array."0.5.4.0".revisions.default; + bytestring.revision = hackage.bytestring."0.10.12.0".revisions.default; + directory.revision = hackage.directory."1.3.6.0".revisions.default; + filepath.revision = hackage.filepath."1.4.2.1".revisions.default; + }; compiler = { version = "8.10.7"; nix-name = "ghc8107"; packages = { - "ghc-prim" = "0.6.1"; - "array" = "0.5.4.0"; - "integer-gmp" = "1.0.3.0"; - "process" = "1.6.13.2"; - "base" = "4.14.3.0"; - "rts" = "1.0.1"; - "time" = "1.9.3"; "unix" = "2.7.2.2"; + "filepath" = "1.4.2.1"; "bytestring" = "0.10.12.0"; "containers" = "0.6.5.1"; + "ghc-prim" = "0.6.1"; + "base" = "4.14.3.0"; + "time" = "1.9.3"; "directory" = "1.3.6.0"; - "filepath" = "1.4.2.1"; + "integer-gmp" = "1.0.3.0"; "deepseq" = "1.4.4.0"; - }; + "array" = "0.5.4.0"; }; }; + }; extras = hackage: { packages = { alex = ./.plan.nix/alex.nix; }; }; modules = [ + { + preExistingPkgs = [ + "ghc-prim" + "time" + "base" + "unix" + "deepseq" + "integer-gmp" + "containers" + "array" + "bytestring" + "directory" + "filepath" + ]; + } ({ lib, ... }: { packages = { "alex" = { flags = { "small_base" = lib.mkOverride 900 true; }; }; - }; - }) + }; + }) ({ lib, ... }: { packages = { + "directory".components.library.planned = lib.mkOverride 900 true; + "deepseq".components.library.planned = lib.mkOverride 900 true; + "base".components.library.planned = lib.mkOverride 900 true; + "integer-gmp".components.library.planned = lib.mkOverride 900 true; + "filepath".components.library.planned = lib.mkOverride 900 true; "containers".components.library.planned = lib.mkOverride 900 true; "ghc-prim".components.library.planned = lib.mkOverride 900 true; - "process".components.library.planned = lib.mkOverride 900 true; - "integer-gmp".components.library.planned = lib.mkOverride 900 true; - "array".components.library.planned = lib.mkOverride 900 true; "bytestring".components.library.planned = lib.mkOverride 900 true; - "unix".components.library.planned = lib.mkOverride 900 true; - "alex".components.exes."alex".planned = lib.mkOverride 900 true; - "base".components.library.planned = lib.mkOverride 900 true; - "rts".components.library.planned = lib.mkOverride 900 true; "time".components.library.planned = lib.mkOverride 900 true; - "deepseq".components.library.planned = lib.mkOverride 900 true; - "filepath".components.library.planned = lib.mkOverride 900 true; - "directory".components.library.planned = lib.mkOverride 900 true; - "alex".components.tests."tests".planned = lib.mkOverride 900 true; - }; - }) - ]; - } \ No newline at end of file + "alex".components.exes."alex".planned = lib.mkOverride 900 true; + "array".components.library.planned = lib.mkOverride 900 true; + "unix".components.library.planned = lib.mkOverride 900 true; + }; + }) + ]; +} \ No newline at end of file diff --git a/materialized/bootstrap/ghc8107/alex/plan.json b/materialized/bootstrap/ghc8107/alex/plan.json new file mode 100644 index 0000000000..2a03b0107d --- /dev/null +++ b/materialized/bootstrap/ghc8107/alex/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-8.10.7","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"alex-3.2.4-inplace-alex","pkg-name":"alex","pkg-version":"3.2.4","flags":{"small_base":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/alex-3.2.4/x/alex","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/alex-3.2.4/x/alex/build-info.json","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","directory-1.3.6.0"],"exe-depends":[],"component-name":"exe:alex","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/alex-3.2.4/x/alex/build/alex/alex"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"base-4.14.3.0","pkg-name":"base","pkg-version":"4.14.3.0","depends":["ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"pre-existing","id":"bytestring-0.10.12.0","pkg-name":"bytestring","pkg-version":"0.10.12.0","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"pre-existing","id":"deepseq-1.4.4.0","pkg-name":"deepseq","pkg-version":"1.4.4.0","depends":["array-0.5.4.0","base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"directory-1.3.6.0","pkg-name":"directory","pkg-version":"1.3.6.0","depends":["base-4.14.3.0","filepath-1.4.2.1","time-1.9.3","unix-2.7.2.2"]},{"type":"pre-existing","id":"filepath-1.4.2.1","pkg-name":"filepath","pkg-version":"1.4.2.1","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"ghc-prim-0.6.1","pkg-name":"ghc-prim","pkg-version":"0.6.1","depends":[]},{"type":"pre-existing","id":"integer-gmp-1.0.3.0","pkg-name":"integer-gmp","pkg-version":"1.0.3.0","depends":["ghc-prim-0.6.1"]},{"type":"pre-existing","id":"time-1.9.3","pkg-name":"time","pkg-version":"1.9.3","depends":["base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.14.3.0","bytestring-0.10.12.0","time-1.9.3"]}],"targets":[{"pkg-name":"alex","pkg-version":"3.2.4","component-name":"exe:alex","available":[{"id":"alex-3.2.4-inplace-alex","component-name":"exe:alex","build-by-default":true}]},{"pkg-name":"alex","pkg-version":"3.2.4","component-name":"test:tests","available":["TargetDisabledByUser"]},{"pkg-name":"array","pkg-version":"0.5.4.0","component-name":"lib","available":[{"id":"array-0.5.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base","pkg-version":"4.14.3.0","component-name":"lib","available":[{"id":"base-4.14.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring","pkg-version":"0.10.12.0","component-name":"lib","available":[{"id":"bytestring-0.10.12.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"containers","pkg-version":"0.6.5.1","component-name":"lib","available":[{"id":"containers-0.6.5.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"deepseq","pkg-version":"1.4.4.0","component-name":"lib","available":[{"id":"deepseq-1.4.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory","pkg-version":"1.3.6.0","component-name":"lib","available":[{"id":"directory-1.3.6.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepath","pkg-version":"1.4.2.1","component-name":"lib","available":[{"id":"filepath-1.4.2.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.6.1","component-name":"lib","available":[{"id":"ghc-prim-0.6.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"integer-gmp","pkg-version":"1.0.3.0","component-name":"lib","available":[{"id":"integer-gmp-1.0.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"time","pkg-version":"1.9.3","component-name":"lib","available":[{"id":"time-1.9.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix","pkg-version":"2.7.2.2","component-name":"lib","available":[{"id":"unix-2.7.2.2","component-name":"lib","build-by-default":true}]}]} \ No newline at end of file diff --git a/materialized/bootstrap/ghc8107/happy-1.19.12/.plan.nix/happy.nix b/materialized/bootstrap/ghc8107/happy-1.19.12/.plan.nix/happy.nix index 8a9ace8483..8c2e732857 100644 --- a/materialized/bootstrap/ghc8107/happy-1.19.12/.plan.nix/happy.nix +++ b/materialized/bootstrap/ghc8107/happy-1.19.12/.plan.nix/happy.nix @@ -39,7 +39,7 @@ "GLR_Lib" "GLR_Lib-ghc" "GLR_Lib-ghc-debug" - ]; + ]; extraSrcFiles = [ "ANNOUNCE" "CHANGES" @@ -145,10 +145,10 @@ "tests/typeclass_monad002.ly" "tests/typeclass_monad_lexer.y" "tests/rank2.y" - ]; + ]; extraTmpFiles = []; extraDocFiles = []; - }; + }; components = { exes = { "happy" = { @@ -157,7 +157,7 @@ (hsPkgs."array" or (errorHandler.buildDepError "array")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) - ]; + ]; buildable = true; modules = [ "Paths_happy" @@ -178,23 +178,23 @@ "AttrGrammarParser" "ParamRules" "PrettyGrammar" - ]; + ]; hsSourceDirs = [ "src" ]; mainPath = [ "Main.lhs" ]; - }; }; + }; tests = { "tests" = { depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."process" or (errorHandler.buildDepError "process")) - ]; + ]; build-tools = [ (hsPkgs.pkgsBuildBuild.happy.components.exes.happy or (pkgs.pkgsBuildBuild.happy or (errorHandler.buildToolDepError "happy:happy"))) - ]; + ]; buildable = true; mainPath = [ "test.hs" ]; - }; }; }; - } // rec { src = (pkgs.lib).mkDefault ../.; } \ No newline at end of file + }; + } // rec { src = pkgs.lib.mkDefault ../.; } \ No newline at end of file diff --git a/materialized/bootstrap/ghc8107/happy-1.19.12/default.nix b/materialized/bootstrap/ghc8107/happy-1.19.12/default.nix index 73e76139a6..f4fa58e413 100644 --- a/materialized/bootstrap/ghc8107/happy-1.19.12/default.nix +++ b/materialized/bootstrap/ghc8107/happy-1.19.12/default.nix @@ -2,74 +2,64 @@ pkgs = hackage: { packages = { - "ghc-prim".revision = (((hackage."ghc-prim")."0.6.1").revisions).default; - "array".revision = (((hackage."array")."0.5.4.0").revisions).default; - "integer-gmp".revision = (((hackage."integer-gmp")."1.0.3.0").revisions).default; - "process".revision = (((hackage."process")."1.6.13.2").revisions).default; - "base".revision = (((hackage."base")."4.14.3.0").revisions).default; - "rts".revision = (((hackage."rts")."1.0.1").revisions).default; - "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default; - "time".revision = (((hackage."time")."1.9.3").revisions).default; - "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default; - "bytestring".revision = (((hackage."bytestring")."0.10.12.0").revisions).default; - "containers".revision = (((hackage."containers")."0.6.5.1").revisions).default; - "directory".revision = (((hackage."directory")."1.3.6.0").revisions).default; - "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default; - "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default; - "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default; - }; + ghc-prim.revision = hackage.ghc-prim."0.6.1".revisions.default; + transformers.revision = hackage.transformers."0.5.6.2".revisions.default; + base.revision = hackage.base."4.14.3.0".revisions.default; + mtl.revision = hackage.mtl."2.2.2".revisions.default; + deepseq.revision = hackage.deepseq."1.4.4.0".revisions.default; + integer-gmp.revision = hackage.integer-gmp."1.0.3.0".revisions.default; + containers.revision = hackage.containers."0.6.5.1".revisions.default; + array.revision = hackage.array."0.5.4.0".revisions.default; + }; compiler = { version = "8.10.7"; nix-name = "ghc8107"; packages = { + "transformers" = "0.5.6.2"; + "containers" = "0.6.5.1"; "ghc-prim" = "0.6.1"; - "array" = "0.5.4.0"; - "integer-gmp" = "1.0.3.0"; - "process" = "1.6.13.2"; - "base" = "4.14.3.0"; - "rts" = "1.0.1"; "mtl" = "2.2.2"; - "time" = "1.9.3"; - "unix" = "2.7.2.2"; - "bytestring" = "0.10.12.0"; - "containers" = "0.6.5.1"; - "directory" = "1.3.6.0"; - "filepath" = "1.4.2.1"; + "base" = "4.14.3.0"; + "integer-gmp" = "1.0.3.0"; "deepseq" = "1.4.4.0"; - "transformers" = "0.5.6.2"; - }; + "array" = "0.5.4.0"; }; }; + }; extras = hackage: { packages = { happy = ./.plan.nix/happy.nix; }; }; modules = [ + { + preExistingPkgs = [ + "ghc-prim" + "transformers" + "base" + "mtl" + "deepseq" + "integer-gmp" + "containers" + "array" + ]; + } ({ lib, ... }: { packages = { "happy" = { flags = { "small_base" = lib.mkOverride 900 true; }; }; - }; - }) + }; + }) ({ lib, ... }: { packages = { + "deepseq".components.library.planned = lib.mkOverride 900 true; + "base".components.library.planned = lib.mkOverride 900 true; + "integer-gmp".components.library.planned = lib.mkOverride 900 true; + "transformers".components.library.planned = lib.mkOverride 900 true; + "mtl".components.library.planned = lib.mkOverride 900 true; "containers".components.library.planned = lib.mkOverride 900 true; "ghc-prim".components.library.planned = lib.mkOverride 900 true; "happy".components.exes."happy".planned = lib.mkOverride 900 true; - "transformers".components.library.planned = lib.mkOverride 900 true; - "process".components.library.planned = lib.mkOverride 900 true; - "integer-gmp".components.library.planned = lib.mkOverride 900 true; "array".components.library.planned = lib.mkOverride 900 true; - "bytestring".components.library.planned = lib.mkOverride 900 true; - "unix".components.library.planned = lib.mkOverride 900 true; - "base".components.library.planned = lib.mkOverride 900 true; - "rts".components.library.planned = lib.mkOverride 900 true; - "mtl".components.library.planned = lib.mkOverride 900 true; - "time".components.library.planned = lib.mkOverride 900 true; - "deepseq".components.library.planned = lib.mkOverride 900 true; - "filepath".components.library.planned = lib.mkOverride 900 true; - "happy".components.tests."tests".planned = lib.mkOverride 900 true; - "directory".components.library.planned = lib.mkOverride 900 true; - }; - }) - ]; - } \ No newline at end of file + }; + }) + ]; +} \ No newline at end of file diff --git a/materialized/bootstrap/ghc8107/happy-1.19.12/plan.json b/materialized/bootstrap/ghc8107/happy-1.19.12/plan.json new file mode 100644 index 0000000000..aeb0dba3c1 --- /dev/null +++ b/materialized/bootstrap/ghc8107/happy-1.19.12/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-8.10.7","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"base-4.14.3.0","pkg-name":"base","pkg-version":"4.14.3.0","depends":["ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"pre-existing","id":"deepseq-1.4.4.0","pkg-name":"deepseq","pkg-version":"1.4.4.0","depends":["array-0.5.4.0","base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"ghc-prim-0.6.1","pkg-name":"ghc-prim","pkg-version":"0.6.1","depends":[]},{"type":"configured","id":"happy-1.19.12-inplace-happy","pkg-name":"happy","pkg-version":"1.19.12","flags":{"small_base":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/happy-1.19.12/x/happy","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/happy-1.19.12/x/happy/build-info.json","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","mtl-2.2.2"],"exe-depends":[],"component-name":"exe:happy","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/happy-1.19.12/x/happy/build/happy/happy"},{"type":"pre-existing","id":"integer-gmp-1.0.3.0","pkg-name":"integer-gmp","pkg-version":"1.0.3.0","depends":["ghc-prim-0.6.1"]},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.14.3.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.14.3.0","ghc-prim-0.6.1"]}],"targets":[{"pkg-name":"array","pkg-version":"0.5.4.0","component-name":"lib","available":[{"id":"array-0.5.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base","pkg-version":"4.14.3.0","component-name":"lib","available":[{"id":"base-4.14.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"containers","pkg-version":"0.6.5.1","component-name":"lib","available":[{"id":"containers-0.6.5.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"deepseq","pkg-version":"1.4.4.0","component-name":"lib","available":[{"id":"deepseq-1.4.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.6.1","component-name":"lib","available":[{"id":"ghc-prim-0.6.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"happy","pkg-version":"1.19.12","component-name":"exe:happy","available":[{"id":"happy-1.19.12-inplace-happy","component-name":"exe:happy","build-by-default":true}]},{"pkg-name":"happy","pkg-version":"1.19.12","component-name":"test:tests","available":["TargetDisabledByUser"]},{"pkg-name":"integer-gmp","pkg-version":"1.0.3.0","component-name":"lib","available":[{"id":"integer-gmp-1.0.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"mtl","pkg-version":"2.2.2","component-name":"lib","available":[{"id":"mtl-2.2.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers","pkg-version":"0.5.6.2","component-name":"lib","available":[{"id":"transformers-0.5.6.2","component-name":"lib","build-by-default":true}]}]} \ No newline at end of file diff --git a/materialized/bootstrap/ghc8107/hscolour/.plan.nix/hscolour.nix b/materialized/bootstrap/ghc8107/hscolour/.plan.nix/hscolour.nix index 1f1cb89188..2953159025 100644 --- a/materialized/bootstrap/ghc8107/hscolour/.plan.nix/hscolour.nix +++ b/materialized/bootstrap/ghc8107/hscolour/.plan.nix/hscolour.nix @@ -29,13 +29,13 @@ extraSrcFiles = []; extraTmpFiles = []; extraDocFiles = []; - }; + }; components = { "library" = { depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) - ]; + ]; buildable = true; modules = [ "Language/Haskell/HsColour" @@ -54,17 +54,17 @@ "Language/Haskell/HsColour/Options" "Language/Haskell/HsColour/Output" "Language/Haskell/HsColour/TTY" - ]; - }; + ]; + }; exes = { "HsColour" = { depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) (hsPkgs."containers" or (errorHandler.buildDepError "containers")) - ]; + ]; buildable = true; mainPath = [ "HsColour.hs" ]; - }; }; }; - } // rec { src = (pkgs.lib).mkDefault ../.; } \ No newline at end of file + }; + } // rec { src = pkgs.lib.mkDefault ../.; } \ No newline at end of file diff --git a/materialized/bootstrap/ghc8107/hscolour/default.nix b/materialized/bootstrap/ghc8107/hscolour/default.nix index cf299d5c2c..a81ff955ab 100644 --- a/materialized/bootstrap/ghc8107/hscolour/default.nix +++ b/materialized/bootstrap/ghc8107/hscolour/default.nix @@ -2,46 +2,53 @@ pkgs = hackage: { packages = { - "ghc-prim".revision = (((hackage."ghc-prim")."0.6.1").revisions).default; - "array".revision = (((hackage."array")."0.5.4.0").revisions).default; - "integer-gmp".revision = (((hackage."integer-gmp")."1.0.3.0").revisions).default; - "base".revision = (((hackage."base")."4.14.3.0").revisions).default; - "rts".revision = (((hackage."rts")."1.0.1").revisions).default; - "containers".revision = (((hackage."containers")."0.6.5.1").revisions).default; - "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default; - }; + ghc-prim.revision = hackage.ghc-prim."0.6.1".revisions.default; + base.revision = hackage.base."4.14.3.0".revisions.default; + deepseq.revision = hackage.deepseq."1.4.4.0".revisions.default; + integer-gmp.revision = hackage.integer-gmp."1.0.3.0".revisions.default; + containers.revision = hackage.containers."0.6.5.1".revisions.default; + array.revision = hackage.array."0.5.4.0".revisions.default; + }; compiler = { version = "8.10.7"; nix-name = "ghc8107"; packages = { + "containers" = "0.6.5.1"; "ghc-prim" = "0.6.1"; - "array" = "0.5.4.0"; - "integer-gmp" = "1.0.3.0"; "base" = "4.14.3.0"; - "rts" = "1.0.1"; - "containers" = "0.6.5.1"; + "integer-gmp" = "1.0.3.0"; "deepseq" = "1.4.4.0"; - }; + "array" = "0.5.4.0"; }; }; + }; extras = hackage: { packages = { hscolour = ./.plan.nix/hscolour.nix; }; }; modules = [ + { + preExistingPkgs = [ + "ghc-prim" + "base" + "deepseq" + "integer-gmp" + "containers" + "array" + ]; + } ({ lib, ... }: { packages = { "hscolour" = { flags = {}; }; }; }) ({ lib, ... }: { packages = { - "containers".components.library.planned = lib.mkOverride 900 true; - "ghc-prim".components.library.planned = lib.mkOverride 900 true; - "hscolour".components.exes."HsColour".planned = lib.mkOverride 900 true; "hscolour".components.library.planned = lib.mkOverride 900 true; + "deepseq".components.library.planned = lib.mkOverride 900 true; + "base".components.library.planned = lib.mkOverride 900 true; "integer-gmp".components.library.planned = lib.mkOverride 900 true; + "hscolour".components.exes."HsColour".planned = lib.mkOverride 900 true; + "containers".components.library.planned = lib.mkOverride 900 true; + "ghc-prim".components.library.planned = lib.mkOverride 900 true; "array".components.library.planned = lib.mkOverride 900 true; - "base".components.library.planned = lib.mkOverride 900 true; - "rts".components.library.planned = lib.mkOverride 900 true; - "deepseq".components.library.planned = lib.mkOverride 900 true; - }; - }) - ]; - } \ No newline at end of file + }; + }) + ]; +} \ No newline at end of file diff --git a/materialized/bootstrap/ghc8107/hscolour/plan.json b/materialized/bootstrap/ghc8107/hscolour/plan.json new file mode 100644 index 0000000000..548b7b20e3 --- /dev/null +++ b/materialized/bootstrap/ghc8107/hscolour/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-8.10.7","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"base-4.14.3.0","pkg-name":"base","pkg-version":"4.14.3.0","depends":["ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"pre-existing","id":"deepseq-1.4.4.0","pkg-name":"deepseq","pkg-version":"1.4.4.0","depends":["array-0.5.4.0","base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"ghc-prim-0.6.1","pkg-name":"ghc-prim","pkg-version":"0.6.1","depends":[]},{"type":"configured","id":"hscolour-1.24.4-inplace","pkg-name":"hscolour","pkg-version":"1.24.4","flags":{},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/hscolour-1.24.4","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/hscolour-1.24.4/build-info.json","components":{"lib":{"depends":["base-4.14.3.0","containers-0.6.5.1"],"exe-depends":[]},"exe:HsColour":{"depends":["base-4.14.3.0","containers-0.6.5.1"],"exe-depends":[],"bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/hscolour-1.24.4/build/HsColour/HsColour"}}},{"type":"pre-existing","id":"integer-gmp-1.0.3.0","pkg-name":"integer-gmp","pkg-version":"1.0.3.0","depends":["ghc-prim-0.6.1"]}],"targets":[{"pkg-name":"array","pkg-version":"0.5.4.0","component-name":"lib","available":[{"id":"array-0.5.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base","pkg-version":"4.14.3.0","component-name":"lib","available":[{"id":"base-4.14.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"containers","pkg-version":"0.6.5.1","component-name":"lib","available":[{"id":"containers-0.6.5.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"deepseq","pkg-version":"1.4.4.0","component-name":"lib","available":[{"id":"deepseq-1.4.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.6.1","component-name":"lib","available":[{"id":"ghc-prim-0.6.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"hscolour","pkg-version":"1.24.4","component-name":"lib","available":[{"id":"hscolour-1.24.4-inplace","component-name":"lib","build-by-default":true}]},{"pkg-name":"hscolour","pkg-version":"1.24.4","component-name":"exe:HsColour","available":[{"id":"hscolour-1.24.4-inplace","component-name":"exe:HsColour","build-by-default":true}]},{"pkg-name":"integer-gmp","pkg-version":"1.0.3.0","component-name":"lib","available":[{"id":"integer-gmp-1.0.3.0","component-name":"lib","build-by-default":true}]}]} \ No newline at end of file diff --git a/materialized/ghc-boot-packages-nix/ghc948/bytestring.nix b/materialized/ghc-boot-packages-nix/ghc948/bytestring.nix deleted file mode 100644 index 9901355311..0000000000 --- a/materialized/ghc-boot-packages-nix/ghc948/bytestring.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = {}; - package = { - specVersion = "1.10"; - identifier = { name = "bytestring"; version = "0.11.5.3"; }; - license = "BSD-3-Clause"; - copyright = "Copyright (c) Don Stewart 2005-2009,\n(c) Duncan Coutts 2006-2015,\n(c) David Roundy 2003-2005,\n(c) Jasper Van der Jeugt 2010,\n(c) Simon Meier 2010-2013."; - maintainer = "Haskell Bytestring Team , Core Libraries Committee"; - author = "Don Stewart,\nDuncan Coutts"; - homepage = "https://github.com/haskell/bytestring"; - url = ""; - synopsis = "Fast, compact, strict and lazy byte strings with a list interface"; - description = "An efficient compact, immutable byte string type (both strict and lazy)\nsuitable for binary or 8-bit character data.\n\nThe 'ByteString' type represents sequences of bytes or 8-bit characters.\nIt is suitable for high performance use, both in terms of large data\nquantities, or high speed requirements. The 'ByteString' functions follow\nthe same style as Haskell\\'s ordinary lists, so it is easy to convert code\nfrom using 'String' to 'ByteString'.\n\nTwo 'ByteString' variants are provided:\n\n* Strict 'ByteString's keep the string as a single large array. This\nmakes them convenient for passing data between C and Haskell.\n\n* Lazy 'ByteString's use a lazy list of strict chunks which makes it\nsuitable for I\\/O streaming tasks.\n\nThe @Char8@ modules provide a character-based view of the same\nunderlying 'ByteString' types. This makes it convenient to handle mixed\nbinary and 8-bit character content (which is common in many file formats\nand network protocols).\n\nThe 'Builder' module provides an efficient way to build up 'ByteString's\nin an ad-hoc way by repeated concatenation. This is ideal for fast\nserialisation or pretty printing.\n\nThere is also a 'ShortByteString' type which has a lower memory overhead\nand can be converted to or from a 'ByteString'. It is suitable for keeping\nmany short strings in memory.\n\n'ByteString's are not designed for Unicode. For Unicode strings you should\nuse the 'Text' type from the @text@ package.\n\nThese modules are intended to be imported qualified, to avoid name clashes\nwith \"Prelude\" functions, e.g.\n\n> import qualified Data.ByteString as BS"; - buildType = "Simple"; - }; - components = { - "library" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell")) - ]; - libs = pkgs.lib.optional (system.isWindows && (compiler.isGhc && compiler.version.lt "9.3")) (pkgs."gcc" or (errorHandler.sysDepError "gcc")); - buildable = true; - }; - tests = { - "bytestring-tests" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) - (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) - (hsPkgs."tasty-quickcheck" or (errorHandler.buildDepError "tasty-quickcheck")) - (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell")) - (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) - ]; - buildable = true; - }; - }; - benchmarks = { - "bytestring-bench" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."tasty-bench" or (errorHandler.buildDepError "tasty-bench")) - (hsPkgs."random" or (errorHandler.buildDepError "random")) - ]; - buildable = true; - }; - }; - }; - } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc948/deepseq.nix b/materialized/ghc-boot-packages-nix/ghc948/deepseq.nix deleted file mode 100644 index f2f913895e..0000000000 --- a/materialized/ghc-boot-packages-nix/ghc948/deepseq.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = {}; - package = { - specVersion = "1.12"; - identifier = { name = "deepseq"; version = "1.4.8.0"; }; - license = "BSD-3-Clause"; - copyright = ""; - maintainer = "libraries@haskell.org"; - author = ""; - homepage = ""; - url = ""; - synopsis = "Deep evaluation of data structures"; - description = "This package provides methods for fully evaluating data structures\n(\\\"deep evaluation\\\"). Deep evaluation is often used for adding\nstrictness to a program, e.g. in order to force pending exceptions,\nremove space leaks, or force lazy I/O to happen. It is also useful\nin parallel programs, to ensure pending work does not migrate to the\nwrong thread.\n\nThe primary use of this package is via the 'deepseq' function, a\n\\\"deep\\\" version of 'seq'. It is implemented on top of an 'NFData'\ntypeclass (\\\"Normal Form Data\\\", data structures with no unevaluated\ncomponents) which defines strategies for fully evaluating different\ndata types. See module documentation in \"Control.DeepSeq\" for more\ndetails."; - buildType = "Simple"; - }; - components = { - "library" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."array" or (errorHandler.buildDepError "array")) - ] ++ pkgs.lib.optional (compiler.isGhc && compiler.version.ge "9.0") (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")); - buildable = true; - }; - tests = { - "test" = { - depends = [ - (hsPkgs."array" or (errorHandler.buildDepError "array")) - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - ]; - buildable = true; - }; - }; - }; - } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc948/pretty.nix b/materialized/ghc-boot-packages-nix/ghc948/pretty.nix deleted file mode 100644 index 7d4c79f506..0000000000 --- a/materialized/ghc-boot-packages-nix/ghc948/pretty.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = {}; - package = { - specVersion = "1.8"; - identifier = { name = "pretty"; version = "1.1.3.6"; }; - license = "BSD-3-Clause"; - copyright = ""; - maintainer = "David Terei "; - author = ""; - homepage = "http://github.com/haskell/pretty"; - url = ""; - synopsis = "Pretty-printing library"; - description = "This package contains a pretty-printing library, a set of API's\nthat provides a way to easily print out text in a consistent\nformat of your choosing. This is useful for compilers and related\ntools.\n\nThis library was originally designed by John Hughes's and has since\nbeen heavily modified by Simon Peyton Jones."; - buildType = "Simple"; - }; - components = { - "library" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - ]; - buildable = true; - }; - tests = { - "test-pretty" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) - ]; - buildable = true; - }; - }; - benchmarks = { - "pretty-bench" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."criterion" or (errorHandler.buildDepError "criterion")) - (hsPkgs."pretty" or (errorHandler.buildDepError "pretty")) - ]; - buildable = true; - }; - }; - }; - } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc982-ghcjs/bytestring.nix b/materialized/ghc-boot-packages-nix/ghc982-ghcjs/bytestring.nix deleted file mode 100644 index 6b38669a93..0000000000 --- a/materialized/ghc-boot-packages-nix/ghc982-ghcjs/bytestring.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = { pure-haskell = false; }; - package = { - specVersion = "1.10"; - identifier = { name = "bytestring"; version = "0.12.1.0"; }; - license = "BSD-3-Clause"; - copyright = "Copyright (c) Don Stewart 2005-2009,\n(c) Duncan Coutts 2006-2015,\n(c) David Roundy 2003-2005,\n(c) Jasper Van der Jeugt 2010,\n(c) Simon Meier 2010-2013."; - maintainer = "Haskell Bytestring Team , Core Libraries Committee"; - author = "Don Stewart,\nDuncan Coutts"; - homepage = "https://github.com/haskell/bytestring"; - url = ""; - synopsis = "Fast, compact, strict and lazy byte strings with a list interface"; - description = "An efficient compact, immutable byte string type (both strict and lazy)\nsuitable for binary or 8-bit character data.\n\nThe 'ByteString' type represents sequences of bytes or 8-bit characters.\nIt is suitable for high performance use, both in terms of large data\nquantities, or high speed requirements. The 'ByteString' functions follow\nthe same style as Haskell\\'s ordinary lists, so it is easy to convert code\nfrom using 'String' to 'ByteString'.\n\nTwo 'ByteString' variants are provided:\n\n* Strict 'ByteString's keep the string as a single large array. This\nmakes them convenient for passing data between C and Haskell.\n\n* Lazy 'ByteString's use a lazy list of strict chunks which makes it\nsuitable for I\\/O streaming tasks.\n\nThe @Char8@ modules provide a character-based view of the same\nunderlying 'ByteString' types. This makes it convenient to handle mixed\nbinary and 8-bit character content (which is common in many file formats\nand network protocols).\n\nThe 'Builder' module provides an efficient way to build up 'ByteString's\nin an ad-hoc way by repeated concatenation. This is ideal for fast\nserialisation or pretty printing.\n\nThere is also a 'ShortByteString' type which has a lower memory overhead\nand can be converted to or from a 'ByteString'. It is suitable for keeping\nmany short strings in memory, especially long-term, without incurring any\npossible heap fragmentation costs.\n\n'ByteString's are not designed for Unicode. For Unicode strings you should\nuse the 'Text' type from the @text@ package.\n\nThese modules are intended to be imported qualified, to avoid name clashes\nwith \"Prelude\" functions, e.g.\n\n> import qualified Data.ByteString as BS"; - buildType = "Simple"; - }; - components = { - "library" = { - depends = ([ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell")) - ] ++ pkgs.lib.optional (compiler.isGhc && compiler.version.lt "9.4") (hsPkgs."data-array-byte" or (errorHandler.buildDepError "data-array-byte"))) ++ pkgs.lib.optional (system.isJavaScript || flags.pure-haskell) (hsPkgs."base" or (errorHandler.buildDepError "base")); - libs = pkgs.lib.optionals (!(system.isJavaScript || flags.pure-haskell)) (pkgs.lib.optional (system.isWindows && (compiler.isGhc && compiler.version.lt "9.3")) (pkgs."gcc" or (errorHandler.sysDepError "gcc"))); - buildable = true; - }; - tests = { - "bytestring-tests" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) - (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) - (hsPkgs."tasty-quickcheck" or (errorHandler.buildDepError "tasty-quickcheck")) - (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell")) - (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) - (hsPkgs."syb" or (errorHandler.buildDepError "syb")) - ]; - buildable = true; - }; - }; - benchmarks = { - "bytestring-bench" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."tasty-bench" or (errorHandler.buildDepError "tasty-bench")) - (hsPkgs."random" or (errorHandler.buildDepError "random")) - ]; - buildable = true; - }; - }; - }; - } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc982-ghcjs/deepseq.nix b/materialized/ghc-boot-packages-nix/ghc982-ghcjs/deepseq.nix deleted file mode 100644 index 3bc6d64832..0000000000 --- a/materialized/ghc-boot-packages-nix/ghc982-ghcjs/deepseq.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = {}; - package = { - specVersion = "1.12"; - identifier = { name = "deepseq"; version = "1.5.0.0"; }; - license = "BSD-3-Clause"; - copyright = ""; - maintainer = "libraries@haskell.org"; - author = ""; - homepage = ""; - url = ""; - synopsis = "Deep evaluation of data structures"; - description = "This package provides methods for fully evaluating data structures\n(\\\"deep evaluation\\\"). Deep evaluation is often used for adding\nstrictness to a program, e.g. in order to force pending exceptions,\nremove space leaks, or force lazy I/O to happen. It is also useful\nin parallel programs, to ensure pending work does not migrate to the\nwrong thread.\n\nThe primary use of this package is via the 'deepseq' function, a\n\\\"deep\\\" version of 'seq'. It is implemented on top of an 'NFData'\ntypeclass (\\\"Normal Form Data\\\", data structures with no unevaluated\ncomponents) which defines strategies for fully evaluating different\ndata types. See module documentation in \"Control.DeepSeq\" for more\ndetails."; - buildType = "Simple"; - }; - components = { - "library" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."array" or (errorHandler.buildDepError "array")) - ] ++ pkgs.lib.optional (compiler.isGhc && compiler.version.ge "9.0") (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")); - buildable = true; - }; - tests = { - "test" = { - depends = [ - (hsPkgs."array" or (errorHandler.buildDepError "array")) - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - ]; - buildable = true; - }; - }; - }; - } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc982-ghcjs/parsec.nix b/materialized/ghc-boot-packages-nix/ghc982-ghcjs/parsec.nix deleted file mode 100644 index fcd8e03f39..0000000000 --- a/materialized/ghc-boot-packages-nix/ghc982-ghcjs/parsec.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = {}; - package = { - specVersion = "1.12"; - identifier = { name = "parsec"; version = "3.1.17.0"; }; - license = "BSD-2-Clause"; - copyright = ""; - maintainer = "Oleg Grenrus , Herbert Valerio Riedel "; - author = "Daan Leijen , Paolo Martini , Antoine Latter "; - homepage = "https://github.com/haskell/parsec"; - url = ""; - synopsis = "Monadic parser combinators"; - description = "Parsec is designed from scratch as an industrial-strength parser\nlibrary. It is simple, safe, well documented (on the package\nhomepage), has extensive libraries, good error messages,\nand is fast. It is defined as a monad transformer that can be\nstacked on arbitrary monads, and it is also parametric in the\ninput stream type.\n\nThe main entry point is the \"Text.Parsec\" module which provides\ndefaults for parsing 'Char'acter data.\n\nThe \"Text.ParserCombinators.Parsec\" module hierarchy contains\nthe legacy @parsec-2@ API and may be removed at some point in\nthe future."; - buildType = "Simple"; - }; - components = { - "library" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."text" or (errorHandler.buildDepError "text")) - ] ++ pkgs.lib.optionals (!(compiler.isGhc && compiler.version.ge "8.0")) [ - (hsPkgs."fail" or (errorHandler.buildDepError "fail")) - (hsPkgs."semigroups" or (errorHandler.buildDepError "semigroups")) - ]; - buildable = true; - }; - tests = { - "parsec-tests" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) - (hsPkgs."parsec" or (errorHandler.buildDepError "parsec")) - (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) - (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) - ] ++ pkgs.lib.optional (!(compiler.isGhc && compiler.version.ge "8.0")) (hsPkgs."semigroups" or (errorHandler.buildDepError "semigroups")); - buildable = true; - }; - "parsec-issue127" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."parsec" or (errorHandler.buildDepError "parsec")) - ]; - buildable = true; - }; - "parsec-issue171" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) - (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."parsec" or (errorHandler.buildDepError "parsec")) - ]; - buildable = true; - }; - "parsec-issue175" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) - (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) - (hsPkgs."parsec" or (errorHandler.buildDepError "parsec")) - ]; - buildable = true; - }; - }; - }; - } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc982-ghcjs/pretty.nix b/materialized/ghc-boot-packages-nix/ghc982-ghcjs/pretty.nix deleted file mode 100644 index 7d4c79f506..0000000000 --- a/materialized/ghc-boot-packages-nix/ghc982-ghcjs/pretty.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = {}; - package = { - specVersion = "1.8"; - identifier = { name = "pretty"; version = "1.1.3.6"; }; - license = "BSD-3-Clause"; - copyright = ""; - maintainer = "David Terei "; - author = ""; - homepage = "http://github.com/haskell/pretty"; - url = ""; - synopsis = "Pretty-printing library"; - description = "This package contains a pretty-printing library, a set of API's\nthat provides a way to easily print out text in a consistent\nformat of your choosing. This is useful for compilers and related\ntools.\n\nThis library was originally designed by John Hughes's and has since\nbeen heavily modified by Simon Peyton Jones."; - buildType = "Simple"; - }; - components = { - "library" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - ]; - buildable = true; - }; - tests = { - "test-pretty" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) - ]; - buildable = true; - }; - }; - benchmarks = { - "pretty-bench" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."criterion" or (errorHandler.buildDepError "criterion")) - (hsPkgs."pretty" or (errorHandler.buildDepError "pretty")) - ]; - buildable = true; - }; - }; - }; - } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc982/bytestring.nix b/materialized/ghc-boot-packages-nix/ghc982/bytestring.nix deleted file mode 100644 index 6b38669a93..0000000000 --- a/materialized/ghc-boot-packages-nix/ghc982/bytestring.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = { pure-haskell = false; }; - package = { - specVersion = "1.10"; - identifier = { name = "bytestring"; version = "0.12.1.0"; }; - license = "BSD-3-Clause"; - copyright = "Copyright (c) Don Stewart 2005-2009,\n(c) Duncan Coutts 2006-2015,\n(c) David Roundy 2003-2005,\n(c) Jasper Van der Jeugt 2010,\n(c) Simon Meier 2010-2013."; - maintainer = "Haskell Bytestring Team , Core Libraries Committee"; - author = "Don Stewart,\nDuncan Coutts"; - homepage = "https://github.com/haskell/bytestring"; - url = ""; - synopsis = "Fast, compact, strict and lazy byte strings with a list interface"; - description = "An efficient compact, immutable byte string type (both strict and lazy)\nsuitable for binary or 8-bit character data.\n\nThe 'ByteString' type represents sequences of bytes or 8-bit characters.\nIt is suitable for high performance use, both in terms of large data\nquantities, or high speed requirements. The 'ByteString' functions follow\nthe same style as Haskell\\'s ordinary lists, so it is easy to convert code\nfrom using 'String' to 'ByteString'.\n\nTwo 'ByteString' variants are provided:\n\n* Strict 'ByteString's keep the string as a single large array. This\nmakes them convenient for passing data between C and Haskell.\n\n* Lazy 'ByteString's use a lazy list of strict chunks which makes it\nsuitable for I\\/O streaming tasks.\n\nThe @Char8@ modules provide a character-based view of the same\nunderlying 'ByteString' types. This makes it convenient to handle mixed\nbinary and 8-bit character content (which is common in many file formats\nand network protocols).\n\nThe 'Builder' module provides an efficient way to build up 'ByteString's\nin an ad-hoc way by repeated concatenation. This is ideal for fast\nserialisation or pretty printing.\n\nThere is also a 'ShortByteString' type which has a lower memory overhead\nand can be converted to or from a 'ByteString'. It is suitable for keeping\nmany short strings in memory, especially long-term, without incurring any\npossible heap fragmentation costs.\n\n'ByteString's are not designed for Unicode. For Unicode strings you should\nuse the 'Text' type from the @text@ package.\n\nThese modules are intended to be imported qualified, to avoid name clashes\nwith \"Prelude\" functions, e.g.\n\n> import qualified Data.ByteString as BS"; - buildType = "Simple"; - }; - components = { - "library" = { - depends = ([ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell")) - ] ++ pkgs.lib.optional (compiler.isGhc && compiler.version.lt "9.4") (hsPkgs."data-array-byte" or (errorHandler.buildDepError "data-array-byte"))) ++ pkgs.lib.optional (system.isJavaScript || flags.pure-haskell) (hsPkgs."base" or (errorHandler.buildDepError "base")); - libs = pkgs.lib.optionals (!(system.isJavaScript || flags.pure-haskell)) (pkgs.lib.optional (system.isWindows && (compiler.isGhc && compiler.version.lt "9.3")) (pkgs."gcc" or (errorHandler.sysDepError "gcc"))); - buildable = true; - }; - tests = { - "bytestring-tests" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) - (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) - (hsPkgs."tasty-quickcheck" or (errorHandler.buildDepError "tasty-quickcheck")) - (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell")) - (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) - (hsPkgs."syb" or (errorHandler.buildDepError "syb")) - ]; - buildable = true; - }; - }; - benchmarks = { - "bytestring-bench" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."tasty-bench" or (errorHandler.buildDepError "tasty-bench")) - (hsPkgs."random" or (errorHandler.buildDepError "random")) - ]; - buildable = true; - }; - }; - }; - } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc982/deepseq.nix b/materialized/ghc-boot-packages-nix/ghc982/deepseq.nix deleted file mode 100644 index 3bc6d64832..0000000000 --- a/materialized/ghc-boot-packages-nix/ghc982/deepseq.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = {}; - package = { - specVersion = "1.12"; - identifier = { name = "deepseq"; version = "1.5.0.0"; }; - license = "BSD-3-Clause"; - copyright = ""; - maintainer = "libraries@haskell.org"; - author = ""; - homepage = ""; - url = ""; - synopsis = "Deep evaluation of data structures"; - description = "This package provides methods for fully evaluating data structures\n(\\\"deep evaluation\\\"). Deep evaluation is often used for adding\nstrictness to a program, e.g. in order to force pending exceptions,\nremove space leaks, or force lazy I/O to happen. It is also useful\nin parallel programs, to ensure pending work does not migrate to the\nwrong thread.\n\nThe primary use of this package is via the 'deepseq' function, a\n\\\"deep\\\" version of 'seq'. It is implemented on top of an 'NFData'\ntypeclass (\\\"Normal Form Data\\\", data structures with no unevaluated\ncomponents) which defines strategies for fully evaluating different\ndata types. See module documentation in \"Control.DeepSeq\" for more\ndetails."; - buildType = "Simple"; - }; - components = { - "library" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."array" or (errorHandler.buildDepError "array")) - ] ++ pkgs.lib.optional (compiler.isGhc && compiler.version.ge "9.0") (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")); - buildable = true; - }; - tests = { - "test" = { - depends = [ - (hsPkgs."array" or (errorHandler.buildDepError "array")) - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - ]; - buildable = true; - }; - }; - }; - } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc982/parsec.nix b/materialized/ghc-boot-packages-nix/ghc982/parsec.nix deleted file mode 100644 index fcd8e03f39..0000000000 --- a/materialized/ghc-boot-packages-nix/ghc982/parsec.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = {}; - package = { - specVersion = "1.12"; - identifier = { name = "parsec"; version = "3.1.17.0"; }; - license = "BSD-2-Clause"; - copyright = ""; - maintainer = "Oleg Grenrus , Herbert Valerio Riedel "; - author = "Daan Leijen , Paolo Martini , Antoine Latter "; - homepage = "https://github.com/haskell/parsec"; - url = ""; - synopsis = "Monadic parser combinators"; - description = "Parsec is designed from scratch as an industrial-strength parser\nlibrary. It is simple, safe, well documented (on the package\nhomepage), has extensive libraries, good error messages,\nand is fast. It is defined as a monad transformer that can be\nstacked on arbitrary monads, and it is also parametric in the\ninput stream type.\n\nThe main entry point is the \"Text.Parsec\" module which provides\ndefaults for parsing 'Char'acter data.\n\nThe \"Text.ParserCombinators.Parsec\" module hierarchy contains\nthe legacy @parsec-2@ API and may be removed at some point in\nthe future."; - buildType = "Simple"; - }; - components = { - "library" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."text" or (errorHandler.buildDepError "text")) - ] ++ pkgs.lib.optionals (!(compiler.isGhc && compiler.version.ge "8.0")) [ - (hsPkgs."fail" or (errorHandler.buildDepError "fail")) - (hsPkgs."semigroups" or (errorHandler.buildDepError "semigroups")) - ]; - buildable = true; - }; - tests = { - "parsec-tests" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) - (hsPkgs."parsec" or (errorHandler.buildDepError "parsec")) - (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) - (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) - ] ++ pkgs.lib.optional (!(compiler.isGhc && compiler.version.ge "8.0")) (hsPkgs."semigroups" or (errorHandler.buildDepError "semigroups")); - buildable = true; - }; - "parsec-issue127" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."parsec" or (errorHandler.buildDepError "parsec")) - ]; - buildable = true; - }; - "parsec-issue171" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) - (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."parsec" or (errorHandler.buildDepError "parsec")) - ]; - buildable = true; - }; - "parsec-issue175" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."tasty" or (errorHandler.buildDepError "tasty")) - (hsPkgs."tasty-hunit" or (errorHandler.buildDepError "tasty-hunit")) - (hsPkgs."parsec" or (errorHandler.buildDepError "parsec")) - ]; - buildable = true; - }; - }; - }; - } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc982/pretty.nix b/materialized/ghc-boot-packages-nix/ghc982/pretty.nix deleted file mode 100644 index 7d4c79f506..0000000000 --- a/materialized/ghc-boot-packages-nix/ghc982/pretty.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = {}; - package = { - specVersion = "1.8"; - identifier = { name = "pretty"; version = "1.1.3.6"; }; - license = "BSD-3-Clause"; - copyright = ""; - maintainer = "David Terei "; - author = ""; - homepage = "http://github.com/haskell/pretty"; - url = ""; - synopsis = "Pretty-printing library"; - description = "This package contains a pretty-printing library, a set of API's\nthat provides a way to easily print out text in a consistent\nformat of your choosing. This is useful for compilers and related\ntools.\n\nThis library was originally designed by John Hughes's and has since\nbeen heavily modified by Simon Peyton Jones."; - buildType = "Simple"; - }; - components = { - "library" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - ]; - buildable = true; - }; - tests = { - "test-pretty" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) - (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) - (hsPkgs."QuickCheck" or (errorHandler.buildDepError "QuickCheck")) - ]; - buildable = true; - }; - }; - benchmarks = { - "pretty-bench" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."criterion" or (errorHandler.buildDepError "criterion")) - (hsPkgs."pretty" or (errorHandler.buildDepError "pretty")) - ]; - buildable = true; - }; - }; - }; - } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc964/hadrian-ghc910/hadrian/default.nix b/materialized/ghc964/hadrian-ghc910/hadrian/default.nix index c251f95e09..3a9d912802 100644 --- a/materialized/ghc964/hadrian-ghc910/hadrian/default.nix +++ b/materialized/ghc964/hadrian-ghc910/hadrian/default.nix @@ -98,6 +98,35 @@ }; }; modules = [ + { + preExistingPkgs = [ + "ghc-prim" + "transformers" + "time" + "base" + "unix" + "ghc-boot-th" + "mtl" + "pretty" + "Cabal-syntax" + "process" + "stm" + "template-haskell" + "exceptions" + "parsec" + "system-cxx-std-lib" + "deepseq" + "text" + "containers" + "array" + "bytestring" + "Cabal" + "directory" + "ghc-bignum" + "binary" + "filepath" + ]; + } ({ lib, ... }: { packages = { diff --git a/materialized/ghc964/hadrian-ghc910/plan.json b/materialized/ghc964/hadrian-ghc910/plan.json new file mode 100644 index 0000000000..d620fb747b --- /dev/null +++ b/materialized/ghc964/hadrian-ghc910/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-9.6.4","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.10.1.0","pkg-name":"Cabal","pkg-version":"3.10.1.0","depends":["Cabal-syntax-3.10.1.0","array-0.5.6.0","base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.200.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","process-1.6.17.0","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0"]},{"type":"pre-existing","id":"Cabal-syntax-3.10.1.0","pkg-name":"Cabal-syntax","pkg-version":"3.10.1.0","depends":["array-0.5.6.0","base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.200.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0"]},{"type":"configured","id":"QuickCheck-2.14.3-116702925e70e233df64507a5cae969ff9c69efe35b3cc35e56c87d47168ff11","pkg-name":"QuickCheck","pkg-version":"2.14.3","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f03d2f404d5ba465453d0fbc1944832789a759fe7c4f9bf8616bc1378a02fde4","pkg-src-sha256":"5c0f22b36b28a1a8fa110b3819818d3f29494a3b0dedbae299f064123ca70501","depends":["base-4.18.2.0","containers-0.6.7","deepseq-1.4.8.1","random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.6.0","pkg-name":"array","pkg-version":"0.5.6.0","depends":["base-4.18.2.0"]},{"type":"pre-existing","id":"base-4.18.2.0","pkg-name":"base","pkg-version":"4.18.2.0","depends":["ghc-bignum-1.3","ghc-prim-0.10.0"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-48e234cd9d2674d718111ce6f52d0142cc28a3c5a0493618f8fb6a8b7f7dd1f7","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a694e88f9ec9fc79f0b03f233d3fea592b68f70a34aac2ddb5bcaecb6562e2fd","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.18.2.0","bytestring-0.11.5.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.6.0","base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"bytestring-0.11.5.3","pkg-name":"bytestring","pkg-version":"0.11.5.3","depends":["base-4.18.2.0","deepseq-1.4.8.1","ghc-prim-0.10.0","template-haskell-2.20.0.0"]},{"type":"configured","id":"clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","pkg-name":"clock","pkg-version":"0.8.4","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b938655b00cf204ce69abfff946021bed111d2609a9f7a9c22e28a1a202e9115","pkg-src-sha256":"6ae9898afe788a5e334cd5fad5d18a3c2e8e59fa09aaf7b957dbb38a4767df2e","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.7","pkg-name":"containers","pkg-version":"0.6.7","depends":["array-0.5.6.0","base-4.18.2.0","deepseq-1.4.8.1","template-haskell-2.20.0.0"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-898616048405d66a1ac2538c4878965bc94c2902780e27b3e48e171cdfe34cf8","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"03db065161987f614a3a2bbcd16264f78e47efe231fb5bd161be2043eaf20488","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.18.2.0","bytestring-0.11.5.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.8.1","pkg-name":"deepseq","pkg-version":"1.4.8.1","depends":["array-0.5.6.0","base-4.18.2.0","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"directory-1.3.8.1","pkg-name":"directory","pkg-version":"1.3.8.1","depends":["base-4.18.2.0","filepath-1.4.200.1","time-1.12.2","unix-2.8.4.0"]},{"type":"pre-existing","id":"exceptions-0.10.7","pkg-name":"exceptions","pkg-version":"0.10.7","depends":["base-4.18.2.0","mtl-2.3.1","stm-2.5.1.0","template-haskell-2.20.0.0","transformers-0.6.1.0"]},{"type":"configured","id":"extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","pkg-name":"extra","pkg-version":"1.7.14","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e3d3ce1dc7746b1132930e48c59fb5e8c51a09e92e0c031316be031067a273fb","pkg-src-sha256":"b6a909f8f0e4b8076a1653b4d34815a782f0a8c1e83d5267f4d00496471ef567","depends":["base-4.18.2.0","clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","directory-1.3.8.1","filepath-1.4.200.1","process-1.6.17.0","time-1.12.2","unix-2.8.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.200.1","pkg-name":"filepath","pkg-version":"1.4.200.1","depends":["base-4.18.2.0","bytestring-0.11.5.3","deepseq-1.4.8.1","exceptions-0.10.7","template-haskell-2.20.0.0"]},{"type":"configured","id":"filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.18.2.0","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.10.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.6.4","pkg-name":"ghc-boot-th","pkg-version":"9.6.4","depends":["base-4.18.2.0"]},{"type":"configured","id":"ghc-platform-0.1.0.0-inplace","pkg-name":"ghc-platform","pkg-version":"0.1.0.0","flags":{},"style":"local","pkg-src":{"type":"local","path":"./hadrian/../libraries/ghc-platform"},"dist-dir":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/ghc-platform-0.1.0.0","build-info":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/ghc-platform-0.1.0.0/build-info.json","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-prim-0.10.0","pkg-name":"ghc-prim","pkg-version":"0.10.0","depends":[]},{"type":"configured","id":"ghc-toolchain-0.1.0.0-inplace","pkg-name":"ghc-toolchain","pkg-version":"0.1.0.0","flags":{},"style":"local","pkg-src":{"type":"local","path":"./hadrian/../utils/ghc-toolchain"},"dist-dir":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/ghc-toolchain-0.1.0.0","build-info":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/ghc-toolchain-0.1.0.0/build-info.json","depends":["base-4.18.2.0","directory-1.3.8.1","filepath-1.4.200.1","ghc-platform-0.1.0.0-inplace","process-1.6.17.0","text-2.0.2","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"./hadrian/."},"dist-dir":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian","build-info":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.10.1.0","QuickCheck-2.14.3-116702925e70e233df64507a5cae969ff9c69efe35b3cc35e56c87d47168ff11","base-4.18.2.0","base16-bytestring-1.0.2.0-48e234cd9d2674d718111ce6f52d0142cc28a3c5a0493618f8fb6a8b7f7dd1f7","bytestring-0.11.5.3","containers-0.6.7","cryptohash-sha256-0.11.102.1-898616048405d66a1ac2538c4878965bc94c2902780e27b3e48e171cdfe34cf8","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1","ghc-platform-0.1.0.0-inplace","ghc-toolchain-0.1.0.0-inplace","mtl-2.3.1","parsec-3.1.16.1","shake-0.19.7-9369313762a66f683383a6b11b819b9aafcd8f0d518c176b2cb1f5a198ccf8cd","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","pkg-name":"hashable","pkg-version":"1.4.3.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f3bf68acfa0df7a064a378ef2cdcfeb55e6fb96100675f4c593556dcbf3d7194","pkg-src-sha256":"32efb16c2891786209b7cbe5c39df9b3a9ae51e836f1a54f646bc4602b7ab0f5","depends":["base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","filepath-1.4.200.1","ghc-bignum-1.3","ghc-prim-0.10.0","text-2.0.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.3.1","pkg-name":"mtl","pkg-version":"2.3.1","depends":["base-4.18.2.0","transformers-0.6.1.0"]},{"type":"pre-existing","id":"parsec-3.1.16.1","pkg-name":"parsec","pkg-version":"3.1.16.1","depends":["base-4.18.2.0","bytestring-0.11.5.3","mtl-2.3.1","text-2.0.2"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.18.2.0","deepseq-1.4.8.1","ghc-prim-0.10.0"]},{"type":"configured","id":"primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","pkg-name":"primitive","pkg-version":"0.9.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1ceb39f67c0e614180f2992a6d30f26603ab2cd23c4f8e25b30213f98807f6f1","pkg-src-sha256":"696d4bd291c94d736142d6182117dca4258d3ef28bfefdb649ac8b5ecd0999c7","depends":["base-4.18.2.0","deepseq-1.4.8.1","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.17.0","pkg-name":"process","pkg-version":"1.6.17.0","depends":["base-4.18.2.0","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.200.1","unix-2.8.4.0"]},{"type":"configured","id":"random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e7c1f881159d5cc788619c9ee8b8f340ba2ff0db571cdf3d1a1968ebc5108789","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.18.2.0","bytestring-0.11.5.3","deepseq-1.4.8.1","mtl-2.3.1","splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-9369313762a66f683383a6b11b819b9aafcd8f0d518c176b2cb1f5a198ccf8cd","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1","filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","process-1.6.17.0","random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0","unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-74d898c5705f61c05a8a7aee14d32e6ef38e5584b58da7af7f06efe4c3c36716","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1","filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","process-1.6.17.0","random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0","unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/store/ghc-9.6.4/shake-0.19.7-e-shake-74d898c5705f61c05a8a7aee14d32e6ef38e5584b58da7af7f06efe4c3c36716/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","pkg-name":"splitmix","pkg-version":"0.1.0.5","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bac0ae8d46a04e410666b0c8081cff63f060f29157983b569ca86ddb6e6e0dc6","pkg-src-sha256":"9df07a9611ef45f1b1258a0b412f4d02c920248f69d2e2ce8ccda328f7e13002","depends":["base-4.18.2.0","deepseq-1.4.8.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.1.0","pkg-name":"stm","pkg-version":"2.5.1.0","depends":["array-0.5.6.0","base-4.18.2.0"]},{"type":"pre-existing","id":"system-cxx-std-lib-1.0","pkg-name":"system-cxx-std-lib","pkg-version":"1.0","depends":[]},{"type":"pre-existing","id":"template-haskell-2.20.0.0","pkg-name":"template-haskell","pkg-version":"2.20.0.0","depends":["base-4.18.2.0","ghc-boot-th-9.6.4","ghc-prim-0.10.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.2","pkg-name":"text","pkg-version":"2.0.2","depends":["array-0.5.6.0","base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","ghc-prim-0.10.0","system-cxx-std-lib-1.0","template-haskell-2.20.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.18.2.0","deepseq-1.4.8.1"]},{"type":"pre-existing","id":"transformers-0.6.1.0","pkg-name":"transformers","pkg-version":"0.6.1.0","depends":["base-4.18.2.0","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"unix-2.8.4.0","pkg-name":"unix","pkg-version":"2.8.4.0","depends":["base-4.18.2.0","bytestring-0.11.5.3","filepath-1.4.200.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1c28ca429e3960de0330908579a427ccacddd700cb84ec1969e2bbe576152add","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.18.2.0","deepseq-1.4.8.1","hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","template-haskell-2.20.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.18.2.0","bytestring-0.11.5.3"],"exe-depends":[],"component-name":"lib"}],"targets":[{"pkg-name":"Cabal","pkg-version":"3.10.1.0","component-name":"lib","available":[{"id":"Cabal-3.10.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"Cabal-syntax","pkg-version":"3.10.1.0","component-name":"lib","available":[{"id":"Cabal-syntax-3.10.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"lib","available":[{"id":"QuickCheck-2.14.3-116702925e70e233df64507a5cae969ff9c69efe35b3cc35e56c87d47168ff11","component-name":"lib","build-by-default":true}]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-gcoarbitrary","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-generators","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-gshrink","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-misc","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-monadfix","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-split","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-terminal","available":["TargetNotLocal"]},{"pkg-name":"array","pkg-version":"0.5.6.0","component-name":"lib","available":[{"id":"array-0.5.6.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base","pkg-version":"4.18.2.0","component-name":"lib","available":[{"id":"base-4.18.2.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","component-name":"lib","available":[{"id":"base16-bytestring-1.0.2.0-48e234cd9d2674d718111ce6f52d0142cc28a3c5a0493618f8fb6a8b7f7dd1f7","component-name":"lib","build-by-default":true}]},{"pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"binary","pkg-version":"0.8.9.1","component-name":"lib","available":[{"id":"binary-0.8.9.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring","pkg-version":"0.11.5.3","component-name":"lib","available":[{"id":"bytestring-0.11.5.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"lib","available":[{"id":"clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","component-name":"lib","build-by-default":true}]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"containers","pkg-version":"0.6.7","component-name":"lib","available":[{"id":"containers-0.6.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"lib","available":[{"id":"cryptohash-sha256-0.11.102.1-898616048405d66a1ac2538c4878965bc94c2902780e27b3e48e171cdfe34cf8","component-name":"lib","build-by-default":true}]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"exe:sha256sum","available":["TargetNotBuildable"]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"test:test-sha256","available":["TargetNotLocal"]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"bench:bench-sha256","available":["TargetNotLocal"]},{"pkg-name":"deepseq","pkg-version":"1.4.8.1","component-name":"lib","available":[{"id":"deepseq-1.4.8.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory","pkg-version":"1.3.8.1","component-name":"lib","available":[{"id":"directory-1.3.8.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"exceptions","pkg-version":"0.10.7","component-name":"lib","available":[{"id":"exceptions-0.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"extra","pkg-version":"1.7.14","component-name":"lib","available":[{"id":"extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","component-name":"lib","build-by-default":true}]},{"pkg-name":"extra","pkg-version":"1.7.14","component-name":"test:extra-test","available":["TargetNotLocal"]},{"pkg-name":"filepath","pkg-version":"1.4.200.1","component-name":"lib","available":[{"id":"filepath-1.4.200.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepattern","pkg-version":"0.1.3","component-name":"lib","available":[{"id":"filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepattern","pkg-version":"0.1.3","component-name":"test:filepattern-test","available":["TargetNotLocal"]},{"pkg-name":"ghc-bignum","pkg-version":"1.3","component-name":"lib","available":[{"id":"ghc-bignum-1.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-boot-th","pkg-version":"9.6.4","component-name":"lib","available":[{"id":"ghc-boot-th-9.6.4","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-platform","pkg-version":"0.1.0.0","component-name":"lib","available":[{"id":"ghc-platform-0.1.0.0-inplace","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.10.0","component-name":"lib","available":[{"id":"ghc-prim-0.10.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-toolchain","pkg-version":"0.1.0.0","component-name":"lib","available":[{"id":"ghc-toolchain-0.1.0.0-inplace","component-name":"lib","build-by-default":true}]},{"pkg-name":"hadrian","pkg-version":"0.1.0.0","component-name":"exe:hadrian","available":[{"id":"hadrian-0.1.0.0-inplace-hadrian","component-name":"exe:hadrian","build-by-default":true}]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"lib","available":[{"id":"hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","component-name":"lib","build-by-default":true}]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"test:hashable-examples","available":["TargetNotLocal"]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"test:hashable-tests","available":["TargetNotLocal"]},{"pkg-name":"heaps","pkg-version":"0.4","component-name":"lib","available":[{"id":"heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-dgtable","pkg-version":"0.5.2","component-name":"lib","available":[{"id":"js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-dgtable","pkg-version":"0.5.2","component-name":"test:js-dgtable-test","available":["TargetNotLocal"]},{"pkg-name":"js-flot","pkg-version":"0.8.3","component-name":"lib","available":[{"id":"js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-flot","pkg-version":"0.8.3","component-name":"test:js-flot-test","available":["TargetNotLocal"]},{"pkg-name":"js-jquery","pkg-version":"3.3.1","component-name":"lib","available":[{"id":"js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-jquery","pkg-version":"3.3.1","component-name":"test:js-jquery-test","available":["TargetNotLocal"]},{"pkg-name":"mtl","pkg-version":"2.3.1","component-name":"lib","available":[{"id":"mtl-2.3.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"parsec","pkg-version":"3.1.16.1","component-name":"lib","available":[{"id":"parsec-3.1.16.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"pretty","pkg-version":"1.1.3.6","component-name":"lib","available":[{"id":"pretty-1.1.3.6","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"lib","available":[{"id":"primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"test:test-qc","available":["TargetNotLocal"]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"process","pkg-version":"1.6.17.0","component-name":"lib","available":[{"id":"process-1.6.17.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"lib","available":[{"id":"random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","component-name":"lib","build-by-default":true}]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:legacy-test","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:spec-inspection","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"bench:legacy-bench","available":["TargetNotLocal"]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"lib","available":[{"id":"shake-0.19.7-9369313762a66f683383a6b11b819b9aafcd8f0d518c176b2cb1f5a198ccf8cd","component-name":"lib","build-by-default":true}]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"exe:shake","available":[{"id":"shake-0.19.7-e-shake-74d898c5705f61c05a8a7aee14d32e6ef38e5584b58da7af7f06efe4c3c36716","component-name":"exe:shake","build-by-default":true}]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"test:shake-test","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"lib","available":[{"id":"splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","component-name":"lib","build-by-default":true}]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:examples","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:initialization","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:montecarlo-pi","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:montecarlo-pi-32","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-dieharder","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-tests","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-testu01","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:comparison","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:range","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:simple-sum","available":["TargetNotLocal"]},{"pkg-name":"stm","pkg-version":"2.5.1.0","component-name":"lib","available":[{"id":"stm-2.5.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"system-cxx-std-lib","pkg-version":"1.0","component-name":"lib","available":[{"id":"system-cxx-std-lib-1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"template-haskell","pkg-version":"2.20.0.0","component-name":"lib","available":[{"id":"template-haskell-2.20.0.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"text","pkg-version":"2.0.2","component-name":"lib","available":[{"id":"text-2.0.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"time","pkg-version":"1.12.2","component-name":"lib","available":[{"id":"time-1.12.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers","pkg-version":"0.6.1.0","component-name":"lib","available":[{"id":"transformers-0.6.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix","pkg-version":"2.8.4.0","component-name":"lib","available":[{"id":"unix-2.8.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"lib","available":[{"id":"unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","component-name":"lib","build-by-default":true}]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"test:unordered-containers-tests","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"utf8-string","pkg-version":"1.0.2","component-name":"lib","available":[{"id":"utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05","component-name":"lib","build-by-default":true}]},{"pkg-name":"utf8-string","pkg-version":"1.0.2","component-name":"test:unit-tests","available":["TargetNotLocal"]}]} \ No newline at end of file diff --git a/materialized/ghc964/hadrian-ghc94/hadrian/default.nix b/materialized/ghc964/hadrian-ghc94/hadrian/default.nix index eeec4eca3e..6b8e6fd8cb 100644 --- a/materialized/ghc964/hadrian-ghc94/hadrian/default.nix +++ b/materialized/ghc964/hadrian-ghc94/hadrian/default.nix @@ -80,6 +80,25 @@ extras = hackage: { packages = { hadrian = ./.plan.nix/hadrian.nix; }; }; modules = [ + { + preExistingPkgs = [ + "ghc-prim" + "time" + "base" + "ghc-boot-th" + "pretty" + "stm" + "template-haskell" + "system-cxx-std-lib" + "deepseq" + "text" + "containers" + "array" + "bytestring" + "ghc-bignum" + "binary" + ]; + } ({ lib, ... }: { packages = { diff --git a/materialized/ghc964/hadrian-ghc94/plan.json b/materialized/ghc964/hadrian-ghc94/plan.json new file mode 100644 index 0000000000..f6763a901b --- /dev/null +++ b/materialized/ghc964/hadrian-ghc94/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-9.6.4","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"Cabal-3.8.1.0-b9660a1d59e5e89ca97a8504aaf0b5d036a399fd65d690e89579547c13736faa","pkg-name":"Cabal","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"77121d8e1aff14a0fd95684b751599db78a7dd26d55862d9fcef27c88b193e9d","pkg-src-sha256":"7464cbe6c2f3d7e5d0232023a1a7330621f8b24853cb259fc89a2af85b736608","depends":["Cabal-syntax-3.8.1.0-5335b17974246b150c558793880dbd690d9bb5cd3cb93a0f312cfdcb518a619b","array-0.5.6.0","base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1-dce2490f9b9b46eb5ca4c6855ae28c4f4cbc258ebd96c8c85c5b8c1604de0c9e","filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","mtl-2.2.2-bd3261ad8b9db841cd32623ed041dba3290ad7e9eab162b0b2519de5890f36c5","parsec-3.1.17.0-86f3f3d7362b3b6cd0625242923e563af47ae07a1954b0930fa2e1add151b4f2","pretty-1.1.3.6","process-1.6.18.0-24593d14b1461232a4223b7d859f951d62fafb7c2e4fe9543b43a1f4976414d0","text-2.0.2","time-1.12.2","transformers-0.5.6.2-55e06373e9f8b851d660815c23b29c4aedf2edf520a16438a77576432b6b7e88","unix-2.8.3.0-de12b755bfc83ca9f83e1597ece1b920bd874728bf4c6fbe1cfc8e169d17e1af"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"Cabal-syntax-3.8.1.0-5335b17974246b150c558793880dbd690d9bb5cd3cb93a0f312cfdcb518a619b","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ed2d937ba6c6a20b75850349eedd41374885fc42369ef152d69e2ba70f44f593","pkg-src-sha256":"07e8ddb19fe01781485f1522b6afc22aba680b0ab28ebe6bbfb84a2dd698ce0f","depends":["array-0.5.6.0","base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1-dce2490f9b9b46eb5ca4c6855ae28c4f4cbc258ebd96c8c85c5b8c1604de0c9e","filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","mtl-2.2.2-bd3261ad8b9db841cd32623ed041dba3290ad7e9eab162b0b2519de5890f36c5","parsec-3.1.17.0-86f3f3d7362b3b6cd0625242923e563af47ae07a1954b0930fa2e1add151b4f2","pretty-1.1.3.6","text-2.0.2","time-1.12.2","transformers-0.5.6.2-55e06373e9f8b851d660815c23b29c4aedf2edf520a16438a77576432b6b7e88","unix-2.8.3.0-de12b755bfc83ca9f83e1597ece1b920bd874728bf4c6fbe1cfc8e169d17e1af"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"QuickCheck-2.14.3-e273f27661514201f089ac7929c1cf7842cd4d7d11880d3975d02132d9646641","pkg-name":"QuickCheck","pkg-version":"2.14.3","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f03d2f404d5ba465453d0fbc1944832789a759fe7c4f9bf8616bc1378a02fde4","pkg-src-sha256":"5c0f22b36b28a1a8fa110b3819818d3f29494a3b0dedbae299f064123ca70501","depends":["base-4.18.2.0","containers-0.6.7","deepseq-1.4.8.1","random-1.2.1.1-e5b5a07d910cd04b47ccdff1ca05127c7c7b47a7444f9ac083587e927aabf24d","splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","template-haskell-2.20.0.0","transformers-0.5.6.2-55e06373e9f8b851d660815c23b29c4aedf2edf520a16438a77576432b6b7e88"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.6.0","pkg-name":"array","pkg-version":"0.5.6.0","depends":["base-4.18.2.0"]},{"type":"pre-existing","id":"base-4.18.2.0","pkg-name":"base","pkg-version":"4.18.2.0","depends":["ghc-bignum-1.3","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.6.0","base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"bytestring-0.11.5.3","pkg-name":"bytestring","pkg-version":"0.11.5.3","depends":["base-4.18.2.0","deepseq-1.4.8.1","ghc-prim-0.10.0","template-haskell-2.20.0.0"]},{"type":"configured","id":"clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","pkg-name":"clock","pkg-version":"0.8.4","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b938655b00cf204ce69abfff946021bed111d2609a9f7a9c22e28a1a202e9115","pkg-src-sha256":"6ae9898afe788a5e334cd5fad5d18a3c2e8e59fa09aaf7b957dbb38a4767df2e","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.7","pkg-name":"containers","pkg-version":"0.6.7","depends":["array-0.5.6.0","base-4.18.2.0","deepseq-1.4.8.1","template-haskell-2.20.0.0"]},{"type":"pre-existing","id":"deepseq-1.4.8.1","pkg-name":"deepseq","pkg-version":"1.4.8.1","depends":["array-0.5.6.0","base-4.18.2.0","ghc-prim-0.10.0"]},{"type":"configured","id":"directory-1.3.8.1-dce2490f9b9b46eb5ca4c6855ae28c4f4cbc258ebd96c8c85c5b8c1604de0c9e","pkg-name":"directory","pkg-version":"1.3.8.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bd3b0a0947a365d2da80b9f4a960a864d42ffa7a46577fdc7a0611703486a7f9","pkg-src-sha256":"bd8253197587d32d4553070d2de89d3817176860932b0e9ab7bb7ba3759d8e9c","components":{"lib":{"depends":["base-4.18.2.0","filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","time-1.12.2","unix-2.8.3.0-de12b755bfc83ca9f83e1597ece1b920bd874728bf4c6fbe1cfc8e169d17e1af"],"exe-depends":[]}}},{"type":"configured","id":"exceptions-0.10.7-d8e618fd9c29202aabe4fde627f648fe39ae30a4d2131b11be06ec962080d69f","pkg-name":"exceptions","pkg-version":"0.10.7","flags":{"transformers-0-4":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"60ccc2277f8fa98a1a03c42afd9c589ba33ce208eaaef7d69bfbb42ce09d1816","pkg-src-sha256":"9a42ade4c8b53d8da5350e8e0e2929f4ef128c4b8591b120656455310b546049","depends":["base-4.18.2.0","mtl-2.2.2-bd3261ad8b9db841cd32623ed041dba3290ad7e9eab162b0b2519de5890f36c5","stm-2.5.1.0","template-haskell-2.20.0.0","transformers-0.5.6.2-55e06373e9f8b851d660815c23b29c4aedf2edf520a16438a77576432b6b7e88"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"extra-1.7.14-042f04d0cdbffd8f46e0a9c52040823d92cf8a258316fb3b900251bbd230abfb","pkg-name":"extra","pkg-version":"1.7.14","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e3d3ce1dc7746b1132930e48c59fb5e8c51a09e92e0c031316be031067a273fb","pkg-src-sha256":"b6a909f8f0e4b8076a1653b4d34815a782f0a8c1e83d5267f4d00496471ef567","depends":["base-4.18.2.0","clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","directory-1.3.8.1-dce2490f9b9b46eb5ca4c6855ae28c4f4cbc258ebd96c8c85c5b8c1604de0c9e","filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","process-1.6.18.0-24593d14b1461232a4223b7d859f951d62fafb7c2e4fe9543b43a1f4976414d0","time-1.12.2","unix-2.8.3.0-de12b755bfc83ca9f83e1597ece1b920bd874728bf4c6fbe1cfc8e169d17e1af"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","pkg-name":"filepath","pkg-version":"1.4.100.4","flags":{"cpphs":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2de84756d3907308230e34fcc7c1917a73f218f6d53838618b7d5b95dd33e2c3","pkg-src-sha256":"82876250347c2fdf0f9de5448ce44f02539f37951b671d9a30719a6c4f96e9ad","depends":["base-4.18.2.0","bytestring-0.11.5.3","deepseq-1.4.8.1","exceptions-0.10.7-d8e618fd9c29202aabe4fde627f648fe39ae30a4d2131b11be06ec962080d69f","template-haskell-2.20.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"filepattern-0.1.3-96a0576cb8a211fdb1da735eaa691994aec2506470939db5f5459e1488b8d590","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.18.2.0","directory-1.3.8.1-dce2490f9b9b46eb5ca4c6855ae28c4f4cbc258ebd96c8c85c5b8c1604de0c9e","extra-1.7.14-042f04d0cdbffd8f46e0a9c52040823d92cf8a258316fb3b900251bbd230abfb","filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.10.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.6.4","pkg-name":"ghc-boot-th","pkg-version":"9.6.4","depends":["base-4.18.2.0"]},{"type":"pre-existing","id":"ghc-prim-0.10.0","pkg-name":"ghc-prim","pkg-version":"0.10.0","depends":[]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"./hadrian/."},"dist-dir":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian","build-info":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0-b9660a1d59e5e89ca97a8504aaf0b5d036a399fd65d690e89579547c13736faa","QuickCheck-2.14.3-e273f27661514201f089ac7929c1cf7842cd4d7d11880d3975d02132d9646641","base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","directory-1.3.8.1-dce2490f9b9b46eb5ca4c6855ae28c4f4cbc258ebd96c8c85c5b8c1604de0c9e","extra-1.7.14-042f04d0cdbffd8f46e0a9c52040823d92cf8a258316fb3b900251bbd230abfb","filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","mtl-2.2.2-bd3261ad8b9db841cd32623ed041dba3290ad7e9eab162b0b2519de5890f36c5","parsec-3.1.17.0-86f3f3d7362b3b6cd0625242923e563af47ae07a1954b0930fa2e1add151b4f2","shake-0.19.7-5bd388776e9de85134fb9a1252dbec6017b43c187e99a683dabfc71239bc1d74","text-2.0.2","transformers-0.5.6.2-55e06373e9f8b851d660815c23b29c4aedf2edf520a16438a77576432b6b7e88","unordered-containers-0.2.19.1-5c3a294a1debe70632d1827ee63ece6b68e15cfddbd6c14f409180c3fbc50ebd"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.3.0-590ef3d2265671c3b40e6e564000da8fa428936fcefe2a71f270d0ace1487860","pkg-name":"hashable","pkg-version":"1.4.3.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f3bf68acfa0df7a064a378ef2cdcfeb55e6fb96100675f4c593556dcbf3d7194","pkg-src-sha256":"32efb16c2891786209b7cbe5c39df9b3a9ae51e836f1a54f646bc4602b7ab0f5","depends":["base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","ghc-bignum-1.3","ghc-prim-0.10.0","text-2.0.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"mtl-2.2.2-bd3261ad8b9db841cd32623ed041dba3290ad7e9eab162b0b2519de5890f36c5","pkg-name":"mtl","pkg-version":"2.2.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1050fb71acd9f5d67da7d992583f5bd0eb14407b9dc7acc122af1b738b706ca3","pkg-src-sha256":"8803f48a8ed33296c3a3272f448198737a287ec31baa901af09e2118c829bef6","depends":["base-4.18.2.0","transformers-0.5.6.2-55e06373e9f8b851d660815c23b29c4aedf2edf520a16438a77576432b6b7e88"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"parsec-3.1.17.0-86f3f3d7362b3b6cd0625242923e563af47ae07a1954b0930fa2e1add151b4f2","pkg-name":"parsec","pkg-version":"3.1.17.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6cf18e59d9f1c5b40385457b82ab679dc18d3c5bd3c2c67b2f94e1e8732e6624","pkg-src-sha256":"58c500bec1ec3c849c8243ddfd675a5983b17a8e5da55acea6adade5ae179d36","depends":["base-4.18.2.0","bytestring-0.11.5.3","mtl-2.2.2-bd3261ad8b9db841cd32623ed041dba3290ad7e9eab162b0b2519de5890f36c5","text-2.0.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.18.2.0","deepseq-1.4.8.1","ghc-prim-0.10.0"]},{"type":"configured","id":"primitive-0.9.0.0-70ec9a6b87334899fd5e7d03687290ac2d4d46d3abfc44b5ec78067ea85f53e0","pkg-name":"primitive","pkg-version":"0.9.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1ceb39f67c0e614180f2992a6d30f26603ab2cd23c4f8e25b30213f98807f6f1","pkg-src-sha256":"696d4bd291c94d736142d6182117dca4258d3ef28bfefdb649ac8b5ecd0999c7","depends":["base-4.18.2.0","deepseq-1.4.8.1","template-haskell-2.20.0.0","transformers-0.5.6.2-55e06373e9f8b851d660815c23b29c4aedf2edf520a16438a77576432b6b7e88"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"process-1.6.18.0-24593d14b1461232a4223b7d859f951d62fafb7c2e4fe9543b43a1f4976414d0","pkg-name":"process","pkg-version":"1.6.18.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cd0a3e0376b5a8525983d3131a31e52f9ffefc278ce635eec45a9d3987b8be3e","pkg-src-sha256":"aa5f4c4fe4974f89f5ab998c7509daa4bda3926cfb06daacd5eba892aad8a37e","components":{"lib":{"depends":["base-4.18.2.0","deepseq-1.4.8.1","directory-1.3.8.1-dce2490f9b9b46eb5ca4c6855ae28c4f4cbc258ebd96c8c85c5b8c1604de0c9e","filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","unix-2.8.3.0-de12b755bfc83ca9f83e1597ece1b920bd874728bf4c6fbe1cfc8e169d17e1af"],"exe-depends":[]}}},{"type":"configured","id":"random-1.2.1.1-e5b5a07d910cd04b47ccdff1ca05127c7c7b47a7444f9ac083587e927aabf24d","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e7c1f881159d5cc788619c9ee8b8f340ba2ff0db571cdf3d1a1968ebc5108789","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.18.2.0","bytestring-0.11.5.3","deepseq-1.4.8.1","mtl-2.2.2-bd3261ad8b9db841cd32623ed041dba3290ad7e9eab162b0b2519de5890f36c5","splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-5bd388776e9de85134fb9a1252dbec6017b43c187e99a683dabfc71239bc1d74","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","directory-1.3.8.1-dce2490f9b9b46eb5ca4c6855ae28c4f4cbc258ebd96c8c85c5b8c1604de0c9e","extra-1.7.14-042f04d0cdbffd8f46e0a9c52040823d92cf8a258316fb3b900251bbd230abfb","filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","filepattern-0.1.3-96a0576cb8a211fdb1da735eaa691994aec2506470939db5f5459e1488b8d590","hashable-1.4.3.0-590ef3d2265671c3b40e6e564000da8fa428936fcefe2a71f270d0ace1487860","heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","primitive-0.9.0.0-70ec9a6b87334899fd5e7d03687290ac2d4d46d3abfc44b5ec78067ea85f53e0","process-1.6.18.0-24593d14b1461232a4223b7d859f951d62fafb7c2e4fe9543b43a1f4976414d0","random-1.2.1.1-e5b5a07d910cd04b47ccdff1ca05127c7c7b47a7444f9ac083587e927aabf24d","time-1.12.2","transformers-0.5.6.2-55e06373e9f8b851d660815c23b29c4aedf2edf520a16438a77576432b6b7e88","unix-2.8.3.0-de12b755bfc83ca9f83e1597ece1b920bd874728bf4c6fbe1cfc8e169d17e1af","unordered-containers-0.2.19.1-5c3a294a1debe70632d1827ee63ece6b68e15cfddbd6c14f409180c3fbc50ebd","utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-d498dbb71d46a4db538efddd7403181735fc0702c3e509999695c166ef8cf28c","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","directory-1.3.8.1-dce2490f9b9b46eb5ca4c6855ae28c4f4cbc258ebd96c8c85c5b8c1604de0c9e","extra-1.7.14-042f04d0cdbffd8f46e0a9c52040823d92cf8a258316fb3b900251bbd230abfb","filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","filepattern-0.1.3-96a0576cb8a211fdb1da735eaa691994aec2506470939db5f5459e1488b8d590","hashable-1.4.3.0-590ef3d2265671c3b40e6e564000da8fa428936fcefe2a71f270d0ace1487860","heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","primitive-0.9.0.0-70ec9a6b87334899fd5e7d03687290ac2d4d46d3abfc44b5ec78067ea85f53e0","process-1.6.18.0-24593d14b1461232a4223b7d859f951d62fafb7c2e4fe9543b43a1f4976414d0","random-1.2.1.1-e5b5a07d910cd04b47ccdff1ca05127c7c7b47a7444f9ac083587e927aabf24d","time-1.12.2","transformers-0.5.6.2-55e06373e9f8b851d660815c23b29c4aedf2edf520a16438a77576432b6b7e88","unix-2.8.3.0-de12b755bfc83ca9f83e1597ece1b920bd874728bf4c6fbe1cfc8e169d17e1af","unordered-containers-0.2.19.1-5c3a294a1debe70632d1827ee63ece6b68e15cfddbd6c14f409180c3fbc50ebd","utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/store/ghc-9.6.4/shake-0.19.7-e-shake-d498dbb71d46a4db538efddd7403181735fc0702c3e509999695c166ef8cf28c/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","pkg-name":"splitmix","pkg-version":"0.1.0.5","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bac0ae8d46a04e410666b0c8081cff63f060f29157983b569ca86ddb6e6e0dc6","pkg-src-sha256":"9df07a9611ef45f1b1258a0b412f4d02c920248f69d2e2ce8ccda328f7e13002","depends":["base-4.18.2.0","deepseq-1.4.8.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.1.0","pkg-name":"stm","pkg-version":"2.5.1.0","depends":["array-0.5.6.0","base-4.18.2.0"]},{"type":"pre-existing","id":"system-cxx-std-lib-1.0","pkg-name":"system-cxx-std-lib","pkg-version":"1.0","depends":[]},{"type":"pre-existing","id":"template-haskell-2.20.0.0","pkg-name":"template-haskell","pkg-version":"2.20.0.0","depends":["base-4.18.2.0","ghc-boot-th-9.6.4","ghc-prim-0.10.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.2","pkg-name":"text","pkg-version":"2.0.2","depends":["array-0.5.6.0","base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","ghc-prim-0.10.0","system-cxx-std-lib-1.0","template-haskell-2.20.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.18.2.0","deepseq-1.4.8.1"]},{"type":"configured","id":"transformers-0.5.6.2-55e06373e9f8b851d660815c23b29c4aedf2edf520a16438a77576432b6b7e88","pkg-name":"transformers","pkg-version":"0.5.6.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6c959d14430f4deffb99579ba019de07c3d852a2122b6f449344386c7d75ff1d","pkg-src-sha256":"b668795d600297e4c8a7fd55a107b9827b2c52c0bc14c5ea0d65e20e6691c66c","components":{"lib":{"depends":["base-4.18.2.0"],"exe-depends":[]}}},{"type":"configured","id":"unix-2.8.3.0-de12b755bfc83ca9f83e1597ece1b920bd874728bf4c6fbe1cfc8e169d17e1af","pkg-name":"unix","pkg-version":"2.8.3.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6dfdbb57fcfe5b0b6ecdaf633bc1cceb98a87800a22544f42354375016c6e66c","pkg-src-sha256":"a9dc7868d42ec10e38c4d785eaec7f98d401590d4ebfd8f17ef59da3f18a5dab","components":{"lib":{"depends":["base-4.18.2.0","bytestring-0.11.5.3","filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","time-1.12.2"],"exe-depends":[]}}},{"type":"configured","id":"unordered-containers-0.2.19.1-5c3a294a1debe70632d1827ee63ece6b68e15cfddbd6c14f409180c3fbc50ebd","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1c28ca429e3960de0330908579a427ccacddd700cb84ec1969e2bbe576152add","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.18.2.0","deepseq-1.4.8.1","hashable-1.4.3.0-590ef3d2265671c3b40e6e564000da8fa428936fcefe2a71f270d0ace1487860","template-haskell-2.20.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.18.2.0","bytestring-0.11.5.3"],"exe-depends":[],"component-name":"lib"}],"targets":[{"pkg-name":"Cabal","pkg-version":"3.8.1.0","component-name":"lib","available":[{"id":"Cabal-3.8.1.0-b9660a1d59e5e89ca97a8504aaf0b5d036a399fd65d690e89579547c13736faa","component-name":"lib","build-by-default":true}]},{"pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","component-name":"lib","available":[{"id":"Cabal-syntax-3.8.1.0-5335b17974246b150c558793880dbd690d9bb5cd3cb93a0f312cfdcb518a619b","component-name":"lib","build-by-default":true}]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"lib","available":[{"id":"QuickCheck-2.14.3-e273f27661514201f089ac7929c1cf7842cd4d7d11880d3975d02132d9646641","component-name":"lib","build-by-default":true}]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-gcoarbitrary","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-generators","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-gshrink","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-misc","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-monadfix","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-split","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-terminal","available":["TargetNotLocal"]},{"pkg-name":"array","pkg-version":"0.5.6.0","component-name":"lib","available":[{"id":"array-0.5.6.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base","pkg-version":"4.18.2.0","component-name":"lib","available":[{"id":"base-4.18.2.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"binary","pkg-version":"0.8.9.1","component-name":"lib","available":[{"id":"binary-0.8.9.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring","pkg-version":"0.11.5.3","component-name":"lib","available":[{"id":"bytestring-0.11.5.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"lib","available":[{"id":"clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","component-name":"lib","build-by-default":true}]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"containers","pkg-version":"0.6.7","component-name":"lib","available":[{"id":"containers-0.6.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"deepseq","pkg-version":"1.4.8.1","component-name":"lib","available":[{"id":"deepseq-1.4.8.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory","pkg-version":"1.3.8.1","component-name":"lib","available":[{"id":"directory-1.3.8.1-dce2490f9b9b46eb5ca4c6855ae28c4f4cbc258ebd96c8c85c5b8c1604de0c9e","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory","pkg-version":"1.3.8.1","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"exceptions","pkg-version":"0.10.7","component-name":"lib","available":[{"id":"exceptions-0.10.7-d8e618fd9c29202aabe4fde627f648fe39ae30a4d2131b11be06ec962080d69f","component-name":"lib","build-by-default":true}]},{"pkg-name":"exceptions","pkg-version":"0.10.7","component-name":"test:exceptions-tests","available":["TargetNotLocal"]},{"pkg-name":"extra","pkg-version":"1.7.14","component-name":"lib","available":[{"id":"extra-1.7.14-042f04d0cdbffd8f46e0a9c52040823d92cf8a258316fb3b900251bbd230abfb","component-name":"lib","build-by-default":true}]},{"pkg-name":"extra","pkg-version":"1.7.14","component-name":"test:extra-test","available":["TargetNotLocal"]},{"pkg-name":"filepath","pkg-version":"1.4.100.4","component-name":"lib","available":[{"id":"filepath-1.4.100.4-684dc9cfc41e6368b175870d3cc6e6636e80f309833f43b294d93519fd277673","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepath","pkg-version":"1.4.100.4","component-name":"test:abstract-filepath","available":["TargetNotLocal"]},{"pkg-name":"filepath","pkg-version":"1.4.100.4","component-name":"test:bytestring-tests","available":["TargetNotLocal"]},{"pkg-name":"filepath","pkg-version":"1.4.100.4","component-name":"test:filepath-equivalent-tests","available":["TargetNotLocal"]},{"pkg-name":"filepath","pkg-version":"1.4.100.4","component-name":"test:filepath-tests","available":["TargetNotLocal"]},{"pkg-name":"filepath","pkg-version":"1.4.100.4","component-name":"bench:bench-filepath","available":["TargetNotLocal"]},{"pkg-name":"filepattern","pkg-version":"0.1.3","component-name":"lib","available":[{"id":"filepattern-0.1.3-96a0576cb8a211fdb1da735eaa691994aec2506470939db5f5459e1488b8d590","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepattern","pkg-version":"0.1.3","component-name":"test:filepattern-test","available":["TargetNotLocal"]},{"pkg-name":"ghc-bignum","pkg-version":"1.3","component-name":"lib","available":[{"id":"ghc-bignum-1.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-boot-th","pkg-version":"9.6.4","component-name":"lib","available":[{"id":"ghc-boot-th-9.6.4","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.10.0","component-name":"lib","available":[{"id":"ghc-prim-0.10.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"hadrian","pkg-version":"0.1.0.0","component-name":"exe:hadrian","available":[{"id":"hadrian-0.1.0.0-inplace-hadrian","component-name":"exe:hadrian","build-by-default":true}]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"lib","available":[{"id":"hashable-1.4.3.0-590ef3d2265671c3b40e6e564000da8fa428936fcefe2a71f270d0ace1487860","component-name":"lib","build-by-default":true}]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"test:hashable-examples","available":["TargetNotLocal"]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"test:hashable-tests","available":["TargetNotLocal"]},{"pkg-name":"heaps","pkg-version":"0.4","component-name":"lib","available":[{"id":"heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-dgtable","pkg-version":"0.5.2","component-name":"lib","available":[{"id":"js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-dgtable","pkg-version":"0.5.2","component-name":"test:js-dgtable-test","available":["TargetNotLocal"]},{"pkg-name":"js-flot","pkg-version":"0.8.3","component-name":"lib","available":[{"id":"js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-flot","pkg-version":"0.8.3","component-name":"test:js-flot-test","available":["TargetNotLocal"]},{"pkg-name":"js-jquery","pkg-version":"3.3.1","component-name":"lib","available":[{"id":"js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-jquery","pkg-version":"3.3.1","component-name":"test:js-jquery-test","available":["TargetNotLocal"]},{"pkg-name":"mtl","pkg-version":"2.2.2","component-name":"lib","available":[{"id":"mtl-2.2.2-bd3261ad8b9db841cd32623ed041dba3290ad7e9eab162b0b2519de5890f36c5","component-name":"lib","build-by-default":true}]},{"pkg-name":"parsec","pkg-version":"3.1.17.0","component-name":"lib","available":[{"id":"parsec-3.1.17.0-86f3f3d7362b3b6cd0625242923e563af47ae07a1954b0930fa2e1add151b4f2","component-name":"lib","build-by-default":true}]},{"pkg-name":"parsec","pkg-version":"3.1.17.0","component-name":"test:parsec-issue127","available":["TargetNotLocal"]},{"pkg-name":"parsec","pkg-version":"3.1.17.0","component-name":"test:parsec-issue171","available":["TargetNotLocal"]},{"pkg-name":"parsec","pkg-version":"3.1.17.0","component-name":"test:parsec-issue175","available":["TargetNotLocal"]},{"pkg-name":"parsec","pkg-version":"3.1.17.0","component-name":"test:parsec-tests","available":["TargetNotLocal"]},{"pkg-name":"pretty","pkg-version":"1.1.3.6","component-name":"lib","available":[{"id":"pretty-1.1.3.6","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"lib","available":[{"id":"primitive-0.9.0.0-70ec9a6b87334899fd5e7d03687290ac2d4d46d3abfc44b5ec78067ea85f53e0","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"test:test-qc","available":["TargetNotLocal"]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"process","pkg-version":"1.6.18.0","component-name":"lib","available":[{"id":"process-1.6.18.0-24593d14b1461232a4223b7d859f951d62fafb7c2e4fe9543b43a1f4976414d0","component-name":"lib","build-by-default":true}]},{"pkg-name":"process","pkg-version":"1.6.18.0","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"lib","available":[{"id":"random-1.2.1.1-e5b5a07d910cd04b47ccdff1ca05127c7c7b47a7444f9ac083587e927aabf24d","component-name":"lib","build-by-default":true}]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:legacy-test","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:spec-inspection","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"bench:legacy-bench","available":["TargetNotLocal"]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"lib","available":[{"id":"shake-0.19.7-5bd388776e9de85134fb9a1252dbec6017b43c187e99a683dabfc71239bc1d74","component-name":"lib","build-by-default":true}]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"exe:shake","available":[{"id":"shake-0.19.7-e-shake-d498dbb71d46a4db538efddd7403181735fc0702c3e509999695c166ef8cf28c","component-name":"exe:shake","build-by-default":true}]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"test:shake-test","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"lib","available":[{"id":"splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","component-name":"lib","build-by-default":true}]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:examples","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:initialization","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:montecarlo-pi","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:montecarlo-pi-32","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-dieharder","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-tests","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-testu01","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:comparison","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:range","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:simple-sum","available":["TargetNotLocal"]},{"pkg-name":"stm","pkg-version":"2.5.1.0","component-name":"lib","available":[{"id":"stm-2.5.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"system-cxx-std-lib","pkg-version":"1.0","component-name":"lib","available":[{"id":"system-cxx-std-lib-1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"template-haskell","pkg-version":"2.20.0.0","component-name":"lib","available":[{"id":"template-haskell-2.20.0.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"text","pkg-version":"2.0.2","component-name":"lib","available":[{"id":"text-2.0.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"time","pkg-version":"1.12.2","component-name":"lib","available":[{"id":"time-1.12.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers","pkg-version":"0.5.6.2","component-name":"lib","available":[{"id":"transformers-0.5.6.2-55e06373e9f8b851d660815c23b29c4aedf2edf520a16438a77576432b6b7e88","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"lib","available":[{"id":"unix-2.8.3.0-de12b755bfc83ca9f83e1597ece1b920bd874728bf4c6fbe1cfc8e169d17e1af","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:FdReadBuf001","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:ForkProcess01","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:Posix004","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:Posix009","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:Posix014","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:PutEnv001","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:ResourceLimit","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:Semaphore001","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:Semaphore002","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:SemaphoreInterrupt","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:Signals002","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:Signals004","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:T13660","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:T8108","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:Terminal","available":["TargetNotLocal"]},{"pkg-name":"unix","pkg-version":"2.8.3.0","component-name":"test:unix-tests","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"lib","available":[{"id":"unordered-containers-0.2.19.1-5c3a294a1debe70632d1827ee63ece6b68e15cfddbd6c14f409180c3fbc50ebd","component-name":"lib","build-by-default":true}]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"test:unordered-containers-tests","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"utf8-string","pkg-version":"1.0.2","component-name":"lib","available":[{"id":"utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05","component-name":"lib","build-by-default":true}]},{"pkg-name":"utf8-string","pkg-version":"1.0.2","component-name":"test:unit-tests","available":["TargetNotLocal"]}]} \ No newline at end of file diff --git a/materialized/ghc964/hadrian-ghc96/hadrian/default.nix b/materialized/ghc964/hadrian-ghc96/hadrian/default.nix index e20361dbf3..ca057a5d6b 100644 --- a/materialized/ghc964/hadrian-ghc96/hadrian/default.nix +++ b/materialized/ghc964/hadrian-ghc96/hadrian/default.nix @@ -86,6 +86,33 @@ extras = hackage: { packages = { hadrian = ./.plan.nix/hadrian.nix; }; }; modules = [ + { + preExistingPkgs = [ + "ghc-prim" + "transformers" + "time" + "base" + "unix" + "ghc-boot-th" + "mtl" + "pretty" + "process" + "stm" + "template-haskell" + "exceptions" + "parsec" + "system-cxx-std-lib" + "deepseq" + "text" + "containers" + "array" + "bytestring" + "directory" + "ghc-bignum" + "binary" + "filepath" + ]; + } ({ lib, ... }: { packages = { diff --git a/materialized/ghc964/hadrian-ghc96/plan.json b/materialized/ghc964/hadrian-ghc96/plan.json new file mode 100644 index 0000000000..7610e57826 --- /dev/null +++ b/materialized/ghc964/hadrian-ghc96/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-9.6.4","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"Cabal-3.8.1.0-c668f818769193b477ca1a8b87e802e56126adbc7bed962d76bde34a01e8c306","pkg-name":"Cabal","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"77121d8e1aff14a0fd95684b751599db78a7dd26d55862d9fcef27c88b193e9d","pkg-src-sha256":"7464cbe6c2f3d7e5d0232023a1a7330621f8b24853cb259fc89a2af85b736608","depends":["Cabal-syntax-3.8.1.0-b99db30153f1d2c83dc6d34e637d577dc69cabe5825778a1e3462bcf8317b588","array-0.5.6.0","base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.200.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","process-1.6.17.0","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"Cabal-syntax-3.8.1.0-b99db30153f1d2c83dc6d34e637d577dc69cabe5825778a1e3462bcf8317b588","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ed2d937ba6c6a20b75850349eedd41374885fc42369ef152d69e2ba70f44f593","pkg-src-sha256":"07e8ddb19fe01781485f1522b6afc22aba680b0ab28ebe6bbfb84a2dd698ce0f","depends":["array-0.5.6.0","base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.200.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"QuickCheck-2.14.3-116702925e70e233df64507a5cae969ff9c69efe35b3cc35e56c87d47168ff11","pkg-name":"QuickCheck","pkg-version":"2.14.3","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f03d2f404d5ba465453d0fbc1944832789a759fe7c4f9bf8616bc1378a02fde4","pkg-src-sha256":"5c0f22b36b28a1a8fa110b3819818d3f29494a3b0dedbae299f064123ca70501","depends":["base-4.18.2.0","containers-0.6.7","deepseq-1.4.8.1","random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.6.0","pkg-name":"array","pkg-version":"0.5.6.0","depends":["base-4.18.2.0"]},{"type":"pre-existing","id":"base-4.18.2.0","pkg-name":"base","pkg-version":"4.18.2.0","depends":["ghc-bignum-1.3","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.6.0","base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"bytestring-0.11.5.3","pkg-name":"bytestring","pkg-version":"0.11.5.3","depends":["base-4.18.2.0","deepseq-1.4.8.1","ghc-prim-0.10.0","template-haskell-2.20.0.0"]},{"type":"configured","id":"clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","pkg-name":"clock","pkg-version":"0.8.4","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b938655b00cf204ce69abfff946021bed111d2609a9f7a9c22e28a1a202e9115","pkg-src-sha256":"6ae9898afe788a5e334cd5fad5d18a3c2e8e59fa09aaf7b957dbb38a4767df2e","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.7","pkg-name":"containers","pkg-version":"0.6.7","depends":["array-0.5.6.0","base-4.18.2.0","deepseq-1.4.8.1","template-haskell-2.20.0.0"]},{"type":"pre-existing","id":"deepseq-1.4.8.1","pkg-name":"deepseq","pkg-version":"1.4.8.1","depends":["array-0.5.6.0","base-4.18.2.0","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"directory-1.3.8.1","pkg-name":"directory","pkg-version":"1.3.8.1","depends":["base-4.18.2.0","filepath-1.4.200.1","time-1.12.2","unix-2.8.4.0"]},{"type":"pre-existing","id":"exceptions-0.10.7","pkg-name":"exceptions","pkg-version":"0.10.7","depends":["base-4.18.2.0","mtl-2.3.1","stm-2.5.1.0","template-haskell-2.20.0.0","transformers-0.6.1.0"]},{"type":"configured","id":"extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","pkg-name":"extra","pkg-version":"1.7.14","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e3d3ce1dc7746b1132930e48c59fb5e8c51a09e92e0c031316be031067a273fb","pkg-src-sha256":"b6a909f8f0e4b8076a1653b4d34815a782f0a8c1e83d5267f4d00496471ef567","depends":["base-4.18.2.0","clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","directory-1.3.8.1","filepath-1.4.200.1","process-1.6.17.0","time-1.12.2","unix-2.8.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.200.1","pkg-name":"filepath","pkg-version":"1.4.200.1","depends":["base-4.18.2.0","bytestring-0.11.5.3","deepseq-1.4.8.1","exceptions-0.10.7","template-haskell-2.20.0.0"]},{"type":"configured","id":"filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.18.2.0","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.10.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.6.4","pkg-name":"ghc-boot-th","pkg-version":"9.6.4","depends":["base-4.18.2.0"]},{"type":"pre-existing","id":"ghc-prim-0.10.0","pkg-name":"ghc-prim","pkg-version":"0.10.0","depends":[]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"./hadrian/."},"dist-dir":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian","build-info":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0-c668f818769193b477ca1a8b87e802e56126adbc7bed962d76bde34a01e8c306","QuickCheck-2.14.3-116702925e70e233df64507a5cae969ff9c69efe35b3cc35e56c87d47168ff11","base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1","mtl-2.3.1","parsec-3.1.16.1","shake-0.19.7-9369313762a66f683383a6b11b819b9aafcd8f0d518c176b2cb1f5a198ccf8cd","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","pkg-name":"hashable","pkg-version":"1.4.3.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f3bf68acfa0df7a064a378ef2cdcfeb55e6fb96100675f4c593556dcbf3d7194","pkg-src-sha256":"32efb16c2891786209b7cbe5c39df9b3a9ae51e836f1a54f646bc4602b7ab0f5","depends":["base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","filepath-1.4.200.1","ghc-bignum-1.3","ghc-prim-0.10.0","text-2.0.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.3.1","pkg-name":"mtl","pkg-version":"2.3.1","depends":["base-4.18.2.0","transformers-0.6.1.0"]},{"type":"pre-existing","id":"parsec-3.1.16.1","pkg-name":"parsec","pkg-version":"3.1.16.1","depends":["base-4.18.2.0","bytestring-0.11.5.3","mtl-2.3.1","text-2.0.2"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.18.2.0","deepseq-1.4.8.1","ghc-prim-0.10.0"]},{"type":"configured","id":"primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","pkg-name":"primitive","pkg-version":"0.9.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1ceb39f67c0e614180f2992a6d30f26603ab2cd23c4f8e25b30213f98807f6f1","pkg-src-sha256":"696d4bd291c94d736142d6182117dca4258d3ef28bfefdb649ac8b5ecd0999c7","depends":["base-4.18.2.0","deepseq-1.4.8.1","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.17.0","pkg-name":"process","pkg-version":"1.6.17.0","depends":["base-4.18.2.0","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.200.1","unix-2.8.4.0"]},{"type":"configured","id":"random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e7c1f881159d5cc788619c9ee8b8f340ba2ff0db571cdf3d1a1968ebc5108789","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.18.2.0","bytestring-0.11.5.3","deepseq-1.4.8.1","mtl-2.3.1","splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-9369313762a66f683383a6b11b819b9aafcd8f0d518c176b2cb1f5a198ccf8cd","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1","filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","process-1.6.17.0","random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0","unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-74d898c5705f61c05a8a7aee14d32e6ef38e5584b58da7af7f06efe4c3c36716","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1","filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","process-1.6.17.0","random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0","unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/store/ghc-9.6.4/shake-0.19.7-e-shake-74d898c5705f61c05a8a7aee14d32e6ef38e5584b58da7af7f06efe4c3c36716/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","pkg-name":"splitmix","pkg-version":"0.1.0.5","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bac0ae8d46a04e410666b0c8081cff63f060f29157983b569ca86ddb6e6e0dc6","pkg-src-sha256":"9df07a9611ef45f1b1258a0b412f4d02c920248f69d2e2ce8ccda328f7e13002","depends":["base-4.18.2.0","deepseq-1.4.8.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.1.0","pkg-name":"stm","pkg-version":"2.5.1.0","depends":["array-0.5.6.0","base-4.18.2.0"]},{"type":"pre-existing","id":"system-cxx-std-lib-1.0","pkg-name":"system-cxx-std-lib","pkg-version":"1.0","depends":[]},{"type":"pre-existing","id":"template-haskell-2.20.0.0","pkg-name":"template-haskell","pkg-version":"2.20.0.0","depends":["base-4.18.2.0","ghc-boot-th-9.6.4","ghc-prim-0.10.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.2","pkg-name":"text","pkg-version":"2.0.2","depends":["array-0.5.6.0","base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","ghc-prim-0.10.0","system-cxx-std-lib-1.0","template-haskell-2.20.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.18.2.0","deepseq-1.4.8.1"]},{"type":"pre-existing","id":"transformers-0.6.1.0","pkg-name":"transformers","pkg-version":"0.6.1.0","depends":["base-4.18.2.0","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"unix-2.8.4.0","pkg-name":"unix","pkg-version":"2.8.4.0","depends":["base-4.18.2.0","bytestring-0.11.5.3","filepath-1.4.200.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1c28ca429e3960de0330908579a427ccacddd700cb84ec1969e2bbe576152add","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.18.2.0","deepseq-1.4.8.1","hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","template-haskell-2.20.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.18.2.0","bytestring-0.11.5.3"],"exe-depends":[],"component-name":"lib"}],"targets":[{"pkg-name":"Cabal","pkg-version":"3.8.1.0","component-name":"lib","available":[{"id":"Cabal-3.8.1.0-c668f818769193b477ca1a8b87e802e56126adbc7bed962d76bde34a01e8c306","component-name":"lib","build-by-default":true}]},{"pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","component-name":"lib","available":[{"id":"Cabal-syntax-3.8.1.0-b99db30153f1d2c83dc6d34e637d577dc69cabe5825778a1e3462bcf8317b588","component-name":"lib","build-by-default":true}]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"lib","available":[{"id":"QuickCheck-2.14.3-116702925e70e233df64507a5cae969ff9c69efe35b3cc35e56c87d47168ff11","component-name":"lib","build-by-default":true}]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-gcoarbitrary","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-generators","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-gshrink","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-misc","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-monadfix","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-split","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-terminal","available":["TargetNotLocal"]},{"pkg-name":"array","pkg-version":"0.5.6.0","component-name":"lib","available":[{"id":"array-0.5.6.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base","pkg-version":"4.18.2.0","component-name":"lib","available":[{"id":"base-4.18.2.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"binary","pkg-version":"0.8.9.1","component-name":"lib","available":[{"id":"binary-0.8.9.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring","pkg-version":"0.11.5.3","component-name":"lib","available":[{"id":"bytestring-0.11.5.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"lib","available":[{"id":"clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","component-name":"lib","build-by-default":true}]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"containers","pkg-version":"0.6.7","component-name":"lib","available":[{"id":"containers-0.6.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"deepseq","pkg-version":"1.4.8.1","component-name":"lib","available":[{"id":"deepseq-1.4.8.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory","pkg-version":"1.3.8.1","component-name":"lib","available":[{"id":"directory-1.3.8.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"exceptions","pkg-version":"0.10.7","component-name":"lib","available":[{"id":"exceptions-0.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"extra","pkg-version":"1.7.14","component-name":"lib","available":[{"id":"extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","component-name":"lib","build-by-default":true}]},{"pkg-name":"extra","pkg-version":"1.7.14","component-name":"test:extra-test","available":["TargetNotLocal"]},{"pkg-name":"filepath","pkg-version":"1.4.200.1","component-name":"lib","available":[{"id":"filepath-1.4.200.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepattern","pkg-version":"0.1.3","component-name":"lib","available":[{"id":"filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepattern","pkg-version":"0.1.3","component-name":"test:filepattern-test","available":["TargetNotLocal"]},{"pkg-name":"ghc-bignum","pkg-version":"1.3","component-name":"lib","available":[{"id":"ghc-bignum-1.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-boot-th","pkg-version":"9.6.4","component-name":"lib","available":[{"id":"ghc-boot-th-9.6.4","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.10.0","component-name":"lib","available":[{"id":"ghc-prim-0.10.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"hadrian","pkg-version":"0.1.0.0","component-name":"exe:hadrian","available":[{"id":"hadrian-0.1.0.0-inplace-hadrian","component-name":"exe:hadrian","build-by-default":true}]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"lib","available":[{"id":"hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","component-name":"lib","build-by-default":true}]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"test:hashable-examples","available":["TargetNotLocal"]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"test:hashable-tests","available":["TargetNotLocal"]},{"pkg-name":"heaps","pkg-version":"0.4","component-name":"lib","available":[{"id":"heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-dgtable","pkg-version":"0.5.2","component-name":"lib","available":[{"id":"js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-dgtable","pkg-version":"0.5.2","component-name":"test:js-dgtable-test","available":["TargetNotLocal"]},{"pkg-name":"js-flot","pkg-version":"0.8.3","component-name":"lib","available":[{"id":"js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-flot","pkg-version":"0.8.3","component-name":"test:js-flot-test","available":["TargetNotLocal"]},{"pkg-name":"js-jquery","pkg-version":"3.3.1","component-name":"lib","available":[{"id":"js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-jquery","pkg-version":"3.3.1","component-name":"test:js-jquery-test","available":["TargetNotLocal"]},{"pkg-name":"mtl","pkg-version":"2.3.1","component-name":"lib","available":[{"id":"mtl-2.3.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"parsec","pkg-version":"3.1.16.1","component-name":"lib","available":[{"id":"parsec-3.1.16.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"pretty","pkg-version":"1.1.3.6","component-name":"lib","available":[{"id":"pretty-1.1.3.6","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"lib","available":[{"id":"primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"test:test-qc","available":["TargetNotLocal"]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"process","pkg-version":"1.6.17.0","component-name":"lib","available":[{"id":"process-1.6.17.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"lib","available":[{"id":"random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","component-name":"lib","build-by-default":true}]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:legacy-test","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:spec-inspection","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"bench:legacy-bench","available":["TargetNotLocal"]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"lib","available":[{"id":"shake-0.19.7-9369313762a66f683383a6b11b819b9aafcd8f0d518c176b2cb1f5a198ccf8cd","component-name":"lib","build-by-default":true}]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"exe:shake","available":[{"id":"shake-0.19.7-e-shake-74d898c5705f61c05a8a7aee14d32e6ef38e5584b58da7af7f06efe4c3c36716","component-name":"exe:shake","build-by-default":true}]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"test:shake-test","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"lib","available":[{"id":"splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","component-name":"lib","build-by-default":true}]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:examples","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:initialization","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:montecarlo-pi","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:montecarlo-pi-32","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-dieharder","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-tests","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-testu01","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:comparison","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:range","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:simple-sum","available":["TargetNotLocal"]},{"pkg-name":"stm","pkg-version":"2.5.1.0","component-name":"lib","available":[{"id":"stm-2.5.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"system-cxx-std-lib","pkg-version":"1.0","component-name":"lib","available":[{"id":"system-cxx-std-lib-1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"template-haskell","pkg-version":"2.20.0.0","component-name":"lib","available":[{"id":"template-haskell-2.20.0.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"text","pkg-version":"2.0.2","component-name":"lib","available":[{"id":"text-2.0.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"time","pkg-version":"1.12.2","component-name":"lib","available":[{"id":"time-1.12.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers","pkg-version":"0.6.1.0","component-name":"lib","available":[{"id":"transformers-0.6.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix","pkg-version":"2.8.4.0","component-name":"lib","available":[{"id":"unix-2.8.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"lib","available":[{"id":"unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","component-name":"lib","build-by-default":true}]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"test:unordered-containers-tests","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"utf8-string","pkg-version":"1.0.2","component-name":"lib","available":[{"id":"utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05","component-name":"lib","build-by-default":true}]},{"pkg-name":"utf8-string","pkg-version":"1.0.2","component-name":"test:unit-tests","available":["TargetNotLocal"]}]} \ No newline at end of file diff --git a/materialized/ghc964/hadrian-ghc98/hadrian/default.nix b/materialized/ghc964/hadrian-ghc98/hadrian/default.nix index c679a4c074..08f0ef6f72 100644 --- a/materialized/ghc964/hadrian-ghc98/hadrian/default.nix +++ b/materialized/ghc964/hadrian-ghc98/hadrian/default.nix @@ -90,6 +90,33 @@ extras = hackage: { packages = { hadrian = ./.plan.nix/hadrian.nix; }; }; modules = [ + { + preExistingPkgs = [ + "ghc-prim" + "transformers" + "time" + "base" + "unix" + "ghc-boot-th" + "mtl" + "pretty" + "process" + "stm" + "template-haskell" + "exceptions" + "parsec" + "system-cxx-std-lib" + "deepseq" + "text" + "containers" + "array" + "bytestring" + "directory" + "ghc-bignum" + "binary" + "filepath" + ]; + } ({ lib, ... }: { packages = { diff --git a/materialized/ghc964/hadrian-ghc98/plan.json b/materialized/ghc964/hadrian-ghc98/plan.json new file mode 100644 index 0000000000..eb5633aa5f --- /dev/null +++ b/materialized/ghc964/hadrian-ghc98/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-9.6.4","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"Cabal-3.8.1.0-c668f818769193b477ca1a8b87e802e56126adbc7bed962d76bde34a01e8c306","pkg-name":"Cabal","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"77121d8e1aff14a0fd95684b751599db78a7dd26d55862d9fcef27c88b193e9d","pkg-src-sha256":"7464cbe6c2f3d7e5d0232023a1a7330621f8b24853cb259fc89a2af85b736608","depends":["Cabal-syntax-3.8.1.0-b99db30153f1d2c83dc6d34e637d577dc69cabe5825778a1e3462bcf8317b588","array-0.5.6.0","base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.200.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","process-1.6.17.0","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"Cabal-syntax-3.8.1.0-b99db30153f1d2c83dc6d34e637d577dc69cabe5825778a1e3462bcf8317b588","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ed2d937ba6c6a20b75850349eedd41374885fc42369ef152d69e2ba70f44f593","pkg-src-sha256":"07e8ddb19fe01781485f1522b6afc22aba680b0ab28ebe6bbfb84a2dd698ce0f","depends":["array-0.5.6.0","base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.200.1","mtl-2.3.1","parsec-3.1.16.1","pretty-1.1.3.6","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"QuickCheck-2.14.3-116702925e70e233df64507a5cae969ff9c69efe35b3cc35e56c87d47168ff11","pkg-name":"QuickCheck","pkg-version":"2.14.3","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f03d2f404d5ba465453d0fbc1944832789a759fe7c4f9bf8616bc1378a02fde4","pkg-src-sha256":"5c0f22b36b28a1a8fa110b3819818d3f29494a3b0dedbae299f064123ca70501","depends":["base-4.18.2.0","containers-0.6.7","deepseq-1.4.8.1","random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.6.0","pkg-name":"array","pkg-version":"0.5.6.0","depends":["base-4.18.2.0"]},{"type":"pre-existing","id":"base-4.18.2.0","pkg-name":"base","pkg-version":"4.18.2.0","depends":["ghc-bignum-1.3","ghc-prim-0.10.0"]},{"type":"configured","id":"base16-bytestring-1.0.2.0-48e234cd9d2674d718111ce6f52d0142cc28a3c5a0493618f8fb6a8b7f7dd1f7","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a694e88f9ec9fc79f0b03f233d3fea592b68f70a34aac2ddb5bcaecb6562e2fd","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.18.2.0","bytestring-0.11.5.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.9.1","pkg-name":"binary","pkg-version":"0.8.9.1","depends":["array-0.5.6.0","base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"bytestring-0.11.5.3","pkg-name":"bytestring","pkg-version":"0.11.5.3","depends":["base-4.18.2.0","deepseq-1.4.8.1","ghc-prim-0.10.0","template-haskell-2.20.0.0"]},{"type":"configured","id":"clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","pkg-name":"clock","pkg-version":"0.8.4","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b938655b00cf204ce69abfff946021bed111d2609a9f7a9c22e28a1a202e9115","pkg-src-sha256":"6ae9898afe788a5e334cd5fad5d18a3c2e8e59fa09aaf7b957dbb38a4767df2e","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.7","pkg-name":"containers","pkg-version":"0.6.7","depends":["array-0.5.6.0","base-4.18.2.0","deepseq-1.4.8.1","template-haskell-2.20.0.0"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-898616048405d66a1ac2538c4878965bc94c2902780e27b3e48e171cdfe34cf8","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"03db065161987f614a3a2bbcd16264f78e47efe231fb5bd161be2043eaf20488","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.18.2.0","bytestring-0.11.5.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.8.1","pkg-name":"deepseq","pkg-version":"1.4.8.1","depends":["array-0.5.6.0","base-4.18.2.0","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"directory-1.3.8.1","pkg-name":"directory","pkg-version":"1.3.8.1","depends":["base-4.18.2.0","filepath-1.4.200.1","time-1.12.2","unix-2.8.4.0"]},{"type":"pre-existing","id":"exceptions-0.10.7","pkg-name":"exceptions","pkg-version":"0.10.7","depends":["base-4.18.2.0","mtl-2.3.1","stm-2.5.1.0","template-haskell-2.20.0.0","transformers-0.6.1.0"]},{"type":"configured","id":"extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","pkg-name":"extra","pkg-version":"1.7.14","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e3d3ce1dc7746b1132930e48c59fb5e8c51a09e92e0c031316be031067a273fb","pkg-src-sha256":"b6a909f8f0e4b8076a1653b4d34815a782f0a8c1e83d5267f4d00496471ef567","depends":["base-4.18.2.0","clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","directory-1.3.8.1","filepath-1.4.200.1","process-1.6.17.0","time-1.12.2","unix-2.8.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.200.1","pkg-name":"filepath","pkg-version":"1.4.200.1","depends":["base-4.18.2.0","bytestring-0.11.5.3","deepseq-1.4.8.1","exceptions-0.10.7","template-haskell-2.20.0.0"]},{"type":"configured","id":"filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","pkg-name":"filepattern","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"372c1733d83b90045eb29da9f010fed79bfef8771ce65eb126a1d83ecc54a9a2","pkg-src-sha256":"cc445d439ea2f65cac7604d3578aa2c3a62e5a91dc989f4ce5b3390db9e59636","depends":["base-4.18.2.0","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-bignum-1.3","pkg-name":"ghc-bignum","pkg-version":"1.3","depends":["ghc-prim-0.10.0"]},{"type":"pre-existing","id":"ghc-boot-th-9.6.4","pkg-name":"ghc-boot-th","pkg-version":"9.6.4","depends":["base-4.18.2.0"]},{"type":"pre-existing","id":"ghc-prim-0.10.0","pkg-name":"ghc-prim","pkg-version":"0.10.0","depends":[]},{"type":"configured","id":"hadrian-0.1.0.0-inplace-hadrian","pkg-name":"hadrian","pkg-version":"0.1.0.0","flags":{"selftest":true,"threaded":true},"style":"local","pkg-src":{"type":"local","path":"./hadrian/."},"dist-dir":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian","build-info":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian/build-info.json","depends":["Cabal-3.8.1.0-c668f818769193b477ca1a8b87e802e56126adbc7bed962d76bde34a01e8c306","QuickCheck-2.14.3-116702925e70e233df64507a5cae969ff9c69efe35b3cc35e56c87d47168ff11","base-4.18.2.0","base16-bytestring-1.0.2.0-48e234cd9d2674d718111ce6f52d0142cc28a3c5a0493618f8fb6a8b7f7dd1f7","bytestring-0.11.5.3","containers-0.6.7","cryptohash-sha256-0.11.102.1-898616048405d66a1ac2538c4878965bc94c2902780e27b3e48e171cdfe34cf8","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1","mtl-2.3.1","parsec-3.1.16.1","shake-0.19.7-9369313762a66f683383a6b11b819b9aafcd8f0d518c176b2cb1f5a198ccf8cd","text-2.0.2","time-1.12.2","transformers-0.6.1.0","unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993"],"exe-depends":[],"component-name":"exe:hadrian","bin-file":"./hadrian/dist-newstyle/build/x86_64-linux/ghc-9.6.4/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian"},{"type":"configured","id":"hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","pkg-name":"hashable","pkg-version":"1.4.3.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f3bf68acfa0df7a064a378ef2cdcfeb55e6fb96100675f4c593556dcbf3d7194","pkg-src-sha256":"32efb16c2891786209b7cbe5c39df9b3a9ae51e836f1a54f646bc4602b7ab0f5","depends":["base-4.18.2.0","bytestring-0.11.5.3","containers-0.6.7","deepseq-1.4.8.1","filepath-1.4.200.1","ghc-bignum-1.3","ghc-prim-0.10.0","text-2.0.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.18.2.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.3.1","pkg-name":"mtl","pkg-version":"2.3.1","depends":["base-4.18.2.0","transformers-0.6.1.0"]},{"type":"pre-existing","id":"parsec-3.1.16.1","pkg-name":"parsec","pkg-version":"3.1.16.1","depends":["base-4.18.2.0","bytestring-0.11.5.3","mtl-2.3.1","text-2.0.2"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.18.2.0","deepseq-1.4.8.1","ghc-prim-0.10.0"]},{"type":"configured","id":"primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","pkg-name":"primitive","pkg-version":"0.9.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1ceb39f67c0e614180f2992a6d30f26603ab2cd23c4f8e25b30213f98807f6f1","pkg-src-sha256":"696d4bd291c94d736142d6182117dca4258d3ef28bfefdb649ac8b5ecd0999c7","depends":["base-4.18.2.0","deepseq-1.4.8.1","template-haskell-2.20.0.0","transformers-0.6.1.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.17.0","pkg-name":"process","pkg-version":"1.6.17.0","depends":["base-4.18.2.0","deepseq-1.4.8.1","directory-1.3.8.1","filepath-1.4.200.1","unix-2.8.4.0"]},{"type":"configured","id":"random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e7c1f881159d5cc788619c9ee8b8f340ba2ff0db571cdf3d1a1968ebc5108789","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.18.2.0","bytestring-0.11.5.3","deepseq-1.4.8.1","mtl-2.3.1","splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-9369313762a66f683383a6b11b819b9aafcd8f0d518c176b2cb1f5a198ccf8cd","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1","filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","process-1.6.17.0","random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0","unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.7-e-shake-74d898c5705f61c05a8a7aee14d32e6ef38e5584b58da7af7f06efe4c3c36716","pkg-name":"shake","pkg-version":"0.19.7","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3cb5814cce210b9756fa9246ff1b2a1e1b86be46fdc4c5e2baacdc5bf83ce5c3","pkg-src-sha256":"352a56af12f70b50d564dcb61131555577281957ee196f1702a3723c0a3699d1","depends":["base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","directory-1.3.8.1","extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","filepath-1.4.200.1","filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","process-1.6.17.0","random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","time-1.12.2","transformers-0.6.1.0","unix-2.8.4.0","unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/store/ghc-9.6.4/shake-0.19.7-e-shake-74d898c5705f61c05a8a7aee14d32e6ef38e5584b58da7af7f06efe4c3c36716/bin/shake"},{"type":"configured","id":"splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","pkg-name":"splitmix","pkg-version":"0.1.0.5","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bac0ae8d46a04e410666b0c8081cff63f060f29157983b569ca86ddb6e6e0dc6","pkg-src-sha256":"9df07a9611ef45f1b1258a0b412f4d02c920248f69d2e2ce8ccda328f7e13002","depends":["base-4.18.2.0","deepseq-1.4.8.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.1.0","pkg-name":"stm","pkg-version":"2.5.1.0","depends":["array-0.5.6.0","base-4.18.2.0"]},{"type":"pre-existing","id":"system-cxx-std-lib-1.0","pkg-name":"system-cxx-std-lib","pkg-version":"1.0","depends":[]},{"type":"pre-existing","id":"template-haskell-2.20.0.0","pkg-name":"template-haskell","pkg-version":"2.20.0.0","depends":["base-4.18.2.0","ghc-boot-th-9.6.4","ghc-prim-0.10.0","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-2.0.2","pkg-name":"text","pkg-version":"2.0.2","depends":["array-0.5.6.0","base-4.18.2.0","binary-0.8.9.1","bytestring-0.11.5.3","deepseq-1.4.8.1","ghc-prim-0.10.0","system-cxx-std-lib-1.0","template-haskell-2.20.0.0"]},{"type":"pre-existing","id":"time-1.12.2","pkg-name":"time","pkg-version":"1.12.2","depends":["base-4.18.2.0","deepseq-1.4.8.1"]},{"type":"pre-existing","id":"transformers-0.6.1.0","pkg-name":"transformers","pkg-version":"0.6.1.0","depends":["base-4.18.2.0","ghc-prim-0.10.0"]},{"type":"pre-existing","id":"unix-2.8.4.0","pkg-name":"unix","pkg-version":"2.8.4.0","depends":["base-4.18.2.0","bytestring-0.11.5.3","filepath-1.4.200.1","time-1.12.2"]},{"type":"configured","id":"unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1c28ca429e3960de0330908579a427ccacddd700cb84ec1969e2bbe576152add","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.18.2.0","deepseq-1.4.8.1","hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","template-haskell-2.20.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.18.2.0","bytestring-0.11.5.3"],"exe-depends":[],"component-name":"lib"}],"targets":[{"pkg-name":"Cabal","pkg-version":"3.8.1.0","component-name":"lib","available":[{"id":"Cabal-3.8.1.0-c668f818769193b477ca1a8b87e802e56126adbc7bed962d76bde34a01e8c306","component-name":"lib","build-by-default":true}]},{"pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","component-name":"lib","available":[{"id":"Cabal-syntax-3.8.1.0-b99db30153f1d2c83dc6d34e637d577dc69cabe5825778a1e3462bcf8317b588","component-name":"lib","build-by-default":true}]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"lib","available":[{"id":"QuickCheck-2.14.3-116702925e70e233df64507a5cae969ff9c69efe35b3cc35e56c87d47168ff11","component-name":"lib","build-by-default":true}]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-gcoarbitrary","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-generators","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-gshrink","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-misc","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-monadfix","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-split","available":["TargetNotLocal"]},{"pkg-name":"QuickCheck","pkg-version":"2.14.3","component-name":"test:test-quickcheck-terminal","available":["TargetNotLocal"]},{"pkg-name":"array","pkg-version":"0.5.6.0","component-name":"lib","available":[{"id":"array-0.5.6.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base","pkg-version":"4.18.2.0","component-name":"lib","available":[{"id":"base-4.18.2.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","component-name":"lib","available":[{"id":"base16-bytestring-1.0.2.0-48e234cd9d2674d718111ce6f52d0142cc28a3c5a0493618f8fb6a8b7f7dd1f7","component-name":"lib","build-by-default":true}]},{"pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"binary","pkg-version":"0.8.9.1","component-name":"lib","available":[{"id":"binary-0.8.9.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring","pkg-version":"0.11.5.3","component-name":"lib","available":[{"id":"bytestring-0.11.5.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"lib","available":[{"id":"clock-0.8.4-b6af39fafa1fb93e9520050c562fc2d9803a08bc83cda5d8b8d907beefe150aa","component-name":"lib","build-by-default":true}]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"clock","pkg-version":"0.8.4","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"containers","pkg-version":"0.6.7","component-name":"lib","available":[{"id":"containers-0.6.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"lib","available":[{"id":"cryptohash-sha256-0.11.102.1-898616048405d66a1ac2538c4878965bc94c2902780e27b3e48e171cdfe34cf8","component-name":"lib","build-by-default":true}]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"exe:sha256sum","available":["TargetNotBuildable"]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"test:test-sha256","available":["TargetNotLocal"]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"bench:bench-sha256","available":["TargetNotLocal"]},{"pkg-name":"deepseq","pkg-version":"1.4.8.1","component-name":"lib","available":[{"id":"deepseq-1.4.8.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory","pkg-version":"1.3.8.1","component-name":"lib","available":[{"id":"directory-1.3.8.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"exceptions","pkg-version":"0.10.7","component-name":"lib","available":[{"id":"exceptions-0.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"extra","pkg-version":"1.7.14","component-name":"lib","available":[{"id":"extra-1.7.14-5b3875febb50e86e1fd0471cb61fc83c08afae84f74dd82e3fe23bdc226bd3c9","component-name":"lib","build-by-default":true}]},{"pkg-name":"extra","pkg-version":"1.7.14","component-name":"test:extra-test","available":["TargetNotLocal"]},{"pkg-name":"filepath","pkg-version":"1.4.200.1","component-name":"lib","available":[{"id":"filepath-1.4.200.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepattern","pkg-version":"0.1.3","component-name":"lib","available":[{"id":"filepattern-0.1.3-e0b05225cb586afea88cbd5fba3b81dbc7d8925b44e8dd467cfd9ed208da351b","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepattern","pkg-version":"0.1.3","component-name":"test:filepattern-test","available":["TargetNotLocal"]},{"pkg-name":"ghc-bignum","pkg-version":"1.3","component-name":"lib","available":[{"id":"ghc-bignum-1.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-boot-th","pkg-version":"9.6.4","component-name":"lib","available":[{"id":"ghc-boot-th-9.6.4","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.10.0","component-name":"lib","available":[{"id":"ghc-prim-0.10.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"hadrian","pkg-version":"0.1.0.0","component-name":"exe:hadrian","available":[{"id":"hadrian-0.1.0.0-inplace-hadrian","component-name":"exe:hadrian","build-by-default":true}]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"lib","available":[{"id":"hashable-1.4.3.0-cf03199beb9180bbbb9b383e3088c03deb3be32037dd08933c3d3ba08171d03e","component-name":"lib","build-by-default":true}]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"test:hashable-examples","available":["TargetNotLocal"]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"test:hashable-tests","available":["TargetNotLocal"]},{"pkg-name":"heaps","pkg-version":"0.4","component-name":"lib","available":[{"id":"heaps-0.4-582bc0f356369f4ac6a9badb439391d1ff82a6d0d7a4a55fe3db91d6d1a32875","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-dgtable","pkg-version":"0.5.2","component-name":"lib","available":[{"id":"js-dgtable-0.5.2-40721bc9982faf5e0f71e3119e01102f429fefca9219230921535f5382e177f7","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-dgtable","pkg-version":"0.5.2","component-name":"test:js-dgtable-test","available":["TargetNotLocal"]},{"pkg-name":"js-flot","pkg-version":"0.8.3","component-name":"lib","available":[{"id":"js-flot-0.8.3-fadd4ccb467ede662552cdc382e02fb02027d8181620f296bae75d1f76774b0b","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-flot","pkg-version":"0.8.3","component-name":"test:js-flot-test","available":["TargetNotLocal"]},{"pkg-name":"js-jquery","pkg-version":"3.3.1","component-name":"lib","available":[{"id":"js-jquery-3.3.1-6a8cc1e84fc203e099644c71b32217b6615b055459038eb73f1b008db4b2f236","component-name":"lib","build-by-default":true}]},{"pkg-name":"js-jquery","pkg-version":"3.3.1","component-name":"test:js-jquery-test","available":["TargetNotLocal"]},{"pkg-name":"mtl","pkg-version":"2.3.1","component-name":"lib","available":[{"id":"mtl-2.3.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"parsec","pkg-version":"3.1.16.1","component-name":"lib","available":[{"id":"parsec-3.1.16.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"pretty","pkg-version":"1.1.3.6","component-name":"lib","available":[{"id":"pretty-1.1.3.6","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"lib","available":[{"id":"primitive-0.9.0.0-b327a6c8ea4577ea7938607770d363048048a528efdff4bc67a582b5feac66fc","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"test:test-qc","available":["TargetNotLocal"]},{"pkg-name":"primitive","pkg-version":"0.9.0.0","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"process","pkg-version":"1.6.17.0","component-name":"lib","available":[{"id":"process-1.6.17.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"lib","available":[{"id":"random-1.2.1.1-e2b8c23c50d3a2e2d7c30c46d2a3344a9c2a38bf319885311c62efb7342cb80b","component-name":"lib","build-by-default":true}]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:legacy-test","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:spec-inspection","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"bench:legacy-bench","available":["TargetNotLocal"]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"lib","available":[{"id":"shake-0.19.7-9369313762a66f683383a6b11b819b9aafcd8f0d518c176b2cb1f5a198ccf8cd","component-name":"lib","build-by-default":true}]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"exe:shake","available":[{"id":"shake-0.19.7-e-shake-74d898c5705f61c05a8a7aee14d32e6ef38e5584b58da7af7f06efe4c3c36716","component-name":"exe:shake","build-by-default":true}]},{"pkg-name":"shake","pkg-version":"0.19.7","component-name":"test:shake-test","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"lib","available":[{"id":"splitmix-0.1.0.5-232d2b1a4ce5cacd620dd2472d411c8d63e777af17182b5d56b631942f729187","component-name":"lib","build-by-default":true}]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:examples","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:initialization","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:montecarlo-pi","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:montecarlo-pi-32","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-dieharder","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-tests","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-testu01","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:comparison","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:range","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:simple-sum","available":["TargetNotLocal"]},{"pkg-name":"stm","pkg-version":"2.5.1.0","component-name":"lib","available":[{"id":"stm-2.5.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"system-cxx-std-lib","pkg-version":"1.0","component-name":"lib","available":[{"id":"system-cxx-std-lib-1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"template-haskell","pkg-version":"2.20.0.0","component-name":"lib","available":[{"id":"template-haskell-2.20.0.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"text","pkg-version":"2.0.2","component-name":"lib","available":[{"id":"text-2.0.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"time","pkg-version":"1.12.2","component-name":"lib","available":[{"id":"time-1.12.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers","pkg-version":"0.6.1.0","component-name":"lib","available":[{"id":"transformers-0.6.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix","pkg-version":"2.8.4.0","component-name":"lib","available":[{"id":"unix-2.8.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"lib","available":[{"id":"unordered-containers-0.2.19.1-0eb0d95c2f270578763e7cbc938fd7d57fa65a8f3c10aa64b616bc79bbf6b993","component-name":"lib","build-by-default":true}]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"test:unordered-containers-tests","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.19.1","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"utf8-string","pkg-version":"1.0.2","component-name":"lib","available":[{"id":"utf8-string-1.0.2-134849f72bdb35a6754bed838d5c0f0412c3ca2863338b599b4cd9b0af070e05","component-name":"lib","build-by-default":true}]},{"pkg-name":"utf8-string","pkg-version":"1.0.2","component-name":"test:unit-tests","available":["TargetNotLocal"]}]} \ No newline at end of file diff --git a/materialized/ghcjs/alex/ghc8107/plan.json b/materialized/ghcjs/alex/ghc8107/plan.json new file mode 100644 index 0000000000..699dfef194 --- /dev/null +++ b/materialized/ghcjs/alex/ghc8107/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-8.10.7","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"alex-3.2.5-inplace-alex","pkg-name":"alex","pkg-version":"3.2.5","flags":{"small_base":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/alex-3.2.5/x/alex","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/alex-3.2.5/x/alex/build-info.json","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","directory-1.3.6.0"],"exe-depends":[],"component-name":"exe:alex","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/alex-3.2.5/x/alex/build/alex/alex"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"base-4.14.3.0","pkg-name":"base","pkg-version":"4.14.3.0","depends":["ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"pre-existing","id":"bytestring-0.10.12.0","pkg-name":"bytestring","pkg-version":"0.10.12.0","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"pre-existing","id":"deepseq-1.4.4.0","pkg-name":"deepseq","pkg-version":"1.4.4.0","depends":["array-0.5.4.0","base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"directory-1.3.6.0","pkg-name":"directory","pkg-version":"1.3.6.0","depends":["base-4.14.3.0","filepath-1.4.2.1","time-1.9.3","unix-2.7.2.2"]},{"type":"pre-existing","id":"filepath-1.4.2.1","pkg-name":"filepath","pkg-version":"1.4.2.1","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"ghc-prim-0.6.1","pkg-name":"ghc-prim","pkg-version":"0.6.1","depends":[]},{"type":"pre-existing","id":"integer-gmp-1.0.3.0","pkg-name":"integer-gmp","pkg-version":"1.0.3.0","depends":["ghc-prim-0.6.1"]},{"type":"pre-existing","id":"time-1.9.3","pkg-name":"time","pkg-version":"1.9.3","depends":["base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.14.3.0","bytestring-0.10.12.0","time-1.9.3"]}],"targets":[{"pkg-name":"alex","pkg-version":"3.2.5","component-name":"exe:alex","available":[{"id":"alex-3.2.5-inplace-alex","component-name":"exe:alex","build-by-default":true}]},{"pkg-name":"alex","pkg-version":"3.2.5","component-name":"test:tests","available":["TargetDisabledByUser"]},{"pkg-name":"array","pkg-version":"0.5.4.0","component-name":"lib","available":[{"id":"array-0.5.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base","pkg-version":"4.14.3.0","component-name":"lib","available":[{"id":"base-4.14.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring","pkg-version":"0.10.12.0","component-name":"lib","available":[{"id":"bytestring-0.10.12.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"containers","pkg-version":"0.6.5.1","component-name":"lib","available":[{"id":"containers-0.6.5.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"deepseq","pkg-version":"1.4.4.0","component-name":"lib","available":[{"id":"deepseq-1.4.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory","pkg-version":"1.3.6.0","component-name":"lib","available":[{"id":"directory-1.3.6.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepath","pkg-version":"1.4.2.1","component-name":"lib","available":[{"id":"filepath-1.4.2.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.6.1","component-name":"lib","available":[{"id":"ghc-prim-0.6.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"integer-gmp","pkg-version":"1.0.3.0","component-name":"lib","available":[{"id":"integer-gmp-1.0.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"time","pkg-version":"1.9.3","component-name":"lib","available":[{"id":"time-1.9.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix","pkg-version":"2.7.2.2","component-name":"lib","available":[{"id":"unix-2.7.2.2","component-name":"lib","build-by-default":true}]}]} \ No newline at end of file diff --git a/materialized/ghcjs/cabal/ghc8107/plan.json b/materialized/ghcjs/cabal/ghc8107/plan.json new file mode 100644 index 0000000000..705277e3da --- /dev/null +++ b/materialized/ghcjs/cabal/ghc8107/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-8.10.7","os":"linux","arch":"x86_64","install-plan":[{"type":"configured","id":"Cabal-3.8.1.0-254ed15bf5c8a3507521ed173962e284f55d5b289da364545928a13d0408b8e4","pkg-name":"Cabal","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"77121d8e1aff14a0fd95684b751599db78a7dd26d55862d9fcef27c88b193e9d","pkg-src-sha256":"7464cbe6c2f3d7e5d0232023a1a7330621f8b24853cb259fc89a2af85b736608","depends":["Cabal-syntax-3.8.1.0-b915cfc5b689dcee3ff0da5b8645eb84bdc2e94162e5401107d4d2a109ae6373","array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","mtl-2.2.2","parsec-3.1.14.0","pretty-1.1.3.6","process-1.6.18.0-28f4084bc816db0935a003bd3b4728b865df3c3b7ad5f4bf5b50a396aff656cf","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"Cabal-syntax-3.8.1.0-b915cfc5b689dcee3ff0da5b8645eb84bdc2e94162e5401107d4d2a109ae6373","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ed2d937ba6c6a20b75850349eedd41374885fc42369ef152d69e2ba70f44f593","pkg-src-sha256":"07e8ddb19fe01781485f1522b6afc22aba680b0ab28ebe6bbfb84a2dd698ce0f","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","mtl-2.2.2","parsec-3.1.14.0","pretty-1.1.3.6","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"HTTP-4000.4.1-75090b1b9f3cc3003a55f795457e6ac8bd0a05b1dd347188fb0cee06b7543689","pkg-name":"HTTP","pkg-version":"4000.4.1","flags":{"conduit10":false,"network-uri":true,"warn-as-error":false,"warp-tests":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0e37572590743e49d7a610f472e1618a594dc861410846f64d9f2347923c4f5b","pkg-src-sha256":"df31d8efec775124dab856d7177ddcba31be9f9e0836ebdab03d94392f2dd453","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","mtl-2.2.2","network-3.1.4.0-31810b3941ba7a39c57ad4465a156d9552feb0b0dc9374aa6db4b73509c135e0","network-uri-2.6.4.2-512664775d014e86058cdfe34db9c888ac621c84b2dc250f655809aaf578be46","parsec-3.1.14.0","time-1.9.3","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.14.3.0"]},{"type":"configured","id":"async-2.2.4-76ad0185450ead1eb319be2b17f5d4929d4a2036dd6daf6b7e1d375f94098f27","pkg-name":"async","pkg-version":"2.2.4","flags":{"bench":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9b8ceefce014e490f9e1335fa5f511161309926c55d01cec795016f4363b5d2d","pkg-src-sha256":"484df85be0e76c4fed9376451e48e1d0c6e97952ce79735b72d54297e7e0a725","depends":["base-4.14.3.0","hashable-1.4.3.0-0b38c3308404686982e5e2b43e60fe1ab5f9c32b8c8e799c52c8caf95a469cd1","stm-2.5.0.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"base-4.14.3.0","pkg-name":"base","pkg-version":"4.14.3.0","depends":["ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"configured","id":"base-orphans-0.9.1-5afa3fad682fdc56445f2fff83348e814c91c11da808225c081be9f5ba3bbd42","pkg-name":"base-orphans","pkg-version":"0.9.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c4733d09f798fc4304e936924a1a7d9fc2425aefad6c46ad4592035254b46051","pkg-src-sha256":"5bbf2da382c5b212d6a8be2f8c49edee0eba30f272a15fd32c13e6e4091ef172","depends":["base-4.14.3.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base16-bytestring-1.0.2.0-733bc7ff54d4d1205255b2131fae86a7fe07229cb5ada4f2260950334d026547","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a694e88f9ec9fc79f0b03f233d3fea592b68f70a34aac2ddb5bcaecb6562e2fd","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base64-bytestring-1.2.1.0-1ceca88b1d8a588ade6eab7e0148751072964f9ea42862f670ae020beee1532b","pkg-name":"base64-bytestring","pkg-version":"1.2.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"45305ccf8914c66d385b518721472c7b8c858f1986945377f74f85c1e0d49803","pkg-src-sha256":"fbf8ed30edde271eb605352021431d8f1b055f95a56af31fe2eacf6bdfdc49c9","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.8.0","pkg-name":"binary","pkg-version":"0.8.8.0","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"bytestring-0.10.12.0","pkg-name":"bytestring","pkg-version":"0.10.12.0","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"configured","id":"cabal-install-3.8.1.0-inplace","pkg-name":"cabal-install","pkg-version":"3.8.1.0","flags":{"lukko":true,"native-dns":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/cabal-install-3.8.1.0","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/cabal-install-3.8.1.0/build-info.json","depends":["Cabal-3.8.1.0-254ed15bf5c8a3507521ed173962e284f55d5b289da364545928a13d0408b8e4","Cabal-syntax-3.8.1.0-b915cfc5b689dcee3ff0da5b8645eb84bdc2e94162e5401107d4d2a109ae6373","HTTP-4000.4.1-75090b1b9f3cc3003a55f795457e6ac8bd0a05b1dd347188fb0cee06b7543689","array-0.5.4.0","async-2.2.4-76ad0185450ead1eb319be2b17f5d4929d4a2036dd6daf6b7e1d375f94098f27","base-4.14.3.0","base16-bytestring-1.0.2.0-733bc7ff54d4d1205255b2131fae86a7fe07229cb5ada4f2260950334d026547","binary-0.8.8.0","bytestring-0.10.12.0","cabal-install-solver-3.8.1.0-0330e22ac010fe5032765c3fa31d1f807a4db2c832ec8dcbe30dce8aeae51255","containers-0.6.5.1","cryptohash-sha256-0.11.102.1-2a240aba380ab68e1884623d77ed4a88ed685ddb9615cc2d3da0054e00f826b2","directory-1.3.6.0","echo-0.1.4-f017006d03acda071f87eb81ed298118d192419036421744381a3e83d0d50f48","edit-distance-0.2.2.1-080b99643aaa59dbaf9bd405d7ff53f3915fe0496490f9875fea3bd375290254","exceptions-0.10.4","filepath-1.4.2.1","hackage-security-0.6.2.3-2a59930aa81f942708ad4f1d9aad08e3c17b71808f509c5fe8cfae3e29beb48b","hashable-1.4.3.0-0b38c3308404686982e5e2b43e60fe1ab5f9c32b8c8e799c52c8caf95a469cd1","lukko-0.1.1.3-175058dba6e76fc42a1227b8a998ec3630fc5a044650ccb155baad5fea2291ff","mtl-2.2.2","network-uri-2.6.4.2-512664775d014e86058cdfe34db9c888ac621c84b2dc250f655809aaf578be46","parsec-3.1.14.0","pretty-1.1.3.6","process-1.6.18.0-28f4084bc816db0935a003bd3b4728b865df3c3b7ad5f4bf5b50a396aff656cf","random-1.2.1.1-b872f3388deff3e63fa8625e4b64db91c39eb1fa6bb7eb2a71f43ff049f2830c","regex-base-0.94.0.2-fe2b37ccad4ad4d57b72ea59bd44841e9fe48b41f3925a58e7776dec1132252a","regex-posix-0.96.0.1-2b78e133dfdc85cf98c18d126955d5e323319db0e0cd2c02535ee368e1e3adde","resolv-0.2.0.2-bdb32c7f655d10427844dcf40badfe6c12e39ba818147e78f9a1e973e41f6e78","safe-exceptions-0.1.7.4-1db4b3cf1327cbd19559cac8a1522c8f793394f62c3dab6432f6d8666974d3d6","stm-2.5.0.1","tar-0.5.1.1-643c87cd04d43966ba086abf693a99a6c8e6a74b2250a8c6db6f078672b95893","text-1.2.4.1","time-1.9.3","unix-2.7.2.2","zlib-0.6.3.0-74d9ec99f546b67df23ff9fcfa69fbf35a9bddd9a5cf16da9466177d8b057ac5"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cabal-install-3.8.1.0-inplace-cabal","pkg-name":"cabal-install","pkg-version":"3.8.1.0","flags":{"lukko":true,"native-dns":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/cabal-install-3.8.1.0/x/cabal","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/cabal-install-3.8.1.0/x/cabal/build-info.json","depends":["Cabal-3.8.1.0-254ed15bf5c8a3507521ed173962e284f55d5b289da364545928a13d0408b8e4","Cabal-syntax-3.8.1.0-b915cfc5b689dcee3ff0da5b8645eb84bdc2e94162e5401107d4d2a109ae6373","base-4.14.3.0","cabal-install-3.8.1.0-inplace","directory-1.3.6.0","filepath-1.4.2.1"],"exe-depends":[],"component-name":"exe:cabal","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/cabal-install-3.8.1.0/x/cabal/build/cabal/cabal"},{"type":"configured","id":"cabal-install-solver-3.8.1.0-0330e22ac010fe5032765c3fa31d1f807a4db2c832ec8dcbe30dce8aeae51255","pkg-name":"cabal-install-solver","pkg-version":"3.8.1.0","flags":{"debug-conflict-sets":false,"debug-expensive-assertions":false,"debug-tracetree":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"95f75217c3f6f7231576d73dd9275303f271360a0a2a0f02bb03c80b843c88bc","pkg-src-sha256":"df2369f6c37517a3b2625bc19057d9e206bbb40386bcb607f17dc7d2e588ffe7","depends":["Cabal-3.8.1.0-254ed15bf5c8a3507521ed173962e284f55d5b289da364545928a13d0408b8e4","Cabal-syntax-3.8.1.0-b915cfc5b689dcee3ff0da5b8645eb84bdc2e94162e5401107d4d2a109ae6373","array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","edit-distance-0.2.2.1-080b99643aaa59dbaf9bd405d7ff53f3915fe0496490f9875fea3bd375290254","filepath-1.4.2.1","mtl-2.2.2","pretty-1.1.3.6","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-2a240aba380ab68e1884623d77ed4a88ed685ddb9615cc2d3da0054e00f826b2","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"03db065161987f614a3a2bbcd16264f78e47efe231fb5bd161be2043eaf20488","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"data-array-byte-0.1.0.1-d9dda83e05cdc02ac88cc22a3ba90d50910d002ea0597977e3b36db50cb97a49","pkg-name":"data-array-byte","pkg-version":"0.1.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ad89e28b2b046175698fbf542af2ce43e5d2af50aae9f48d12566b1bb3de1d3c","pkg-src-sha256":"1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600","depends":["base-4.14.3.0","deepseq-1.4.4.0","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.4.0","pkg-name":"deepseq","pkg-version":"1.4.4.0","depends":["array-0.5.4.0","base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"directory-1.3.6.0","pkg-name":"directory","pkg-version":"1.3.6.0","depends":["base-4.14.3.0","filepath-1.4.2.1","time-1.9.3","unix-2.7.2.2"]},{"type":"configured","id":"echo-0.1.4-f017006d03acda071f87eb81ed298118d192419036421744381a3e83d0d50f48","pkg-name":"echo","pkg-version":"0.1.4","flags":{"example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ccce771562c49a2b29a52046ca68c62179e97e8fbeacdae32ca84a85445e8f42","pkg-src-sha256":"c9fe1bf2904825a65b667251ec644f197b71dc5c209d2d254be5de3d496b0e43","depends":["base-4.14.3.0","process-1.6.18.0-28f4084bc816db0935a003bd3b4728b865df3c3b7ad5f4bf5b50a396aff656cf"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ed25519-0.0.5.0-4102d940d669a56b216c5ca3e7ba3153a26cdd1810b38c4c08f49740ff9de4ad","pkg-name":"ed25519","pkg-version":"0.0.5.0","flags":{"no-donna":true,"test-doctests":true,"test-hlint":true,"test-properties":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"48383789821af5cc624498f3ee1d0939a070cda9468c0bfe63c951736be81c75","pkg-src-sha256":"d8a5958ebfa9309790efade64275dc5c441b568645c45ceed1b0c6ff36d6156d","depends":["base-4.14.3.0","bytestring-0.10.12.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"edit-distance-0.2.2.1-080b99643aaa59dbaf9bd405d7ff53f3915fe0496490f9875fea3bd375290254","pkg-name":"edit-distance","pkg-version":"0.2.2.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4d33a49cd383d50af090f1b888642d10116e43809f9da6023d9fc6f67d2656ee","pkg-src-sha256":"3e8885ee2f56ad4da940f043ae8f981ee2fe336b5e8e4ba3f7436cff4f526c4a","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","random-1.2.1.1-b872f3388deff3e63fa8625e4b64db91c39eb1fa6bb7eb2a71f43ff049f2830c"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"exceptions-0.10.4","pkg-name":"exceptions","pkg-version":"0.10.4","depends":["base-4.14.3.0","mtl-2.2.2","stm-2.5.0.1","template-haskell-2.16.0.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"filepath-1.4.2.1","pkg-name":"filepath","pkg-version":"1.4.2.1","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"ghc-boot-th-8.10.7","pkg-name":"ghc-boot-th","pkg-version":"8.10.7","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"ghc-prim-0.6.1","pkg-name":"ghc-prim","pkg-version":"0.6.1","depends":[]},{"type":"configured","id":"hackage-security-0.6.2.3-2a59930aa81f942708ad4f1d9aad08e3c17b71808f509c5fe8cfae3e29beb48b","pkg-name":"hackage-security","pkg-version":"0.6.2.3","flags":{"base48":true,"cabal-syntax":true,"lukko":true,"mtl21":false,"old-directory":false,"use-network-uri":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2b2e560ac449e49f86a10d79957b2409da5be4b77edabd7425696780334cf3bf","pkg-src-sha256":"52ee0576971955571d846b8e6c09638f89f4f7881f4a95173e44ccc0d856a066","depends":["Cabal-syntax-3.8.1.0-b915cfc5b689dcee3ff0da5b8645eb84bdc2e94162e5401107d4d2a109ae6373","base-4.14.3.0","base16-bytestring-1.0.2.0-733bc7ff54d4d1205255b2131fae86a7fe07229cb5ada4f2260950334d026547","base64-bytestring-1.2.1.0-1ceca88b1d8a588ade6eab7e0148751072964f9ea42862f670ae020beee1532b","bytestring-0.10.12.0","containers-0.6.5.1","cryptohash-sha256-0.11.102.1-2a240aba380ab68e1884623d77ed4a88ed685ddb9615cc2d3da0054e00f826b2","directory-1.3.6.0","ed25519-0.0.5.0-4102d940d669a56b216c5ca3e7ba3153a26cdd1810b38c4c08f49740ff9de4ad","filepath-1.4.2.1","ghc-prim-0.6.1","lukko-0.1.1.3-175058dba6e76fc42a1227b8a998ec3630fc5a044650ccb155baad5fea2291ff","mtl-2.2.2","network-3.1.4.0-31810b3941ba7a39c57ad4465a156d9552feb0b0dc9374aa6db4b73509c135e0","network-uri-2.6.4.2-512664775d014e86058cdfe34db9c888ac621c84b2dc250f655809aaf578be46","parsec-3.1.14.0","pretty-1.1.3.6","tar-0.5.1.1-643c87cd04d43966ba086abf693a99a6c8e6a74b2250a8c6db6f078672b95893","template-haskell-2.16.0.0","time-1.9.3","transformers-0.5.6.2","zlib-0.6.3.0-74d9ec99f546b67df23ff9fcfa69fbf35a9bddd9a5cf16da9466177d8b057ac5"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hashable-1.4.3.0-0b38c3308404686982e5e2b43e60fe1ab5f9c32b8c8e799c52c8caf95a469cd1","pkg-name":"hashable","pkg-version":"1.4.3.0","flags":{"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f3bf68acfa0df7a064a378ef2cdcfeb55e6fb96100675f4c593556dcbf3d7194","pkg-src-sha256":"32efb16c2891786209b7cbe5c39df9b3a9ae51e836f1a54f646bc4602b7ab0f5","depends":["base-4.14.3.0","base-orphans-0.9.1-5afa3fad682fdc56445f2fff83348e814c91c11da808225c081be9f5ba3bbd42","bytestring-0.10.12.0","containers-0.6.5.1","data-array-byte-0.1.0.1-d9dda83e05cdc02ac88cc22a3ba90d50910d002ea0597977e3b36db50cb97a49","deepseq-1.4.4.0","filepath-1.4.2.1","ghc-prim-0.6.1","integer-gmp-1.0.3.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hsc2hs-0.68.10-e-hsc2hs-667757714a750c154bd4047351c7d1c5379d9b47952d3c07a836f326a045cf4e","pkg-name":"hsc2hs","pkg-version":"0.68.10","flags":{"in-ghc-tree":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"488cca2a179a5141da8f35a3a7e6699a0ef690f834f589d6b152c4947aa8fe2d","pkg-src-sha256":"6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76","depends":["base-4.14.3.0","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.18.0-28f4084bc816db0935a003bd3b4728b865df3c3b7ad5f4bf5b50a396aff656cf"],"exe-depends":[],"component-name":"exe:hsc2hs","bin-file":"/store/ghc-8.10.7/hsc2hs-0.68.10-e-hsc2hs-667757714a750c154bd4047351c7d1c5379d9b47952d3c07a836f326a045cf4e/bin/hsc2hs"},{"type":"pre-existing","id":"integer-gmp-1.0.3.0","pkg-name":"integer-gmp","pkg-version":"1.0.3.0","depends":["ghc-prim-0.6.1"]},{"type":"configured","id":"lukko-0.1.1.3-175058dba6e76fc42a1227b8a998ec3630fc5a044650ccb155baad5fea2291ff","pkg-name":"lukko","pkg-version":"0.1.1.3","flags":{"ofd-locking":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"17786545dce60c4d5783ba6125c0a6499a1abddd3d7417b15500ccd767c35f07","pkg-src-sha256":"a80efb60cfa3dae18682c01980d76d5f7e413e191cd186992e1bf7388d48ab1f","depends":["base-4.14.3.0"],"exe-depends":["hsc2hs-0.68.10-e-hsc2hs-667757714a750c154bd4047351c7d1c5379d9b47952d3c07a836f326a045cf4e"],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.14.3.0","transformers-0.5.6.2"]},{"type":"configured","id":"network-3.1.4.0-31810b3941ba7a39c57ad4465a156d9552feb0b0dc9374aa6db4b73509c135e0","pkg-name":"network","pkg-version":"3.1.4.0","flags":{"devel":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e152cdb03243afb52bbc740cfbe96905ca298a6f6342f0c47b3f2e227ff19def","pkg-src-sha256":"b452a2afac95d9207357eb3820c719c7c7d27871ef4b6ed7bfcd03a036b9158e","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","directory-1.3.6.0"],"exe-depends":["hsc2hs-0.68.10-e-hsc2hs-667757714a750c154bd4047351c7d1c5379d9b47952d3c07a836f326a045cf4e"]}}},{"type":"configured","id":"network-uri-2.6.4.2-512664775d014e86058cdfe34db9c888ac621c84b2dc250f655809aaf578be46","pkg-name":"network-uri","pkg-version":"2.6.4.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6fffb57373962b5651a2db8b0af732098b3bf029a7ced76a9855615de2026588","pkg-src-sha256":"9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228","depends":["base-4.14.3.0","deepseq-1.4.4.0","parsec-3.1.14.0","template-haskell-2.16.0.0","th-compat-0.1.4-e68b2813868be10a140f1cc31b5113ed69a77034f00f4aa43752fe73e721811b"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"parsec-3.1.14.0","pkg-name":"parsec","pkg-version":"3.1.14.0","depends":["base-4.14.3.0","bytestring-0.10.12.0","mtl-2.2.2","text-1.2.4.1"]},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1"]},{"type":"configured","id":"process-1.6.18.0-28f4084bc816db0935a003bd3b4728b865df3c3b7ad5f4bf5b50a396aff656cf","pkg-name":"process","pkg-version":"1.6.18.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cd0a3e0376b5a8525983d3131a31e52f9ffefc278ce635eec45a9d3987b8be3e","pkg-src-sha256":"aa5f4c4fe4974f89f5ab998c7509daa4bda3926cfb06daacd5eba892aad8a37e","components":{"lib":{"depends":["base-4.14.3.0","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","unix-2.7.2.2"],"exe-depends":[]}}},{"type":"configured","id":"random-1.2.1.1-b872f3388deff3e63fa8625e4b64db91c39eb1fa6bb7eb2a71f43ff049f2830c","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e7c1f881159d5cc788619c9ee8b8f340ba2ff0db571cdf3d1a1968ebc5108789","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","mtl-2.2.2","splitmix-0.1.0.5-0e6e46cae31ddf8c25afcce5ef25132ee5a5e94d2cc31382c000a371f20a176e"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"regex-base-0.94.0.2-fe2b37ccad4ad4d57b72ea59bd44841e9fe48b41f3925a58e7776dec1132252a","pkg-name":"regex-base","pkg-version":"0.94.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0322b2fcd1358f3355e0c8608efa60d27b14d1c9d476451dbcb9181363bd8b27","pkg-src-sha256":"7b99408f580f5bb67a1c413e0bc735886608251331ad36322020f2169aea2ef1","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"regex-posix-0.96.0.1-2b78e133dfdc85cf98c18d126955d5e323319db0e0cd2c02535ee368e1e3adde","pkg-name":"regex-posix","pkg-version":"0.96.0.1","flags":{"_regex-posix-clib":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"816d6acc560cb86672f347a7bef8129578dde26ed760f9e79b4976ed9bd7b9fd","pkg-src-sha256":"c7827c391919227711e1cff0a762b1678fd8739f9c902fc183041ff34f59259c","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","regex-base-0.94.0.2-fe2b37ccad4ad4d57b72ea59bd44841e9fe48b41f3925a58e7776dec1132252a"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"resolv-0.2.0.2-bdb32c7f655d10427844dcf40badfe6c12e39ba818147e78f9a1e973e41f6e78","pkg-name":"resolv","pkg-version":"0.2.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4868265ab5760d2fdeb96625b138c8df25d41b9ee2651fa299ed019a69403045","pkg-src-sha256":"880d283df9132a7375fa28670f71e86480a4f49972256dc2a204c648274ae74b","components":{"lib":{"depends":["base-4.14.3.0","base16-bytestring-1.0.2.0-733bc7ff54d4d1205255b2131fae86a7fe07229cb5ada4f2260950334d026547","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1"],"exe-depends":[]}}},{"type":"configured","id":"safe-exceptions-0.1.7.4-1db4b3cf1327cbd19559cac8a1522c8f793394f62c3dab6432f6d8666974d3d6","pkg-name":"safe-exceptions","pkg-version":"0.1.7.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8bb7261bd54bd58acfcb154be6a161fb6d0d31a1852aadc8e927d2ad2d7651d1","pkg-src-sha256":"3c51d8d50c9b60ff8bf94f942fd92e3bea9e62c5afa778dfc9f707b79da41ef6","depends":["base-4.14.3.0","deepseq-1.4.4.0","exceptions-0.10.4","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"splitmix-0.1.0.5-0e6e46cae31ddf8c25afcce5ef25132ee5a5e94d2cc31382c000a371f20a176e","pkg-name":"splitmix","pkg-version":"0.1.0.5","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bac0ae8d46a04e410666b0c8081cff63f060f29157983b569ca86ddb6e6e0dc6","pkg-src-sha256":"9df07a9611ef45f1b1258a0b412f4d02c920248f69d2e2ce8ccda328f7e13002","depends":["base-4.14.3.0","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.0.1","pkg-name":"stm","pkg-version":"2.5.0.1","depends":["array-0.5.4.0","base-4.14.3.0"]},{"type":"configured","id":"tar-0.5.1.1-643c87cd04d43966ba086abf693a99a6c8e6a74b2250a8c6db6f078672b95893","pkg-name":"tar","pkg-version":"0.5.1.1","flags":{"old-bytestring":false,"old-time":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3bbccd643018c7bf53d27740a66d7d5c856923acee960412e6dadff207c5e2ae","pkg-src-sha256":"b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.16.0.0","pkg-name":"template-haskell","pkg-version":"2.16.0.0","depends":["base-4.14.3.0","ghc-boot-th-8.10.7","ghc-prim-0.6.1","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.4.1","pkg-name":"text","pkg-version":"1.2.4.1","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0","template-haskell-2.16.0.0"]},{"type":"configured","id":"th-compat-0.1.4-e68b2813868be10a140f1cc31b5113ed69a77034f00f4aa43752fe73e721811b","pkg-name":"th-compat","pkg-version":"0.1.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3e7d1b8f9c72cab04c8dfdfd26589dd7f31e015ad640a207aca3b654577532ff","pkg-src-sha256":"d8f97ac14ab47b6b8a7b0fdb4ff95426322ec56badd01652ac15da4a44d4bab8","depends":["base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"time-1.9.3","pkg-name":"time","pkg-version":"1.9.3","depends":["base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.14.3.0","bytestring-0.10.12.0","time-1.9.3"]},{"type":"configured","id":"zlib-0.6.3.0-74d9ec99f546b67df23ff9fcfa69fbf35a9bddd9a5cf16da9466177d8b057ac5","pkg-name":"zlib","pkg-version":"0.6.3.0","flags":{"bundled-c-zlib":false,"non-blocking-ffi":false,"pkg-config":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"19eb7759af71957811d5ec10ddb1e2f4c98700ddb9c0da6860c0441d811f0e6d","pkg-src-sha256":"9eaa989ad4534438b5beb51c1d3a4c8f6a088fdff0b259a5394fbf39aaee04da","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"}],"targets":[{"pkg-name":"Cabal","pkg-version":"3.8.1.0","component-name":"lib","available":[{"id":"Cabal-3.8.1.0-254ed15bf5c8a3507521ed173962e284f55d5b289da364545928a13d0408b8e4","component-name":"lib","build-by-default":true}]},{"pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","component-name":"lib","available":[{"id":"Cabal-syntax-3.8.1.0-b915cfc5b689dcee3ff0da5b8645eb84bdc2e94162e5401107d4d2a109ae6373","component-name":"lib","build-by-default":true}]},{"pkg-name":"HTTP","pkg-version":"4000.4.1","component-name":"lib","available":[{"id":"HTTP-4000.4.1-75090b1b9f3cc3003a55f795457e6ac8bd0a05b1dd347188fb0cee06b7543689","component-name":"lib","build-by-default":true}]},{"pkg-name":"HTTP","pkg-version":"4000.4.1","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"array","pkg-version":"0.5.4.0","component-name":"lib","available":[{"id":"array-0.5.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"async","pkg-version":"2.2.4","component-name":"lib","available":[{"id":"async-2.2.4-76ad0185450ead1eb319be2b17f5d4929d4a2036dd6daf6b7e1d375f94098f27","component-name":"lib","build-by-default":true}]},{"pkg-name":"async","pkg-version":"2.2.4","component-name":"exe:concasync","available":["TargetNotBuildable"]},{"pkg-name":"async","pkg-version":"2.2.4","component-name":"exe:conccancel","available":["TargetNotBuildable"]},{"pkg-name":"async","pkg-version":"2.2.4","component-name":"exe:race","available":["TargetNotBuildable"]},{"pkg-name":"async","pkg-version":"2.2.4","component-name":"test:test-async","available":["TargetNotLocal"]},{"pkg-name":"base","pkg-version":"4.14.3.0","component-name":"lib","available":[{"id":"base-4.14.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base-orphans","pkg-version":"0.9.1","component-name":"lib","available":[{"id":"base-orphans-0.9.1-5afa3fad682fdc56445f2fff83348e814c91c11da808225c081be9f5ba3bbd42","component-name":"lib","build-by-default":true}]},{"pkg-name":"base-orphans","pkg-version":"0.9.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","component-name":"lib","available":[{"id":"base16-bytestring-1.0.2.0-733bc7ff54d4d1205255b2131fae86a7fe07229cb5ada4f2260950334d026547","component-name":"lib","build-by-default":true}]},{"pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"base64-bytestring","pkg-version":"1.2.1.0","component-name":"lib","available":[{"id":"base64-bytestring-1.2.1.0-1ceca88b1d8a588ade6eab7e0148751072964f9ea42862f670ae020beee1532b","component-name":"lib","build-by-default":true}]},{"pkg-name":"base64-bytestring","pkg-version":"1.2.1.0","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"base64-bytestring","pkg-version":"1.2.1.0","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"binary","pkg-version":"0.8.8.0","component-name":"lib","available":[{"id":"binary-0.8.8.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring","pkg-version":"0.10.12.0","component-name":"lib","available":[{"id":"bytestring-0.10.12.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"cabal-install","pkg-version":"3.8.1.0","component-name":"lib","available":[{"id":"cabal-install-3.8.1.0-inplace","component-name":"lib","build-by-default":true}]},{"pkg-name":"cabal-install","pkg-version":"3.8.1.0","component-name":"exe:cabal","available":[{"id":"cabal-install-3.8.1.0-inplace-cabal","component-name":"exe:cabal","build-by-default":true}]},{"pkg-name":"cabal-install","pkg-version":"3.8.1.0","component-name":"test:integration-tests2","available":["TargetDisabledByUser"]},{"pkg-name":"cabal-install","pkg-version":"3.8.1.0","component-name":"test:long-tests","available":["TargetDisabledByUser"]},{"pkg-name":"cabal-install","pkg-version":"3.8.1.0","component-name":"test:mem-use-tests","available":["TargetDisabledByUser"]},{"pkg-name":"cabal-install","pkg-version":"3.8.1.0","component-name":"test:unit-tests","available":["TargetDisabledByUser"]},{"pkg-name":"cabal-install-solver","pkg-version":"3.8.1.0","component-name":"lib","available":[{"id":"cabal-install-solver-3.8.1.0-0330e22ac010fe5032765c3fa31d1f807a4db2c832ec8dcbe30dce8aeae51255","component-name":"lib","build-by-default":true}]},{"pkg-name":"cabal-install-solver","pkg-version":"3.8.1.0","component-name":"test:unit-tests","available":["TargetNotLocal"]},{"pkg-name":"containers","pkg-version":"0.6.5.1","component-name":"lib","available":[{"id":"containers-0.6.5.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"lib","available":[{"id":"cryptohash-sha256-0.11.102.1-2a240aba380ab68e1884623d77ed4a88ed685ddb9615cc2d3da0054e00f826b2","component-name":"lib","build-by-default":true}]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"exe:sha256sum","available":["TargetNotBuildable"]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"test:test-sha256","available":["TargetNotLocal"]},{"pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","component-name":"bench:bench-sha256","available":["TargetNotLocal"]},{"pkg-name":"data-array-byte","pkg-version":"0.1.0.1","component-name":"lib","available":[{"id":"data-array-byte-0.1.0.1-d9dda83e05cdc02ac88cc22a3ba90d50910d002ea0597977e3b36db50cb97a49","component-name":"lib","build-by-default":true}]},{"pkg-name":"data-array-byte","pkg-version":"0.1.0.1","component-name":"test:data-array-byte-tests","available":["TargetNotLocal"]},{"pkg-name":"deepseq","pkg-version":"1.4.4.0","component-name":"lib","available":[{"id":"deepseq-1.4.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory","pkg-version":"1.3.6.0","component-name":"lib","available":[{"id":"directory-1.3.6.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"echo","pkg-version":"0.1.4","component-name":"lib","available":[{"id":"echo-0.1.4-f017006d03acda071f87eb81ed298118d192419036421744381a3e83d0d50f48","component-name":"lib","build-by-default":true}]},{"pkg-name":"echo","pkg-version":"0.1.4","component-name":"exe:password","available":["TargetNotBuildable"]},{"pkg-name":"ed25519","pkg-version":"0.0.5.0","component-name":"lib","available":[{"id":"ed25519-0.0.5.0-4102d940d669a56b216c5ca3e7ba3153a26cdd1810b38c4c08f49740ff9de4ad","component-name":"lib","build-by-default":true}]},{"pkg-name":"ed25519","pkg-version":"0.0.5.0","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"ed25519","pkg-version":"0.0.5.0","component-name":"test:hlint","available":["TargetNotLocal"]},{"pkg-name":"ed25519","pkg-version":"0.0.5.0","component-name":"test:properties","available":["TargetNotLocal"]},{"pkg-name":"ed25519","pkg-version":"0.0.5.0","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"edit-distance","pkg-version":"0.2.2.1","component-name":"lib","available":[{"id":"edit-distance-0.2.2.1-080b99643aaa59dbaf9bd405d7ff53f3915fe0496490f9875fea3bd375290254","component-name":"lib","build-by-default":true}]},{"pkg-name":"edit-distance","pkg-version":"0.2.2.1","component-name":"test:edit-distance-tests","available":["TargetNotLocal"]},{"pkg-name":"edit-distance","pkg-version":"0.2.2.1","component-name":"bench:edit-distance-benchmark","available":["TargetNotLocal"]},{"pkg-name":"exceptions","pkg-version":"0.10.4","component-name":"lib","available":[{"id":"exceptions-0.10.4","component-name":"lib","build-by-default":true}]},{"pkg-name":"filepath","pkg-version":"1.4.2.1","component-name":"lib","available":[{"id":"filepath-1.4.2.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-boot-th","pkg-version":"8.10.7","component-name":"lib","available":[{"id":"ghc-boot-th-8.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.6.1","component-name":"lib","available":[{"id":"ghc-prim-0.6.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"hackage-security","pkg-version":"0.6.2.3","component-name":"lib","available":[{"id":"hackage-security-0.6.2.3-2a59930aa81f942708ad4f1d9aad08e3c17b71808f509c5fe8cfae3e29beb48b","component-name":"lib","build-by-default":true}]},{"pkg-name":"hackage-security","pkg-version":"0.6.2.3","component-name":"test:TestSuite","available":["TargetNotLocal"]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"lib","available":[{"id":"hashable-1.4.3.0-0b38c3308404686982e5e2b43e60fe1ab5f9c32b8c8e799c52c8caf95a469cd1","component-name":"lib","build-by-default":true}]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"test:hashable-examples","available":["TargetNotLocal"]},{"pkg-name":"hashable","pkg-version":"1.4.3.0","component-name":"test:hashable-tests","available":["TargetNotLocal"]},{"pkg-name":"hsc2hs","pkg-version":"0.68.10","component-name":"exe:hsc2hs","available":[{"id":"hsc2hs-0.68.10-e-hsc2hs-667757714a750c154bd4047351c7d1c5379d9b47952d3c07a836f326a045cf4e","component-name":"exe:hsc2hs","build-by-default":true}]},{"pkg-name":"hsc2hs","pkg-version":"0.68.10","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"integer-gmp","pkg-version":"1.0.3.0","component-name":"lib","available":[{"id":"integer-gmp-1.0.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"lukko","pkg-version":"0.1.1.3","component-name":"lib","available":[{"id":"lukko-0.1.1.3-175058dba6e76fc42a1227b8a998ec3630fc5a044650ccb155baad5fea2291ff","component-name":"lib","build-by-default":true}]},{"pkg-name":"lukko","pkg-version":"0.1.1.3","component-name":"test:test-process","available":["TargetNotLocal"]},{"pkg-name":"lukko","pkg-version":"0.1.1.3","component-name":"test:test-thread","available":["TargetNotLocal"]},{"pkg-name":"mtl","pkg-version":"2.2.2","component-name":"lib","available":[{"id":"mtl-2.2.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"network","pkg-version":"3.1.4.0","component-name":"lib","available":[{"id":"network-3.1.4.0-31810b3941ba7a39c57ad4465a156d9552feb0b0dc9374aa6db4b73509c135e0","component-name":"lib","build-by-default":true}]},{"pkg-name":"network","pkg-version":"3.1.4.0","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"network-uri","pkg-version":"2.6.4.2","component-name":"lib","available":[{"id":"network-uri-2.6.4.2-512664775d014e86058cdfe34db9c888ac621c84b2dc250f655809aaf578be46","component-name":"lib","build-by-default":true}]},{"pkg-name":"network-uri","pkg-version":"2.6.4.2","component-name":"test:uri","available":["TargetNotLocal"]},{"pkg-name":"network-uri","pkg-version":"2.6.4.2","component-name":"bench:uri-bench","available":["TargetNotLocal"]},{"pkg-name":"parsec","pkg-version":"3.1.14.0","component-name":"lib","available":[{"id":"parsec-3.1.14.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"pretty","pkg-version":"1.1.3.6","component-name":"lib","available":[{"id":"pretty-1.1.3.6","component-name":"lib","build-by-default":true}]},{"pkg-name":"process","pkg-version":"1.6.18.0","component-name":"lib","available":[{"id":"process-1.6.18.0-28f4084bc816db0935a003bd3b4728b865df3c3b7ad5f4bf5b50a396aff656cf","component-name":"lib","build-by-default":true}]},{"pkg-name":"process","pkg-version":"1.6.18.0","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"lib","available":[{"id":"random-1.2.1.1-b872f3388deff3e63fa8625e4b64db91c39eb1fa6bb7eb2a71f43ff049f2830c","component-name":"lib","build-by-default":true}]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:legacy-test","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"test:spec-inspection","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.1.1","component-name":"bench:legacy-bench","available":["TargetNotLocal"]},{"pkg-name":"regex-base","pkg-version":"0.94.0.2","component-name":"lib","available":[{"id":"regex-base-0.94.0.2-fe2b37ccad4ad4d57b72ea59bd44841e9fe48b41f3925a58e7776dec1132252a","component-name":"lib","build-by-default":true}]},{"pkg-name":"regex-posix","pkg-version":"0.96.0.1","component-name":"lib","available":[{"id":"regex-posix-0.96.0.1-2b78e133dfdc85cf98c18d126955d5e323319db0e0cd2c02535ee368e1e3adde","component-name":"lib","build-by-default":true}]},{"pkg-name":"resolv","pkg-version":"0.2.0.2","component-name":"lib","available":[{"id":"resolv-0.2.0.2-bdb32c7f655d10427844dcf40badfe6c12e39ba818147e78f9a1e973e41f6e78","component-name":"lib","build-by-default":true}]},{"pkg-name":"resolv","pkg-version":"0.2.0.2","component-name":"test:resolv.","available":["TargetNotLocal"]},{"pkg-name":"safe-exceptions","pkg-version":"0.1.7.4","component-name":"lib","available":[{"id":"safe-exceptions-0.1.7.4-1db4b3cf1327cbd19559cac8a1522c8f793394f62c3dab6432f6d8666974d3d6","component-name":"lib","build-by-default":true}]},{"pkg-name":"safe-exceptions","pkg-version":"0.1.7.4","component-name":"test:safe-exceptions-test","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"lib","available":[{"id":"splitmix-0.1.0.5-0e6e46cae31ddf8c25afcce5ef25132ee5a5e94d2cc31382c000a371f20a176e","component-name":"lib","build-by-default":true}]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:examples","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:initialization","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:montecarlo-pi","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:montecarlo-pi-32","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-dieharder","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-tests","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"test:splitmix-testu01","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:comparison","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:range","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.5","component-name":"bench:simple-sum","available":["TargetNotLocal"]},{"pkg-name":"stm","pkg-version":"2.5.0.1","component-name":"lib","available":[{"id":"stm-2.5.0.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"tar","pkg-version":"0.5.1.1","component-name":"lib","available":[{"id":"tar-0.5.1.1-643c87cd04d43966ba086abf693a99a6c8e6a74b2250a8c6db6f078672b95893","component-name":"lib","build-by-default":true}]},{"pkg-name":"tar","pkg-version":"0.5.1.1","component-name":"test:properties","available":["TargetNotLocal"]},{"pkg-name":"tar","pkg-version":"0.5.1.1","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"template-haskell","pkg-version":"2.16.0.0","component-name":"lib","available":[{"id":"template-haskell-2.16.0.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"text","pkg-version":"1.2.4.1","component-name":"lib","available":[{"id":"text-1.2.4.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"th-compat","pkg-version":"0.1.4","component-name":"lib","available":[{"id":"th-compat-0.1.4-e68b2813868be10a140f1cc31b5113ed69a77034f00f4aa43752fe73e721811b","component-name":"lib","build-by-default":true}]},{"pkg-name":"th-compat","pkg-version":"0.1.4","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"time","pkg-version":"1.9.3","component-name":"lib","available":[{"id":"time-1.9.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers","pkg-version":"0.5.6.2","component-name":"lib","available":[{"id":"transformers-0.5.6.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix","pkg-version":"2.7.2.2","component-name":"lib","available":[{"id":"unix-2.7.2.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"zlib","pkg-version":"0.6.3.0","component-name":"lib","available":[{"id":"zlib-0.6.3.0-74d9ec99f546b67df23ff9fcfa69fbf35a9bddd9a5cf16da9466177d8b057ac5","component-name":"lib","build-by-default":true}]},{"pkg-name":"zlib","pkg-version":"0.6.3.0","component-name":"test:tests","available":["TargetNotLocal"]}]} \ No newline at end of file diff --git a/materialized/ghcjs/ghc8107/plan.json b/materialized/ghcjs/ghc8107/plan.json index b41b8c34e4..4ba83e3b03 100644 --- a/materialized/ghcjs/ghc8107/plan.json +++ b/materialized/ghcjs/ghc8107/plan.json @@ -1 +1 @@ -{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-8.10.7","os":"osx","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.2.1.0","pkg-name":"Cabal","pkg-version":"3.2.1.0","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","mtl-2.2.2","parsec-3.1.14.0","pretty-1.1.3.6","process-1.6.13.2","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"HUnt-1.6.2.0-b7015290","pkg-name":"HUnit","pkg-version":"1.6.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1a79174e8af616117ad39464cac9de205ca923da6582825e97c10786fda933a4","pkg-src-sha256":"b0b7538871ffc058486fc00740886d2f3172f8fa6869936bfe83a5e10bd744ab","depends":["base-4.14.3.0","cll-stck-0.3.0-7605e60f","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"SHA-1.6.4.4-47cba51b","pkg-name":"SHA","pkg-version":"1.6.4.4","flags":{"exe":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3b7523df3e2186ae8c5ac78c745efb586814afe9c775b886a747556d9f4d429c","pkg-src-sha256":"6bd950df6b11a3998bb1452d875d2da043ee43385459afc5f16d471d25178b44","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"SttVr-1.2.1-9a4219da","pkg-name":"StateVar","pkg-version":"1.2.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b8bea664120dc78f5c15d9b8c0947d51dbc58a0b63ee49971fa7caac9f3e0845","pkg-src-sha256":"ee261552912b60d8b937f0253615e310e6cc25f9c407001b3bcc2e3d55000f8b","depends":["base-4.14.3.0","stm-2.5.0.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"base-4.14.3.0","pkg-name":"base","pkg-version":"4.14.3.0","depends":["ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"configured","id":"bfnctrs-5.5.7-195e3fe2","pkg-name":"bifunctors","pkg-version":"5.5.7","flags":{"semigroups":true,"tagged":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"19d907460f166ade334e9d85d7c0bcc58b57da5e8f802b28bba6d8d81fd3ee70","pkg-src-sha256":"88b3a2d4504e1139a3aef7027913faa0870631477d0a2ebb6fa67d494cdb3532","depends":["base-4.14.3.0","bs-rphns-0.8.4-c8f36af6","cmnd-5.0.8-89fd52db","containers-0.6.5.1","tggd-0.8.6.1-22e9a365","template-haskell-2.16.0.0","th-bstrctn-0.3.2.0-ed858cb3","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.8.0","pkg-name":"binary","pkg-version":"0.8.8.0","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","ghc-prim-0.6.1"]},{"type":"configured","id":"blz-bldr-0.4.2.1-f5d6708e","pkg-name":"blaze-builder","pkg-version":"0.4.2.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c1830d7b52910b4569162d4fad27da510bd6a4b43c94da1e9ec0712bebc36121","pkg-src-sha256":"6e6889bc9c3ff92062a17f3825dcc1b28510d261334d4d4e177232d904ea0b06","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"blz-html-0.9.1.2-11bdfacd","pkg-name":"blaze-html","pkg-version":"0.9.1.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"49db3eb70fa93fb572f3a9233b542b59e7f766a2b95c92d01d95a596c7727473","pkg-src-sha256":"60503f42546c6c1b954014d188ea137e43d74dcffd2bf6157c113fd91a0c394c","depends":["base-4.14.3.0","blz-bldr-0.4.2.1-f5d6708e","blz-mrkp-0.8.2.8-65ba3032","bytestring-0.10.12.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"blz-mrkp-0.8.2.8-65ba3032","pkg-name":"blaze-markup","pkg-version":"0.8.2.8","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b5916c6f0899d4d0094bed54af7397a8042fa3255e8ef459ab2cdf83a0c938e6","pkg-src-sha256":"43fc3f6872dc8d1be8d0fe091bd4775139b42179987f33d6490a7c5f1e07a349","depends":["base-4.14.3.0","blz-bldr-0.4.2.1-f5d6708e","bytestring-0.10.12.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"bs-cmpt-0.11.2-d5806554","pkg-name":"base-compat","pkg-version":"0.11.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f95374022a56e8c74a289e2b70ec50a1365f58b5f1f50f5c7f0fc14edf88f30e","pkg-src-sha256":"53a6b5145442fba5a4bad6db2bcdede17f164642b48bc39b95015422a39adbdb","depends":["base-4.14.3.0","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"bs-cmpt-bttrs-0.11.2-60bdc7ba","pkg-name":"base-compat-batteries","pkg-version":"0.11.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"eb3b976007754ddc16e8d4afacdd1e575ae746edb57dcd0a1a728ccd4b372a69","pkg-src-sha256":"31e066a5aa96af94fe6465adb959c38d63a49e01357641aa4322c754a94d3023","depends":["base-4.14.3.0","bs-cmpt-0.11.2-d5806554"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"bs-rphns-0.8.4-c8f36af6","pkg-name":"base-orphans","pkg-version":"0.8.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9a70dc95761ab9a9d49a038a4599b7b7945d486d80ed1678f347445bc336f3e0","pkg-src-sha256":"37b2b59356c03400a2d509862677393c5ff706a0aabf826c104f6fe03d93bbb3","depends":["base-4.14.3.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"bs16-bytstrng-0.1.1.7-df2561c0","pkg-name":"base16-bytestring","pkg-version":"0.1.1.7","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0021256a9628971c08da95cb8f4d0d72192f3bb8a7b30b55c080562d17c43dd3","pkg-src-sha256":"525689679d5cc80fa532c1d5cfeace0f62bbb54134fad514f1ba00d0e7fe69ba","depends":["base-4.14.3.0","bytestring-0.10.12.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"bs64-bytstrng-1.0.0.3-4e6d0aeb","pkg-name":"base64-bytestring","pkg-version":"1.0.0.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d5027ea6d63eab27cfa34eb1f5a05b6a5ee521dd176a06da3f7d80e117a88259","pkg-src-sha256":"ef159d60ec14c0a3f3e26bab5c9fd7634d5e1b983c6a64f0b0c3261efe008fc7","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"bsb-http-chnkd-0.0.0.4-fe7d15c6","pkg-name":"bsb-http-chunked","pkg-version":"0.0.0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"add530e695ea3058bf4f7156a1ca85653ff3635b87ec6d1be8c4891645190f96","pkg-src-sha256":"148309e23eb8b261c1de374712372d62d8c8dc8ee504c392809c7ec33c0a0e7c","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"bsmnt-0.0.11-f050f8fa","pkg-name":"basement","pkg-version":"0.0.11","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b685783bd7eeed832c47ebbd48599d9c45dccbc2380dd9295e137a30b37ecdc6","pkg-src-sha256":"67582b3475a5547925399f719df21f8bbbd0ca4d4db27795c22a474f8ee6346b","depends":["base-4.14.3.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"bytbl-0.1.1-2633b450","pkg-name":"byteable","pkg-version":"0.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"12eeda93251d4b5d510ac95cf578f5c89d4a399b14ca73116deaf4921a516fdf","pkg-src-sha256":"243b34a1b5b64b39e39fe58f75c18f6cad5b668b10cabcd86816cbde27783fe2","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"bytestring-0.10.12.0","pkg-name":"bytestring","pkg-version":"0.10.12.0","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"configured","id":"bytrdr-1.0.4-81c9a110","pkg-name":"byteorder","pkg-version":"1.0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a952817dcbe20af0346fb55a28c13e95e2ddbf3e99f9b4fffdc063f150f13b20","pkg-src-sha256":"bd20bbb586947f99c38a4c93d9d0266f49f6fc581767b51ba568f6d5d52d2919","components":{"lib":{"depends":["base-4.14.3.0"],"exe-depends":[]}}},{"type":"configured","id":"bytstrng-bldr-0.10.8.2.0-4ab17831","pkg-name":"bytestring-builder","pkg-version":"0.10.8.2.0","flags":{"bytestring_has_builder":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6b2b812cdac53f5a2c82376a416dde04adbb5ca3e1604c0d075368a0498f762b","pkg-src-sha256":"27faef6db27c5be5a3715fd68b93725853e0e668849eaf92ce7c33cef9cb2c3f","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cbl-dctst-1.0.8-001accad","pkg-name":"cabal-doctest","pkg-version":"1.0.8","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8bd1d614fb65f0d52609da30bf8e5ec71a4b6adf8ff5610edb3cb4d114576117","pkg-src-sha256":"2026a6a87d410202ce091412ca6bc33c5aca787025326b4a3d13425a23392e0e","depends":["Cabal-3.2.1.0","base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ck-0.4.5-cfccc30b","pkg-name":"cookie","pkg-version":"0.4.5","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"22bbe2bea34cfc546eaca2468386035fec521b8dbae52f5aa2f994ed68b35e0e","pkg-src-sha256":"707f94d1b31018b91d6a1e9e19ef5413e20d02cab00ad93a5fd7d7b3b46a3583","depends":["base-4.14.3.0","bytestring-0.10.12.0","dt-dflt-clss-0.1.2.0-b0a51f50","deepseq-1.4.4.0","text-1.2.4.1","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"clck-0.8.2-55eb42a0","pkg-name":"clock","pkg-version":"0.8.2","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"473ffd59765cc67634bdc55b63c699a85addf3a024089073ec2a862881e83e2a","pkg-src-sha256":"0b5db110c703e68b251d5883253a934b012110b45393fc65df1b095eb9a4e461","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cll-stck-0.3.0-7605e60f","pkg-name":"call-stack","pkg-version":"0.3.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dc369179410fd39542efde04778d1c4a18a015b3cf4b1703d9c88e07d58ece20","pkg-src-sha256":"b80e8de2b87f01922b23b328655ad2f843f42495f3e1033ae907aade603c716a","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"clr-2.3.5-3ce536bf","pkg-name":"colour","pkg-version":"2.3.5","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b27db0a3ad40d70bdbd8510a104269f8707592e80757a1abc66a22ba25e5a42f","pkg-src-sha256":"3b8d471979617dce7c193523743c9782df63433d8e87e3ef6d97922e0da104e7","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cmnd-5.0.8-89fd52db","pkg-name":"comonad","pkg-version":"5.0.8","flags":{"containers":true,"distributive":true,"indexed-traversable":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a3a140be7a21d6ba16bf9102bf4c79455ff3213679311587bac45ba0723c8d7a","pkg-src-sha256":"ef6cdf2cc292cc43ee6aa96c581b235fdea8ab44a0bffb24dc79ae2b2ef33d13","depends":["base-4.14.3.0","containers-0.6.5.1","dstrbtv-0.6.2.1-27e474d4","ndxd-trvrsbl-0.1.1-5423d452","tggd-0.8.6.1-22e9a365","transformers-0.5.6.2","trnsfrmrs-cmpt-0.6.6-c2257ba9"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cndt-1.3.4.1-7277901b","pkg-name":"conduit","pkg-version":"1.3.4.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"eeabaf3f822e3e15317995766f50ef4a20371bdc3bb4721a7541e37228018dcf","pkg-src-sha256":"85743b8d5f2d5779ccb7459b5a919c5786707af23fe7a065d281ee8e6dc226f1","depends":["base-4.14.3.0","bytestring-0.10.12.0","directory-1.3.6.0","exceptions-0.10.4","filepath-1.4.2.1","mn-trvrsbl-1.0.15.1-62aa4220","mtl-2.2.2","prmtv-0.7.1.0-9e5d8d36","rsrct-1.2.4.2-8c58f12d","text-1.2.4.1","transformers-0.5.6.2","unix-2.7.2.2","nlft-cr-0.2.0.1-0ed8000c","vctr-0.12.2.0-9301e615"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cnstrnts-0.13-1b93bc9d","pkg-name":"constraints","pkg-version":"0.13","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d341eb4adbf712f928706928d23a173fb3d0976f0dfaf6a274958975d5fc9e75","pkg-src-sha256":"9259af54682f2673931978d96074c147406b1e18bd9111903fcaefe9252a6590","depends":["base-4.14.3.0","binary-0.8.8.0","deepseq-1.4.4.0","ghc-prim-0.6.1","hshbl-1.3.1.0-81a7e86a","mtl-2.2.2","transformers-0.5.6.2","trnsfrmrs-cmpt-0.6.6-c2257ba9","typ-qlty-1-8a20443f"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cntrvrnt-1.5.3-cf62fb3c","pkg-name":"contravariant","pkg-version":"1.5.3","flags":{"semigroups":true,"statevar":true,"tagged":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e59a7742e725f94fc6578e3593cd3f6d4e3d46a9510c3a782e5fe5e5f238e3ce","pkg-src-sha256":"44536f0e331fde471271937323dc90409e95d47f57e42657fdaf242a0fd65dc1","depends":["SttVr-1.2.1-9a4219da","base-4.14.3.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"configured","id":"crypthsh-0.11.9-7a1d901a","pkg-name":"cryptohash","pkg-version":"0.11.9","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59d9494ba0cc9eef087ecba2e12e4d3e2d3b0327dd1542af552e3dca0e7de70d","pkg-src-sha256":"c28f847fc1fcd65b6eea2e74a100300af940919f04bb21d391f6a773968f22fb","depends":["base-4.14.3.0","bytbl-0.1.1-2633b450","bytestring-0.10.12.0","cryptnt-0.28-dfdefa25","ghc-prim-0.6.1","mmry-0.15.0-1ae4b367"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cryptnt-0.28-dfdefa25","pkg-name":"cryptonite","pkg-version":"0.28","flags":{"check_alignment":false,"integer-gmp":true,"old_toolchain_inliner":false,"support_aesni":true,"support_deepseq":true,"support_pclmuldq":false,"support_rdrand":true,"support_sse":false,"use_target_attributes":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b6c75e62b4c655d4cb1bcbb80d01430d136aac32bd6962c86c84738935cc8f9d","pkg-src-sha256":"74ad886ae3f7cd6cadecb596707e49df37b0170ceed313e382bd15b13132a5db","depends":["base-4.14.3.0","bsmnt-0.0.11-f050f8fa","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0","mmry-0.15.0-1ae4b367"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cs-nsnstv-1.2.1.0-0f0c5d1c","pkg-name":"case-insensitive","pkg-version":"1.2.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9dfd3171fc7698cf8d931727d3af3a7b389135b583e46b5adac1f9d2026fff61","pkg-src-sha256":"296dc17e0c5f3dfb3d82ced83e4c9c44c338ecde749b278b6eae512f1d04e406","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","hshbl-1.3.1.0-81a7e86a","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"d-typs-1.0.4-6e509a2f","pkg-name":"uuid-types","pkg-version":"1.0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"34de8cf688e30f668cba5e5d79e907eb7f65bca2538ce927fddb42d74840036b","pkg-src-sha256":"c2aa2ccaa3a74259aca1f57cc1c277822086430814ce5e4f38cfd868fe48ec06","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","deepseq-1.4.4.0","hshbl-1.3.1.0-81a7e86a","rndm-1.2.0-5f8e0010","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.4.0","pkg-name":"deepseq","pkg-version":"1.4.4.0","depends":["array-0.5.4.0","base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"configured","id":"dgst-0.0.1.2-33c1e67d","pkg-name":"digest","pkg-version":"0.0.1.2","flags":{"bytestring-in-base":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d3c2a49e25bb3b0228ddb063493b80adcfc26625f9ebbe4a89dd4fbb4339d1bc","pkg-src-sha256":"641717eb16392abf8965986a9e8dc21eebf1d97775bbb6923c7b7f8fee17fe11","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[]}}},{"type":"pre-existing","id":"directory-1.3.6.0","pkg-name":"directory","pkg-version":"1.3.6.0","depends":["base-4.14.3.0","filepath-1.4.2.1","time-1.9.3","unix-2.7.2.2"]},{"type":"configured","id":"djnctns-4.4-a26f282f","pkg-name":"adjunctions","pkg-version":"4.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2738dd5f5d5e93749adb14a05472e58a96a75d0f299e46371c6f46dc4e97daf9","pkg-src-sha256":"507c2ef55337ae61c805f8cbc1213dfd7d2b85187342675d662254b8d8a16ae9","depends":["array-0.5.4.0","base-4.14.3.0","cmnd-5.0.8-89fd52db","containers-0.6.5.1","cntrvrnt-1.5.3-cf62fb3c","dstrbtv-0.6.2.1-27e474d4","fr-5.1.3-805aa632","mtl-2.2.2","prfnctrs-5.6-bf1267af","smgrpds-5.3.4-9d8fc753","smgrps-0.19.1-253fa398","tggd-0.8.6.1-22e9a365","transformers-0.5.6.2","trnsfrmrs-cmpt-0.6.6-c2257ba9","vd-0.7.3-3b10c00c"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"dlst-0.8.0.8-96990b97","pkg-name":"dlist","pkg-version":"0.8.0.8","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"90ca348bffdc62d7070bcf0e97c728f8d01b24fbc7ea08d2909157d0da76534c","pkg-src-sha256":"7129cf18068d3384e305708a10426ab8f573bee1030b023a114f45f1d0ec496d","depends":["base-4.14.3.0","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"drctry-tr-0.12.1-591e4ce7","pkg-name":"directory-tree","pkg-version":"0.12.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6f24ee1eca965a199a96f853582e61a338f1a529c87bc02c7f1451e2f2ed03fe","pkg-src-sha256":"e2084495b3a226cf54d949635c86fc14e89daa09d86cce39e3c3cf898ae6e517","depends":["base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"dstrbtv-0.6.2.1-27e474d4","pkg-name":"distributive","pkg-version":"0.6.2.1","flags":{"semigroups":true,"tagged":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2823eff05c6b093492efe804027e7cf82757221f934964c76106ac3248899b89","pkg-src-sha256":"d7351392e078f58caa46630a4b9c643e1e2e9dddee45848c5c8358e7b1316b91","depends":["base-4.14.3.0","bs-rphns-0.8.4-c8f36af6","tggd-0.8.6.1-22e9a365","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"dt-dflt-0.7.1.1-2f50bc38","pkg-name":"data-default","pkg-version":"0.7.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2804e8d14f521a1edee88b68b66347448e7f3b685868290fdc55930e4471f5a9","pkg-src-sha256":"b0f95d279cd75cacaa8152a01590dc3460f7134f6840b37052abb3ba3cb2a511","components":{"lib":{"depends":["base-4.14.3.0","dt-dflt-clss-0.1.2.0-b0a51f50","dt-dflt-nstncs-cntnrs-0.0.1-6a172060","dt-dflt-nstncs-dlst-0.0.1-aafdaf2f","dt-dflt-nstncs-ld-lcl-0.0.1-7e7191a8"],"exe-depends":[]}}},{"type":"configured","id":"dt-dflt-clss-0.1.2.0-b0a51f50","pkg-name":"data-default-class","pkg-version":"0.1.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"63e62120b7efd733a5a17cf59ceb43268e9a929c748127172d7d42f4a336e327","pkg-src-sha256":"4f01b423f000c3e069aaf52a348564a6536797f31498bb85c3db4bd2d0973e56","components":{"lib":{"depends":["base-4.14.3.0"],"exe-depends":[]}}},{"type":"configured","id":"dt-dflt-nstncs-cntnrs-0.0.1-6a172060","pkg-name":"data-default-instances-containers","pkg-version":"0.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6e1f4b28028a3bc455aaf4b5a9104b71ea72cff78b1b8041863df7afd1a8deb3","pkg-src-sha256":"a55e07af005c9815d82f3fc95e125db82994377c9f4a769428878701d4ec081a","components":{"lib":{"depends":["base-4.14.3.0","containers-0.6.5.1","dt-dflt-clss-0.1.2.0-b0a51f50"],"exe-depends":[]}}},{"type":"configured","id":"dt-dflt-nstncs-dlst-0.0.1-aafdaf2f","pkg-name":"data-default-instances-dlist","pkg-version":"0.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4286abacbb256c392907701be16986a6e07f2beaf2778e7bd925465655d9e301","pkg-src-sha256":"7d683711cbf08abd7adcd5ac2be825381308d220397315a5570fe61b719b5959","components":{"lib":{"depends":["base-4.14.3.0","dt-dflt-clss-0.1.2.0-b0a51f50","dlst-0.8.0.8-96990b97"],"exe-depends":[]}}},{"type":"configured","id":"dt-dflt-nstncs-ld-lcl-0.0.1-7e7191a8","pkg-name":"data-default-instances-old-locale","pkg-version":"0.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d4a757f68f0f83531fcb34a4525fe6769c54a45182e28ffdfff19c2b0ace42fb","pkg-src-sha256":"60d3b02922958c4908d7bf2b24ddf61511665745f784227d206745784b0c0802","components":{"lib":{"depends":["base-4.14.3.0","dt-dflt-clss-0.1.2.0-b0a51f50","ld-lcl-1.0.0.7-fbd769ce"],"exe-depends":[]}}},{"type":"pre-existing","id":"exceptions-0.10.4","pkg-name":"exceptions","pkg-version":"0.10.4","depends":["base-4.14.3.0","mtl-2.2.2","stm-2.5.0.1","template-haskell-2.16.0.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"filepath-1.4.2.1","pkg-name":"filepath","pkg-version":"1.4.2.1","depends":["base-4.14.3.0"]},{"type":"configured","id":"fl-mbd-0.0.13.0-7552374e","pkg-name":"file-embed","pkg-version":"0.0.13.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a819e90b91cab919ffef5895ab6e1b2a44eac395a585f489b0c289a4a12d1c54","pkg-src-sha256":"d13068abb0bd22c5d118164734a097dc591977b2c7561d912af9097803c6e1ea","depends":["base-4.14.3.0","bytestring-0.10.12.0","directory-1.3.6.0","filepath-1.4.2.1","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"fr-5.1.3-805aa632","pkg-name":"free","pkg-version":"5.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"604c27b6ba0a560c8a1377ad76e5bbb8528e924d6b0590215d815faddbec0b70","pkg-src-sha256":"2c70d66e3a1ad52ce4b22d5510ffc6d7b3db950bd7f43bc61801cfe7b24c2e2d","depends":["base-4.14.3.0","cmnd-5.0.8-89fd52db","containers-0.6.5.1","dstrbtv-0.6.2.1-27e474d4","exceptions-0.10.4","mtl-2.2.2","prfnctrs-5.6-bf1267af","smgrpds-5.3.4-9d8fc753","template-haskell-2.16.0.0","transformers-0.5.6.2","trnsfrmrs-bs-0.4.5.2-3f76eadc"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"fst-lggr-3.0.3-b2e892ac","pkg-name":"fast-logger","pkg-version":"3.0.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"936f28014b9bea19c4cf74e85fa534ba19250ef1511e0ad51c086d968fdcb701","pkg-src-sha256":"5763a0321053ecaba2d1040800bae9988f52b813fb08d5276ea7ce10e3d2f068","depends":["array-0.5.4.0","t-pdt-0.1.6-34d65238","base-4.14.3.0","bytestring-0.10.12.0","directory-1.3.6.0","sy-fl-0.2.2-c2329e48","filepath-1.4.2.1","text-1.2.4.1","nx-cmpt-0.5.3-a704442d","nx-tm-0.4.7-387b5d59"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-boot-8.10.7","pkg-name":"ghc-boot","pkg-version":"8.10.7","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","ghc-boot-th-8.10.7"]},{"type":"pre-existing","id":"ghc-boot-th-8.10.7","pkg-name":"ghc-boot-th","pkg-version":"8.10.7","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"ghc-compact-0.1.0.0","pkg-name":"ghc-compact","pkg-version":"0.1.0.0","depends":["base-4.14.3.0","bytestring-0.10.12.0","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"ghc-heap-8.10.7","pkg-name":"ghc-heap","pkg-version":"8.10.7","depends":["base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"ghc-prim-0.6.1","pkg-name":"ghc-prim","pkg-version":"0.6.1","depends":[]},{"type":"configured","id":"ghc-pths-0.1.0.12-22eabb95","pkg-name":"ghc-paths","pkg-version":"0.1.0.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"afdfdb6584f39e821b2b7130e12007bf3ad87401d86f5105eead059c150dc81d","pkg-src-sha256":"6ecbe676d073cb07989c61ce4c5709c4e67cbefdd2d55a4095f9388b6fe2c484","components":{"lib":{"depends":["base-4.14.3.0"],"exe-depends":[]},"setup":{"depends":["Cabal-3.2.1.0","base-4.14.3.0","directory-1.3.6.0"],"exe-depends":[]}}},{"type":"pre-existing","id":"ghci-8.10.7","pkg-name":"ghci","pkg-version":"8.10.7","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","filepath-1.4.2.1","ghc-boot-8.10.7","ghc-boot-th-8.10.7","ghc-heap-8.10.7","template-haskell-2.16.0.0","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"ghcjs-8.10.7-inplace","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7","build-info":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/build-info.json","depends":["Cabal-3.2.1.0","sn-1.4.7.1-f545389d","array-0.5.4.0","ttprsc-0.13.2.5-bfdb3102","base-4.14.3.0","bs16-bytstrng-0.1.1.7-df2561c0","bs64-bytstrng-1.0.0.3-4e6d0aeb","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","crypthsh-0.11.9-7a1d901a","dt-dflt-0.7.1.1-2f50bc38","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","ghc-boot-8.10.7","ghc-boot-th-8.10.7","ghc-compact-0.1.0.0","ghc-heap-8.10.7","ghc-pths-0.1.0.12-22eabb95","ghci-8.10.7","hshbl-1.3.1.0-81a7e86a","hpc-0.6.1.0","lns-4.19.2-261cde91","mtl-2.2.2","ptprs-pplctv-0.15.1.0-84e62b2b","prlll-3.2.2.0-ba7f78ce","parsec-3.1.14.0","process-1.6.13.2","sf-0.3.19-acedf167","splt-0.2.3.4-d58cb8cf","strngsrch-0.3.6.6-d69f1338","syb-0.7.2.1-ad42e2f3","template-haskell-2.16.0.0","terminfo-0.4.1.4","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2","nrdrd-cntnrs-0.2.13.0-86a72f83","vctr-0.12.2.0-9301e615","wl-pprnt-txt-1.2.0.1-c0ba3a44","yml-0.11.5.0-e85230ae"],"exe-depends":["hppy-1.20.0-c7a066ac"],"component-name":"lib"},{"type":"configured","id":"ghcjs-8.10.7-inplace-ghcjs","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs","build-info":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs/build-info.json","depends":["base-4.14.3.0","ghcjs-8.10.7-inplace"],"exe-depends":[],"component-name":"exe:ghcjs","bin-file":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs/build/ghcjs/ghcjs"},{"type":"configured","id":"ghcjs-8.10.7-inplace-ghcjs-boot","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-boot","build-info":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-boot/build-info.json","depends":["Cabal-3.2.1.0","sn-1.4.7.1-f545389d","base-4.14.3.0","bytestring-0.10.12.0","directory-1.3.6.0","xctbl-pth-0.0.3.1-a4e5146e","filepath-1.4.2.1","ghcjs-8.10.7-inplace","lns-4.19.2-261cde91","mtl-2.2.2","ptprs-pplctv-0.15.1.0-84e62b2b","process-1.6.13.2","tr-0.5.1.1-52757773","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","nx-cmpt-0.5.3-a704442d","nrdrd-cntnrs-0.2.13.0-86a72f83","vctr-0.12.2.0-9301e615","yml-0.11.5.0-e85230ae"],"exe-depends":[],"component-name":"exe:ghcjs-boot","bin-file":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-boot/build/ghcjs-boot/ghcjs-boot"},{"type":"configured","id":"ghcjs-8.10.7-inplace-ghcjs-dumparchive","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-dumparchive","build-info":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-dumparchive/build-info.json","depends":["base-4.14.3.0","bytestring-0.10.12.0","filepath-1.4.2.1","ghcjs-8.10.7-inplace","text-1.2.4.1"],"exe-depends":[],"component-name":"exe:ghcjs-dumparchive","bin-file":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-dumparchive/build/ghcjs-dumparchive/ghcjs-dumparchive"},{"type":"configured","id":"ghcjs-8.10.7-inplace-ghcjs-pkg","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-pkg","build-info":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-pkg/build-info.json","depends":["Cabal-3.2.1.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","ghc-boot-8.10.7","ghcjs-8.10.7-inplace","process-1.6.13.2","terminfo-0.4.1.4","unix-2.7.2.2"],"exe-depends":[],"component-name":"exe:ghcjs-pkg","bin-file":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-pkg/build/ghcjs-pkg/ghcjs-pkg"},{"type":"configured","id":"ghcjs-8.10.7-inplace-haddock","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/haddock","build-info":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/haddock/build-info.json","depends":["Cabal-3.2.1.0","array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","ghc-boot-8.10.7","ghcjs-8.10.7-inplace","parsec-3.1.14.0","text-1.2.4.1","transformers-0.5.6.2","xhtml-3000.2.2.1"],"exe-depends":[],"component-name":"exe:haddock","bin-file":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/haddock/build/haddock/haddock"},{"type":"configured","id":"ghcjs-8.10.7-inplace-private-ghcjs-hsc2hs","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-hsc2hs","build-info":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-hsc2hs/build-info.json","depends":["base-4.14.3.0","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.13.2"],"exe-depends":[],"component-name":"exe:private-ghcjs-hsc2hs","bin-file":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-hsc2hs/build/private-ghcjs-hsc2hs/private-ghcjs-hsc2hs"},{"type":"configured","id":"ghcjs-8.10.7-inplace-private-ghcjs-run","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-run","build-info":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-run/build-info.json","depends":["base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.13.2"],"exe-depends":[],"component-name":"exe:private-ghcjs-run","bin-file":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-run/build/private-ghcjs-run/private-ghcjs-run"},{"type":"configured","id":"ghcjs-8.10.7-inplace-private-ghcjs-unlit","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-unlit","build-info":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-unlit/build-info.json","depends":[],"exe-depends":[],"component-name":"exe:private-ghcjs-unlit","bin-file":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-unlit/build/private-ghcjs-unlit/private-ghcjs-unlit"},{"type":"configured","id":"ghcjs-8.10.7-inplace-test","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/t/test","build-info":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/t/test/build-info.json","depends":["HUnt-1.6.2.0-b7015290","sn-1.4.7.1-f545389d","base-4.14.3.0","bytestring-0.10.12.0","dt-dflt-0.7.1.1-2f50bc38","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","http-typs-0.12.3-c2432fef","lns-4.19.2-261cde91","lftd-bs-0.2.3.12-0139ca1f","ntwrk-3.1.2.1-08b0c5d8","ptprs-pplctv-0.15.1.0-84e62b2b","process-1.6.13.2","rndm-1.2.0-5f8e0010","shlly-1.9.0-4138217d","tst-frmwrk-0.8.2.0-541e50fd","tst-frmwrk-hnt-0.3.0.2-b7e00943","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","nrdrd-cntnrs-0.2.13.0-86a72f83","w-3.2.3-c218a955","w-pp-sttc-3.1.7.2-f457c4cc","w-xtr-3.0.32-450e0b45","w-wbsckts-3.0.1.2-9328eaa1","wrp-3.3.14-d90ecb38","wbdrvr-0.9.0.1-8c8bf380","wbsckts-0.12.7.2-af5140c4","yml-0.11.5.0-e85230ae"],"exe-depends":[],"component-name":"test:test","bin-file":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-8.10.7/t/test/build/test/test"},{"type":"configured","id":"ghcjs-th-0.1.0.0-inplace","pkg-name":"ghcjs-th","pkg-version":"0.1.0.0","flags":{"use-host-template-haskell":true},"style":"local","pkg-src":{"type":"local","path":"./lib/ghcjs-th"},"dist-dir":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-th-0.1.0.0","build-info":"./dist-newstyle/build/x86_64-osx/ghc-8.10.7/ghcjs-th-0.1.0.0/build-info.json","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","ghc-prim-0.6.1","ghci-8.10.7","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"hpc-0.6.1.0","pkg-name":"hpc","pkg-version":"0.6.1.0","depends":["base-4.14.3.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","time-1.9.3"]},{"type":"configured","id":"hppy-1.20.0-c7a066ac","pkg-name":"happy","pkg-version":"1.20.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f99e612b29d68d784d7e193943a13466f0923de69452a2585081491efed0436b","pkg-src-sha256":"3b1d3a8f93a2723b554d9f07b2cd136be1a7b2fcab1855b12b7aab5cbac8868c","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","mtl-2.2.2"],"exe-depends":[],"component-name":"exe:happy","bin-file":"/store/ghc-8.10.7/hppy-1.20.0-c7a066ac/bin/happy"},{"type":"configured","id":"hrglss-0.2.12-94395846","pkg-name":"hourglass","pkg-version":"0.2.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e083f5e030dfebe432e30a9c0fa07a99a54eac992f622442646be561fd7a44e8","pkg-src-sha256":"44335b5c402e80c60f1db6a74462be4ea29d1a9043aa994334ffee1164f1ca4a","depends":["base-4.14.3.0","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hsc2hs-0.68.7-83233b7f","pkg-name":"hsc2hs","pkg-version":"0.68.7","flags":{"in-ghc-tree":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4a0f6860a17e7c245646975e3c2981416afdcb6a7b3553c31005eb3641a7f55b","pkg-src-sha256":"fd7915e41e3ed3bc7750fee0e8add2b4f32dcac8b7c544cfdf5542293223894a","depends":["base-4.14.3.0","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.13.2"],"exe-depends":[],"component-name":"exe:hsc2hs","bin-file":"/store/ghc-8.10.7/hsc2hs-0.68.7-83233b7f/bin/hsc2hs"},{"type":"configured","id":"hshbl-1.3.1.0-81a7e86a","pkg-name":"hashable","pkg-version":"1.3.1.0","flags":{"integer-gmp":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d965e098e06cc585b201da6137dcb31c40f35eb7a937b833903969447985c076","pkg-src-sha256":"8061823a4ac521b53912edcba36b956f3159cb885b07ec119af295a6568ca7c4","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hstnm-1.0-c687754f","pkg-name":"hostname","pkg-version":"1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8203b6ecd14ca1ef12f73a471b0a6a4be3ad4568d8b84f2bc4bc9e0abb8c4153","pkg-src-sha256":"9b43dab1b6da521f35685b20555da00738c8e136eb972458c786242406a9cf5c","components":{"lib":{"depends":["base-4.14.3.0"],"exe-depends":[]}}},{"type":"configured","id":"http-clnt-0.7.6-d2cedd3d","pkg-name":"http-client","pkg-version":"0.7.6","flags":{"network-uri":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c5115765335ede42038f59c1a52414be382c80d41f01e8d24922a37a9d85ab5d","pkg-src-sha256":"33f378976118f9d800fa526452ada06314c3b4f9eab134e1a4d215380baea890","depends":["array-0.5.4.0","base-4.14.3.0","bs64-bytstrng-1.0.0.3-4e6d0aeb","blz-bldr-0.4.2.1-f5d6708e","bytestring-0.10.12.0","cs-nsnstv-1.2.1.0-0f0c5d1c","containers-0.6.5.1","ck-0.4.5-cfccc30b","deepseq-1.4.4.0","exceptions-0.10.4","filepath-1.4.2.1","ghc-prim-0.6.1","http-typs-0.12.3-c2432fef","mm-typs-0.1.0.9-f771e3c4","ntwrk-3.1.2.1-08b0c5d8","ntwrk-r-2.6.4.1-70848399","rndm-1.2.0-5f8e0010","stm-2.5.0.1","strmng-cmmns-0.2.2.1-f8c2fa62","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"http-dt-0.0.11-7b034d21","pkg-name":"http-date","pkg-version":"0.0.11","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b278b07f880705e3b0b073206ad26954548b666d616733c9a6b5d50993f547d4","pkg-src-sha256":"32f923ac1ad9bdfeadce7c52a03c9ba6225ba60dc14137cb1cdf32ea84ccf4d3","depends":["array-0.5.4.0","ttprsc-0.13.2.5-bfdb3102","base-4.14.3.0","bytestring-0.10.12.0","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"http-typs-0.12.3-c2432fef","pkg-name":"http-types","pkg-version":"0.12.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f35229edb1bc7b3ae27f961b2407dadb5bfa69d43a8f5337ab46cdc79ca4afe9","pkg-src-sha256":"4e8a4a66477459fa436a331c75e46857ec8026283df984d54f90576cd3024016","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","cs-nsnstv-1.2.1.0-0f0c5d1c","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"http2-2.0.6-d6761ca2","pkg-name":"http2","pkg-version":"2.0.6","flags":{"devel":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d286b50b1f644b3a4b0c80f5d40d21ac2682e30b5035e46c5395773d5b69ec3b","pkg-src-sha256":"2a756b1a855fab64c63f45b9bd91435d23a4e039ef51c9b189e8c77bf356a19e","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","cs-nsnstv-1.2.1.0-0f0c5d1c","containers-0.6.5.1","http-typs-0.12.3-c2432fef","ntwrk-3.1.2.1-08b0c5d8","ntwrk-byt-rdr-0.1.6-5bc10b06","psqs-0.2.7.2-3928525f","stm-2.5.0.1","tm-mngr-0.0.0-6703061d"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"integer-gmp-1.0.3.0","pkg-name":"integer-gmp","pkg-version":"1.0.3.0","depends":["ghc-prim-0.6.1"]},{"type":"configured","id":"kn-xtnsns-5.2.2-bc676010","pkg-name":"kan-extensions","pkg-version":"5.2.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c9ad889deb63a2c6a0af95bc6ccefadd12633b711097e36af32935d54b901179","pkg-src-sha256":"3bf3ce4cacf9c57c03e9a1c36ecb1baf5d8356730853a2592d2112d1248498a0","depends":["djnctns-4.4-a26f282f","array-0.5.4.0","base-4.14.3.0","cmnd-5.0.8-89fd52db","containers-0.6.5.1","cntrvrnt-1.5.3-cf62fb3c","dstrbtv-0.6.2.1-27e474d4","fr-5.1.3-805aa632","nvrnt-0.5.3-9235ec85","mtl-2.2.2","prfnctrs-5.6-bf1267af","smgrpds-5.3.4-9d8fc753","tggd-0.8.6.1-22e9a365","transformers-0.5.6.2","trnsfrmrs-cmpt-0.6.6-c2257ba9"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"lbyml-0.1.2-7defdd02","pkg-name":"libyaml","pkg-version":"0.1.2","flags":{"no-unicode":false,"system-libyaml":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"7f14f69ceb14659699974e8e47e1ea6f226ea21ff42a802db03e721c319d201d","pkg-src-sha256":"8f42d66f199fcaee255326f8f770d88b0670df56b5eb78002d6058f3a45e97b5","depends":["base-4.14.3.0","bytestring-0.10.12.0","cndt-1.3.4.1-7277901b","rsrct-1.2.4.2-8c58f12d"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ld-lcl-1.0.0.7-fbd769ce","pkg-name":"old-locale","pkg-version":"1.0.0.7","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"fa998be2c7e00cd26a6e9075bea790caaf3932caa3e9497ad69bc20380dd6911","pkg-src-sha256":"dbaf8bf6b888fb98845705079296a23c3f40ee2f449df7312f7f7f1de18d7b50","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ld-tm-1.1.0.3-c649dfa8","pkg-name":"old-time","pkg-version":"1.1.0.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c91fbb3ee73d20ccd015842b30f1f29a304893ebe0ae3128b7bbc13d5bb0d4c8","pkg-src-sha256":"1ccb158b0f7851715d36b757c523b026ca1541e2030d02239802ba39b4112bc1","components":{"lib":{"depends":["base-4.14.3.0","ld-lcl-1.0.0.7-fbd769ce"],"exe-depends":[]}}},{"type":"configured","id":"lftd-bs-0.2.3.12-0139ca1f","pkg-name":"lifted-base","pkg-version":"0.2.3.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e94ad0692c9c5d85c373e508f23654f2da8ac8c3e475c2b65ffbc04fb165ad69","pkg-src-sha256":"c134a95f56750aae806e38957bb03c59627cda16034af9e00a02b699474317c5","depends":["base-4.14.3.0","mnd-cntrl-1.0.2.3-748e18fe","trnsfrmrs-bs-0.4.5.2-3f76eadc"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"lftd-sync-0.10.1.3-f2051f67","pkg-name":"lifted-async","pkg-version":"0.10.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cb9f0b2bc84e0081df475cea5370b5f0908485d622214a44891ad347826d4b4a","pkg-src-sha256":"f340fa9b649dd6bd3fc0942eceb94945a5b251e676b8d8e9841d6b24c531b4c2","depends":["sync-2.2.3-77cbb22e","base-4.14.3.0","cnstrnts-0.13-1b93bc9d","lftd-bs-0.2.3.12-0139ca1f","mnd-cntrl-1.0.2.3-748e18fe","trnsfrmrs-bs-0.4.5.2-3f76eadc"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"lns-4.19.2-261cde91","pkg-name":"lens","pkg-version":"4.19.2","flags":{"benchmark-uniplate":false,"dump-splices":false,"inlining":true,"j":false,"old-inline-pragmas":false,"safe":false,"test-doctests":true,"test-hunit":true,"test-properties":true,"test-templates":true,"trustworthy":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f84441c407bf436490cbc19b5c7497a66f5880be7023e7a9f0e205aee98239e5","pkg-src-sha256":"52f858ae3971a5104cdba5e81a27d154fda11fe65a54a4ac328c85904bdec23b","components":{"lib":{"depends":["array-0.5.4.0","base-4.14.3.0","bs-rphns-0.8.4-c8f36af6","bfnctrs-5.5.7-195e3fe2","bytestring-0.10.12.0","cll-stck-0.3.0-7605e60f","cmnd-5.0.8-89fd52db","containers-0.6.5.1","cntrvrnt-1.5.3-cf62fb3c","dstrbtv-0.6.2.1-27e474d4","exceptions-0.10.4","filepath-1.4.2.1","fr-5.1.3-805aa632","ghc-prim-0.6.1","hshbl-1.3.1.0-81a7e86a","kn-xtnsns-5.2.2-bc676010","mtl-2.2.2","prlll-3.2.2.0-ba7f78ce","prfnctrs-5.6-bf1267af","rflctn-2.1.6-e0ea7273","smgrpds-5.3.4-9d8fc753","tggd-0.8.6.1-22e9a365","template-haskell-2.16.0.0","text-1.2.4.1","th-bstrctn-0.3.2.0-ed858cb3","transformers-0.5.6.2","trnsfrmrs-cmpt-0.6.6-c2257ba9","nrdrd-cntnrs-0.2.13.0-86a72f83","vctr-0.12.2.0-9301e615"],"exe-depends":[]},"setup":{"depends":["Cabal-3.2.1.0","base-4.14.3.0","cbl-dctst-1.0.8-001accad","filepath-1.4.2.1"],"exe-depends":[]}}},{"type":"configured","id":"mm-typs-0.1.0.9-f771e3c4","pkg-name":"mime-types","pkg-version":"0.1.0.9","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d631fe56daed713ec7798933aaa1429dc9912d85375619aa6e25a0fefe8e95e7","pkg-src-sha256":"0a32435169ef4ba59f4a4b8addfd0c04479410854d1b8d69a1e38fb389ba71d2","depends":["base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"mmry-0.15.0-1ae4b367","pkg-name":"memory","pkg-version":"0.15.0","flags":{"support_basement":true,"support_bytestring":true,"support_deepseq":true,"support_foundation":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"be7024b50e876a9c3b7febaefdd81d5dc67268c58a7b4e6b3825bdc58274d88c","pkg-src-sha256":"e3ff892c1a94708954d0bb2c4f4ab81bc0f505352d95095319c462db1aeb3529","depends":["base-4.14.3.0","bsmnt-0.0.11-f050f8fa","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"mn-trvrsbl-1.0.15.1-62aa4220","pkg-name":"mono-traversable","pkg-version":"1.0.15.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cad0e8681cd6c96d3303867fc68c80e2f5d55c2c4bf5277c06ca74402fda61c8","pkg-src-sha256":"c2df5b79ed2f88f2ee313e57c1d591d4463788e20d39e439297eec5ba5835ddf","depends":["base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","hshbl-1.3.1.0-81a7e86a","splt-0.2.3.4-d58cb8cf","text-1.2.4.1","transformers-0.5.6.2","nrdrd-cntnrs-0.2.13.0-86a72f83","vctr-0.12.2.0-9301e615","vctr-lgrthms-0.8.0.4-aa341e68"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"mnd-cntrl-1.0.2.3-748e18fe","pkg-name":"monad-control","pkg-version":"1.0.2.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a3ae888d2fed2e2a0ca33ae11e2480219e07312bccf1a02ffe2ba2e3ec5913ee","pkg-src-sha256":"6c1034189d237ae45368c70f0e68f714dd3beda715dd265b6c8a99fcc64022b1","components":{"lib":{"depends":["base-4.14.3.0","stm-2.5.0.1","transformers-0.5.6.2","trnsfrmrs-bs-0.4.5.2-3f76eadc","trnsfrmrs-cmpt-0.6.6-c2257ba9"],"exe-depends":[]}}},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.14.3.0","transformers-0.5.6.2"]},{"type":"configured","id":"nclsd-xcptns-1.0.3-a8a2e7cb","pkg-name":"enclosed-exceptions","pkg-version":"1.0.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6d4e9b5156721ccfa62d3cdcbf13d8571773031050ec714cb55b841f0c183f6a","pkg-src-sha256":"af6d93f113ac92b89a32af1fed52f445f492afcc0be93980cbadc5698f94f0b9","depends":["base-4.14.3.0","deepseq-1.4.4.0","lftd-bs-0.2.3.12-0139ca1f","mnd-cntrl-1.0.2.3-748e18fe","transformers-0.5.6.2","trnsfrmrs-bs-0.4.5.2-3f76eadc"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ndxd-trvrsbl-0.1.1-5423d452","pkg-name":"indexed-traversable","pkg-version":"0.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e330ec1ab336ee2fb1eff117ebe3480d1663396fecd981f185b7123dc7941ae1","pkg-src-sha256":"7ac36ae3153cbe7a8e99eacffd065367b87544953cc92997f424a150db468139","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"nlft-cr-0.2.0.1-0ed8000c","pkg-name":"unliftio-core","pkg-version":"0.2.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9b3e44ea9aacacbfc35b3b54015af450091916ac3618a41868ebf6546977659a","pkg-src-sha256":"919f0d1297ea2f5373118553c1df2a9405d8b9e31a8307e829da67d4953c299a","depends":["base-4.14.3.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"nrdrd-cntnrs-0.2.13.0-86a72f83","pkg-name":"unordered-containers","pkg-version":"0.2.13.0","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6310c636f92ed4908fdd0de582b6be31c2851c7b5f2ec14e9f416eb94df7a078","pkg-src-sha256":"86b01369ab8eb311383a052d389337e2cd71a63088323f02932754df4aa37b55","depends":["base-4.14.3.0","deepseq-1.4.4.0","hshbl-1.3.1.0-81a7e86a"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ns-trmnl-0.11-ea4f31d8","pkg-name":"ansi-terminal","pkg-version":"0.11","flags":{"example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"97470250c92aae14c4c810d7f664c532995ba8910e2ad797b29f22ad0d2d0194","pkg-src-sha256":"c6611b9e51add41db3f79eac30066c06b33a6ca2a09e586b4b361d7f98303793","depends":["base-4.14.3.0","clr-2.3.5-3ce536bf"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ns-wl-pprnt-0.6.9-cbaf5426","pkg-name":"ansi-wl-pprint","pkg-version":"0.6.9","flags":{"example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"20d30674f137d43aa0279c2c2cc5e45a5f1c3c57e301852494906158b6313bf7","pkg-src-sha256":"a7b2e8e7cd3f02f2954e8b17dc60a0ccd889f49e2068ebb15abfa1d42f7a4eac","depends":["ns-trmnl-0.11-ea4f31d8","base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ntgr-lgrthms-1.0.3.1-bcc6b5f0","pkg-name":"integer-logarithms","pkg-version":"1.0.3.1","flags":{"check-bounds":false,"integer-gmp":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"888fb6c4fbd79ed2e8f8b94b61bccac25f7fab2b13b32b496e86828bc60b17cf","pkg-src-sha256":"9b0a9f9fab609b15cd015865721fb05f744a1bc77ae92fd133872de528bbea7f","depends":["array-0.5.4.0","base-4.14.3.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ntrpy-0.4.1.6-31ada688","pkg-name":"entropy","pkg-version":"0.4.1.6","flags":{"halvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d72a8745b0d011737190832be477f6d98a7c819865a6392e4c451110eb79361c","pkg-src-sha256":"adc759ff756a6d71a450422ba511177632f43a33bf673901fd2334f53ef8bf62","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0","unix-2.7.2.2"],"exe-depends":[]},"setup":{"depends":["Cabal-3.2.1.0","base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.13.2"],"exe-depends":[]}}},{"type":"configured","id":"ntwrk-3.1.2.1-08b0c5d8","pkg-name":"network","pkg-version":"3.1.2.1","flags":{"devel":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"188d6daea8cd91bc3553efd5a90a1e7c6d0425fa66a53baa74db5b6d9fd75c8b","pkg-src-sha256":"fcaa954445cb575ff04d088e719452e356324b6acb98c5aefd2541a069439d4a","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","directory-1.3.6.0"],"exe-depends":["hsc2hs-0.68.7-83233b7f"]}}},{"type":"configured","id":"ntwrk-byt-rdr-0.1.6-5bc10b06","pkg-name":"network-byte-order","pkg-version":"0.1.6","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"23d8b609ac43a69d04d5e8f411e5f86a0266c0e8b33b65f8c92ebda64273fe3a","pkg-src-sha256":"f2b0ccc9b759d686af30aac874fc394c13c1fc8a3db00fac401c9339c263dc5e","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ntwrk-r-2.6.4.1-70848399","pkg-name":"network-uri","pkg-version":"2.6.4.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a4765164ed0a2d1668446eb2e03460ce98645fbf083598c690846af79b7de10d","pkg-src-sha256":"57856db93608a4d419f681b881c9b8d4448800d5a687587dc37e8a9e0b223584","depends":["base-4.14.3.0","deepseq-1.4.4.0","parsec-3.1.14.0","template-haskell-2.16.0.0","th-cmpt-0.1.2-214f3ab8"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"nvrnt-0.5.3-9235ec85","pkg-name":"invariant","pkg-version":"0.5.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"5b74af0b909c44b17298a9c04bcd0aea030f36a869da9112b103890f3aa2516f","pkg-src-sha256":"d73e5def38da9fdd85def073857aa5f4b1d3b0c2df05c43d58a677cca02d440c","depends":["SttVr-1.2.1-9a4219da","array-0.5.4.0","base-4.14.3.0","bfnctrs-5.5.7-195e3fe2","cmnd-5.0.8-89fd52db","containers-0.6.5.1","cntrvrnt-1.5.3-cf62fb3c","ghc-prim-0.6.1","prfnctrs-5.6-bf1267af","stm-2.5.0.1","tggd-0.8.6.1-22e9a365","template-haskell-2.16.0.0","th-bstrctn-0.3.2.0-ed858cb3","transformers-0.5.6.2","trnsfrmrs-cmpt-0.6.6-c2257ba9","nrdrd-cntnrs-0.2.13.0-86a72f83"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"nx-cmpt-0.5.3-a704442d","pkg-name":"unix-compat","pkg-version":"0.5.3","flags":{"old-time":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"60be4a0b2e1cd873e5ad5f0cc9e53575b77640567abb43ef700d5b323ca2ac49","pkg-src-sha256":"0893b597ea0db406429d0d563506af6755728eface0e1981f9392122db88e5c8","depends":["base-4.14.3.0","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"nx-tm-0.4.7-387b5d59","pkg-name":"unix-time","pkg-version":"0.4.7","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c0d971d04561875b908451c563df8728fe6d8639c90e070b244227f13f76ab8e","pkg-src-sha256":"19233f8badf921d444c6165689253d877cfed58ce08f28cad312558a9280de09","components":{"lib":{"depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","ld-tm-1.1.0.3-c649dfa8"],"exe-depends":["hsc2hs-0.68.7-83233b7f"]}}},{"type":"pre-existing","id":"parsec-3.1.14.0","pkg-name":"parsec","pkg-version":"3.1.14.0","depends":["base-4.14.3.0","bytestring-0.10.12.0","mtl-2.2.2","text-1.2.4.1"]},{"type":"configured","id":"pm-0.2.4-b7fc940c","pkg-name":"pem","pkg-version":"0.2.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cc8e62118b783e284dc0fa032f54fe386a3861a948ec88079370a433c103a705","pkg-src-sha256":"770c4c1b9cd24b3db7f511f8a48404a0d098999e28573c3743a8a296bb96f8d4","depends":["base-4.14.3.0","bsmnt-0.0.11-f050f8fa","bytestring-0.10.12.0","mmry-0.15.0-1ae4b367"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ppr-0.1.8-c634d8fb","pkg-name":"appar","pkg-version":"0.1.8","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a5d529bacbb74d566e4c5f9479af0637eac5957705f6db4d2670517489795de8","pkg-src-sha256":"c4ceeddc26525b58d82c41b6d3e32141371a200a6794aae185b6266ccc81631f","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[]}}},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1"]},{"type":"configured","id":"prfnctrs-5.6-bf1267af","pkg-name":"profunctors","pkg-version":"5.6","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8be6a4efb50a030b59d1213edb119636801b8e96768671e8953b20e6f4f2a7fa","pkg-src-sha256":"cb06a548f67c17d38fef7b2e5d1f66a5e48f353d7806290e795cc97c9a298ce3","depends":["base-4.14.3.0","bs-rphns-0.8.4-c8f36af6","bfnctrs-5.5.7-195e3fe2","cmnd-5.0.8-89fd52db","cntrvrnt-1.5.3-cf62fb3c","dstrbtv-0.6.2.1-27e474d4","tggd-0.8.6.1-22e9a365","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"prlll-3.2.2.0-ba7f78ce","pkg-name":"parallel","pkg-version":"3.2.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"421ce1717610bab82969572b96be89d83ea8d8afe7751cb54d80b996fff063d3","pkg-src-sha256":"170453a71a2a8b31cca63125533f7771d7debeb639700bdabdd779c34d8a6ef6","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","deepseq-1.4.4.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"prmtv-0.7.1.0-9e5d8d36","pkg-name":"primitive","pkg-version":"0.7.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f6357d5720c1c665096c3e011467daf443198b786a708d2ff926958a24d508d4","pkg-src-sha256":"6bebecfdf2a57787d9fd5231bfd612b65a92edd7b33a973b2a0f11312b89a3f0","depends":["base-4.14.3.0","deepseq-1.4.4.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.13.2","pkg-name":"process","pkg-version":"1.6.13.2","depends":["base-4.14.3.0","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","unix-2.7.2.2"]},{"type":"configured","id":"prt-1.7.11-6d20dc87","pkg-name":"iproute","pkg-version":"1.7.11","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a7bba909d85301aaa06534911891f91d4eb8aacdae6204b260cceb7309e09a56","pkg-src-sha256":"205dcd27cce76345e4fc60060b5d428b015a09e9023f5f1bba58be1f562a8a8b","depends":["ppr-0.1.8-c634d8fb","base-4.14.3.0","bytrdr-1.0.4-81c9a110","bytestring-0.10.12.0","containers-0.6.5.1","ntwrk-3.1.2.1-08b0c5d8"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"psqs-0.2.7.2-3928525f","pkg-name":"psqueues","pkg-version":"0.2.7.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dbefb35cff7f85ecbe846aed9d6362a3ce1c45260885fb9d562d8c8ed8a81534","pkg-src-sha256":"26263b555d943f9b18bbebda6a090848fdba3c1b403a9b7c848f6bac99e893f9","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1","hshbl-1.3.1.0-81a7e86a"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ptprs-pplctv-0.15.1.0-84e62b2b","pkg-name":"optparse-applicative","pkg-version":"0.15.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"29ff6146aabf54d46c4c8788e8d1eadaea27c94f6d360c690c5f6c93dac4b07e","pkg-src-sha256":"4db3675fd1e0594afdf079db46f4cd412d483835d703e7c07e1a1a37d6f046f3","depends":["ns-wl-pprnt-0.6.9-cbaf5426","base-4.14.3.0","process-1.6.13.2","transformers-0.5.6.2","trnsfrmrs-cmpt-0.6.6-c2257ba9"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"rflctn-2.1.6-e0ea7273","pkg-name":"reflection","pkg-version":"2.1.6","flags":{"slow":false,"template-haskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"044acb7caf41a9d8246878f849baed2dffbc4582d0a1e5c7c079d4287239e970","pkg-src-sha256":"bf3e14917ebb329a53701a3cce0afe670f20037a0148dbfa5cbfa574ed6ba6cd","depends":["base-4.14.3.0","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"rgx-bs-0.94.0.1-fcc8da24","pkg-name":"regex-base","pkg-version":"0.94.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6e3546b73cd5489201d481aa645a531f2c61aa317984e31c5f379ac0bcbfbfad","pkg-src-sha256":"71b1d96fff201f31fe8cd4532f056aca03a21cd486890256dc3007dd73adedd9","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","mtl-2.2.2","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"rgx-psx-0.96.0.0-a3587e43","pkg-name":"regex-posix","pkg-version":"0.96.0.0","flags":{"_regex-posix-clib":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bd870f983a21bb474bd96449736f011c599981ce70da808a21ec1a28292e5481","pkg-src-sha256":"251300f1a6bb2e91abb8bf513a21981f8fab79c98a65acea2bb6d6a524414521","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","rgx-bs-0.94.0.1-fcc8da24"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"rndm-1.2.0-5f8e0010","pkg-name":"random","pkg-version":"1.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"30d72df4cc1d2fe2d445c88f0ee9d21965af7ce86660c43a6c32a6a1d90d51c9","pkg-src-sha256":"e4519cf7c058bfd5bdbe4acc782284acc9e25e74487208619ca83cbcd63fb9de","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","mtl-2.2.2","spltmx-0.1.0.3-f9f98fdf"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"rsrct-1.2.4.2-8c58f12d","pkg-name":"resourcet","pkg-version":"1.2.4.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d57516781d1721f70aa0b9ec8ea9200ab02bf76349cb76d73ad57729302289cc","pkg-src-sha256":"17f20842043ad199961a801b6efb1233b9098eb3537f8395844268f6a223eb87","depends":["base-4.14.3.0","containers-0.6.5.1","exceptions-0.10.4","mtl-2.2.2","prmtv-0.7.1.0-9e5d8d36","transformers-0.5.6.2","nlft-cr-0.2.0.1-0ed8000c"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"scntfc-0.3.6.2-734dabfd","pkg-name":"scientific","pkg-version":"0.3.6.2","flags":{"bytestring-builder":false,"integer-simple":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dd49abc76bd8e2b57e7a057dc2bb742a00527b4bf9350f9374be03b5934e55d8","pkg-src-sha256":"278d0afc87450254f8a76eab21b5583af63954efc9b74844a17a21a68013140f","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","hshbl-1.3.1.0-81a7e86a","integer-gmp-1.0.3.0","ntgr-lgrthms-1.0.3.1-bcc6b5f0","prmtv-0.7.1.0-9e5d8d36","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"sf-0.3.19-acedf167","pkg-name":"safe","pkg-version":"0.3.19","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0910dafb8898f52bde4c646e560228a0fd08b1fca5457f222d2f5c0fad6d2039","pkg-src-sha256":"25043442c8f8aa95955bb17467d023630632b961aaa61e807e325d9b2c33f7a2","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shlly-1.9.0-4138217d","pkg-name":"shelly","pkg-version":"1.9.0","flags":{"build-examples":false,"lifted":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ee030e939e2e5367cf33923c1b9e20bd0793667b02f4baf3d6224984b9b94720","pkg-src-sha256":"5eb5fd4fc105e218cef6cfa10971d299ad660324e6a6006b8cccc31edf39aace","depends":["sync-2.2.3-77cbb22e","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","directory-1.3.6.0","nclsd-xcptns-1.0.3-a8a2e7cb","exceptions-0.10.4","filepath-1.4.2.1","lftd-sync-0.10.1.3-f2051f67","lftd-bs-0.2.3.12-0139ca1f","mnd-cntrl-1.0.2.3-748e18fe","mtl-2.2.2","process-1.6.13.2","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","trnsfrmrs-bs-0.4.5.2-3f76eadc","unix-2.7.2.2","nx-cmpt-0.5.3-a704442d"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"smgrpds-5.3.4-9d8fc753","pkg-name":"semigroupoids","pkg-version":"5.3.4","flags":{"comonad":true,"containers":true,"contravariant":true,"distributive":true,"doctests":true,"tagged":true,"unordered-containers":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"120873dfa8084ec92745c766336e90d648c347ab99ce55329d5af36dbd3732ba","pkg-src-sha256":"00d2e48973c3ab0a5d52616728ed63d0509454c8328148f698720014d7c58964","components":{"lib":{"depends":["base-4.14.3.0","bs-rphns-0.8.4-c8f36af6","bfnctrs-5.5.7-195e3fe2","cmnd-5.0.8-89fd52db","containers-0.6.5.1","cntrvrnt-1.5.3-cf62fb3c","dstrbtv-0.6.2.1-27e474d4","hshbl-1.3.1.0-81a7e86a","tggd-0.8.6.1-22e9a365","template-haskell-2.16.0.0","transformers-0.5.6.2","trnsfrmrs-cmpt-0.6.6-c2257ba9","nrdrd-cntnrs-0.2.13.0-86a72f83"],"exe-depends":[]},"setup":{"depends":["Cabal-3.2.1.0","base-4.14.3.0","cbl-dctst-1.0.8-001accad"],"exe-depends":[]}}},{"type":"configured","id":"smgrps-0.19.1-253fa398","pkg-name":"semigroups","pkg-version":"0.19.1","flags":{"binary":true,"bytestring":true,"bytestring-builder":false,"containers":true,"deepseq":true,"hashable":true,"tagged":true,"template-haskell":true,"text":true,"transformers":true,"unordered-containers":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ecae129621e0d2f77bef2f01e4458c2e0567ab6e1f39579c61d7cec8058ebb0e","pkg-src-sha256":"79e761e64b862564a3470d5d356cb6b060b14452d675859aed3b2d1e14646648","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"smpl-sndfl-0.2.30-fd4e576c","pkg-name":"simple-sendfile","pkg-version":"0.2.30","flags":{"allow-bsd":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c6893e159dc20eea6d0b805bfd8d9b73e6a6ba3fe72cc396acdc24fdcd33cc38","pkg-src-sha256":"b6864d2b3c62ff8ea23fa24e9e26f751bfe5253c8efb1f1e4fee2ba91d065284","depends":["base-4.14.3.0","bytestring-0.10.12.0","ntwrk-3.1.2.1-08b0c5d8","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"sn-1.4.7.1-f545389d","pkg-name":"aeson","pkg-version":"1.4.7.1","flags":{"bytestring-builder":false,"cffi":false,"developer":false,"fast":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6d8d2fd959b7122a1df9389cf4eca30420a053d67289f92cdc0dbc0dab3530ba","pkg-src-sha256":"07e746655fd9bec81c59927c5617877ff4fcd81d0df45c5fb8ef154fb8f40294","depends":["ttprsc-0.13.2.5-bfdb3102","base-4.14.3.0","bs-cmpt-bttrs-0.11.2-60bdc7ba","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","dlst-0.8.0.8-96990b97","ghc-prim-0.6.1","hshbl-1.3.1.0-81a7e86a","prmtv-0.7.1.0-9e5d8d36","scntfc-0.3.6.2-734dabfd","tggd-0.8.6.1-22e9a365","template-haskell-2.16.0.0","text-1.2.4.1","th-bstrctn-0.3.2.0-ed858cb3","time-1.9.3","tm-cmpt-1.9.5-7f0b56a3","nrdrd-cntnrs-0.2.13.0-86a72f83","d-typs-1.0.4-6e509a2f","vctr-0.12.2.0-9301e615"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"sn1-ncdng-0.9.6-00fac9aa","pkg-name":"asn1-encoding","pkg-version":"0.9.6","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"27ed8f6043aed79630313bb931f7c8e2b510f0b4586cd55c16ae040c7d1ea098","pkg-src-sha256":"d9f8deabd3b908e5cf83c0d813c08dc0143b3ec1c0d97f660d2cfa02c1c8da0a","depends":["sn1-typs-0.3.4-e09490aa","base-4.14.3.0","bytestring-0.10.12.0","hrglss-0.2.12-94395846"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"sn1-prs-0.9.5-8aca0976","pkg-name":"asn1-parse","pkg-version":"0.9.5","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"77c0126d63070df2d82cb4cfa4febb26c4e280f6d854bc778c2fa4d80ce692b8","pkg-src-sha256":"8f1fe1344d30b39dc594d74df2c55209577722af1497204b4c2b6d6e8747f39e","components":{"lib":{"depends":["sn1-ncdng-0.9.6-00fac9aa","sn1-typs-0.3.4-e09490aa","base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[]}}},{"type":"configured","id":"sn1-typs-0.3.4-e09490aa","pkg-name":"asn1-types","pkg-version":"0.3.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8e879b3a5bbdd0031232eb84d904b5a3a2c20a18847692b996d774f4ff811355","pkg-src-sha256":"78ee92a251379298ca820fa53edbf4b33c539b9fcd887c86f520c30e3b4e21a8","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0","hrglss-0.2.12-94395846","mmry-0.15.0-1ae4b367"],"exe-depends":[]}}},{"type":"configured","id":"splt-0.2.3.4-d58cb8cf","pkg-name":"split","pkg-version":"0.2.3.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"048c75891d63a03828f97667214aaaf0e67b7dcbfec297753e39939ffda6f51a","pkg-src-sha256":"271fe5104c9f40034aa9a1aad6269bcecc9454bc5a57c247e69e17de996c1f2a","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"spltmx-0.1.0.3-f9f98fdf","pkg-name":"splitmix","pkg-version":"0.1.0.3","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"fc3aae74c467f4b608050bef53aec17904a618731df9407e655d8f3bf8c32d5c","pkg-src-sha256":"46009f4b000c9e6613377767b8718bf38476469f2a8e2162d98cc246882d5a35","depends":["base-4.14.3.0","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.0.1","pkg-name":"stm","pkg-version":"2.5.0.1","depends":["array-0.5.4.0","base-4.14.3.0"]},{"type":"configured","id":"strmng-cmmns-0.2.2.1-f8c2fa62","pkg-name":"streaming-commons","pkg-version":"0.2.2.1","flags":{"use-bytestring-builder":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"28abce35b48dcfb871926dad4cb37bdf737372892b4e5222abc97ca31f2ac738","pkg-src-sha256":"306940bf4878a0b714e6746a7f934d018100efc86332c176a648014bfe1e81dd","depends":["array-0.5.4.0","sync-2.2.3-77cbb22e","base-4.14.3.0","bytestring-0.10.12.0","directory-1.3.6.0","ntwrk-3.1.2.1-08b0c5d8","process-1.6.13.2","rndm-1.2.0-5f8e0010","stm-2.5.0.1","text-1.2.4.1","transformers-0.5.6.2","unix-2.7.2.2","zlb-0.6.2.3-69a07bb9"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"strngsrch-0.3.6.6-d69f1338","pkg-name":"stringsearch","pkg-version":"0.3.6.6","flags":{"base3":false,"base4":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e88c03f4adb4bb3ab88550c921a9a8a2836a0a70f58b9cc64cff2ac65af9b77c","pkg-src-sha256":"295f1971920bc52263d8275d7054ad223a7e1aefe75533f9887735c9644ffe4a","components":{"lib":{"depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1"],"exe-depends":[]}}},{"type":"configured","id":"sy-fl-0.2.2-c2329e48","pkg-name":"easy-file","pkg-version":"0.2.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72303120495a9fed82276a7987434361edd6dfecafad241d7c6c03b68e4801e5","pkg-src-sha256":"52f52e72ba48d60935932401c233a72bf45c582871238aecc5a18021ce67b47e","components":{"lib":{"depends":["base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1","time-1.9.3","unix-2.7.2.2"],"exe-depends":[]}}},{"type":"configured","id":"syb-0.7.2.1-ad42e2f3","pkg-name":"syb","pkg-version":"0.7.2.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bf42655a213402215299e435c52f799e76cbec0b984cd7153d6b9af8a1c0803f","pkg-src-sha256":"1807c66f77e66786739387f0ae9f16d150d1cfa9d626afcb729f0e9b442a8d96","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"sync-2.2.3-77cbb22e","pkg-name":"async","pkg-version":"2.2.3","flags":{"bench":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0cbefb8247308b38e397e675f832b9bd5317ff1872001d5358f213654423c55b","pkg-src-sha256":"467af3a0037947a5232ecf5f4efbd4cf2118aaa2310566d7f40ac82b0e32935c","depends":["base-4.14.3.0","hshbl-1.3.1.0-81a7e86a","stm-2.5.0.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"t-pdt-0.1.6-34d65238","pkg-name":"auto-update","pkg-version":"0.1.6","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"10adca282e131a2fa01fb7a411b02811685c1cea02e9813df2d7fb468b5ef638","pkg-src-sha256":"f4e023dc8713c387ecf20d851247597fd012cabea3872310b35e911105eb66c4","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.16.0.0","pkg-name":"template-haskell","pkg-version":"2.16.0.0","depends":["base-4.14.3.0","ghc-boot-th-8.10.7","ghc-prim-0.6.1","pretty-1.1.3.6"]},{"type":"pre-existing","id":"terminfo-0.4.1.4","pkg-name":"terminfo","pkg-version":"0.4.1.4","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"text-1.2.4.1","pkg-name":"text","pkg-version":"1.2.4.1","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0","template-haskell-2.16.0.0"]},{"type":"configured","id":"tggd-0.8.6.1-22e9a365","pkg-name":"tagged","pkg-version":"0.8.6.1","flags":{"deepseq":true,"transformers":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"98e446479bd3fe5bdc5fa63fec2a2f6998e1bb8cb6db1dee611716f588b3ab28","pkg-src-sha256":"f5e0fcf95f0bb4aa63f428f2c01955a41ea1a42cfcf39145ed631f59a9616c02","depends":["base-4.14.3.0","deepseq-1.4.4.0","template-haskell-2.16.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"th-bstrctn-0.3.2.0-ed858cb3","pkg-name":"th-abstraction","pkg-version":"0.3.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9b5b4e6e2bbff9b075ad7751ee98e2107090bd17b51d5442695b8990e4db6521","pkg-src-sha256":"36fef33ad0f34b9b8fb5552fe6187579a00d5f90d938e9bc24d382a9919feb79","depends":["base-4.14.3.0","containers-0.6.5.1","ghc-prim-0.6.1","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"th-cmpt-0.1.2-214f3ab8","pkg-name":"th-compat","pkg-version":"0.1.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3d55de1adc542c1a870c9ada90da2fbbe5f4e8bcd3eed545a55c3df9311b32a8","pkg-src-sha256":"2bc45d0199de3dc65ebc9b71251799f5238869dbc6a66bdf0c06c7e23d603801","depends":["base-4.14.3.0","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"time-1.9.3","pkg-name":"time","pkg-version":"1.9.3","depends":["base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"configured","id":"tm-cmpt-1.9.5-7f0b56a3","pkg-name":"time-compat","pkg-version":"1.9.5","flags":{"old-locale":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a586bd5a59b47ea0c9eafc55c6936ede11126f4a6e619d6d7aeefee73c43d9b8","pkg-src-sha256":"3126b267d19f31d52a3c36f13a8788be03242f829a5bddd8a3084e134d01e3a6","depends":["base-4.14.3.0","bs-rphns-0.8.4-c8f36af6","deepseq-1.4.4.0","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"tm-mngr-0.0.0-6703061d","pkg-name":"time-manager","pkg-version":"0.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d258b1d08f9b926823f5380e9201303b0ebeefe4f9e0047c0cbd7b6728135ee1","pkg-src-sha256":"90a616ed20b2119bb64f78f84230b6798cde22a35e87bc8d9ee08cdf1d90fcdb","depends":["t-pdt-0.1.6-34d65238","base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"tmprry-1.3-b8b887fd","pkg-name":"temporary","pkg-version":"1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3a66c136f700dbf42f3c5000ca93e80b26dead51e54322c83272b236c1ec8ef1","pkg-src-sha256":"8c442993694b5ffca823ce864af95bd2841fb5264ee511c61cf48cc71d879890","depends":["base-4.14.3.0","directory-1.3.6.0","exceptions-0.10.4","filepath-1.4.2.1","rndm-1.2.0-5f8e0010","transformers-0.5.6.2","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"tr-0.5.1.1-52757773","pkg-name":"tar","pkg-version":"0.5.1.1","flags":{"old-bytestring":false,"old-time":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"94ded05718fe75b88c98e7113feeb9fca50688a7e59b6aefd80a6f48438c5062","pkg-src-sha256":"b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"configured","id":"trnsfrmrs-bs-0.4.5.2-3f76eadc","pkg-name":"transformers-base","pkg-version":"0.4.5.2","flags":{"orphaninstances":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e4d8155470905ba2942033a1537fc4cf91927d1c9b34693fd57ddf3bc02334af","pkg-src-sha256":"d0c80c63fdce6a077dd8eda4f1ff289b85578703a3f1272e141d400fe23245e8","depends":["base-4.14.3.0","bs-rphns-0.8.4-c8f36af6","stm-2.5.0.1","transformers-0.5.6.2","trnsfrmrs-cmpt-0.6.6-c2257ba9"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"trnsfrmrs-cmpt-0.6.6-c2257ba9","pkg-name":"transformers-compat","pkg-version":"0.6.6","flags":{"five":false,"five-three":true,"four":false,"generic-deriving":true,"mtl":true,"three":false,"two":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"510709db2b12d1510d70de824ee544ca0a9e6f27aa7e299218cbacc0750b4a5e","pkg-src-sha256":"7e2e0251e5e6d28142615a4b950a3fabac9c0b7804b1ec4a4ae985f19519a9f9","depends":["base-4.14.3.0","ghc-prim-0.6.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"tst-frmwrk-0.8.2.0-541e50fd","pkg-name":"test-framework","pkg-version":"0.8.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"39f114d1ed0c95d0772ba6873bef9a69c1e08b865f46deb1b6c93ca5224f7871","pkg-src-sha256":"f5aec7a15dbcb39e951bcf6502606fd99d751197b5510f41706899aa7e660ac2","depends":["ns-trmnl-0.11-ea4f31d8","ns-wl-pprnt-0.6.9-cbaf5426","base-4.14.3.0","containers-0.6.5.1","hstnm-1.0-c687754f","ld-lcl-1.0.0.7-fbd769ce","rndm-1.2.0-5f8e0010","rgx-psx-0.96.0.0-a3587e43","time-1.9.3","xml-1.3.14-60ead35d"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"tst-frmwrk-hnt-0.3.0.2-b7e00943","pkg-name":"test-framework-hunit","pkg-version":"0.3.0.2","flags":{"base3":false,"base4":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"7fd007e9cb082cd64a2213a6d36acf057f7d6df6b5343a088e81b2b3a9a23545","pkg-src-sha256":"95cb8ee02a850b164bfdabdf4dbc839d621361f3ac770ad21ea43a8bde360bf8","components":{"lib":{"depends":["HUnt-1.6.2.0-b7015290","base-4.14.3.0","xtnsbl-xcptns-0.1.1.4-58d8a3c5","tst-frmwrk-0.8.2.0-541e50fd"],"exe-depends":[]}}},{"type":"configured","id":"ttprsc-0.13.2.5-bfdb3102","pkg-name":"attoparsec","pkg-version":"0.13.2.5","flags":{"developer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"7c88195c3f3243c6abe356c1bc872cf40818a8c7b0e261a8f8e6868fe42819a0","pkg-src-sha256":"21e0f38eaa1957bf471276afa17651c125a38924575f12c2cbd2fa534b45686f","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","ghc-prim-0.6.1","scntfc-0.3.6.2-734dabfd","text-1.2.4.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"typ-qlty-1-8a20443f","pkg-name":"type-equality","pkg-version":"1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f2a895a7b22384d9b43a9c6608725b2de7581e77e5b20ab9cfe3f959f6cd71a8","pkg-src-sha256":"4728b502a211454ef682a10d7a3e817c22d06ba509df114bb267ef9d43a08ce8","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.14.3.0","bytestring-0.10.12.0","time-1.9.3"]},{"type":"configured","id":"vctr-0.12.2.0-9301e615","pkg-name":"vector","pkg-version":"0.12.2.0","flags":{"boundschecks":true,"internalchecks":false,"unsafechecks":false,"wall":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6e81683c2c19b4aea58f1f453547cb03851b3cfd4031b8eb82abfa4643a13494","pkg-src-sha256":"17ab0b84c87859333ff681bb9f768368779677925bd589ff4baa05be3fd26b50","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1","prmtv-0.7.1.0-9e5d8d36"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"vctr-lgrthms-0.8.0.4-aa341e68","pkg-name":"vector-algorithms","pkg-version":"0.8.0.4","flags":{"bench":true,"boundschecks":true,"internalchecks":false,"llvm":false,"properties":true,"unsafechecks":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bf4760b23a0fee09abb8c9e3c952c870f5dc9780876e9d7e38ab2bdd98c8f283","pkg-src-sha256":"76176a56778bf30a275b1089ee6db24ec6c67d92525145f8dfe215b80137af3b","depends":["base-4.14.3.0","bytestring-0.10.12.0","prmtv-0.7.1.0-9e5d8d36","vctr-0.12.2.0-9301e615"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"vd-0.7.3-3b10c00c","pkg-name":"void","pkg-version":"0.7.3","flags":{"safe":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"13d30f62fcdf065e595d679d4ac8b4b0c1bb1a1b73db7b5b5a8f857cb5c8a546","pkg-src-sha256":"53af758ddc37dc63981671e503438d02c6f64a2d8744e9bec557a894431f7317","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"vlt-0.3.1.5-2ae9d093","pkg-name":"vault","pkg-version":"0.3.1.5","flags":{"useghc":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"10398b6c75b00a5a9f37423c3f064acad4cfdfacb76e2baac1bd9ba225286d67","pkg-src-sha256":"ac2a6b6adf58598c5c8faa931ae961a8a2aa50ddb2f0f7a2044ff6e8c3d433a0","depends":["base-4.14.3.0","containers-0.6.5.1","hshbl-1.3.1.0-81a7e86a","nrdrd-cntnrs-0.2.13.0-86a72f83"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"w-3.2.3-c218a955","pkg-name":"wai","pkg-version":"3.2.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c7518618bdb842116dbc1a4e4553223799eef43add19278c2bbffb4536595fe0","pkg-src-sha256":"5574d6541000988fe204d3032db87fd0a5404cdbde33ee4fa02e6006768229f8","depends":["base-4.14.3.0","bytestring-0.10.12.0","http-typs-0.12.3-c2432fef","ntwrk-3.1.2.1-08b0c5d8","text-1.2.4.1","vlt-0.3.1.5-2ae9d093"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"w-lggr-2.3.6-3fd4ddab","pkg-name":"wai-logger","pkg-version":"2.3.6","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2cf80c00b7247277f84e14869f43bf05e9cccb59ca26fb2b5bb20f74edae56e2","pkg-src-sha256":"e2fbd8c74fa0a31f9ea0faa53f4ad4e588644a34d8dfc7cc50d85c245c3c7541","components":{"lib":{"depends":["base-4.14.3.0","bytrdr-1.0.4-81c9a110","bytestring-0.10.12.0","fst-lggr-3.0.3-b2e892ac","http-typs-0.12.3-c2432fef","ntwrk-3.1.2.1-08b0c5d8","w-3.2.3-c218a955"],"exe-depends":[]},"setup":{"depends":["Cabal-3.2.1.0","base-4.14.3.0","cbl-dctst-1.0.8-001accad"],"exe-depends":[]}}},{"type":"configured","id":"w-pp-sttc-3.1.7.2-58832556","pkg-name":"wai-app-static","pkg-version":"3.1.7.2","flags":{"print":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ad6b8b07777e6d63f5bf84da2522ac469ff66219a59cdb72baeb69af95e4ffe0","pkg-src-sha256":"c8e7db8ddb31d2297df4cae0add63e514f2a8ef92a68541707585f8148690f8d","depends":["base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","directory-1.3.6.0","mm-typs-0.1.0.9-f771e3c4","text-1.2.4.1","w-pp-sttc-3.1.7.2-f457c4cc"],"exe-depends":[],"component-name":"exe:warp","bin-file":"/store/ghc-8.10.7/w-pp-sttc-3.1.7.2-58832556/bin/warp"},{"type":"configured","id":"w-pp-sttc-3.1.7.2-f457c4cc","pkg-name":"wai-app-static","pkg-version":"3.1.7.2","flags":{"print":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ad6b8b07777e6d63f5bf84da2522ac469ff66219a59cdb72baeb69af95e4ffe0","pkg-src-sha256":"c8e7db8ddb31d2297df4cae0add63e514f2a8ef92a68541707585f8148690f8d","depends":["base-4.14.3.0","blz-html-0.9.1.2-11bdfacd","blz-mrkp-0.8.2.8-65ba3032","bytestring-0.10.12.0","containers-0.6.5.1","cryptnt-0.28-dfdefa25","directory-1.3.6.0","fl-mbd-0.0.13.0-7552374e","filepath-1.4.2.1","http-dt-0.0.11-7b034d21","http-typs-0.12.3-c2432fef","mmry-0.15.0-1ae4b367","mm-typs-0.1.0.9-f771e3c4","ld-lcl-1.0.0.7-fbd769ce","ptprs-pplctv-0.15.1.0-84e62b2b","template-haskell-2.16.0.0","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","nx-cmpt-0.5.3-a704442d","nrdrd-cntnrs-0.2.13.0-86a72f83","w-3.2.3-c218a955","w-xtr-3.0.32-450e0b45","wrp-3.3.14-d90ecb38","zlb-0.6.2.3-69a07bb9"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"w-wbsckts-3.0.1.2-9328eaa1","pkg-name":"wai-websockets","pkg-version":"3.0.1.2","flags":{"example":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0e713ddb8c28d47be76cefeab3a73b6876477d648ddcd873ba6b15d08691aa7f","pkg-src-sha256":"917cceb08f296d7dc6b6cafb66133ae53888b2c98b8fb2a2d7fa629d75ab5d2c","depends":["base-4.14.3.0","bytestring-0.10.12.0","cs-nsnstv-1.2.1.0-0f0c5d1c","http-typs-0.12.3-c2432fef","ntwrk-3.1.2.1-08b0c5d8","transformers-0.5.6.2","w-3.2.3-c218a955","wbsckts-0.12.7.2-af5140c4"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"w-wbsckts-3.0.1.2-bcea58a0","pkg-name":"wai-websockets","pkg-version":"3.0.1.2","flags":{"example":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0e713ddb8c28d47be76cefeab3a73b6876477d648ddcd873ba6b15d08691aa7f","pkg-src-sha256":"917cceb08f296d7dc6b6cafb66133ae53888b2c98b8fb2a2d7fa629d75ab5d2c","depends":["base-4.14.3.0","bytestring-0.10.12.0","cs-nsnstv-1.2.1.0-0f0c5d1c","fl-mbd-0.0.13.0-7552374e","http-typs-0.12.3-c2432fef","ntwrk-3.1.2.1-08b0c5d8","text-1.2.4.1","transformers-0.5.6.2","w-3.2.3-c218a955","w-pp-sttc-3.1.7.2-f457c4cc","w-wbsckts-3.0.1.2-9328eaa1","wrp-3.3.14-d90ecb38","wbsckts-0.12.7.2-af5140c4"],"exe-depends":[],"component-name":"exe:wai-websockets-example","bin-file":"/store/ghc-8.10.7/w-wbsckts-3.0.1.2-bcea58a0/bin/wai-websockets-example"},{"type":"configured","id":"w-xtr-3.0.32-450e0b45","pkg-name":"wai-extra","pkg-version":"3.0.32","flags":{"build-example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"7a9e65c4555e1b937dc788b8ba249dbacd4f36840c60581bc27115a5c4a48079","pkg-src-sha256":"0052878f765dda7a8cbd2c5b72295a80d0251a03b267dbb67633d3aafcaee698","depends":["sn-1.4.7.1-f545389d","ns-trmnl-0.11-ea4f31d8","base-4.14.3.0","bs64-bytstrng-1.0.0.3-4e6d0aeb","bytestring-0.10.12.0","cs-nsnstv-1.2.1.0-0f0c5d1c","containers-0.6.5.1","ck-0.4.5-cfccc30b","dt-dflt-clss-0.1.2.0-b0a51f50","deepseq-1.4.4.0","directory-1.3.6.0","fst-lggr-3.0.3-b2e892ac","http-typs-0.12.3-c2432fef","http2-2.0.6-d6761ca2","prt-1.7.11-6d20dc87","ntwrk-3.1.2.1-08b0c5d8","ld-lcl-1.0.0.7-fbd769ce","rsrct-1.2.4.2-8c58f12d","strmng-cmmns-0.2.2.1-f8c2fa62","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2","nx-cmpt-0.5.3-a704442d","vlt-0.3.1.5-2ae9d093","vd-0.7.3-3b10c00c","w-3.2.3-c218a955","w-lggr-2.3.6-3fd4ddab","wrd8-0.1.3-ac79ab23","zlb-0.6.2.3-69a07bb9"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"wbdrvr-0.9.0.1-8c8bf380","pkg-name":"webdriver","pkg-version":"0.9.0.1","flags":{"developer":false,"network-uri":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"95b810162a436390f83e8aa5e0038bb3a094f2f0ad35f30d3c07e2a3564ae26f","pkg-src-sha256":"135950889784b9d323c70ebf7ecd75b8df194489a303d85995b1fccc7549dff0","depends":["sn-1.4.7.1-f545389d","ttprsc-0.13.2.5-bfdb3102","base-4.14.3.0","bs64-bytstrng-1.0.0.3-4e6d0aeb","bytestring-0.10.12.0","cll-stck-0.3.0-7605e60f","dt-dflt-clss-0.1.2.0-b0a51f50","directory-1.3.6.0","drctry-tr-0.12.1-591e4ce7","exceptions-0.10.4","filepath-1.4.2.1","http-clnt-0.7.6-d2cedd3d","http-typs-0.12.3-c2432fef","lftd-bs-0.2.3.12-0139ca1f","mnd-cntrl-1.0.2.3-748e18fe","ntwrk-3.1.2.1-08b0c5d8","ntwrk-r-2.6.4.1-70848399","scntfc-0.3.6.2-734dabfd","tmprry-1.3-b8b887fd","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","trnsfrmrs-bs-0.4.5.2-3f76eadc","nrdrd-cntnrs-0.2.13.0-86a72f83","vctr-0.12.2.0-9301e615","zp-rchv-0.4.1-f2a3ddf8"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"wbsckts-0.12.7.2-af5140c4","pkg-name":"websockets","pkg-version":"0.12.7.2","flags":{"example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"5a6a3e40ee0c4e6b2cdc573a332ba4a06bb115b97b58147ed3fb005e3ede5ede","pkg-src-sha256":"84c45a5db481b4c969dddfa7d3cca257ac2a97801594f1180b596d41035122ad","depends":["SHA-1.6.4.4-47cba51b","sync-2.2.3-77cbb22e","ttprsc-0.13.2.5-bfdb3102","base-4.14.3.0","bs64-bytstrng-1.0.0.3-4e6d0aeb","binary-0.8.8.0","bytestring-0.10.12.0","bytstrng-bldr-0.10.8.2.0-4ab17831","cs-nsnstv-1.2.1.0-0f0c5d1c","clck-0.8.2-55eb42a0","containers-0.6.5.1","ntrpy-0.4.1.6-31ada688","ntwrk-3.1.2.1-08b0c5d8","rndm-1.2.0-5f8e0010","strmng-cmmns-0.2.2.1-f8c2fa62","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"wl-pprnt-txt-1.2.0.1-c0ba3a44","pkg-name":"wl-pprint-text","pkg-version":"1.2.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"14d3c6f5708da415558b1683d54c406864639cf6b08a8de7f36e8bcd08896603","pkg-src-sha256":"9e6efdba61da70caf85560570648ec097b88cc2b92bc1306135b93f0ff9b0c0c","components":{"lib":{"depends":["base-4.14.3.0","bs-cmpt-0.11.2-d5806554","text-1.2.4.1"],"exe-depends":[]}}},{"type":"configured","id":"wrd8-0.1.3-ac79ab23","pkg-name":"word8","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e5464d0600821a116467d4b12fef12b15ff040c3599500e5f0274225e78c6faf","pkg-src-sha256":"2630934c75728bfbf390c1f0206b225507b354f68d4047b06c018a36823b5d8a","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"wrp-3.3.14-d90ecb38","pkg-name":"warp","pkg-version":"3.3.14","flags":{"allow-sendfilefd":true,"network-bytestring":false,"warp-debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cd627497cb2a43ab7923d7df3aa90480ea2dac0de1b05455b40a89ea789ac2c7","pkg-src-sha256":"2331da1ac67c644828883498301bee7bbf59f8b3d79b37850a621cba9a811572","depends":["array-0.5.4.0","sync-2.2.3-77cbb22e","t-pdt-0.1.6-34d65238","base-4.14.3.0","bsb-http-chnkd-0.0.0.4-fe7d15c6","bytestring-0.10.12.0","cs-nsnstv-1.2.1.0-0f0c5d1c","containers-0.6.5.1","ghc-prim-0.6.1","hshbl-1.3.1.0-81a7e86a","http-dt-0.0.11-7b034d21","http-typs-0.12.3-c2432fef","http2-2.0.6-d6761ca2","prt-1.7.11-6d20dc87","ntwrk-3.1.2.1-08b0c5d8","smpl-sndfl-0.2.30-fd4e576c","stm-2.5.0.1","strmng-cmmns-0.2.2.1-f8c2fa62","text-1.2.4.1","tm-mngr-0.0.0-6703061d","unix-2.7.2.2","nx-cmpt-0.5.3-a704442d","vlt-0.3.1.5-2ae9d093","w-3.2.3-c218a955","wrd8-0.1.3-ac79ab23","x509-1.7.5-84d96510"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"x509-1.7.5-84d96510","pkg-name":"x509","pkg-version":"1.7.5","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"01185a9a17bee4e89287d9e32bfaa673133cf2b09a39759627bed1f72ea528fd","pkg-src-sha256":"b1b0fcbb4aa0d749ed2b54710c2ebd6d900cb932108ad14f97640cf4ca60c7c8","depends":["sn1-ncdng-0.9.6-00fac9aa","sn1-prs-0.9.5-8aca0976","sn1-typs-0.3.4-e09490aa","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","cryptnt-0.28-dfdefa25","hrglss-0.2.12-94395846","mmry-0.15.0-1ae4b367","mtl-2.2.2","pm-0.2.4-b7fc940c"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"xctbl-pth-0.0.3.1-a4e5146e","pkg-name":"executable-path","pkg-version":"0.0.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"865c184b96e224ba6727632176e457418aea02d8cfd6b65507d5d1a6c0372a85","pkg-src-sha256":"9cc742b6d40a487b3af38dca6852ca3b50a0db94d42fe819576c84beb5adbc6f","components":{"lib":{"depends":["base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1"],"exe-depends":[]}}},{"type":"pre-existing","id":"xhtml-3000.2.2.1","pkg-name":"xhtml","pkg-version":"3000.2.2.1","depends":["base-4.14.3.0"]},{"type":"configured","id":"xml-1.3.14-60ead35d","pkg-name":"xml","pkg-version":"1.3.14","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c7a33d37c968c769723931a33e4e795f0aadda6cb62e7073ded8a2db52509d95","pkg-src-sha256":"32d1a1a9f21a59176d84697f96ae3a13a0198420e3e4f1c48abbab7d2425013d","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0","text-1.2.4.1"],"exe-depends":[]}}},{"type":"configured","id":"xtnsbl-xcptns-0.1.1.4-58d8a3c5","pkg-name":"extensible-exceptions","pkg-version":"0.1.1.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"eb5fe684a7ffe8d1ed2ed6cdaec7dfb29efc780811ea7158a64edc2abc516f47","pkg-src-sha256":"6ce5e8801760385a408dab71b53550f87629e661b260bdc2cd41c6a439b6e388","components":{"lib":{"depends":["base-4.14.3.0"],"exe-depends":[]}}},{"type":"configured","id":"yml-0.11.5.0-e85230ae","pkg-name":"yaml","pkg-version":"0.11.5.0","flags":{"no-examples":true,"no-exe":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"499783456cb70964b6ff29e310d1785829e57eb872ec143a9a81da0edb69cb61","pkg-src-sha256":"b28e748bd69948cb1b43694d4d7c74756e060e09ca91688d0485e23f19d6cdad","depends":["sn-1.4.7.1-f545389d","ttprsc-0.13.2.5-bfdb3102","base-4.14.3.0","bytestring-0.10.12.0","cndt-1.3.4.1-7277901b","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","lbyml-0.1.2-7defdd02","mtl-2.2.2","rsrct-1.2.4.2-8c58f12d","scntfc-0.3.6.2-734dabfd","template-haskell-2.16.0.0","text-1.2.4.1","transformers-0.5.6.2","nrdrd-cntnrs-0.2.13.0-86a72f83","vctr-0.12.2.0-9301e615"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"zlb-0.6.2.3-69a07bb9","pkg-name":"zlib","pkg-version":"0.6.2.3","flags":{"bundled-c-zlib":false,"non-blocking-ffi":false,"pkg-config":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"28f4d460c260e074cab833625454564b9783a3389b7bb91fd54da2790b39592c","pkg-src-sha256":"807f6bddf9cb3c517ce5757d991dde3c7e319953a22c86ee03d74534bd5abc88","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"zp-rchv-0.4.1-f2a3ddf8","pkg-name":"zip-archive","pkg-version":"0.4.1","flags":{"executable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"51774bdc747d20b8f23172315f9c3fdd6c11de01607e98e9890eb87fb49566d7","pkg-src-sha256":"c5d5c9976241dcc25b0d8753dc526bb1bfef60f30dee38c53a7ae56e6be9b1b1","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","dgst-0.0.1.2-33c1e67d","directory-1.3.6.0","filepath-1.4.2.1","mtl-2.2.2","pretty-1.1.3.6","text-1.2.4.1","time-1.9.3","unix-2.7.2.2","zlb-0.6.2.3-69a07bb9"],"exe-depends":[],"component-name":"lib"}],"targets":[{"pkg-name":"Cabal","pkg-version":"3.2.1.0","component-name":"lib","available":[{"id":"Cabal-3.2.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"HUnit","pkg-version":"1.6.2.0","component-name":"lib","available":[{"id":"HUnt-1.6.2.0-b7015290","component-name":"lib","build-by-default":true}]},{"pkg-name":"HUnit","pkg-version":"1.6.2.0","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"lib","available":[{"id":"SHA-1.6.4.4-47cba51b","component-name":"lib","build-by-default":true}]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"exe:sha1","available":["TargetNotBuildable"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"exe:sha224","available":["TargetNotBuildable"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"exe:sha256","available":["TargetNotBuildable"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"exe:sha384","available":["TargetNotBuildable"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"exe:sha512","available":["TargetNotBuildable"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"test:test-sha","available":["TargetNotLocal"]},{"pkg-name":"StateVar","pkg-version":"1.2.1","component-name":"lib","available":[{"id":"SttVr-1.2.1-9a4219da","component-name":"lib","build-by-default":true}]},{"pkg-name":"adjunctions","pkg-version":"4.4","component-name":"lib","available":[{"id":"djnctns-4.4-a26f282f","component-name":"lib","build-by-default":true}]},{"pkg-name":"adjunctions","pkg-version":"4.4","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"aeson","pkg-version":"1.4.7.1","component-name":"lib","available":[{"id":"sn-1.4.7.1-f545389d","component-name":"lib","build-by-default":true}]},{"pkg-name":"aeson","pkg-version":"1.4.7.1","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"ansi-terminal","pkg-version":"0.11","component-name":"lib","available":[{"id":"ns-trmnl-0.11-ea4f31d8","component-name":"lib","build-by-default":true}]},{"pkg-name":"ansi-terminal","pkg-version":"0.11","component-name":"exe:ansi-terminal-example","available":["TargetNotBuildable"]},{"pkg-name":"ansi-wl-pprint","pkg-version":"0.6.9","component-name":"lib","available":[{"id":"ns-wl-pprnt-0.6.9-cbaf5426","component-name":"lib","build-by-default":true}]},{"pkg-name":"ansi-wl-pprint","pkg-version":"0.6.9","component-name":"exe:ansi-wl-pprint-example","available":["TargetNotBuildable"]},{"pkg-name":"appar","pkg-version":"0.1.8","component-name":"lib","available":[{"id":"ppr-0.1.8-c634d8fb","component-name":"lib","build-by-default":true}]},{"pkg-name":"array","pkg-version":"0.5.4.0","component-name":"lib","available":[{"id":"array-0.5.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"asn1-encoding","pkg-version":"0.9.6","component-name":"lib","available":[{"id":"sn1-ncdng-0.9.6-00fac9aa","component-name":"lib","build-by-default":true}]},{"pkg-name":"asn1-encoding","pkg-version":"0.9.6","component-name":"test:tests-asn1-encoding","available":["TargetNotLocal"]},{"pkg-name":"asn1-parse","pkg-version":"0.9.5","component-name":"lib","available":[{"id":"sn1-prs-0.9.5-8aca0976","component-name":"lib","build-by-default":true}]},{"pkg-name":"asn1-types","pkg-version":"0.3.4","component-name":"lib","available":[{"id":"sn1-typs-0.3.4-e09490aa","component-name":"lib","build-by-default":true}]},{"pkg-name":"async","pkg-version":"2.2.3","component-name":"lib","available":[{"id":"sync-2.2.3-77cbb22e","component-name":"lib","build-by-default":true}]},{"pkg-name":"async","pkg-version":"2.2.3","component-name":"exe:concasync","available":["TargetNotBuildable"]},{"pkg-name":"async","pkg-version":"2.2.3","component-name":"exe:conccancel","available":["TargetNotBuildable"]},{"pkg-name":"async","pkg-version":"2.2.3","component-name":"exe:race","available":["TargetNotBuildable"]},{"pkg-name":"async","pkg-version":"2.2.3","component-name":"test:test-async","available":["TargetNotLocal"]},{"pkg-name":"attoparsec","pkg-version":"0.13.2.5","component-name":"lib","available":[{"id":"ttprsc-0.13.2.5-bfdb3102","component-name":"lib","build-by-default":true}]},{"pkg-name":"attoparsec","pkg-version":"0.13.2.5","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"attoparsec","pkg-version":"0.13.2.5","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"auto-update","pkg-version":"0.1.6","component-name":"lib","available":[{"id":"t-pdt-0.1.6-34d65238","component-name":"lib","build-by-default":true}]},{"pkg-name":"auto-update","pkg-version":"0.1.6","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"base","pkg-version":"4.14.3.0","component-name":"lib","available":[{"id":"base-4.14.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base-compat","pkg-version":"0.11.2","component-name":"lib","available":[{"id":"bs-cmpt-0.11.2-d5806554","component-name":"lib","build-by-default":true}]},{"pkg-name":"base-compat-batteries","pkg-version":"0.11.2","component-name":"lib","available":[{"id":"bs-cmpt-bttrs-0.11.2-60bdc7ba","component-name":"lib","build-by-default":true}]},{"pkg-name":"base-compat-batteries","pkg-version":"0.11.2","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"base-orphans","pkg-version":"0.8.4","component-name":"lib","available":[{"id":"bs-rphns-0.8.4-c8f36af6","component-name":"lib","build-by-default":true}]},{"pkg-name":"base-orphans","pkg-version":"0.8.4","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"base16-bytestring","pkg-version":"0.1.1.7","component-name":"lib","available":[{"id":"bs16-bytstrng-0.1.1.7-df2561c0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base16-bytestring","pkg-version":"0.1.1.7","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"base64-bytestring","pkg-version":"1.0.0.3","component-name":"lib","available":[{"id":"bs64-bytstrng-1.0.0.3-4e6d0aeb","component-name":"lib","build-by-default":true}]},{"pkg-name":"base64-bytestring","pkg-version":"1.0.0.3","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"base64-bytestring","pkg-version":"1.0.0.3","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"basement","pkg-version":"0.0.11","component-name":"lib","available":[{"id":"bsmnt-0.0.11-f050f8fa","component-name":"lib","build-by-default":true}]},{"pkg-name":"bifunctors","pkg-version":"5.5.7","component-name":"lib","available":[{"id":"bfnctrs-5.5.7-195e3fe2","component-name":"lib","build-by-default":true}]},{"pkg-name":"bifunctors","pkg-version":"5.5.7","component-name":"test:bifunctors-spec","available":["TargetNotLocal"]},{"pkg-name":"binary","pkg-version":"0.8.8.0","component-name":"lib","available":[{"id":"binary-0.8.8.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"blaze-builder","pkg-version":"0.4.2.1","component-name":"lib","available":[{"id":"blz-bldr-0.4.2.1-f5d6708e","component-name":"lib","build-by-default":true}]},{"pkg-name":"blaze-builder","pkg-version":"0.4.2.1","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"blaze-html","pkg-version":"0.9.1.2","component-name":"lib","available":[{"id":"blz-html-0.9.1.2-11bdfacd","component-name":"lib","build-by-default":true}]},{"pkg-name":"blaze-html","pkg-version":"0.9.1.2","component-name":"test:blaze-html-tests","available":["TargetNotLocal"]},{"pkg-name":"blaze-markup","pkg-version":"0.8.2.8","component-name":"lib","available":[{"id":"blz-mrkp-0.8.2.8-65ba3032","component-name":"lib","build-by-default":true}]},{"pkg-name":"blaze-markup","pkg-version":"0.8.2.8","component-name":"test:blaze-markup-tests","available":["TargetNotLocal"]},{"pkg-name":"bsb-http-chunked","pkg-version":"0.0.0.4","component-name":"lib","available":[{"id":"bsb-http-chnkd-0.0.0.4-fe7d15c6","component-name":"lib","build-by-default":true}]},{"pkg-name":"bsb-http-chunked","pkg-version":"0.0.0.4","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"bsb-http-chunked","pkg-version":"0.0.0.4","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"bsb-http-chunked","pkg-version":"0.0.0.4","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"byteable","pkg-version":"0.1.1","component-name":"lib","available":[{"id":"bytbl-0.1.1-2633b450","component-name":"lib","build-by-default":true}]},{"pkg-name":"byteorder","pkg-version":"1.0.4","component-name":"lib","available":[{"id":"bytrdr-1.0.4-81c9a110","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring","pkg-version":"0.10.12.0","component-name":"lib","available":[{"id":"bytestring-0.10.12.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring-builder","pkg-version":"0.10.8.2.0","component-name":"lib","available":[{"id":"bytstrng-bldr-0.10.8.2.0-4ab17831","component-name":"lib","build-by-default":true}]},{"pkg-name":"cabal-doctest","pkg-version":"1.0.8","component-name":"lib","available":[{"id":"cbl-dctst-1.0.8-001accad","component-name":"lib","build-by-default":true}]},{"pkg-name":"call-stack","pkg-version":"0.3.0","component-name":"lib","available":[{"id":"cll-stck-0.3.0-7605e60f","component-name":"lib","build-by-default":true}]},{"pkg-name":"call-stack","pkg-version":"0.3.0","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"case-insensitive","pkg-version":"1.2.1.0","component-name":"lib","available":[{"id":"cs-nsnstv-1.2.1.0-0f0c5d1c","component-name":"lib","build-by-default":true}]},{"pkg-name":"case-insensitive","pkg-version":"1.2.1.0","component-name":"test:test-case-insensitive","available":["TargetNotLocal"]},{"pkg-name":"case-insensitive","pkg-version":"1.2.1.0","component-name":"bench:bench-case-insensitive","available":["TargetNotLocal"]},{"pkg-name":"clock","pkg-version":"0.8.2","component-name":"lib","available":[{"id":"clck-0.8.2-55eb42a0","component-name":"lib","build-by-default":true}]},{"pkg-name":"clock","pkg-version":"0.8.2","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"clock","pkg-version":"0.8.2","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"colour","pkg-version":"2.3.5","component-name":"lib","available":[{"id":"clr-2.3.5-3ce536bf","component-name":"lib","build-by-default":true}]},{"pkg-name":"colour","pkg-version":"2.3.5","component-name":"test:test-colour","available":["TargetNotLocal"]},{"pkg-name":"comonad","pkg-version":"5.0.8","component-name":"lib","available":[{"id":"cmnd-5.0.8-89fd52db","component-name":"lib","build-by-default":true}]},{"pkg-name":"conduit","pkg-version":"1.3.4.1","component-name":"lib","available":[{"id":"cndt-1.3.4.1-7277901b","component-name":"lib","build-by-default":true}]},{"pkg-name":"conduit","pkg-version":"1.3.4.1","component-name":"test:conduit-test","available":["TargetNotLocal"]},{"pkg-name":"conduit","pkg-version":"1.3.4.1","component-name":"bench:optimize-201408","available":["TargetNotLocal"]},{"pkg-name":"conduit","pkg-version":"1.3.4.1","component-name":"bench:unfused","available":["TargetNotLocal"]},{"pkg-name":"constraints","pkg-version":"0.13","component-name":"lib","available":[{"id":"cnstrnts-0.13-1b93bc9d","component-name":"lib","build-by-default":true}]},{"pkg-name":"constraints","pkg-version":"0.13","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"containers","pkg-version":"0.6.5.1","component-name":"lib","available":[{"id":"containers-0.6.5.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"contravariant","pkg-version":"1.5.3","component-name":"lib","available":[{"id":"cntrvrnt-1.5.3-cf62fb3c","component-name":"lib","build-by-default":true}]},{"pkg-name":"cookie","pkg-version":"0.4.5","component-name":"lib","available":[{"id":"ck-0.4.5-cfccc30b","component-name":"lib","build-by-default":true}]},{"pkg-name":"cookie","pkg-version":"0.4.5","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"cryptohash","pkg-version":"0.11.9","component-name":"lib","available":[{"id":"crypthsh-0.11.9-7a1d901a","component-name":"lib","build-by-default":true}]},{"pkg-name":"cryptohash","pkg-version":"0.11.9","component-name":"test:test-kat","available":["TargetNotLocal"]},{"pkg-name":"cryptohash","pkg-version":"0.11.9","component-name":"bench:bench-api","available":["TargetNotLocal"]},{"pkg-name":"cryptohash","pkg-version":"0.11.9","component-name":"bench:bench-hashes","available":["TargetNotLocal"]},{"pkg-name":"cryptohash","pkg-version":"0.11.9","component-name":"bench:bench-hmac","available":["TargetNotLocal"]},{"pkg-name":"cryptonite","pkg-version":"0.28","component-name":"lib","available":[{"id":"cryptnt-0.28-dfdefa25","component-name":"lib","build-by-default":true}]},{"pkg-name":"cryptonite","pkg-version":"0.28","component-name":"test:test-cryptonite","available":["TargetNotLocal"]},{"pkg-name":"cryptonite","pkg-version":"0.28","component-name":"bench:bench-cryptonite","available":["TargetNotLocal"]},{"pkg-name":"data-default","pkg-version":"0.7.1.1","component-name":"lib","available":[{"id":"dt-dflt-0.7.1.1-2f50bc38","component-name":"lib","build-by-default":true}]},{"pkg-name":"data-default-class","pkg-version":"0.1.2.0","component-name":"lib","available":[{"id":"dt-dflt-clss-0.1.2.0-b0a51f50","component-name":"lib","build-by-default":true}]},{"pkg-name":"data-default-instances-containers","pkg-version":"0.0.1","component-name":"lib","available":[{"id":"dt-dflt-nstncs-cntnrs-0.0.1-6a172060","component-name":"lib","build-by-default":true}]},{"pkg-name":"data-default-instances-dlist","pkg-version":"0.0.1","component-name":"lib","available":[{"id":"dt-dflt-nstncs-dlst-0.0.1-aafdaf2f","component-name":"lib","build-by-default":true}]},{"pkg-name":"data-default-instances-old-locale","pkg-version":"0.0.1","component-name":"lib","available":[{"id":"dt-dflt-nstncs-ld-lcl-0.0.1-7e7191a8","component-name":"lib","build-by-default":true}]},{"pkg-name":"deepseq","pkg-version":"1.4.4.0","component-name":"lib","available":[{"id":"deepseq-1.4.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"digest","pkg-version":"0.0.1.2","component-name":"lib","available":[{"id":"dgst-0.0.1.2-33c1e67d","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory","pkg-version":"1.3.6.0","component-name":"lib","available":[{"id":"directory-1.3.6.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory-tree","pkg-version":"0.12.1","component-name":"lib","available":[{"id":"drctry-tr-0.12.1-591e4ce7","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory-tree","pkg-version":"0.12.1","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"distributive","pkg-version":"0.6.2.1","component-name":"lib","available":[{"id":"dstrbtv-0.6.2.1-27e474d4","component-name":"lib","build-by-default":true}]},{"pkg-name":"distributive","pkg-version":"0.6.2.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"dlist","pkg-version":"0.8.0.8","component-name":"lib","available":[{"id":"dlst-0.8.0.8-96990b97","component-name":"lib","build-by-default":true}]},{"pkg-name":"dlist","pkg-version":"0.8.0.8","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"easy-file","pkg-version":"0.2.2","component-name":"lib","available":[{"id":"sy-fl-0.2.2-c2329e48","component-name":"lib","build-by-default":true}]},{"pkg-name":"enclosed-exceptions","pkg-version":"1.0.3","component-name":"lib","available":[{"id":"nclsd-xcptns-1.0.3-a8a2e7cb","component-name":"lib","build-by-default":true}]},{"pkg-name":"enclosed-exceptions","pkg-version":"1.0.3","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"entropy","pkg-version":"0.4.1.6","component-name":"lib","available":[{"id":"ntrpy-0.4.1.6-31ada688","component-name":"lib","build-by-default":true}]},{"pkg-name":"exceptions","pkg-version":"0.10.4","component-name":"lib","available":[{"id":"exceptions-0.10.4","component-name":"lib","build-by-default":true}]},{"pkg-name":"executable-path","pkg-version":"0.0.3.1","component-name":"lib","available":[{"id":"xctbl-pth-0.0.3.1-a4e5146e","component-name":"lib","build-by-default":true}]},{"pkg-name":"extensible-exceptions","pkg-version":"0.1.1.4","component-name":"lib","available":[{"id":"xtnsbl-xcptns-0.1.1.4-58d8a3c5","component-name":"lib","build-by-default":true}]},{"pkg-name":"fast-logger","pkg-version":"3.0.3","component-name":"lib","available":[{"id":"fst-lggr-3.0.3-b2e892ac","component-name":"lib","build-by-default":true}]},{"pkg-name":"fast-logger","pkg-version":"3.0.3","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"file-embed","pkg-version":"0.0.13.0","component-name":"lib","available":[{"id":"fl-mbd-0.0.13.0-7552374e","component-name":"lib","build-by-default":true}]},{"pkg-name":"file-embed","pkg-version":"0.0.13.0","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"filepath","pkg-version":"1.4.2.1","component-name":"lib","available":[{"id":"filepath-1.4.2.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"free","pkg-version":"5.1.3","component-name":"lib","available":[{"id":"fr-5.1.3-805aa632","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-boot","pkg-version":"8.10.7","component-name":"lib","available":[{"id":"ghc-boot-8.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-boot-th","pkg-version":"8.10.7","component-name":"lib","available":[{"id":"ghc-boot-th-8.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-compact","pkg-version":"0.1.0.0","component-name":"lib","available":[{"id":"ghc-compact-0.1.0.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-heap","pkg-version":"8.10.7","component-name":"lib","available":[{"id":"ghc-heap-8.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-paths","pkg-version":"0.1.0.12","component-name":"lib","available":[{"id":"ghc-pths-0.1.0.12-22eabb95","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.6.1","component-name":"lib","available":[{"id":"ghc-prim-0.6.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghci","pkg-version":"8.10.7","component-name":"lib","available":[{"id":"ghci-8.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"lib","available":[{"id":"ghcjs-8.10.7-inplace","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:ghcjs","available":[{"id":"ghcjs-8.10.7-inplace-ghcjs","component-name":"exe:ghcjs","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:ghcjs-boot","available":[{"id":"ghcjs-8.10.7-inplace-ghcjs-boot","component-name":"exe:ghcjs-boot","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:ghcjs-dumparchive","available":[{"id":"ghcjs-8.10.7-inplace-ghcjs-dumparchive","component-name":"exe:ghcjs-dumparchive","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:ghcjs-pkg","available":[{"id":"ghcjs-8.10.7-inplace-ghcjs-pkg","component-name":"exe:ghcjs-pkg","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:haddock","available":[{"id":"ghcjs-8.10.7-inplace-haddock","component-name":"exe:haddock","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:private-ghcjs-hsc2hs","available":[{"id":"ghcjs-8.10.7-inplace-private-ghcjs-hsc2hs","component-name":"exe:private-ghcjs-hsc2hs","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:private-ghcjs-run","available":[{"id":"ghcjs-8.10.7-inplace-private-ghcjs-run","component-name":"exe:private-ghcjs-run","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:private-ghcjs-touchy","available":["TargetNotBuildable"]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:private-ghcjs-unlit","available":[{"id":"ghcjs-8.10.7-inplace-private-ghcjs-unlit","component-name":"exe:private-ghcjs-unlit","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:private-ghcjs-wrapper","available":["TargetNotBuildable"]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"test:test","available":[{"id":"ghcjs-8.10.7-inplace-test","component-name":"test:test","build-by-default":true}]},{"pkg-name":"ghcjs-th","pkg-version":"0.1.0.0","component-name":"lib","available":[{"id":"ghcjs-th-0.1.0.0-inplace","component-name":"lib","build-by-default":true}]},{"pkg-name":"happy","pkg-version":"1.20.0","component-name":"exe:happy","available":[{"id":"hppy-1.20.0-c7a066ac","component-name":"exe:happy","build-by-default":true}]},{"pkg-name":"happy","pkg-version":"1.20.0","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"hashable","pkg-version":"1.3.1.0","component-name":"lib","available":[{"id":"hshbl-1.3.1.0-81a7e86a","component-name":"lib","build-by-default":true}]},{"pkg-name":"hashable","pkg-version":"1.3.1.0","component-name":"test:hashable-examples","available":["TargetNotLocal"]},{"pkg-name":"hashable","pkg-version":"1.3.1.0","component-name":"test:hashable-tests","available":["TargetNotLocal"]},{"pkg-name":"hostname","pkg-version":"1.0","component-name":"lib","available":[{"id":"hstnm-1.0-c687754f","component-name":"lib","build-by-default":true}]},{"pkg-name":"hourglass","pkg-version":"0.2.12","component-name":"lib","available":[{"id":"hrglss-0.2.12-94395846","component-name":"lib","build-by-default":true}]},{"pkg-name":"hourglass","pkg-version":"0.2.12","component-name":"test:test-hourglass","available":["TargetNotLocal"]},{"pkg-name":"hourglass","pkg-version":"0.2.12","component-name":"bench:bench-hourglass","available":["TargetNotLocal"]},{"pkg-name":"hpc","pkg-version":"0.6.1.0","component-name":"lib","available":[{"id":"hpc-0.6.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"hsc2hs","pkg-version":"0.68.7","component-name":"exe:hsc2hs","available":[{"id":"hsc2hs-0.68.7-83233b7f","component-name":"exe:hsc2hs","build-by-default":true}]},{"pkg-name":"hsc2hs","pkg-version":"0.68.7","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"http-client","pkg-version":"0.7.6","component-name":"lib","available":[{"id":"http-clnt-0.7.6-d2cedd3d","component-name":"lib","build-by-default":true}]},{"pkg-name":"http-client","pkg-version":"0.7.6","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"http-client","pkg-version":"0.7.6","component-name":"test:spec-nonet","available":["TargetNotLocal"]},{"pkg-name":"http-date","pkg-version":"0.0.11","component-name":"lib","available":[{"id":"http-dt-0.0.11-7b034d21","component-name":"lib","build-by-default":true}]},{"pkg-name":"http-date","pkg-version":"0.0.11","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"http-date","pkg-version":"0.0.11","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"http-types","pkg-version":"0.12.3","component-name":"lib","available":[{"id":"http-typs-0.12.3-c2432fef","component-name":"lib","build-by-default":true}]},{"pkg-name":"http-types","pkg-version":"0.12.3","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"http-types","pkg-version":"0.12.3","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"lib","available":[{"id":"http2-2.0.6-d6761ca2","component-name":"lib","build-by-default":true}]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"exe:frame-encode","available":["TargetNotBuildable"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"exe:hpack-debug","available":["TargetNotBuildable"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"exe:hpack-encode","available":["TargetNotBuildable"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"exe:hpack-stat","available":["TargetNotBuildable"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"test:doctest","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"test:frame","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"test:hpack","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"bench:header-compression","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"bench:priority","available":["TargetNotLocal"]},{"pkg-name":"indexed-traversable","pkg-version":"0.1.1","component-name":"lib","available":[{"id":"ndxd-trvrsbl-0.1.1-5423d452","component-name":"lib","build-by-default":true}]},{"pkg-name":"integer-gmp","pkg-version":"1.0.3.0","component-name":"lib","available":[{"id":"integer-gmp-1.0.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"integer-logarithms","pkg-version":"1.0.3.1","component-name":"lib","available":[{"id":"ntgr-lgrthms-1.0.3.1-bcc6b5f0","component-name":"lib","build-by-default":true}]},{"pkg-name":"integer-logarithms","pkg-version":"1.0.3.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"invariant","pkg-version":"0.5.3","component-name":"lib","available":[{"id":"nvrnt-0.5.3-9235ec85","component-name":"lib","build-by-default":true}]},{"pkg-name":"invariant","pkg-version":"0.5.3","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"iproute","pkg-version":"1.7.11","component-name":"lib","available":[{"id":"prt-1.7.11-6d20dc87","component-name":"lib","build-by-default":true}]},{"pkg-name":"iproute","pkg-version":"1.7.11","component-name":"test:doctest","available":["TargetNotLocal"]},{"pkg-name":"iproute","pkg-version":"1.7.11","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"kan-extensions","pkg-version":"5.2.2","component-name":"lib","available":[{"id":"kn-xtnsns-5.2.2-bc676010","component-name":"lib","build-by-default":true}]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"lib","available":[{"id":"lns-4.19.2-261cde91","component-name":"lib","build-by-default":true}]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"test:hunit","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"test:properties","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"test:templates","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"bench:alongside","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"bench:folds","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"bench:plated","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"bench:traversals","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"bench:unsafe","available":["TargetNotLocal"]},{"pkg-name":"libyaml","pkg-version":"0.1.2","component-name":"lib","available":[{"id":"lbyml-0.1.2-7defdd02","component-name":"lib","build-by-default":true}]},{"pkg-name":"lifted-async","pkg-version":"0.10.1.3","component-name":"lib","available":[{"id":"lftd-sync-0.10.1.3-f2051f67","component-name":"lib","build-by-default":true}]},{"pkg-name":"lifted-async","pkg-version":"0.10.1.3","component-name":"test:regression-tests","available":["TargetNotLocal"]},{"pkg-name":"lifted-async","pkg-version":"0.10.1.3","component-name":"test:test-lifted-async","available":["TargetNotLocal"]},{"pkg-name":"lifted-async","pkg-version":"0.10.1.3","component-name":"bench:benchmark-lifted-async","available":["TargetNotLocal"]},{"pkg-name":"lifted-async","pkg-version":"0.10.1.3","component-name":"bench:benchmark-lifted-async-threaded","available":["TargetNotLocal"]},{"pkg-name":"lifted-base","pkg-version":"0.2.3.12","component-name":"lib","available":[{"id":"lftd-bs-0.2.3.12-0139ca1f","component-name":"lib","build-by-default":true}]},{"pkg-name":"lifted-base","pkg-version":"0.2.3.12","component-name":"test:test-lifted-base","available":["TargetNotLocal"]},{"pkg-name":"lifted-base","pkg-version":"0.2.3.12","component-name":"bench:bench-lifted-base","available":["TargetNotLocal"]},{"pkg-name":"memory","pkg-version":"0.15.0","component-name":"lib","available":[{"id":"mmry-0.15.0-1ae4b367","component-name":"lib","build-by-default":true}]},{"pkg-name":"memory","pkg-version":"0.15.0","component-name":"test:test-memory","available":["TargetNotLocal"]},{"pkg-name":"mime-types","pkg-version":"0.1.0.9","component-name":"lib","available":[{"id":"mm-typs-0.1.0.9-f771e3c4","component-name":"lib","build-by-default":true}]},{"pkg-name":"monad-control","pkg-version":"1.0.2.3","component-name":"lib","available":[{"id":"mnd-cntrl-1.0.2.3-748e18fe","component-name":"lib","build-by-default":true}]},{"pkg-name":"mono-traversable","pkg-version":"1.0.15.1","component-name":"lib","available":[{"id":"mn-trvrsbl-1.0.15.1-62aa4220","component-name":"lib","build-by-default":true}]},{"pkg-name":"mono-traversable","pkg-version":"1.0.15.1","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"mono-traversable","pkg-version":"1.0.15.1","component-name":"bench:sorting","available":["TargetNotLocal"]},{"pkg-name":"mtl","pkg-version":"2.2.2","component-name":"lib","available":[{"id":"mtl-2.2.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"network","pkg-version":"3.1.2.1","component-name":"lib","available":[{"id":"ntwrk-3.1.2.1-08b0c5d8","component-name":"lib","build-by-default":true}]},{"pkg-name":"network","pkg-version":"3.1.2.1","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"network","pkg-version":"3.1.2.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"network-byte-order","pkg-version":"0.1.6","component-name":"lib","available":[{"id":"ntwrk-byt-rdr-0.1.6-5bc10b06","component-name":"lib","build-by-default":true}]},{"pkg-name":"network-byte-order","pkg-version":"0.1.6","component-name":"test:doctest","available":["TargetNotLocal"]},{"pkg-name":"network-uri","pkg-version":"2.6.4.1","component-name":"lib","available":[{"id":"ntwrk-r-2.6.4.1-70848399","component-name":"lib","build-by-default":true}]},{"pkg-name":"network-uri","pkg-version":"2.6.4.1","component-name":"test:uri","available":["TargetNotLocal"]},{"pkg-name":"network-uri","pkg-version":"2.6.4.1","component-name":"bench:uri-bench","available":["TargetNotLocal"]},{"pkg-name":"old-locale","pkg-version":"1.0.0.7","component-name":"lib","available":[{"id":"ld-lcl-1.0.0.7-fbd769ce","component-name":"lib","build-by-default":true}]},{"pkg-name":"old-time","pkg-version":"1.1.0.3","component-name":"lib","available":[{"id":"ld-tm-1.1.0.3-c649dfa8","component-name":"lib","build-by-default":true}]},{"pkg-name":"optparse-applicative","pkg-version":"0.15.1.0","component-name":"lib","available":[{"id":"ptprs-pplctv-0.15.1.0-84e62b2b","component-name":"lib","build-by-default":true}]},{"pkg-name":"optparse-applicative","pkg-version":"0.15.1.0","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"parallel","pkg-version":"3.2.2.0","component-name":"lib","available":[{"id":"prlll-3.2.2.0-ba7f78ce","component-name":"lib","build-by-default":true}]},{"pkg-name":"parsec","pkg-version":"3.1.14.0","component-name":"lib","available":[{"id":"parsec-3.1.14.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"pem","pkg-version":"0.2.4","component-name":"lib","available":[{"id":"pm-0.2.4-b7fc940c","component-name":"lib","build-by-default":true}]},{"pkg-name":"pem","pkg-version":"0.2.4","component-name":"test:test-pem","available":["TargetNotLocal"]},{"pkg-name":"pretty","pkg-version":"1.1.3.6","component-name":"lib","available":[{"id":"pretty-1.1.3.6","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.7.1.0","component-name":"lib","available":[{"id":"prmtv-0.7.1.0-9e5d8d36","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.7.1.0","component-name":"test:test-qc","available":["TargetNotLocal"]},{"pkg-name":"process","pkg-version":"1.6.13.2","component-name":"lib","available":[{"id":"process-1.6.13.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"profunctors","pkg-version":"5.6","component-name":"lib","available":[{"id":"prfnctrs-5.6-bf1267af","component-name":"lib","build-by-default":true}]},{"pkg-name":"psqueues","pkg-version":"0.2.7.2","component-name":"lib","available":[{"id":"psqs-0.2.7.2-3928525f","component-name":"lib","build-by-default":true}]},{"pkg-name":"psqueues","pkg-version":"0.2.7.2","component-name":"test:psqueues-tests","available":["TargetNotLocal"]},{"pkg-name":"psqueues","pkg-version":"0.2.7.2","component-name":"bench:psqueues-benchmarks","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"lib","available":[{"id":"rndm-1.2.0-5f8e0010","component-name":"lib","build-by-default":true}]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"test:legacy-test","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"bench:legacy-bench","available":["TargetNotLocal"]},{"pkg-name":"reflection","pkg-version":"2.1.6","component-name":"lib","available":[{"id":"rflctn-2.1.6-e0ea7273","component-name":"lib","build-by-default":true}]},{"pkg-name":"reflection","pkg-version":"2.1.6","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"regex-base","pkg-version":"0.94.0.1","component-name":"lib","available":[{"id":"rgx-bs-0.94.0.1-fcc8da24","component-name":"lib","build-by-default":true}]},{"pkg-name":"regex-posix","pkg-version":"0.96.0.0","component-name":"lib","available":[{"id":"rgx-psx-0.96.0.0-a3587e43","component-name":"lib","build-by-default":true}]},{"pkg-name":"resourcet","pkg-version":"1.2.4.2","component-name":"lib","available":[{"id":"rsrct-1.2.4.2-8c58f12d","component-name":"lib","build-by-default":true}]},{"pkg-name":"resourcet","pkg-version":"1.2.4.2","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"safe","pkg-version":"0.3.19","component-name":"lib","available":[{"id":"sf-0.3.19-acedf167","component-name":"lib","build-by-default":true}]},{"pkg-name":"safe","pkg-version":"0.3.19","component-name":"test:safe-test","available":["TargetNotLocal"]},{"pkg-name":"scientific","pkg-version":"0.3.6.2","component-name":"lib","available":[{"id":"scntfc-0.3.6.2-734dabfd","component-name":"lib","build-by-default":true}]},{"pkg-name":"scientific","pkg-version":"0.3.6.2","component-name":"test:test-scientific","available":["TargetNotLocal"]},{"pkg-name":"scientific","pkg-version":"0.3.6.2","component-name":"bench:bench-scientific","available":["TargetNotLocal"]},{"pkg-name":"semigroupoids","pkg-version":"5.3.4","component-name":"lib","available":[{"id":"smgrpds-5.3.4-9d8fc753","component-name":"lib","build-by-default":true}]},{"pkg-name":"semigroupoids","pkg-version":"5.3.4","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"semigroups","pkg-version":"0.19.1","component-name":"lib","available":[{"id":"smgrps-0.19.1-253fa398","component-name":"lib","build-by-default":true}]},{"pkg-name":"shelly","pkg-version":"1.9.0","component-name":"lib","available":[{"id":"shlly-1.9.0-4138217d","component-name":"lib","build-by-default":true}]},{"pkg-name":"shelly","pkg-version":"1.9.0","component-name":"exe:Color","available":["TargetNotBuildable"]},{"pkg-name":"shelly","pkg-version":"1.9.0","component-name":"exe:drain","available":["TargetNotBuildable"]},{"pkg-name":"shelly","pkg-version":"1.9.0","component-name":"exe:run-handles","available":["TargetNotBuildable"]},{"pkg-name":"shelly","pkg-version":"1.9.0","component-name":"test:shelly-testsuite","available":["TargetNotLocal"]},{"pkg-name":"simple-sendfile","pkg-version":"0.2.30","component-name":"lib","available":[{"id":"smpl-sndfl-0.2.30-fd4e576c","component-name":"lib","build-by-default":true}]},{"pkg-name":"simple-sendfile","pkg-version":"0.2.30","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"split","pkg-version":"0.2.3.4","component-name":"lib","available":[{"id":"splt-0.2.3.4-d58cb8cf","component-name":"lib","build-by-default":true}]},{"pkg-name":"split","pkg-version":"0.2.3.4","component-name":"test:split-tests","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"lib","available":[{"id":"spltmx-0.1.0.3-f9f98fdf","component-name":"lib","build-by-default":true}]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:examples","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:initialization","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:montecarlo-pi","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:montecarlo-pi-32","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:splitmix-dieharder","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:splitmix-tests","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"bench:comparison","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"bench:range","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"bench:simple-sum","available":["TargetNotLocal"]},{"pkg-name":"stm","pkg-version":"2.5.0.1","component-name":"lib","available":[{"id":"stm-2.5.0.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"streaming-commons","pkg-version":"0.2.2.1","component-name":"lib","available":[{"id":"strmng-cmmns-0.2.2.1-f8c2fa62","component-name":"lib","build-by-default":true}]},{"pkg-name":"streaming-commons","pkg-version":"0.2.2.1","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"streaming-commons","pkg-version":"0.2.2.1","component-name":"bench:builder-to-bytestring-io","available":["TargetNotLocal"]},{"pkg-name":"streaming-commons","pkg-version":"0.2.2.1","component-name":"bench:count-chars","available":["TargetNotLocal"]},{"pkg-name":"streaming-commons","pkg-version":"0.2.2.1","component-name":"bench:decode-memory-usage","available":["TargetNotLocal"]},{"pkg-name":"stringsearch","pkg-version":"0.3.6.6","component-name":"lib","available":[{"id":"strngsrch-0.3.6.6-d69f1338","component-name":"lib","build-by-default":true}]},{"pkg-name":"syb","pkg-version":"0.7.2.1","component-name":"lib","available":[{"id":"syb-0.7.2.1-ad42e2f3","component-name":"lib","build-by-default":true}]},{"pkg-name":"syb","pkg-version":"0.7.2.1","component-name":"test:unit-tests","available":["TargetNotLocal"]},{"pkg-name":"tagged","pkg-version":"0.8.6.1","component-name":"lib","available":[{"id":"tggd-0.8.6.1-22e9a365","component-name":"lib","build-by-default":true}]},{"pkg-name":"tar","pkg-version":"0.5.1.1","component-name":"lib","available":[{"id":"tr-0.5.1.1-52757773","component-name":"lib","build-by-default":true}]},{"pkg-name":"tar","pkg-version":"0.5.1.1","component-name":"test:properties","available":["TargetNotLocal"]},{"pkg-name":"tar","pkg-version":"0.5.1.1","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"template-haskell","pkg-version":"2.16.0.0","component-name":"lib","available":[{"id":"template-haskell-2.16.0.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"temporary","pkg-version":"1.3","component-name":"lib","available":[{"id":"tmprry-1.3-b8b887fd","component-name":"lib","build-by-default":true}]},{"pkg-name":"temporary","pkg-version":"1.3","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"terminfo","pkg-version":"0.4.1.4","component-name":"lib","available":[{"id":"terminfo-0.4.1.4","component-name":"lib","build-by-default":true}]},{"pkg-name":"test-framework","pkg-version":"0.8.2.0","component-name":"lib","available":[{"id":"tst-frmwrk-0.8.2.0-541e50fd","component-name":"lib","build-by-default":true}]},{"pkg-name":"test-framework","pkg-version":"0.8.2.0","component-name":"test:test-framework-tests","available":["TargetNotLocal"]},{"pkg-name":"test-framework-hunit","pkg-version":"0.3.0.2","component-name":"lib","available":[{"id":"tst-frmwrk-hnt-0.3.0.2-b7e00943","component-name":"lib","build-by-default":true}]},{"pkg-name":"text","pkg-version":"1.2.4.1","component-name":"lib","available":[{"id":"text-1.2.4.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"th-abstraction","pkg-version":"0.3.2.0","component-name":"lib","available":[{"id":"th-bstrctn-0.3.2.0-ed858cb3","component-name":"lib","build-by-default":true}]},{"pkg-name":"th-abstraction","pkg-version":"0.3.2.0","component-name":"test:unit-tests","available":["TargetNotLocal"]},{"pkg-name":"th-compat","pkg-version":"0.1.2","component-name":"lib","available":[{"id":"th-cmpt-0.1.2-214f3ab8","component-name":"lib","build-by-default":true}]},{"pkg-name":"th-compat","pkg-version":"0.1.2","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"time","pkg-version":"1.9.3","component-name":"lib","available":[{"id":"time-1.9.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"time-compat","pkg-version":"1.9.5","component-name":"lib","available":[{"id":"tm-cmpt-1.9.5-7f0b56a3","component-name":"lib","build-by-default":true}]},{"pkg-name":"time-compat","pkg-version":"1.9.5","component-name":"test:instances","available":["TargetNotLocal"]},{"pkg-name":"time-compat","pkg-version":"1.9.5","component-name":"test:main","available":["TargetNotLocal"]},{"pkg-name":"time-manager","pkg-version":"0.0.0","component-name":"lib","available":[{"id":"tm-mngr-0.0.0-6703061d","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers","pkg-version":"0.5.6.2","component-name":"lib","available":[{"id":"transformers-0.5.6.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers-base","pkg-version":"0.4.5.2","component-name":"lib","available":[{"id":"trnsfrmrs-bs-0.4.5.2-3f76eadc","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers-compat","pkg-version":"0.6.6","component-name":"lib","available":[{"id":"trnsfrmrs-cmpt-0.6.6-c2257ba9","component-name":"lib","build-by-default":true}]},{"pkg-name":"type-equality","pkg-version":"1","component-name":"lib","available":[{"id":"typ-qlty-1-8a20443f","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix","pkg-version":"2.7.2.2","component-name":"lib","available":[{"id":"unix-2.7.2.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix-compat","pkg-version":"0.5.3","component-name":"lib","available":[{"id":"nx-cmpt-0.5.3-a704442d","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix-time","pkg-version":"0.4.7","component-name":"lib","available":[{"id":"nx-tm-0.4.7-387b5d59","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix-time","pkg-version":"0.4.7","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"unix-time","pkg-version":"0.4.7","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"unliftio-core","pkg-version":"0.2.0.1","component-name":"lib","available":[{"id":"nlft-cr-0.2.0.1-0ed8000c","component-name":"lib","build-by-default":true}]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"lib","available":[{"id":"nrdrd-cntnrs-0.2.13.0-86a72f83","component-name":"lib","build-by-default":true}]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:hashmap-lazy-properties","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:hashmap-strict-properties","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:hashset-properties","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:list-tests","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:regressions","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:strictness-properties","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"uuid-types","pkg-version":"1.0.4","component-name":"lib","available":[{"id":"d-typs-1.0.4-6e509a2f","component-name":"lib","build-by-default":true}]},{"pkg-name":"uuid-types","pkg-version":"1.0.4","component-name":"test:testuuid","available":["TargetNotLocal"]},{"pkg-name":"vault","pkg-version":"0.3.1.5","component-name":"lib","available":[{"id":"vlt-0.3.1.5-2ae9d093","component-name":"lib","build-by-default":true}]},{"pkg-name":"vector","pkg-version":"0.12.2.0","component-name":"lib","available":[{"id":"vctr-0.12.2.0-9301e615","component-name":"lib","build-by-default":true}]},{"pkg-name":"vector","pkg-version":"0.12.2.0","component-name":"test:vector-doctest","available":["TargetNotLocal"]},{"pkg-name":"vector","pkg-version":"0.12.2.0","component-name":"test:vector-tests-O0","available":["TargetNotLocal"]},{"pkg-name":"vector","pkg-version":"0.12.2.0","component-name":"test:vector-tests-O2","available":["TargetNotLocal"]},{"pkg-name":"vector-algorithms","pkg-version":"0.8.0.4","component-name":"lib","available":[{"id":"vctr-lgrthms-0.8.0.4-aa341e68","component-name":"lib","build-by-default":true}]},{"pkg-name":"vector-algorithms","pkg-version":"0.8.0.4","component-name":"test:properties","available":["TargetNotLocal"]},{"pkg-name":"vector-algorithms","pkg-version":"0.8.0.4","component-name":"bench:simple-bench","available":["TargetNotLocal"]},{"pkg-name":"void","pkg-version":"0.7.3","component-name":"lib","available":[{"id":"vd-0.7.3-3b10c00c","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai","pkg-version":"3.2.3","component-name":"lib","available":[{"id":"w-3.2.3-c218a955","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai","pkg-version":"3.2.3","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"wai-app-static","pkg-version":"3.1.7.2","component-name":"lib","available":[{"id":"w-pp-sttc-3.1.7.2-f457c4cc","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai-app-static","pkg-version":"3.1.7.2","component-name":"exe:warp","available":[{"id":"w-pp-sttc-3.1.7.2-58832556","component-name":"exe:warp","build-by-default":true}]},{"pkg-name":"wai-app-static","pkg-version":"3.1.7.2","component-name":"test:runtests","available":["TargetNotLocal"]},{"pkg-name":"wai-extra","pkg-version":"3.0.32","component-name":"lib","available":[{"id":"w-xtr-3.0.32-450e0b45","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai-extra","pkg-version":"3.0.32","component-name":"exe:example","available":["TargetNotBuildable"]},{"pkg-name":"wai-extra","pkg-version":"3.0.32","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"wai-logger","pkg-version":"2.3.6","component-name":"lib","available":[{"id":"w-lggr-2.3.6-3fd4ddab","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai-logger","pkg-version":"2.3.6","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"wai-websockets","pkg-version":"3.0.1.2","component-name":"lib","available":[{"id":"w-wbsckts-3.0.1.2-9328eaa1","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai-websockets","pkg-version":"3.0.1.2","component-name":"exe:wai-websockets-example","available":[{"id":"w-wbsckts-3.0.1.2-bcea58a0","component-name":"exe:wai-websockets-example","build-by-default":true}]},{"pkg-name":"warp","pkg-version":"3.3.14","component-name":"lib","available":[{"id":"wrp-3.3.14-d90ecb38","component-name":"lib","build-by-default":true}]},{"pkg-name":"warp","pkg-version":"3.3.14","component-name":"test:doctest","available":["TargetNotLocal"]},{"pkg-name":"warp","pkg-version":"3.3.14","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"warp","pkg-version":"3.3.14","component-name":"bench:parser","available":["TargetNotLocal"]},{"pkg-name":"webdriver","pkg-version":"0.9.0.1","component-name":"lib","available":[{"id":"wbdrvr-0.9.0.1-8c8bf380","component-name":"lib","build-by-default":true}]},{"pkg-name":"websockets","pkg-version":"0.12.7.2","component-name":"lib","available":[{"id":"wbsckts-0.12.7.2-af5140c4","component-name":"lib","build-by-default":true}]},{"pkg-name":"websockets","pkg-version":"0.12.7.2","component-name":"exe:websockets-autobahn","available":["TargetNotBuildable"]},{"pkg-name":"websockets","pkg-version":"0.12.7.2","component-name":"exe:websockets-example","available":["TargetNotBuildable"]},{"pkg-name":"websockets","pkg-version":"0.12.7.2","component-name":"test:websockets-tests","available":["TargetNotLocal"]},{"pkg-name":"websockets","pkg-version":"0.12.7.2","component-name":"bench:bench-mask","available":["TargetNotLocal"]},{"pkg-name":"wl-pprint-text","pkg-version":"1.2.0.1","component-name":"lib","available":[{"id":"wl-pprnt-txt-1.2.0.1-c0ba3a44","component-name":"lib","build-by-default":true}]},{"pkg-name":"word8","pkg-version":"0.1.3","component-name":"lib","available":[{"id":"wrd8-0.1.3-ac79ab23","component-name":"lib","build-by-default":true}]},{"pkg-name":"word8","pkg-version":"0.1.3","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"word8","pkg-version":"0.1.3","component-name":"bench:criterion","available":["TargetNotLocal"]},{"pkg-name":"x509","pkg-version":"1.7.5","component-name":"lib","available":[{"id":"x509-1.7.5-84d96510","component-name":"lib","build-by-default":true}]},{"pkg-name":"x509","pkg-version":"1.7.5","component-name":"test:test-x509","available":["TargetNotLocal"]},{"pkg-name":"xhtml","pkg-version":"3000.2.2.1","component-name":"lib","available":[{"id":"xhtml-3000.2.2.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"xml","pkg-version":"1.3.14","component-name":"lib","available":[{"id":"xml-1.3.14-60ead35d","component-name":"lib","build-by-default":true}]},{"pkg-name":"yaml","pkg-version":"0.11.5.0","component-name":"lib","available":[{"id":"yml-0.11.5.0-e85230ae","component-name":"lib","build-by-default":true}]},{"pkg-name":"yaml","pkg-version":"0.11.5.0","component-name":"exe:examples","available":["TargetNotBuildable"]},{"pkg-name":"yaml","pkg-version":"0.11.5.0","component-name":"exe:json2yaml","available":["TargetNotBuildable"]},{"pkg-name":"yaml","pkg-version":"0.11.5.0","component-name":"exe:yaml2json","available":["TargetNotBuildable"]},{"pkg-name":"yaml","pkg-version":"0.11.5.0","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"zip-archive","pkg-version":"0.4.1","component-name":"lib","available":[{"id":"zp-rchv-0.4.1-f2a3ddf8","component-name":"lib","build-by-default":true}]},{"pkg-name":"zip-archive","pkg-version":"0.4.1","component-name":"exe:zip-archive","available":["TargetNotBuildable"]},{"pkg-name":"zip-archive","pkg-version":"0.4.1","component-name":"test:test-zip-archive","available":["TargetNotLocal"]},{"pkg-name":"zlib","pkg-version":"0.6.2.3","component-name":"lib","available":[{"id":"zlb-0.6.2.3-69a07bb9","component-name":"lib","build-by-default":true}]},{"pkg-name":"zlib","pkg-version":"0.6.2.3","component-name":"test:tests","available":["TargetNotLocal"]}]} \ No newline at end of file +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-8.10.7","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.2.1.0","pkg-name":"Cabal","pkg-version":"3.2.1.0","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","mtl-2.2.2","parsec-3.1.14.0","pretty-1.1.3.6","process-1.6.13.2","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"HUnit-1.6.2.0-314ab465650beeeec200f38d63ecc71fad8c18b79234495712d8cbf66cc392ef","pkg-name":"HUnit","pkg-version":"1.6.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1a79174e8af616117ad39464cac9de205ca923da6582825e97c10786fda933a4","pkg-src-sha256":"b0b7538871ffc058486fc00740886d2f3172f8fa6869936bfe83a5e10bd744ab","depends":["base-4.14.3.0","call-stack-0.3.0-766edef699faf57980b537804dab60a9f3ac1de3a91de98cf4fcfd0435e80ded","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"SHA-1.6.4.4-fb858600c6b2e7dd75168be718cdde3ada98013127ddbf5eab1169065d6bfdfc","pkg-name":"SHA","pkg-version":"1.6.4.4","flags":{"exe":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3b7523df3e2186ae8c5ac78c745efb586814afe9c775b886a747556d9f4d429c","pkg-src-sha256":"6bd950df6b11a3998bb1452d875d2da043ee43385459afc5f16d471d25178b44","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"StateVar-1.2.1-cdb9ff81c4b8442ce9dc6c5b7311e6c2f41a738f99e8b73459a76b1c5a949b7c","pkg-name":"StateVar","pkg-version":"1.2.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b8bea664120dc78f5c15d9b8c0947d51dbc58a0b63ee49971fa7caac9f3e0845","pkg-src-sha256":"ee261552912b60d8b937f0253615e310e6cc25f9c407001b3bcc2e3d55000f8b","depends":["base-4.14.3.0","stm-2.5.0.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"adjunctions-4.4-7afb2e346a87af64a67e82ed94119085b73323baed1e84cdb18bd6d25e7cb8da","pkg-name":"adjunctions","pkg-version":"4.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2738dd5f5d5e93749adb14a05472e58a96a75d0f299e46371c6f46dc4e97daf9","pkg-src-sha256":"507c2ef55337ae61c805f8cbc1213dfd7d2b85187342675d662254b8d8a16ae9","depends":["array-0.5.4.0","base-4.14.3.0","comonad-5.0.8-84dad871ca1e06bf26db07aebb9423762f4131e55712cd07cb7957905813d252","containers-0.6.5.1","contravariant-1.5.3-d3a9d369e446e3ff9ca5798448ac1aeb48842e7951f9a1992079a218abf646b6","distributive-0.6.2.1-590207038e714f2c87eff8c936fa808c84df073258a026835d614af402cdf034","free-5.1.3-f330c46773f99df34d4d64a78d98ad438cab6434e3affbd43c9735f52fd71728","mtl-2.2.2","profunctors-5.6-6fde5b754660999c4bdfb6d35878d4000620c3d338cda12a93bb9d35059f3397","semigroupoids-5.3.4-149842f32a584b89e1316295da35aa131274d2e9c2c7302c87f39990b9e3c118","semigroups-0.19.1-9fc2a2aad08381bf3b7b83a5a7a86b5f9c4de3e16843376dbd6cd99e824757e1","tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","transformers-0.5.6.2","transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede","void-0.7.3-a42d1eef0f87c637011e4d9f1374cf8032d62a9528998a747d2eddaf6d987c86"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"aeson-1.4.7.1-52a0a9a1400dce323fd3d192ed978d613759f226f95780101e22948c7029ceb3","pkg-name":"aeson","pkg-version":"1.4.7.1","flags":{"bytestring-builder":false,"cffi":false,"developer":false,"fast":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6d8d2fd959b7122a1df9389cf4eca30420a053d67289f92cdc0dbc0dab3530ba","pkg-src-sha256":"07e746655fd9bec81c59927c5617877ff4fcd81d0df45c5fb8ef154fb8f40294","depends":["attoparsec-0.13.2.5-101b2cdaf6874d1152c4a364734790b0bd77a38358f95a8c9a6ec3606cca3d3b","base-4.14.3.0","base-compat-batteries-0.11.2-976ab05059efb80b88e21c895dd960e4bb0f14193691c3fd7fdbc501899ba3e4","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","dlist-0.8.0.8-37f052ad713a5f768e754fa19302aed2e64fdc36b33cd00a589c6d1dd3800dfe","ghc-prim-0.6.1","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","primitive-0.7.1.0-7ccb0748f64fa9b4343f00f3d4c0f11f2cb114d7cdaf164ea91f4084bcecf2b4","scientific-0.3.6.2-42e3b56e032df0ce79f9062afa301c4cf62b7891d5bcc06b2adf3c10aaa3a378","tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","template-haskell-2.16.0.0","text-1.2.4.1","th-abstraction-0.3.2.0-d7dbeb8154b6dd18f43d59e413543ac1bec4c700d695dccb3dc6268af1544009","time-1.9.3","time-compat-1.9.5-71a65c2deb18d6d8d92b409212320e2c85df8b72a793ab4e2eb7c477a23b71f4","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47","uuid-types-1.0.4-6086ee179fe2f1ed9da5bd809a02f7629168918177bc5196b524120354539813","vector-0.12.2.0-84be1736eb2fdcccd3f3255cdd99deab0bc6b8c8104c444c17df2676a325d9a1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ansi-terminal-0.11-68045ba4dc159ef4d015a7becef8401cce3f1e07756980a26cd5d04a806924cd","pkg-name":"ansi-terminal","pkg-version":"0.11","flags":{"example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"97470250c92aae14c4c810d7f664c532995ba8910e2ad797b29f22ad0d2d0194","pkg-src-sha256":"c6611b9e51add41db3f79eac30066c06b33a6ca2a09e586b4b361d7f98303793","depends":["base-4.14.3.0","colour-2.3.5-a5aa9f2be50d4ed011c1be7700b7a83002fe6b60755a26d197e6fc7ce5768c6f"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ansi-wl-pprint-0.6.9-a2a5a82f0dda324638d65a03fd5311d9adbaaf655f5688baf31de8c8a2e5a686","pkg-name":"ansi-wl-pprint","pkg-version":"0.6.9","flags":{"example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"20d30674f137d43aa0279c2c2cc5e45a5f1c3c57e301852494906158b6313bf7","pkg-src-sha256":"a7b2e8e7cd3f02f2954e8b17dc60a0ccd889f49e2068ebb15abfa1d42f7a4eac","depends":["ansi-terminal-0.11-68045ba4dc159ef4d015a7becef8401cce3f1e07756980a26cd5d04a806924cd","base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"appar-0.1.8-8fb5a263212cce5a622c5468fcdb68a68f1f79d9768ea726c629381d06b97677","pkg-name":"appar","pkg-version":"0.1.8","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a5d529bacbb74d566e4c5f9479af0637eac5957705f6db4d2670517489795de8","pkg-src-sha256":"c4ceeddc26525b58d82c41b6d3e32141371a200a6794aae185b6266ccc81631f","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[]}}},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.14.3.0"]},{"type":"configured","id":"asn1-encoding-0.9.6-49f037fcb9444c19e8f30436cd6b5eb8efad2370bda9b0ba2856e8d501e8e70d","pkg-name":"asn1-encoding","pkg-version":"0.9.6","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"27ed8f6043aed79630313bb931f7c8e2b510f0b4586cd55c16ae040c7d1ea098","pkg-src-sha256":"d9f8deabd3b908e5cf83c0d813c08dc0143b3ec1c0d97f660d2cfa02c1c8da0a","depends":["asn1-types-0.3.4-7aaf8aa4bb5627deee7969088cf079090846bd49986985822143e0cfc0ef9c3d","base-4.14.3.0","bytestring-0.10.12.0","hourglass-0.2.12-7f1a2f8e035f979a92fc06fb0a3622206548d2e7eae3800f34fe5ed8e9047d93"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"asn1-parse-0.9.5-14fa65dc20e3abccda9883188f30a5f5d0158e6c256abc9999d5e53419e4e2cf","pkg-name":"asn1-parse","pkg-version":"0.9.5","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"77c0126d63070df2d82cb4cfa4febb26c4e280f6d854bc778c2fa4d80ce692b8","pkg-src-sha256":"8f1fe1344d30b39dc594d74df2c55209577722af1497204b4c2b6d6e8747f39e","components":{"lib":{"depends":["asn1-encoding-0.9.6-49f037fcb9444c19e8f30436cd6b5eb8efad2370bda9b0ba2856e8d501e8e70d","asn1-types-0.3.4-7aaf8aa4bb5627deee7969088cf079090846bd49986985822143e0cfc0ef9c3d","base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[]}}},{"type":"configured","id":"asn1-types-0.3.4-7aaf8aa4bb5627deee7969088cf079090846bd49986985822143e0cfc0ef9c3d","pkg-name":"asn1-types","pkg-version":"0.3.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8e879b3a5bbdd0031232eb84d904b5a3a2c20a18847692b996d774f4ff811355","pkg-src-sha256":"78ee92a251379298ca820fa53edbf4b33c539b9fcd887c86f520c30e3b4e21a8","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0","hourglass-0.2.12-7f1a2f8e035f979a92fc06fb0a3622206548d2e7eae3800f34fe5ed8e9047d93","memory-0.15.0-e3b790978092deb24c20e670f314f00f6280d43c1441412b7c11be54cd23a855"],"exe-depends":[]}}},{"type":"configured","id":"async-2.2.3-61de372d98a1e267d734e51b5e1b4cff35a2fc324ce981f8581dd50ab715530c","pkg-name":"async","pkg-version":"2.2.3","flags":{"bench":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0cbefb8247308b38e397e675f832b9bd5317ff1872001d5358f213654423c55b","pkg-src-sha256":"467af3a0037947a5232ecf5f4efbd4cf2118aaa2310566d7f40ac82b0e32935c","depends":["base-4.14.3.0","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","stm-2.5.0.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"attoparsec-0.13.2.5-101b2cdaf6874d1152c4a364734790b0bd77a38358f95a8c9a6ec3606cca3d3b","pkg-name":"attoparsec","pkg-version":"0.13.2.5","flags":{"developer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"7c88195c3f3243c6abe356c1bc872cf40818a8c7b0e261a8f8e6868fe42819a0","pkg-src-sha256":"21e0f38eaa1957bf471276afa17651c125a38924575f12c2cbd2fa534b45686f","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","ghc-prim-0.6.1","scientific-0.3.6.2-42e3b56e032df0ce79f9062afa301c4cf62b7891d5bcc06b2adf3c10aaa3a378","text-1.2.4.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"auto-update-0.1.6-e8e826113afdb347fe8d7388c54fbeeb751a076150519ea04e74fa71c78c46e4","pkg-name":"auto-update","pkg-version":"0.1.6","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"10adca282e131a2fa01fb7a411b02811685c1cea02e9813df2d7fb468b5ef638","pkg-src-sha256":"f4e023dc8713c387ecf20d851247597fd012cabea3872310b35e911105eb66c4","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"base-4.14.3.0","pkg-name":"base","pkg-version":"4.14.3.0","depends":["ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"configured","id":"base-compat-0.11.2-b863e3e1a5ee375ab25bec4afb10b3d53ce241746b505b3edc9ba3eb7e9b3361","pkg-name":"base-compat","pkg-version":"0.11.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f95374022a56e8c74a289e2b70ec50a1365f58b5f1f50f5c7f0fc14edf88f30e","pkg-src-sha256":"53a6b5145442fba5a4bad6db2bcdede17f164642b48bc39b95015422a39adbdb","depends":["base-4.14.3.0","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base-compat-batteries-0.11.2-976ab05059efb80b88e21c895dd960e4bb0f14193691c3fd7fdbc501899ba3e4","pkg-name":"base-compat-batteries","pkg-version":"0.11.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"eb3b976007754ddc16e8d4afacdd1e575ae746edb57dcd0a1a728ccd4b372a69","pkg-src-sha256":"31e066a5aa96af94fe6465adb959c38d63a49e01357641aa4322c754a94d3023","depends":["base-4.14.3.0","base-compat-0.11.2-b863e3e1a5ee375ab25bec4afb10b3d53ce241746b505b3edc9ba3eb7e9b3361"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base-orphans-0.8.4-5c47df155956fb73bbb69058ad0037967c377270cdf9afc72baa7ecfd53b2d7d","pkg-name":"base-orphans","pkg-version":"0.8.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9a70dc95761ab9a9d49a038a4599b7b7945d486d80ed1678f347445bc336f3e0","pkg-src-sha256":"37b2b59356c03400a2d509862677393c5ff706a0aabf826c104f6fe03d93bbb3","depends":["base-4.14.3.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base16-bytestring-0.1.1.7-77925cf395cd9922858f7d16362a46276afd7053ca6079c4e932cddc9574150e","pkg-name":"base16-bytestring","pkg-version":"0.1.1.7","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0021256a9628971c08da95cb8f4d0d72192f3bb8a7b30b55c080562d17c43dd3","pkg-src-sha256":"525689679d5cc80fa532c1d5cfeace0f62bbb54134fad514f1ba00d0e7fe69ba","depends":["base-4.14.3.0","bytestring-0.10.12.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base64-bytestring-1.0.0.3-f9e5becf7dfbc91185d0c57f336812ed0311b41786ecb3bcc51fb08ba37fd76b","pkg-name":"base64-bytestring","pkg-version":"1.0.0.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d5027ea6d63eab27cfa34eb1f5a05b6a5ee521dd176a06da3f7d80e117a88259","pkg-src-sha256":"ef159d60ec14c0a3f3e26bab5c9fd7634d5e1b983c6a64f0b0c3261efe008fc7","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"basement-0.0.11-274c4ae453d426264bb6282174f264d18ecb1b70dab6099919dfa6bb95920f32","pkg-name":"basement","pkg-version":"0.0.11","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b685783bd7eeed832c47ebbd48599d9c45dccbc2380dd9295e137a30b37ecdc6","pkg-src-sha256":"67582b3475a5547925399f719df21f8bbbd0ca4d4db27795c22a474f8ee6346b","depends":["base-4.14.3.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"bifunctors-5.5.7-fa9f071c0ca8eb588a51415afcae581f1e95061bab18698e1b9f8c2d1bbcbc63","pkg-name":"bifunctors","pkg-version":"5.5.7","flags":{"semigroups":true,"tagged":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"19d907460f166ade334e9d85d7c0bcc58b57da5e8f802b28bba6d8d81fd3ee70","pkg-src-sha256":"88b3a2d4504e1139a3aef7027913faa0870631477d0a2ebb6fa67d494cdb3532","depends":["base-4.14.3.0","base-orphans-0.8.4-5c47df155956fb73bbb69058ad0037967c377270cdf9afc72baa7ecfd53b2d7d","comonad-5.0.8-84dad871ca1e06bf26db07aebb9423762f4131e55712cd07cb7957905813d252","containers-0.6.5.1","tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","template-haskell-2.16.0.0","th-abstraction-0.3.2.0-d7dbeb8154b6dd18f43d59e413543ac1bec4c700d695dccb3dc6268af1544009","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.8.0","pkg-name":"binary","pkg-version":"0.8.8.0","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","ghc-prim-0.6.1"]},{"type":"configured","id":"blaze-builder-0.4.2.1-c694e0e375f646ecf1acece0f97effbaa4b3f19f5ece616657e500d5ffe1867c","pkg-name":"blaze-builder","pkg-version":"0.4.2.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c1830d7b52910b4569162d4fad27da510bd6a4b43c94da1e9ec0712bebc36121","pkg-src-sha256":"6e6889bc9c3ff92062a17f3825dcc1b28510d261334d4d4e177232d904ea0b06","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"blaze-html-0.9.1.2-022d22b03693695c24e4963a307d0e6faa8216dac14462831e569778bf44c77c","pkg-name":"blaze-html","pkg-version":"0.9.1.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"49db3eb70fa93fb572f3a9233b542b59e7f766a2b95c92d01d95a596c7727473","pkg-src-sha256":"60503f42546c6c1b954014d188ea137e43d74dcffd2bf6157c113fd91a0c394c","depends":["base-4.14.3.0","blaze-builder-0.4.2.1-c694e0e375f646ecf1acece0f97effbaa4b3f19f5ece616657e500d5ffe1867c","blaze-markup-0.8.2.8-bc2dff2d134f02b5cf60656035ece9a666b81e8bb3192243e4bce0571e4e3e98","bytestring-0.10.12.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"blaze-markup-0.8.2.8-bc2dff2d134f02b5cf60656035ece9a666b81e8bb3192243e4bce0571e4e3e98","pkg-name":"blaze-markup","pkg-version":"0.8.2.8","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b5916c6f0899d4d0094bed54af7397a8042fa3255e8ef459ab2cdf83a0c938e6","pkg-src-sha256":"43fc3f6872dc8d1be8d0fe091bd4775139b42179987f33d6490a7c5f1e07a349","depends":["base-4.14.3.0","blaze-builder-0.4.2.1-c694e0e375f646ecf1acece0f97effbaa4b3f19f5ece616657e500d5ffe1867c","bytestring-0.10.12.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"bsb-http-chunked-0.0.0.4-93c3de301fc0c7f414768bbce87bf5ebfb21b2cc4b90db023ff41feac4be585b","pkg-name":"bsb-http-chunked","pkg-version":"0.0.0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"add530e695ea3058bf4f7156a1ca85653ff3635b87ec6d1be8c4891645190f96","pkg-src-sha256":"148309e23eb8b261c1de374712372d62d8c8dc8ee504c392809c7ec33c0a0e7c","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"byteable-0.1.1-ba0f6a5de53bd5be451d958f4b3e20e1bc251f579f854e09e5b7db3d17f030fa","pkg-name":"byteable","pkg-version":"0.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"12eeda93251d4b5d510ac95cf578f5c89d4a399b14ca73116deaf4921a516fdf","pkg-src-sha256":"243b34a1b5b64b39e39fe58f75c18f6cad5b668b10cabcd86816cbde27783fe2","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"byteorder-1.0.4-8941468c0399921cea5e6aac8bdd2d7cfbbfbfcb24a4ebd26a56fb6d0ed63534","pkg-name":"byteorder","pkg-version":"1.0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a952817dcbe20af0346fb55a28c13e95e2ddbf3e99f9b4fffdc063f150f13b20","pkg-src-sha256":"bd20bbb586947f99c38a4c93d9d0266f49f6fc581767b51ba568f6d5d52d2919","components":{"lib":{"depends":["base-4.14.3.0"],"exe-depends":[]}}},{"type":"pre-existing","id":"bytestring-0.10.12.0","pkg-name":"bytestring","pkg-version":"0.10.12.0","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"configured","id":"bytestring-builder-0.10.8.2.0-91b0d6bc8faf4964d8d2787800f0633b603b423516feb8c19def5491e95ed21c","pkg-name":"bytestring-builder","pkg-version":"0.10.8.2.0","flags":{"bytestring_has_builder":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6b2b812cdac53f5a2c82376a416dde04adbb5ca3e1604c0d075368a0498f762b","pkg-src-sha256":"27faef6db27c5be5a3715fd68b93725853e0e668849eaf92ce7c33cef9cb2c3f","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cabal-doctest-1.0.8-cc5c2e87559eb18bdfdc001ed167b2e0d0b78de00dcfa62e272ab89cba37ff46","pkg-name":"cabal-doctest","pkg-version":"1.0.8","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8bd1d614fb65f0d52609da30bf8e5ec71a4b6adf8ff5610edb3cb4d114576117","pkg-src-sha256":"2026a6a87d410202ce091412ca6bc33c5aca787025326b4a3d13425a23392e0e","depends":["Cabal-3.2.1.0","base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"call-stack-0.3.0-766edef699faf57980b537804dab60a9f3ac1de3a91de98cf4fcfd0435e80ded","pkg-name":"call-stack","pkg-version":"0.3.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dc369179410fd39542efde04778d1c4a18a015b3cf4b1703d9c88e07d58ece20","pkg-src-sha256":"b80e8de2b87f01922b23b328655ad2f843f42495f3e1033ae907aade603c716a","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"case-insensitive-1.2.1.0-04d96ac70421b0f8f3b44d7428a3ecc840602b9c41723a4e68226276ba482222","pkg-name":"case-insensitive","pkg-version":"1.2.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9dfd3171fc7698cf8d931727d3af3a7b389135b583e46b5adac1f9d2026fff61","pkg-src-sha256":"296dc17e0c5f3dfb3d82ced83e4c9c44c338ecde749b278b6eae512f1d04e406","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"clock-0.8.2-2c2c7b4fade89668e1d92d470dbc6dac9cac04e6f6ec45820457ddda3c27587a","pkg-name":"clock","pkg-version":"0.8.2","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"473ffd59765cc67634bdc55b63c699a85addf3a024089073ec2a862881e83e2a","pkg-src-sha256":"0b5db110c703e68b251d5883253a934b012110b45393fc65df1b095eb9a4e461","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"colour-2.3.5-a5aa9f2be50d4ed011c1be7700b7a83002fe6b60755a26d197e6fc7ce5768c6f","pkg-name":"colour","pkg-version":"2.3.5","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b27db0a3ad40d70bdbd8510a104269f8707592e80757a1abc66a22ba25e5a42f","pkg-src-sha256":"3b8d471979617dce7c193523743c9782df63433d8e87e3ef6d97922e0da104e7","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"comonad-5.0.8-84dad871ca1e06bf26db07aebb9423762f4131e55712cd07cb7957905813d252","pkg-name":"comonad","pkg-version":"5.0.8","flags":{"containers":true,"distributive":true,"indexed-traversable":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a3a140be7a21d6ba16bf9102bf4c79455ff3213679311587bac45ba0723c8d7a","pkg-src-sha256":"ef6cdf2cc292cc43ee6aa96c581b235fdea8ab44a0bffb24dc79ae2b2ef33d13","depends":["base-4.14.3.0","containers-0.6.5.1","distributive-0.6.2.1-590207038e714f2c87eff8c936fa808c84df073258a026835d614af402cdf034","indexed-traversable-0.1.1-859ad062f72f50cb0e073dc82fa2adde481c5f84e83dfb553607a7a6b1160be1","tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","transformers-0.5.6.2","transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"conduit-1.3.4.1-370668f1ebcb07704d42c7d9513f477c1993b011c50722b04740e706f73165ef","pkg-name":"conduit","pkg-version":"1.3.4.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"eeabaf3f822e3e15317995766f50ef4a20371bdc3bb4721a7541e37228018dcf","pkg-src-sha256":"85743b8d5f2d5779ccb7459b5a919c5786707af23fe7a065d281ee8e6dc226f1","depends":["base-4.14.3.0","bytestring-0.10.12.0","directory-1.3.6.0","exceptions-0.10.4","filepath-1.4.2.1","mono-traversable-1.0.15.1-14a7b01eb3da98ee8bec53e1a2c3325795947148555bfd08e601059e3f8ef800","mtl-2.2.2","primitive-0.7.1.0-7ccb0748f64fa9b4343f00f3d4c0f11f2cb114d7cdaf164ea91f4084bcecf2b4","resourcet-1.2.4.2-302da70f53a381e3946d9bc3f2c181c3464035a3dd78edb509158b7de3de01cc","text-1.2.4.1","transformers-0.5.6.2","unix-2.7.2.2","unliftio-core-0.2.0.1-d0855bd29dffa1bf2bc5c121ed96f93f42e3ddc4c54f561bd3f7a186584466ac","vector-0.12.2.0-84be1736eb2fdcccd3f3255cdd99deab0bc6b8c8104c444c17df2676a325d9a1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"constraints-0.13-4b01ef386e6a78dd5a5f51064f7a9b86949fdaf2d54fb07641c19705461b230d","pkg-name":"constraints","pkg-version":"0.13","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d341eb4adbf712f928706928d23a173fb3d0976f0dfaf6a274958975d5fc9e75","pkg-src-sha256":"9259af54682f2673931978d96074c147406b1e18bd9111903fcaefe9252a6590","depends":["base-4.14.3.0","binary-0.8.8.0","deepseq-1.4.4.0","ghc-prim-0.6.1","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","mtl-2.2.2","transformers-0.5.6.2","transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede","type-equality-1-4cd1419c88ebdbd4cd0a28c94eb2a79dd5234fbd3edbd50a599c817080638d8c"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"configured","id":"contravariant-1.5.3-d3a9d369e446e3ff9ca5798448ac1aeb48842e7951f9a1992079a218abf646b6","pkg-name":"contravariant","pkg-version":"1.5.3","flags":{"semigroups":true,"statevar":true,"tagged":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e59a7742e725f94fc6578e3593cd3f6d4e3d46a9510c3a782e5fe5e5f238e3ce","pkg-src-sha256":"44536f0e331fde471271937323dc90409e95d47f57e42657fdaf242a0fd65dc1","depends":["StateVar-1.2.1-cdb9ff81c4b8442ce9dc6c5b7311e6c2f41a738f99e8b73459a76b1c5a949b7c","base-4.14.3.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cookie-0.4.5-1666bb4d62c924da233e083065c6a869a88b0c3a1c692a55dbf161d4c809b252","pkg-name":"cookie","pkg-version":"0.4.5","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"22bbe2bea34cfc546eaca2468386035fec521b8dbae52f5aa2f994ed68b35e0e","pkg-src-sha256":"707f94d1b31018b91d6a1e9e19ef5413e20d02cab00ad93a5fd7d7b3b46a3583","depends":["base-4.14.3.0","bytestring-0.10.12.0","data-default-class-0.1.2.0-17ceafe0f96b0cdbafad084ab784938676a45ba49a92d1c9875e1376c64a517d","deepseq-1.4.4.0","text-1.2.4.1","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cryptohash-0.11.9-aa23ead3b32b01f8b290c64b004126442b9bbdfee20fdf41511410330eaf28ce","pkg-name":"cryptohash","pkg-version":"0.11.9","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59d9494ba0cc9eef087ecba2e12e4d3e2d3b0327dd1542af552e3dca0e7de70d","pkg-src-sha256":"c28f847fc1fcd65b6eea2e74a100300af940919f04bb21d391f6a773968f22fb","depends":["base-4.14.3.0","byteable-0.1.1-ba0f6a5de53bd5be451d958f4b3e20e1bc251f579f854e09e5b7db3d17f030fa","bytestring-0.10.12.0","cryptonite-0.28-c4162375c9a940361371e61f131514da5733be9b0f847ca300a4aacfb7afbc2f","ghc-prim-0.6.1","memory-0.15.0-e3b790978092deb24c20e670f314f00f6280d43c1441412b7c11be54cd23a855"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cryptonite-0.28-c4162375c9a940361371e61f131514da5733be9b0f847ca300a4aacfb7afbc2f","pkg-name":"cryptonite","pkg-version":"0.28","flags":{"check_alignment":false,"integer-gmp":true,"old_toolchain_inliner":false,"support_aesni":true,"support_deepseq":true,"support_pclmuldq":false,"support_rdrand":true,"support_sse":false,"use_target_attributes":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b6c75e62b4c655d4cb1bcbb80d01430d136aac32bd6962c86c84738935cc8f9d","pkg-src-sha256":"74ad886ae3f7cd6cadecb596707e49df37b0170ceed313e382bd15b13132a5db","depends":["base-4.14.3.0","basement-0.0.11-274c4ae453d426264bb6282174f264d18ecb1b70dab6099919dfa6bb95920f32","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0","memory-0.15.0-e3b790978092deb24c20e670f314f00f6280d43c1441412b7c11be54cd23a855"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"data-default-0.7.1.1-14a5dd71fd9b9460c9e01d850dbf5a924905b919addadf74a1e21023ba2090c9","pkg-name":"data-default","pkg-version":"0.7.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2804e8d14f521a1edee88b68b66347448e7f3b685868290fdc55930e4471f5a9","pkg-src-sha256":"b0f95d279cd75cacaa8152a01590dc3460f7134f6840b37052abb3ba3cb2a511","components":{"lib":{"depends":["base-4.14.3.0","data-default-class-0.1.2.0-17ceafe0f96b0cdbafad084ab784938676a45ba49a92d1c9875e1376c64a517d","data-default-instances-containers-0.0.1-54c5dd643760980377e2aebc9a73fae4974414a5ea72744d6f967916c6f32c61","data-default-instances-dlist-0.0.1-c42bb74da18690ecb87c15192fab756c4e4c029e0200de4c6bd5c86e23d6a254","data-default-instances-old-locale-0.0.1-1b5c29e0a5f4e61dd28c301aeed67bc08930d48ce94f25ecdcc1276822946c61"],"exe-depends":[]}}},{"type":"configured","id":"data-default-class-0.1.2.0-17ceafe0f96b0cdbafad084ab784938676a45ba49a92d1c9875e1376c64a517d","pkg-name":"data-default-class","pkg-version":"0.1.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"63e62120b7efd733a5a17cf59ceb43268e9a929c748127172d7d42f4a336e327","pkg-src-sha256":"4f01b423f000c3e069aaf52a348564a6536797f31498bb85c3db4bd2d0973e56","components":{"lib":{"depends":["base-4.14.3.0"],"exe-depends":[]}}},{"type":"configured","id":"data-default-instances-containers-0.0.1-54c5dd643760980377e2aebc9a73fae4974414a5ea72744d6f967916c6f32c61","pkg-name":"data-default-instances-containers","pkg-version":"0.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6e1f4b28028a3bc455aaf4b5a9104b71ea72cff78b1b8041863df7afd1a8deb3","pkg-src-sha256":"a55e07af005c9815d82f3fc95e125db82994377c9f4a769428878701d4ec081a","components":{"lib":{"depends":["base-4.14.3.0","containers-0.6.5.1","data-default-class-0.1.2.0-17ceafe0f96b0cdbafad084ab784938676a45ba49a92d1c9875e1376c64a517d"],"exe-depends":[]}}},{"type":"configured","id":"data-default-instances-dlist-0.0.1-c42bb74da18690ecb87c15192fab756c4e4c029e0200de4c6bd5c86e23d6a254","pkg-name":"data-default-instances-dlist","pkg-version":"0.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4286abacbb256c392907701be16986a6e07f2beaf2778e7bd925465655d9e301","pkg-src-sha256":"7d683711cbf08abd7adcd5ac2be825381308d220397315a5570fe61b719b5959","components":{"lib":{"depends":["base-4.14.3.0","data-default-class-0.1.2.0-17ceafe0f96b0cdbafad084ab784938676a45ba49a92d1c9875e1376c64a517d","dlist-0.8.0.8-37f052ad713a5f768e754fa19302aed2e64fdc36b33cd00a589c6d1dd3800dfe"],"exe-depends":[]}}},{"type":"configured","id":"data-default-instances-old-locale-0.0.1-1b5c29e0a5f4e61dd28c301aeed67bc08930d48ce94f25ecdcc1276822946c61","pkg-name":"data-default-instances-old-locale","pkg-version":"0.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d4a757f68f0f83531fcb34a4525fe6769c54a45182e28ffdfff19c2b0ace42fb","pkg-src-sha256":"60d3b02922958c4908d7bf2b24ddf61511665745f784227d206745784b0c0802","components":{"lib":{"depends":["base-4.14.3.0","data-default-class-0.1.2.0-17ceafe0f96b0cdbafad084ab784938676a45ba49a92d1c9875e1376c64a517d","old-locale-1.0.0.7-0b56be282c9d84e8a62244b3b072a0d01762b387596f58798264e4b9c6aa0b1c"],"exe-depends":[]}}},{"type":"pre-existing","id":"deepseq-1.4.4.0","pkg-name":"deepseq","pkg-version":"1.4.4.0","depends":["array-0.5.4.0","base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"configured","id":"digest-0.0.1.2-49962857791e1f806aa8abe46447eb9b3fd34bfadd4dcff262ce2a0ad85fc46d","pkg-name":"digest","pkg-version":"0.0.1.2","flags":{"bytestring-in-base":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d3c2a49e25bb3b0228ddb063493b80adcfc26625f9ebbe4a89dd4fbb4339d1bc","pkg-src-sha256":"641717eb16392abf8965986a9e8dc21eebf1d97775bbb6923c7b7f8fee17fe11","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[]}}},{"type":"pre-existing","id":"directory-1.3.6.0","pkg-name":"directory","pkg-version":"1.3.6.0","depends":["base-4.14.3.0","filepath-1.4.2.1","time-1.9.3","unix-2.7.2.2"]},{"type":"configured","id":"directory-tree-0.12.1-7aef9d3ea02418dfb0b81c0f4df3582801c93089fc39ffbf62cd8e06d5673f48","pkg-name":"directory-tree","pkg-version":"0.12.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6f24ee1eca965a199a96f853582e61a338f1a529c87bc02c7f1451e2f2ed03fe","pkg-src-sha256":"e2084495b3a226cf54d949635c86fc14e89daa09d86cce39e3c3cf898ae6e517","depends":["base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"distributive-0.6.2.1-590207038e714f2c87eff8c936fa808c84df073258a026835d614af402cdf034","pkg-name":"distributive","pkg-version":"0.6.2.1","flags":{"semigroups":true,"tagged":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2823eff05c6b093492efe804027e7cf82757221f934964c76106ac3248899b89","pkg-src-sha256":"d7351392e078f58caa46630a4b9c643e1e2e9dddee45848c5c8358e7b1316b91","depends":["base-4.14.3.0","base-orphans-0.8.4-5c47df155956fb73bbb69058ad0037967c377270cdf9afc72baa7ecfd53b2d7d","tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"dlist-0.8.0.8-37f052ad713a5f768e754fa19302aed2e64fdc36b33cd00a589c6d1dd3800dfe","pkg-name":"dlist","pkg-version":"0.8.0.8","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"90ca348bffdc62d7070bcf0e97c728f8d01b24fbc7ea08d2909157d0da76534c","pkg-src-sha256":"7129cf18068d3384e305708a10426ab8f573bee1030b023a114f45f1d0ec496d","depends":["base-4.14.3.0","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"easy-file-0.2.2-81dad8f595046adec420f2364e68bef6c6c4dc00dea05594e7a72fe17b4388b9","pkg-name":"easy-file","pkg-version":"0.2.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"72303120495a9fed82276a7987434361edd6dfecafad241d7c6c03b68e4801e5","pkg-src-sha256":"52f52e72ba48d60935932401c233a72bf45c582871238aecc5a18021ce67b47e","components":{"lib":{"depends":["base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1","time-1.9.3","unix-2.7.2.2"],"exe-depends":[]}}},{"type":"configured","id":"enclosed-exceptions-1.0.3-116b50bd2397f153ecb8506eb04e6c16ca9f5e330047f2e884a6bb84c8d1e8b4","pkg-name":"enclosed-exceptions","pkg-version":"1.0.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6d4e9b5156721ccfa62d3cdcbf13d8571773031050ec714cb55b841f0c183f6a","pkg-src-sha256":"af6d93f113ac92b89a32af1fed52f445f492afcc0be93980cbadc5698f94f0b9","depends":["base-4.14.3.0","deepseq-1.4.4.0","lifted-base-0.2.3.12-d676308f67e6ea842d5113b274f0d27bb940d5b6f46d966d107583274c238bb5","monad-control-1.0.2.3-15717da05dfc99ece4f412301d4ad426993cb1e971bd790b62b9b7cd65892c0b","transformers-0.5.6.2","transformers-base-0.4.5.2-f59c3b08e18ebf1e05bdd152225473dbafc17b3afcdc67346a6635ed5b4de427"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"entropy-0.4.1.6-23d69be192f334e6ffc35b304aea12f8575026f35e495f0e703663c33c3cf18d","pkg-name":"entropy","pkg-version":"0.4.1.6","flags":{"halvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d72a8745b0d011737190832be477f6d98a7c819865a6392e4c451110eb79361c","pkg-src-sha256":"adc759ff756a6d71a450422ba511177632f43a33bf673901fd2334f53ef8bf62","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0","unix-2.7.2.2"],"exe-depends":[]},"setup":{"depends":["Cabal-3.2.1.0","base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.13.2"],"exe-depends":[]}}},{"type":"pre-existing","id":"exceptions-0.10.4","pkg-name":"exceptions","pkg-version":"0.10.4","depends":["base-4.14.3.0","mtl-2.2.2","stm-2.5.0.1","template-haskell-2.16.0.0","transformers-0.5.6.2"]},{"type":"configured","id":"executable-path-0.0.3.1-8850d4a31accb5fd8d5f871c9214154d6cdd6a1217e4d43acdf765e7f8f5f0ac","pkg-name":"executable-path","pkg-version":"0.0.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"865c184b96e224ba6727632176e457418aea02d8cfd6b65507d5d1a6c0372a85","pkg-src-sha256":"9cc742b6d40a487b3af38dca6852ca3b50a0db94d42fe819576c84beb5adbc6f","components":{"lib":{"depends":["base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1","unix-2.7.2.2"],"exe-depends":[]}}},{"type":"configured","id":"extensible-exceptions-0.1.1.4-8cc6a1f8ee4f082c86b889e18baaf343050ddbc7a582cb6ff369da69867f1c1b","pkg-name":"extensible-exceptions","pkg-version":"0.1.1.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"eb5fe684a7ffe8d1ed2ed6cdaec7dfb29efc780811ea7158a64edc2abc516f47","pkg-src-sha256":"6ce5e8801760385a408dab71b53550f87629e661b260bdc2cd41c6a439b6e388","components":{"lib":{"depends":["base-4.14.3.0"],"exe-depends":[]}}},{"type":"configured","id":"fast-logger-3.0.3-dcaa0bb54cf4bc4a51b14dbb2590735910e4d1d57d62aad4cca1896d4ef4bc6a","pkg-name":"fast-logger","pkg-version":"3.0.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"936f28014b9bea19c4cf74e85fa534ba19250ef1511e0ad51c086d968fdcb701","pkg-src-sha256":"5763a0321053ecaba2d1040800bae9988f52b813fb08d5276ea7ce10e3d2f068","depends":["array-0.5.4.0","auto-update-0.1.6-e8e826113afdb347fe8d7388c54fbeeb751a076150519ea04e74fa71c78c46e4","base-4.14.3.0","bytestring-0.10.12.0","directory-1.3.6.0","easy-file-0.2.2-81dad8f595046adec420f2364e68bef6c6c4dc00dea05594e7a72fe17b4388b9","filepath-1.4.2.1","text-1.2.4.1","unix-compat-0.5.3-2bc2837e6f4bbc1b7104bd912ca92ab1f2ad1e42c984992d69f66d4dc3a997dd","unix-time-0.4.7-327f5b87b2611e066655cbb58cf346c1d0142212ed35f6a6dd6f01879cb86dc4"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"file-embed-0.0.13.0-07dd896cc8ff066813a1f3f766a7baaef44afa16095bcd2a3f20db4174a292d6","pkg-name":"file-embed","pkg-version":"0.0.13.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a819e90b91cab919ffef5895ab6e1b2a44eac395a585f489b0c289a4a12d1c54","pkg-src-sha256":"d13068abb0bd22c5d118164734a097dc591977b2c7561d912af9097803c6e1ea","depends":["base-4.14.3.0","bytestring-0.10.12.0","directory-1.3.6.0","filepath-1.4.2.1","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.1","pkg-name":"filepath","pkg-version":"1.4.2.1","depends":["base-4.14.3.0"]},{"type":"configured","id":"free-5.1.3-f330c46773f99df34d4d64a78d98ad438cab6434e3affbd43c9735f52fd71728","pkg-name":"free","pkg-version":"5.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"604c27b6ba0a560c8a1377ad76e5bbb8528e924d6b0590215d815faddbec0b70","pkg-src-sha256":"2c70d66e3a1ad52ce4b22d5510ffc6d7b3db950bd7f43bc61801cfe7b24c2e2d","depends":["base-4.14.3.0","comonad-5.0.8-84dad871ca1e06bf26db07aebb9423762f4131e55712cd07cb7957905813d252","containers-0.6.5.1","distributive-0.6.2.1-590207038e714f2c87eff8c936fa808c84df073258a026835d614af402cdf034","exceptions-0.10.4","mtl-2.2.2","profunctors-5.6-6fde5b754660999c4bdfb6d35878d4000620c3d338cda12a93bb9d35059f3397","semigroupoids-5.3.4-149842f32a584b89e1316295da35aa131274d2e9c2c7302c87f39990b9e3c118","template-haskell-2.16.0.0","transformers-0.5.6.2","transformers-base-0.4.5.2-f59c3b08e18ebf1e05bdd152225473dbafc17b3afcdc67346a6635ed5b4de427"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-boot-8.10.7","pkg-name":"ghc-boot","pkg-version":"8.10.7","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","ghc-boot-th-8.10.7"]},{"type":"pre-existing","id":"ghc-boot-th-8.10.7","pkg-name":"ghc-boot-th","pkg-version":"8.10.7","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"ghc-compact-0.1.0.0","pkg-name":"ghc-compact","pkg-version":"0.1.0.0","depends":["base-4.14.3.0","bytestring-0.10.12.0","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"ghc-heap-8.10.7","pkg-name":"ghc-heap","pkg-version":"8.10.7","depends":["base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"configured","id":"ghc-paths-0.1.0.12-b698ec3f14b7264932d5870dfa659247742f258bbfa6d0baf97b12d62d607135","pkg-name":"ghc-paths","pkg-version":"0.1.0.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"afdfdb6584f39e821b2b7130e12007bf3ad87401d86f5105eead059c150dc81d","pkg-src-sha256":"6ecbe676d073cb07989c61ce4c5709c4e67cbefdd2d55a4095f9388b6fe2c484","components":{"lib":{"depends":["base-4.14.3.0"],"exe-depends":[]},"setup":{"depends":["Cabal-3.2.1.0","base-4.14.3.0","directory-1.3.6.0"],"exe-depends":[]}}},{"type":"pre-existing","id":"ghc-prim-0.6.1","pkg-name":"ghc-prim","pkg-version":"0.6.1","depends":[]},{"type":"pre-existing","id":"ghci-8.10.7","pkg-name":"ghci","pkg-version":"8.10.7","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","filepath-1.4.2.1","ghc-boot-8.10.7","ghc-boot-th-8.10.7","ghc-heap-8.10.7","template-haskell-2.16.0.0","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"ghcjs-8.10.7-inplace","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/build-info.json","depends":["Cabal-3.2.1.0","aeson-1.4.7.1-52a0a9a1400dce323fd3d192ed978d613759f226f95780101e22948c7029ceb3","array-0.5.4.0","attoparsec-0.13.2.5-101b2cdaf6874d1152c4a364734790b0bd77a38358f95a8c9a6ec3606cca3d3b","base-4.14.3.0","base16-bytestring-0.1.1.7-77925cf395cd9922858f7d16362a46276afd7053ca6079c4e932cddc9574150e","base64-bytestring-1.0.0.3-f9e5becf7dfbc91185d0c57f336812ed0311b41786ecb3bcc51fb08ba37fd76b","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","cryptohash-0.11.9-aa23ead3b32b01f8b290c64b004126442b9bbdfee20fdf41511410330eaf28ce","data-default-0.7.1.1-14a5dd71fd9b9460c9e01d850dbf5a924905b919addadf74a1e21023ba2090c9","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","ghc-boot-8.10.7","ghc-boot-th-8.10.7","ghc-compact-0.1.0.0","ghc-heap-8.10.7","ghc-paths-0.1.0.12-b698ec3f14b7264932d5870dfa659247742f258bbfa6d0baf97b12d62d607135","ghci-8.10.7","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","hpc-0.6.1.0","lens-4.19.2-a365e8ee15eac5187637caf0f9a84168dcf51fefd5a0ada0844b88a6cd4de834","mtl-2.2.2","optparse-applicative-0.15.1.0-ff69718b26c95902c84e69b0d38586ca2b71b8bb5566d63b9fcabab034f14315","parallel-3.2.2.0-ec2949e70412ce6ff7ffd865dd2d3b7cb720043a39b010d37a44ef3b76e4424d","parsec-3.1.14.0","process-1.6.13.2","safe-0.3.19-51e71c14211a5a289b16e0d6b07ca550bda815589f5bf3e7d68eb5d66dbd69d4","split-0.2.3.4-b35824015585af9ca2cfc77c94ab6a24b60b6ac2cac313cec0606c2533291814","stringsearch-0.3.6.6-ed3c625583d8ef2c2cbb8a855cd2444fedee837a8e8140f5a903278226083f8e","syb-0.7.2.1-f17324f538cc1a70b6242a24980d699ca900c553769879889ca40466f83fd57f","template-haskell-2.16.0.0","terminfo-0.4.1.4","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47","vector-0.12.2.0-84be1736eb2fdcccd3f3255cdd99deab0bc6b8c8104c444c17df2676a325d9a1","wl-pprint-text-1.2.0.1-f65bf92b2ca9aa1c1aba70c2a50d26c1a0a57919fafc7d735fbaf8708f5bf560","yaml-0.11.5.0-f343c7e162c8d325f1d496c33d87fe89cf5a20b66600d096d0bf1e902e6baa1a"],"exe-depends":["happy-1.20.0-e-happy-3381209c89ac2203d07bd4b222160e1a46477e5747b38342479eae0cc9ed21a8"],"component-name":"lib"},{"type":"configured","id":"ghcjs-8.10.7-inplace-ghcjs","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs/build-info.json","depends":["base-4.14.3.0","ghcjs-8.10.7-inplace"],"exe-depends":[],"component-name":"exe:ghcjs","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs/build/ghcjs/ghcjs"},{"type":"configured","id":"ghcjs-8.10.7-inplace-ghcjs-boot","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-boot","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-boot/build-info.json","depends":["Cabal-3.2.1.0","aeson-1.4.7.1-52a0a9a1400dce323fd3d192ed978d613759f226f95780101e22948c7029ceb3","base-4.14.3.0","bytestring-0.10.12.0","directory-1.3.6.0","executable-path-0.0.3.1-8850d4a31accb5fd8d5f871c9214154d6cdd6a1217e4d43acdf765e7f8f5f0ac","filepath-1.4.2.1","ghcjs-8.10.7-inplace","lens-4.19.2-a365e8ee15eac5187637caf0f9a84168dcf51fefd5a0ada0844b88a6cd4de834","mtl-2.2.2","optparse-applicative-0.15.1.0-ff69718b26c95902c84e69b0d38586ca2b71b8bb5566d63b9fcabab034f14315","process-1.6.13.2","tar-0.5.1.1-643c87cd04d43966ba086abf693a99a6c8e6a74b2250a8c6db6f078672b95893","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-compat-0.5.3-2bc2837e6f4bbc1b7104bd912ca92ab1f2ad1e42c984992d69f66d4dc3a997dd","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47","vector-0.12.2.0-84be1736eb2fdcccd3f3255cdd99deab0bc6b8c8104c444c17df2676a325d9a1","yaml-0.11.5.0-f343c7e162c8d325f1d496c33d87fe89cf5a20b66600d096d0bf1e902e6baa1a"],"exe-depends":[],"component-name":"exe:ghcjs-boot","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-boot/build/ghcjs-boot/ghcjs-boot"},{"type":"configured","id":"ghcjs-8.10.7-inplace-ghcjs-dumparchive","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-dumparchive","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-dumparchive/build-info.json","depends":["base-4.14.3.0","bytestring-0.10.12.0","filepath-1.4.2.1","ghcjs-8.10.7-inplace","text-1.2.4.1"],"exe-depends":[],"component-name":"exe:ghcjs-dumparchive","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-dumparchive/build/ghcjs-dumparchive/ghcjs-dumparchive"},{"type":"configured","id":"ghcjs-8.10.7-inplace-ghcjs-pkg","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-pkg","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-pkg/build-info.json","depends":["Cabal-3.2.1.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","ghc-boot-8.10.7","ghcjs-8.10.7-inplace","process-1.6.13.2","terminfo-0.4.1.4","unix-2.7.2.2"],"exe-depends":[],"component-name":"exe:ghcjs-pkg","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/ghcjs-pkg/build/ghcjs-pkg/ghcjs-pkg"},{"type":"configured","id":"ghcjs-8.10.7-inplace-haddock","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/haddock","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/haddock/build-info.json","depends":["Cabal-3.2.1.0","array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","ghc-boot-8.10.7","ghcjs-8.10.7-inplace","parsec-3.1.14.0","text-1.2.4.1","transformers-0.5.6.2","xhtml-3000.2.2.1"],"exe-depends":[],"component-name":"exe:haddock","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/haddock/build/haddock/haddock"},{"type":"configured","id":"ghcjs-8.10.7-inplace-private-ghcjs-hsc2hs","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-hsc2hs","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-hsc2hs/build-info.json","depends":["base-4.14.3.0","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.13.2"],"exe-depends":[],"component-name":"exe:private-ghcjs-hsc2hs","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-hsc2hs/build/private-ghcjs-hsc2hs/private-ghcjs-hsc2hs"},{"type":"configured","id":"ghcjs-8.10.7-inplace-private-ghcjs-run","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-run","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-run/build-info.json","depends":["base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.13.2"],"exe-depends":[],"component-name":"exe:private-ghcjs-run","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-run/build/private-ghcjs-run/private-ghcjs-run"},{"type":"configured","id":"ghcjs-8.10.7-inplace-private-ghcjs-unlit","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-unlit","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-unlit/build-info.json","depends":[],"exe-depends":[],"component-name":"exe:private-ghcjs-unlit","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/x/private-ghcjs-unlit/build/private-ghcjs-unlit/private-ghcjs-unlit"},{"type":"configured","id":"ghcjs-8.10.7-inplace-test","pkg-name":"ghcjs","pkg-version":"8.10.7","flags":{"compiler-only":false,"debug":false,"disable-optimizer":false,"ghci":true,"no-wrapper-install":true,"runtime-assertions":false,"stage1":false,"stage2":true,"stage3":false,"terminfo":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/t/test","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/t/test/build-info.json","depends":["HUnit-1.6.2.0-314ab465650beeeec200f38d63ecc71fad8c18b79234495712d8cbf66cc392ef","aeson-1.4.7.1-52a0a9a1400dce323fd3d192ed978d613759f226f95780101e22948c7029ceb3","base-4.14.3.0","bytestring-0.10.12.0","data-default-0.7.1.1-14a5dd71fd9b9460c9e01d850dbf5a924905b919addadf74a1e21023ba2090c9","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","lens-4.19.2-a365e8ee15eac5187637caf0f9a84168dcf51fefd5a0ada0844b88a6cd4de834","lifted-base-0.2.3.12-d676308f67e6ea842d5113b274f0d27bb940d5b6f46d966d107583274c238bb5","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","optparse-applicative-0.15.1.0-ff69718b26c95902c84e69b0d38586ca2b71b8bb5566d63b9fcabab034f14315","process-1.6.13.2","random-1.2.0-2582a6283f6e8be75a7a3a45af494827ff1c10897473f915a522fd9a4b441210","shelly-1.9.0-d6d8c7f447b6bd65c18b3be6927750eb9dfd02f79324a8f06ca3bfa0bb425079","test-framework-0.8.2.0-4acaaf8eda1287dd7e779b387dd505fd725d0ee0383eeb97d73df9fa7ee5eb34","test-framework-hunit-0.3.0.2-251703d47b62042b244e7d589c2a4bc1754ecd3c68d7d25fa52563917e5fb486","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47","wai-3.2.3-f78cd8b8b3b0191ae95f0a17d9e4679af13a09b5426dd7a64a7c2ee96cde9059","wai-app-static-3.1.7.2-063d791ea745dac9aae85ff14de9fe9c456f6e85653b4f9f97a90b8a1e8555df","wai-extra-3.0.32-2aba6dc4516932801d14dbedbc45c653eab5b878ceb83d48aa3355f2e092b6a6","wai-websockets-3.0.1.2-ff20345d458ca8ad8918f900d7cc52c9d7f4edf34f54ea9426ed0152b4129d9a","warp-3.3.14-e75ca651b306735e7a4c986568378b5ab2592061a7a8b739ff4742530de5cc2f","webdriver-0.9.0.1-35a56a29edc76894542404eac80a7216f880803a2f4567121fc370db555d5d3e","websockets-0.12.7.2-9a73545fb032fca4a3ff32d85cc5c4b62eac54762308714d8f3022bba46aa4e0","yaml-0.11.5.0-f343c7e162c8d325f1d496c33d87fe89cf5a20b66600d096d0bf1e902e6baa1a"],"exe-depends":[],"component-name":"test:test","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-8.10.7/t/test/build/test/test"},{"type":"configured","id":"ghcjs-th-0.1.0.0-inplace","pkg-name":"ghcjs-th","pkg-version":"0.1.0.0","flags":{"use-host-template-haskell":true},"style":"local","pkg-src":{"type":"local","path":"./lib/ghcjs-th"},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-th-0.1.0.0","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/ghcjs-th-0.1.0.0/build-info.json","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","ghc-prim-0.6.1","ghci-8.10.7","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"happy-1.20.0-e-happy-3381209c89ac2203d07bd4b222160e1a46477e5747b38342479eae0cc9ed21a8","pkg-name":"happy","pkg-version":"1.20.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f99e612b29d68d784d7e193943a13466f0923de69452a2585081491efed0436b","pkg-src-sha256":"3b1d3a8f93a2723b554d9f07b2cd136be1a7b2fcab1855b12b7aab5cbac8868c","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","mtl-2.2.2"],"exe-depends":[],"component-name":"exe:happy","bin-file":"/store/ghc-8.10.7/happy-1.20.0-e-happy-3381209c89ac2203d07bd4b222160e1a46477e5747b38342479eae0cc9ed21a8/bin/happy"},{"type":"configured","id":"hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","pkg-name":"hashable","pkg-version":"1.3.1.0","flags":{"integer-gmp":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d965e098e06cc585b201da6137dcb31c40f35eb7a937b833903969447985c076","pkg-src-sha256":"8061823a4ac521b53912edcba36b956f3159cb885b07ec119af295a6568ca7c4","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hostname-1.0-a81e773a8679491b2cf913154430d20a33f93ed6f4554b930c893277d3f6ba43","pkg-name":"hostname","pkg-version":"1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8203b6ecd14ca1ef12f73a471b0a6a4be3ad4568d8b84f2bc4bc9e0abb8c4153","pkg-src-sha256":"9b43dab1b6da521f35685b20555da00738c8e136eb972458c786242406a9cf5c","components":{"lib":{"depends":["base-4.14.3.0"],"exe-depends":[]}}},{"type":"configured","id":"hourglass-0.2.12-7f1a2f8e035f979a92fc06fb0a3622206548d2e7eae3800f34fe5ed8e9047d93","pkg-name":"hourglass","pkg-version":"0.2.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e083f5e030dfebe432e30a9c0fa07a99a54eac992f622442646be561fd7a44e8","pkg-src-sha256":"44335b5c402e80c60f1db6a74462be4ea29d1a9043aa994334ffee1164f1ca4a","depends":["base-4.14.3.0","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"hpc-0.6.1.0","pkg-name":"hpc","pkg-version":"0.6.1.0","depends":["base-4.14.3.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","time-1.9.3"]},{"type":"configured","id":"hsc2hs-0.68.7-e-hsc2hs-664c04f5ad5632a07731b57f398bef2f771ab84da35218b03d98405047bf669c","pkg-name":"hsc2hs","pkg-version":"0.68.7","flags":{"in-ghc-tree":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4a0f6860a17e7c245646975e3c2981416afdcb6a7b3553c31005eb3641a7f55b","pkg-src-sha256":"fd7915e41e3ed3bc7750fee0e8add2b4f32dcac8b7c544cfdf5542293223894a","depends":["base-4.14.3.0","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.13.2"],"exe-depends":[],"component-name":"exe:hsc2hs","bin-file":"/store/ghc-8.10.7/hsc2hs-0.68.7-e-hsc2hs-664c04f5ad5632a07731b57f398bef2f771ab84da35218b03d98405047bf669c/bin/hsc2hs"},{"type":"configured","id":"http-client-0.7.6-bc867bac8a0aae16e34a39f4373870f6fb81169fb4dc90912002cf8c8417157f","pkg-name":"http-client","pkg-version":"0.7.6","flags":{"network-uri":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c5115765335ede42038f59c1a52414be382c80d41f01e8d24922a37a9d85ab5d","pkg-src-sha256":"33f378976118f9d800fa526452ada06314c3b4f9eab134e1a4d215380baea890","depends":["array-0.5.4.0","base-4.14.3.0","base64-bytestring-1.0.0.3-f9e5becf7dfbc91185d0c57f336812ed0311b41786ecb3bcc51fb08ba37fd76b","blaze-builder-0.4.2.1-c694e0e375f646ecf1acece0f97effbaa4b3f19f5ece616657e500d5ffe1867c","bytestring-0.10.12.0","case-insensitive-1.2.1.0-04d96ac70421b0f8f3b44d7428a3ecc840602b9c41723a4e68226276ba482222","containers-0.6.5.1","cookie-0.4.5-1666bb4d62c924da233e083065c6a869a88b0c3a1c692a55dbf161d4c809b252","deepseq-1.4.4.0","exceptions-0.10.4","filepath-1.4.2.1","ghc-prim-0.6.1","http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","mime-types-0.1.0.9-6d101b38a5c1e1264b6a27339e11234fbbd759a5d3562d5310626611c3604e6a","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","network-uri-2.6.4.1-5ef235b928a29ecc3adc1d005831c62dce98cd2facaab3ea93b098cddd1ce995","random-1.2.0-2582a6283f6e8be75a7a3a45af494827ff1c10897473f915a522fd9a4b441210","stm-2.5.0.1","streaming-commons-0.2.2.1-942cb4328612adafa73367d11a898b63952d40a880d771224be522f99e9b4d7d","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"http-date-0.0.11-8a0bfcf14f2c7820a253801ceb7f8fdcbe28785a9c1061585750e7de9d541055","pkg-name":"http-date","pkg-version":"0.0.11","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"b278b07f880705e3b0b073206ad26954548b666d616733c9a6b5d50993f547d4","pkg-src-sha256":"32f923ac1ad9bdfeadce7c52a03c9ba6225ba60dc14137cb1cdf32ea84ccf4d3","depends":["array-0.5.4.0","attoparsec-0.13.2.5-101b2cdaf6874d1152c4a364734790b0bd77a38358f95a8c9a6ec3606cca3d3b","base-4.14.3.0","bytestring-0.10.12.0","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","pkg-name":"http-types","pkg-version":"0.12.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f35229edb1bc7b3ae27f961b2407dadb5bfa69d43a8f5337ab46cdc79ca4afe9","pkg-src-sha256":"4e8a4a66477459fa436a331c75e46857ec8026283df984d54f90576cd3024016","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","case-insensitive-1.2.1.0-04d96ac70421b0f8f3b44d7428a3ecc840602b9c41723a4e68226276ba482222","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"http2-2.0.6-df60e47325f865bff182031be49c2b1bd6484fb39639e3eecab84084e0b440fe","pkg-name":"http2","pkg-version":"2.0.6","flags":{"devel":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d286b50b1f644b3a4b0c80f5d40d21ac2682e30b5035e46c5395773d5b69ec3b","pkg-src-sha256":"2a756b1a855fab64c63f45b9bd91435d23a4e039ef51c9b189e8c77bf356a19e","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","case-insensitive-1.2.1.0-04d96ac70421b0f8f3b44d7428a3ecc840602b9c41723a4e68226276ba482222","containers-0.6.5.1","http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","network-byte-order-0.1.6-56958e8e281dbc9e6cdcc1129b8ebeecd09fcefe9a6eab7f59bb0bd26dd6d6f8","psqueues-0.2.7.2-db0c1fae7218798631412dfc6a6f21047ef8dfd74a6ff1624df380bb287b085f","stm-2.5.0.1","time-manager-0.0.0-bc7a85c82be20473dfe915bd8d3f3d3c39f4329684c4a119a5da74bba91eb38c"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"indexed-traversable-0.1.1-859ad062f72f50cb0e073dc82fa2adde481c5f84e83dfb553607a7a6b1160be1","pkg-name":"indexed-traversable","pkg-version":"0.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e330ec1ab336ee2fb1eff117ebe3480d1663396fecd981f185b7123dc7941ae1","pkg-src-sha256":"7ac36ae3153cbe7a8e99eacffd065367b87544953cc92997f424a150db468139","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"integer-gmp-1.0.3.0","pkg-name":"integer-gmp","pkg-version":"1.0.3.0","depends":["ghc-prim-0.6.1"]},{"type":"configured","id":"integer-logarithms-1.0.3.1-32259a5ad23876e1cc8b3c3578f0af2894940ba8ed87dc4e1dc5162ea050a14c","pkg-name":"integer-logarithms","pkg-version":"1.0.3.1","flags":{"check-bounds":false,"integer-gmp":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"888fb6c4fbd79ed2e8f8b94b61bccac25f7fab2b13b32b496e86828bc60b17cf","pkg-src-sha256":"9b0a9f9fab609b15cd015865721fb05f744a1bc77ae92fd133872de528bbea7f","depends":["array-0.5.4.0","base-4.14.3.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"invariant-0.5.3-31ab128e2fba5ccfde647a220f5af6673702e43abfc49fae9c158d95c172a7e9","pkg-name":"invariant","pkg-version":"0.5.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"5b74af0b909c44b17298a9c04bcd0aea030f36a869da9112b103890f3aa2516f","pkg-src-sha256":"d73e5def38da9fdd85def073857aa5f4b1d3b0c2df05c43d58a677cca02d440c","depends":["StateVar-1.2.1-cdb9ff81c4b8442ce9dc6c5b7311e6c2f41a738f99e8b73459a76b1c5a949b7c","array-0.5.4.0","base-4.14.3.0","bifunctors-5.5.7-fa9f071c0ca8eb588a51415afcae581f1e95061bab18698e1b9f8c2d1bbcbc63","comonad-5.0.8-84dad871ca1e06bf26db07aebb9423762f4131e55712cd07cb7957905813d252","containers-0.6.5.1","contravariant-1.5.3-d3a9d369e446e3ff9ca5798448ac1aeb48842e7951f9a1992079a218abf646b6","ghc-prim-0.6.1","profunctors-5.6-6fde5b754660999c4bdfb6d35878d4000620c3d338cda12a93bb9d35059f3397","stm-2.5.0.1","tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","template-haskell-2.16.0.0","th-abstraction-0.3.2.0-d7dbeb8154b6dd18f43d59e413543ac1bec4c700d695dccb3dc6268af1544009","transformers-0.5.6.2","transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"iproute-1.7.11-655ccfd58d1d0ad48ae49e3cc9b9dcca77e69497b27720261e1fb11b3da244b8","pkg-name":"iproute","pkg-version":"1.7.11","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a7bba909d85301aaa06534911891f91d4eb8aacdae6204b260cceb7309e09a56","pkg-src-sha256":"205dcd27cce76345e4fc60060b5d428b015a09e9023f5f1bba58be1f562a8a8b","depends":["appar-0.1.8-8fb5a263212cce5a622c5468fcdb68a68f1f79d9768ea726c629381d06b97677","base-4.14.3.0","byteorder-1.0.4-8941468c0399921cea5e6aac8bdd2d7cfbbfbfcb24a4ebd26a56fb6d0ed63534","bytestring-0.10.12.0","containers-0.6.5.1","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"kan-extensions-5.2.2-99b79e6dc7a50799b9e9d629a22ce906230cf23141e7ca52fb5d48022fe8d862","pkg-name":"kan-extensions","pkg-version":"5.2.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c9ad889deb63a2c6a0af95bc6ccefadd12633b711097e36af32935d54b901179","pkg-src-sha256":"3bf3ce4cacf9c57c03e9a1c36ecb1baf5d8356730853a2592d2112d1248498a0","depends":["adjunctions-4.4-7afb2e346a87af64a67e82ed94119085b73323baed1e84cdb18bd6d25e7cb8da","array-0.5.4.0","base-4.14.3.0","comonad-5.0.8-84dad871ca1e06bf26db07aebb9423762f4131e55712cd07cb7957905813d252","containers-0.6.5.1","contravariant-1.5.3-d3a9d369e446e3ff9ca5798448ac1aeb48842e7951f9a1992079a218abf646b6","distributive-0.6.2.1-590207038e714f2c87eff8c936fa808c84df073258a026835d614af402cdf034","free-5.1.3-f330c46773f99df34d4d64a78d98ad438cab6434e3affbd43c9735f52fd71728","invariant-0.5.3-31ab128e2fba5ccfde647a220f5af6673702e43abfc49fae9c158d95c172a7e9","mtl-2.2.2","profunctors-5.6-6fde5b754660999c4bdfb6d35878d4000620c3d338cda12a93bb9d35059f3397","semigroupoids-5.3.4-149842f32a584b89e1316295da35aa131274d2e9c2c7302c87f39990b9e3c118","tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","transformers-0.5.6.2","transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"lens-4.19.2-a365e8ee15eac5187637caf0f9a84168dcf51fefd5a0ada0844b88a6cd4de834","pkg-name":"lens","pkg-version":"4.19.2","flags":{"benchmark-uniplate":false,"dump-splices":false,"inlining":true,"j":false,"old-inline-pragmas":false,"safe":false,"test-doctests":true,"test-hunit":true,"test-properties":true,"test-templates":true,"trustworthy":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f84441c407bf436490cbc19b5c7497a66f5880be7023e7a9f0e205aee98239e5","pkg-src-sha256":"52f858ae3971a5104cdba5e81a27d154fda11fe65a54a4ac328c85904bdec23b","components":{"lib":{"depends":["array-0.5.4.0","base-4.14.3.0","base-orphans-0.8.4-5c47df155956fb73bbb69058ad0037967c377270cdf9afc72baa7ecfd53b2d7d","bifunctors-5.5.7-fa9f071c0ca8eb588a51415afcae581f1e95061bab18698e1b9f8c2d1bbcbc63","bytestring-0.10.12.0","call-stack-0.3.0-766edef699faf57980b537804dab60a9f3ac1de3a91de98cf4fcfd0435e80ded","comonad-5.0.8-84dad871ca1e06bf26db07aebb9423762f4131e55712cd07cb7957905813d252","containers-0.6.5.1","contravariant-1.5.3-d3a9d369e446e3ff9ca5798448ac1aeb48842e7951f9a1992079a218abf646b6","distributive-0.6.2.1-590207038e714f2c87eff8c936fa808c84df073258a026835d614af402cdf034","exceptions-0.10.4","filepath-1.4.2.1","free-5.1.3-f330c46773f99df34d4d64a78d98ad438cab6434e3affbd43c9735f52fd71728","ghc-prim-0.6.1","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","kan-extensions-5.2.2-99b79e6dc7a50799b9e9d629a22ce906230cf23141e7ca52fb5d48022fe8d862","mtl-2.2.2","parallel-3.2.2.0-ec2949e70412ce6ff7ffd865dd2d3b7cb720043a39b010d37a44ef3b76e4424d","profunctors-5.6-6fde5b754660999c4bdfb6d35878d4000620c3d338cda12a93bb9d35059f3397","reflection-2.1.6-e0014472389fc81f3e7fd7fd3c1cfe3f04370072826a8003cbb29e0a7fc8c50a","semigroupoids-5.3.4-149842f32a584b89e1316295da35aa131274d2e9c2c7302c87f39990b9e3c118","tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","template-haskell-2.16.0.0","text-1.2.4.1","th-abstraction-0.3.2.0-d7dbeb8154b6dd18f43d59e413543ac1bec4c700d695dccb3dc6268af1544009","transformers-0.5.6.2","transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47","vector-0.12.2.0-84be1736eb2fdcccd3f3255cdd99deab0bc6b8c8104c444c17df2676a325d9a1"],"exe-depends":[]},"setup":{"depends":["Cabal-3.2.1.0","base-4.14.3.0","cabal-doctest-1.0.8-cc5c2e87559eb18bdfdc001ed167b2e0d0b78de00dcfa62e272ab89cba37ff46","filepath-1.4.2.1"],"exe-depends":[]}}},{"type":"configured","id":"libyaml-0.1.2-a1b62c66fb76d114c3ef330aaa99817281069d6c18f5704b5d311fc904e102a1","pkg-name":"libyaml","pkg-version":"0.1.2","flags":{"no-unicode":false,"system-libyaml":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"7f14f69ceb14659699974e8e47e1ea6f226ea21ff42a802db03e721c319d201d","pkg-src-sha256":"8f42d66f199fcaee255326f8f770d88b0670df56b5eb78002d6058f3a45e97b5","depends":["base-4.14.3.0","bytestring-0.10.12.0","conduit-1.3.4.1-370668f1ebcb07704d42c7d9513f477c1993b011c50722b04740e706f73165ef","resourcet-1.2.4.2-302da70f53a381e3946d9bc3f2c181c3464035a3dd78edb509158b7de3de01cc"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"lifted-async-0.10.1.3-83cf5de09b953f58e5801096270a0fc5d005a60d1c90f81216f25c636b060566","pkg-name":"lifted-async","pkg-version":"0.10.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cb9f0b2bc84e0081df475cea5370b5f0908485d622214a44891ad347826d4b4a","pkg-src-sha256":"f340fa9b649dd6bd3fc0942eceb94945a5b251e676b8d8e9841d6b24c531b4c2","depends":["async-2.2.3-61de372d98a1e267d734e51b5e1b4cff35a2fc324ce981f8581dd50ab715530c","base-4.14.3.0","constraints-0.13-4b01ef386e6a78dd5a5f51064f7a9b86949fdaf2d54fb07641c19705461b230d","lifted-base-0.2.3.12-d676308f67e6ea842d5113b274f0d27bb940d5b6f46d966d107583274c238bb5","monad-control-1.0.2.3-15717da05dfc99ece4f412301d4ad426993cb1e971bd790b62b9b7cd65892c0b","transformers-base-0.4.5.2-f59c3b08e18ebf1e05bdd152225473dbafc17b3afcdc67346a6635ed5b4de427"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"lifted-base-0.2.3.12-d676308f67e6ea842d5113b274f0d27bb940d5b6f46d966d107583274c238bb5","pkg-name":"lifted-base","pkg-version":"0.2.3.12","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e94ad0692c9c5d85c373e508f23654f2da8ac8c3e475c2b65ffbc04fb165ad69","pkg-src-sha256":"c134a95f56750aae806e38957bb03c59627cda16034af9e00a02b699474317c5","depends":["base-4.14.3.0","monad-control-1.0.2.3-15717da05dfc99ece4f412301d4ad426993cb1e971bd790b62b9b7cd65892c0b","transformers-base-0.4.5.2-f59c3b08e18ebf1e05bdd152225473dbafc17b3afcdc67346a6635ed5b4de427"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"memory-0.15.0-e3b790978092deb24c20e670f314f00f6280d43c1441412b7c11be54cd23a855","pkg-name":"memory","pkg-version":"0.15.0","flags":{"support_basement":true,"support_bytestring":true,"support_deepseq":true,"support_foundation":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"be7024b50e876a9c3b7febaefdd81d5dc67268c58a7b4e6b3825bdc58274d88c","pkg-src-sha256":"e3ff892c1a94708954d0bb2c4f4ab81bc0f505352d95095319c462db1aeb3529","depends":["base-4.14.3.0","basement-0.0.11-274c4ae453d426264bb6282174f264d18ecb1b70dab6099919dfa6bb95920f32","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"mime-types-0.1.0.9-6d101b38a5c1e1264b6a27339e11234fbbd759a5d3562d5310626611c3604e6a","pkg-name":"mime-types","pkg-version":"0.1.0.9","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d631fe56daed713ec7798933aaa1429dc9912d85375619aa6e25a0fefe8e95e7","pkg-src-sha256":"0a32435169ef4ba59f4a4b8addfd0c04479410854d1b8d69a1e38fb389ba71d2","depends":["base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"monad-control-1.0.2.3-15717da05dfc99ece4f412301d4ad426993cb1e971bd790b62b9b7cd65892c0b","pkg-name":"monad-control","pkg-version":"1.0.2.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a3ae888d2fed2e2a0ca33ae11e2480219e07312bccf1a02ffe2ba2e3ec5913ee","pkg-src-sha256":"6c1034189d237ae45368c70f0e68f714dd3beda715dd265b6c8a99fcc64022b1","components":{"lib":{"depends":["base-4.14.3.0","stm-2.5.0.1","transformers-0.5.6.2","transformers-base-0.4.5.2-f59c3b08e18ebf1e05bdd152225473dbafc17b3afcdc67346a6635ed5b4de427","transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede"],"exe-depends":[]}}},{"type":"configured","id":"mono-traversable-1.0.15.1-14a7b01eb3da98ee8bec53e1a2c3325795947148555bfd08e601059e3f8ef800","pkg-name":"mono-traversable","pkg-version":"1.0.15.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cad0e8681cd6c96d3303867fc68c80e2f5d55c2c4bf5277c06ca74402fda61c8","pkg-src-sha256":"c2df5b79ed2f88f2ee313e57c1d591d4463788e20d39e439297eec5ba5835ddf","depends":["base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","split-0.2.3.4-b35824015585af9ca2cfc77c94ab6a24b60b6ac2cac313cec0606c2533291814","text-1.2.4.1","transformers-0.5.6.2","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47","vector-0.12.2.0-84be1736eb2fdcccd3f3255cdd99deab0bc6b8c8104c444c17df2676a325d9a1","vector-algorithms-0.8.0.4-d44a9018bc6e936bbaccd8d7592d9f20d5027e9444ae406c591e0aa8b143babb"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.14.3.0","transformers-0.5.6.2"]},{"type":"configured","id":"network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","pkg-name":"network","pkg-version":"3.1.2.1","flags":{"devel":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"188d6daea8cd91bc3553efd5a90a1e7c6d0425fa66a53baa74db5b6d9fd75c8b","pkg-src-sha256":"fcaa954445cb575ff04d088e719452e356324b6acb98c5aefd2541a069439d4a","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","directory-1.3.6.0"],"exe-depends":["hsc2hs-0.68.7-e-hsc2hs-664c04f5ad5632a07731b57f398bef2f771ab84da35218b03d98405047bf669c"]}}},{"type":"configured","id":"network-byte-order-0.1.6-56958e8e281dbc9e6cdcc1129b8ebeecd09fcefe9a6eab7f59bb0bd26dd6d6f8","pkg-name":"network-byte-order","pkg-version":"0.1.6","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"23d8b609ac43a69d04d5e8f411e5f86a0266c0e8b33b65f8c92ebda64273fe3a","pkg-src-sha256":"f2b0ccc9b759d686af30aac874fc394c13c1fc8a3db00fac401c9339c263dc5e","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"network-uri-2.6.4.1-5ef235b928a29ecc3adc1d005831c62dce98cd2facaab3ea93b098cddd1ce995","pkg-name":"network-uri","pkg-version":"2.6.4.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a4765164ed0a2d1668446eb2e03460ce98645fbf083598c690846af79b7de10d","pkg-src-sha256":"57856db93608a4d419f681b881c9b8d4448800d5a687587dc37e8a9e0b223584","depends":["base-4.14.3.0","deepseq-1.4.4.0","parsec-3.1.14.0","template-haskell-2.16.0.0","th-compat-0.1.2-f673eb08c16520585c802ecd381034ab8705dd899881810ed7fc99b2b45167db"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"old-locale-1.0.0.7-0b56be282c9d84e8a62244b3b072a0d01762b387596f58798264e4b9c6aa0b1c","pkg-name":"old-locale","pkg-version":"1.0.0.7","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"fa998be2c7e00cd26a6e9075bea790caaf3932caa3e9497ad69bc20380dd6911","pkg-src-sha256":"dbaf8bf6b888fb98845705079296a23c3f40ee2f449df7312f7f7f1de18d7b50","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"old-time-1.1.0.3-dfe22a7c6d4d35e59baed241e72dc9c2daa94f91b4983c47fb8eae5a99b18922","pkg-name":"old-time","pkg-version":"1.1.0.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c91fbb3ee73d20ccd015842b30f1f29a304893ebe0ae3128b7bbc13d5bb0d4c8","pkg-src-sha256":"1ccb158b0f7851715d36b757c523b026ca1541e2030d02239802ba39b4112bc1","components":{"lib":{"depends":["base-4.14.3.0","old-locale-1.0.0.7-0b56be282c9d84e8a62244b3b072a0d01762b387596f58798264e4b9c6aa0b1c"],"exe-depends":[]}}},{"type":"configured","id":"optparse-applicative-0.15.1.0-ff69718b26c95902c84e69b0d38586ca2b71b8bb5566d63b9fcabab034f14315","pkg-name":"optparse-applicative","pkg-version":"0.15.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"29ff6146aabf54d46c4c8788e8d1eadaea27c94f6d360c690c5f6c93dac4b07e","pkg-src-sha256":"4db3675fd1e0594afdf079db46f4cd412d483835d703e7c07e1a1a37d6f046f3","depends":["ansi-wl-pprint-0.6.9-a2a5a82f0dda324638d65a03fd5311d9adbaaf655f5688baf31de8c8a2e5a686","base-4.14.3.0","process-1.6.13.2","transformers-0.5.6.2","transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"parallel-3.2.2.0-ec2949e70412ce6ff7ffd865dd2d3b7cb720043a39b010d37a44ef3b76e4424d","pkg-name":"parallel","pkg-version":"3.2.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"421ce1717610bab82969572b96be89d83ea8d8afe7751cb54d80b996fff063d3","pkg-src-sha256":"170453a71a2a8b31cca63125533f7771d7debeb639700bdabdd779c34d8a6ef6","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","deepseq-1.4.4.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"parsec-3.1.14.0","pkg-name":"parsec","pkg-version":"3.1.14.0","depends":["base-4.14.3.0","bytestring-0.10.12.0","mtl-2.2.2","text-1.2.4.1"]},{"type":"configured","id":"pem-0.2.4-ce55be6cefac4d646278605f2a4d3a94535dd6ee2149d7186fb2a9b2834098e2","pkg-name":"pem","pkg-version":"0.2.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cc8e62118b783e284dc0fa032f54fe386a3861a948ec88079370a433c103a705","pkg-src-sha256":"770c4c1b9cd24b3db7f511f8a48404a0d098999e28573c3743a8a296bb96f8d4","depends":["base-4.14.3.0","basement-0.0.11-274c4ae453d426264bb6282174f264d18ecb1b70dab6099919dfa6bb95920f32","bytestring-0.10.12.0","memory-0.15.0-e3b790978092deb24c20e670f314f00f6280d43c1441412b7c11be54cd23a855"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1"]},{"type":"configured","id":"primitive-0.7.1.0-7ccb0748f64fa9b4343f00f3d4c0f11f2cb114d7cdaf164ea91f4084bcecf2b4","pkg-name":"primitive","pkg-version":"0.7.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f6357d5720c1c665096c3e011467daf443198b786a708d2ff926958a24d508d4","pkg-src-sha256":"6bebecfdf2a57787d9fd5231bfd612b65a92edd7b33a973b2a0f11312b89a3f0","depends":["base-4.14.3.0","deepseq-1.4.4.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.13.2","pkg-name":"process","pkg-version":"1.6.13.2","depends":["base-4.14.3.0","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","unix-2.7.2.2"]},{"type":"configured","id":"profunctors-5.6-6fde5b754660999c4bdfb6d35878d4000620c3d338cda12a93bb9d35059f3397","pkg-name":"profunctors","pkg-version":"5.6","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8be6a4efb50a030b59d1213edb119636801b8e96768671e8953b20e6f4f2a7fa","pkg-src-sha256":"cb06a548f67c17d38fef7b2e5d1f66a5e48f353d7806290e795cc97c9a298ce3","depends":["base-4.14.3.0","base-orphans-0.8.4-5c47df155956fb73bbb69058ad0037967c377270cdf9afc72baa7ecfd53b2d7d","bifunctors-5.5.7-fa9f071c0ca8eb588a51415afcae581f1e95061bab18698e1b9f8c2d1bbcbc63","comonad-5.0.8-84dad871ca1e06bf26db07aebb9423762f4131e55712cd07cb7957905813d252","contravariant-1.5.3-d3a9d369e446e3ff9ca5798448ac1aeb48842e7951f9a1992079a218abf646b6","distributive-0.6.2.1-590207038e714f2c87eff8c936fa808c84df073258a026835d614af402cdf034","tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"psqueues-0.2.7.2-db0c1fae7218798631412dfc6a6f21047ef8dfd74a6ff1624df380bb287b085f","pkg-name":"psqueues","pkg-version":"0.2.7.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dbefb35cff7f85ecbe846aed9d6362a3ce1c45260885fb9d562d8c8ed8a81534","pkg-src-sha256":"26263b555d943f9b18bbebda6a090848fdba3c1b403a9b7c848f6bac99e893f9","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"random-1.2.0-2582a6283f6e8be75a7a3a45af494827ff1c10897473f915a522fd9a4b441210","pkg-name":"random","pkg-version":"1.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"30d72df4cc1d2fe2d445c88f0ee9d21965af7ce86660c43a6c32a6a1d90d51c9","pkg-src-sha256":"e4519cf7c058bfd5bdbe4acc782284acc9e25e74487208619ca83cbcd63fb9de","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","mtl-2.2.2","splitmix-0.1.0.3-d6f6b66e6617160e1a17af8ff83c4d20299913bc8d11f722313ea9e9a089a3d3"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"reflection-2.1.6-e0014472389fc81f3e7fd7fd3c1cfe3f04370072826a8003cbb29e0a7fc8c50a","pkg-name":"reflection","pkg-version":"2.1.6","flags":{"slow":false,"template-haskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"044acb7caf41a9d8246878f849baed2dffbc4582d0a1e5c7c079d4287239e970","pkg-src-sha256":"bf3e14917ebb329a53701a3cce0afe670f20037a0148dbfa5cbfa574ed6ba6cd","depends":["base-4.14.3.0","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"regex-base-0.94.0.1-3a17040d054766ab8dc57f26c7d65c9c0f8782a8ce82862d2e8d4da9aa36c4bd","pkg-name":"regex-base","pkg-version":"0.94.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6e3546b73cd5489201d481aa645a531f2c61aa317984e31c5f379ac0bcbfbfad","pkg-src-sha256":"71b1d96fff201f31fe8cd4532f056aca03a21cd486890256dc3007dd73adedd9","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","mtl-2.2.2","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"regex-posix-0.96.0.0-6e5c96176f90239b1b35ea81399d2149d2bbf5bc0c0d85e6660a46b539cb7abb","pkg-name":"regex-posix","pkg-version":"0.96.0.0","flags":{"_regex-posix-clib":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bd870f983a21bb474bd96449736f011c599981ce70da808a21ec1a28292e5481","pkg-src-sha256":"251300f1a6bb2e91abb8bf513a21981f8fab79c98a65acea2bb6d6a524414521","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","regex-base-0.94.0.1-3a17040d054766ab8dc57f26c7d65c9c0f8782a8ce82862d2e8d4da9aa36c4bd"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"resourcet-1.2.4.2-302da70f53a381e3946d9bc3f2c181c3464035a3dd78edb509158b7de3de01cc","pkg-name":"resourcet","pkg-version":"1.2.4.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d57516781d1721f70aa0b9ec8ea9200ab02bf76349cb76d73ad57729302289cc","pkg-src-sha256":"17f20842043ad199961a801b6efb1233b9098eb3537f8395844268f6a223eb87","depends":["base-4.14.3.0","containers-0.6.5.1","exceptions-0.10.4","mtl-2.2.2","primitive-0.7.1.0-7ccb0748f64fa9b4343f00f3d4c0f11f2cb114d7cdaf164ea91f4084bcecf2b4","transformers-0.5.6.2","unliftio-core-0.2.0.1-d0855bd29dffa1bf2bc5c121ed96f93f42e3ddc4c54f561bd3f7a186584466ac"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"safe-0.3.19-51e71c14211a5a289b16e0d6b07ca550bda815589f5bf3e7d68eb5d66dbd69d4","pkg-name":"safe","pkg-version":"0.3.19","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0910dafb8898f52bde4c646e560228a0fd08b1fca5457f222d2f5c0fad6d2039","pkg-src-sha256":"25043442c8f8aa95955bb17467d023630632b961aaa61e807e325d9b2c33f7a2","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"scientific-0.3.6.2-42e3b56e032df0ce79f9062afa301c4cf62b7891d5bcc06b2adf3c10aaa3a378","pkg-name":"scientific","pkg-version":"0.3.6.2","flags":{"bytestring-builder":false,"integer-simple":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dd49abc76bd8e2b57e7a057dc2bb742a00527b4bf9350f9374be03b5934e55d8","pkg-src-sha256":"278d0afc87450254f8a76eab21b5583af63954efc9b74844a17a21a68013140f","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","integer-gmp-1.0.3.0","integer-logarithms-1.0.3.1-32259a5ad23876e1cc8b3c3578f0af2894940ba8ed87dc4e1dc5162ea050a14c","primitive-0.7.1.0-7ccb0748f64fa9b4343f00f3d4c0f11f2cb114d7cdaf164ea91f4084bcecf2b4","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"semigroupoids-5.3.4-149842f32a584b89e1316295da35aa131274d2e9c2c7302c87f39990b9e3c118","pkg-name":"semigroupoids","pkg-version":"5.3.4","flags":{"comonad":true,"containers":true,"contravariant":true,"distributive":true,"doctests":true,"tagged":true,"unordered-containers":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"120873dfa8084ec92745c766336e90d648c347ab99ce55329d5af36dbd3732ba","pkg-src-sha256":"00d2e48973c3ab0a5d52616728ed63d0509454c8328148f698720014d7c58964","components":{"lib":{"depends":["base-4.14.3.0","base-orphans-0.8.4-5c47df155956fb73bbb69058ad0037967c377270cdf9afc72baa7ecfd53b2d7d","bifunctors-5.5.7-fa9f071c0ca8eb588a51415afcae581f1e95061bab18698e1b9f8c2d1bbcbc63","comonad-5.0.8-84dad871ca1e06bf26db07aebb9423762f4131e55712cd07cb7957905813d252","containers-0.6.5.1","contravariant-1.5.3-d3a9d369e446e3ff9ca5798448ac1aeb48842e7951f9a1992079a218abf646b6","distributive-0.6.2.1-590207038e714f2c87eff8c936fa808c84df073258a026835d614af402cdf034","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","template-haskell-2.16.0.0","transformers-0.5.6.2","transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47"],"exe-depends":[]},"setup":{"depends":["Cabal-3.2.1.0","base-4.14.3.0","cabal-doctest-1.0.8-cc5c2e87559eb18bdfdc001ed167b2e0d0b78de00dcfa62e272ab89cba37ff46"],"exe-depends":[]}}},{"type":"configured","id":"semigroups-0.19.1-9fc2a2aad08381bf3b7b83a5a7a86b5f9c4de3e16843376dbd6cd99e824757e1","pkg-name":"semigroups","pkg-version":"0.19.1","flags":{"binary":true,"bytestring":true,"bytestring-builder":false,"containers":true,"deepseq":true,"hashable":true,"tagged":true,"template-haskell":true,"text":true,"transformers":true,"unordered-containers":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ecae129621e0d2f77bef2f01e4458c2e0567ab6e1f39579c61d7cec8058ebb0e","pkg-src-sha256":"79e761e64b862564a3470d5d356cb6b060b14452d675859aed3b2d1e14646648","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shelly-1.9.0-d6d8c7f447b6bd65c18b3be6927750eb9dfd02f79324a8f06ca3bfa0bb425079","pkg-name":"shelly","pkg-version":"1.9.0","flags":{"build-examples":false,"lifted":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ee030e939e2e5367cf33923c1b9e20bd0793667b02f4baf3d6224984b9b94720","pkg-src-sha256":"5eb5fd4fc105e218cef6cfa10971d299ad660324e6a6006b8cccc31edf39aace","depends":["async-2.2.3-61de372d98a1e267d734e51b5e1b4cff35a2fc324ce981f8581dd50ab715530c","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","directory-1.3.6.0","enclosed-exceptions-1.0.3-116b50bd2397f153ecb8506eb04e6c16ca9f5e330047f2e884a6bb84c8d1e8b4","exceptions-0.10.4","filepath-1.4.2.1","lifted-async-0.10.1.3-83cf5de09b953f58e5801096270a0fc5d005a60d1c90f81216f25c636b060566","lifted-base-0.2.3.12-d676308f67e6ea842d5113b274f0d27bb940d5b6f46d966d107583274c238bb5","monad-control-1.0.2.3-15717da05dfc99ece4f412301d4ad426993cb1e971bd790b62b9b7cd65892c0b","mtl-2.2.2","process-1.6.13.2","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","transformers-base-0.4.5.2-f59c3b08e18ebf1e05bdd152225473dbafc17b3afcdc67346a6635ed5b4de427","unix-2.7.2.2","unix-compat-0.5.3-2bc2837e6f4bbc1b7104bd912ca92ab1f2ad1e42c984992d69f66d4dc3a997dd"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"simple-sendfile-0.2.30-582c15ed93e6db542d7c9ac4cc6c2f444258db9ec8bd7a0210a901e1a1cdcb65","pkg-name":"simple-sendfile","pkg-version":"0.2.30","flags":{"allow-bsd":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c6893e159dc20eea6d0b805bfd8d9b73e6a6ba3fe72cc396acdc24fdcd33cc38","pkg-src-sha256":"b6864d2b3c62ff8ea23fa24e9e26f751bfe5253c8efb1f1e4fee2ba91d065284","depends":["base-4.14.3.0","bytestring-0.10.12.0","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"split-0.2.3.4-b35824015585af9ca2cfc77c94ab6a24b60b6ac2cac313cec0606c2533291814","pkg-name":"split","pkg-version":"0.2.3.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"048c75891d63a03828f97667214aaaf0e67b7dcbfec297753e39939ffda6f51a","pkg-src-sha256":"271fe5104c9f40034aa9a1aad6269bcecc9454bc5a57c247e69e17de996c1f2a","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"splitmix-0.1.0.3-d6f6b66e6617160e1a17af8ff83c4d20299913bc8d11f722313ea9e9a089a3d3","pkg-name":"splitmix","pkg-version":"0.1.0.3","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"fc3aae74c467f4b608050bef53aec17904a618731df9407e655d8f3bf8c32d5c","pkg-src-sha256":"46009f4b000c9e6613377767b8718bf38476469f2a8e2162d98cc246882d5a35","depends":["base-4.14.3.0","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.0.1","pkg-name":"stm","pkg-version":"2.5.0.1","depends":["array-0.5.4.0","base-4.14.3.0"]},{"type":"configured","id":"streaming-commons-0.2.2.1-942cb4328612adafa73367d11a898b63952d40a880d771224be522f99e9b4d7d","pkg-name":"streaming-commons","pkg-version":"0.2.2.1","flags":{"use-bytestring-builder":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"28abce35b48dcfb871926dad4cb37bdf737372892b4e5222abc97ca31f2ac738","pkg-src-sha256":"306940bf4878a0b714e6746a7f934d018100efc86332c176a648014bfe1e81dd","depends":["array-0.5.4.0","async-2.2.3-61de372d98a1e267d734e51b5e1b4cff35a2fc324ce981f8581dd50ab715530c","base-4.14.3.0","bytestring-0.10.12.0","directory-1.3.6.0","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","process-1.6.13.2","random-1.2.0-2582a6283f6e8be75a7a3a45af494827ff1c10897473f915a522fd9a4b441210","stm-2.5.0.1","text-1.2.4.1","transformers-0.5.6.2","unix-2.7.2.2","zlib-0.6.2.3-a637f3112bea0ad58c129e9e214d7009d480609a743e2473280eb8404869d423"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"stringsearch-0.3.6.6-ed3c625583d8ef2c2cbb8a855cd2444fedee837a8e8140f5a903278226083f8e","pkg-name":"stringsearch","pkg-version":"0.3.6.6","flags":{"base3":false,"base4":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e88c03f4adb4bb3ab88550c921a9a8a2836a0a70f58b9cc64cff2ac65af9b77c","pkg-src-sha256":"295f1971920bc52263d8275d7054ad223a7e1aefe75533f9887735c9644ffe4a","components":{"lib":{"depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1"],"exe-depends":[]}}},{"type":"configured","id":"syb-0.7.2.1-f17324f538cc1a70b6242a24980d699ca900c553769879889ca40466f83fd57f","pkg-name":"syb","pkg-version":"0.7.2.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bf42655a213402215299e435c52f799e76cbec0b984cd7153d6b9af8a1c0803f","pkg-src-sha256":"1807c66f77e66786739387f0ae9f16d150d1cfa9d626afcb729f0e9b442a8d96","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","pkg-name":"tagged","pkg-version":"0.8.6.1","flags":{"deepseq":true,"transformers":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"98e446479bd3fe5bdc5fa63fec2a2f6998e1bb8cb6db1dee611716f588b3ab28","pkg-src-sha256":"f5e0fcf95f0bb4aa63f428f2c01955a41ea1a42cfcf39145ed631f59a9616c02","depends":["base-4.14.3.0","deepseq-1.4.4.0","template-haskell-2.16.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"tar-0.5.1.1-643c87cd04d43966ba086abf693a99a6c8e6a74b2250a8c6db6f078672b95893","pkg-name":"tar","pkg-version":"0.5.1.1","flags":{"old-bytestring":false,"old-time":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"94ded05718fe75b88c98e7113feeb9fca50688a7e59b6aefd80a6f48438c5062","pkg-src-sha256":"b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.16.0.0","pkg-name":"template-haskell","pkg-version":"2.16.0.0","depends":["base-4.14.3.0","ghc-boot-th-8.10.7","ghc-prim-0.6.1","pretty-1.1.3.6"]},{"type":"configured","id":"temporary-1.3-ff789bf78c36599a0a16db6158f62be122deb703e96987b84a1d080b3218a979","pkg-name":"temporary","pkg-version":"1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3a66c136f700dbf42f3c5000ca93e80b26dead51e54322c83272b236c1ec8ef1","pkg-src-sha256":"8c442993694b5ffca823ce864af95bd2841fb5264ee511c61cf48cc71d879890","depends":["base-4.14.3.0","directory-1.3.6.0","exceptions-0.10.4","filepath-1.4.2.1","random-1.2.0-2582a6283f6e8be75a7a3a45af494827ff1c10897473f915a522fd9a4b441210","transformers-0.5.6.2","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"terminfo-0.4.1.4","pkg-name":"terminfo","pkg-version":"0.4.1.4","depends":["base-4.14.3.0"]},{"type":"configured","id":"test-framework-0.8.2.0-4acaaf8eda1287dd7e779b387dd505fd725d0ee0383eeb97d73df9fa7ee5eb34","pkg-name":"test-framework","pkg-version":"0.8.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"39f114d1ed0c95d0772ba6873bef9a69c1e08b865f46deb1b6c93ca5224f7871","pkg-src-sha256":"f5aec7a15dbcb39e951bcf6502606fd99d751197b5510f41706899aa7e660ac2","depends":["ansi-terminal-0.11-68045ba4dc159ef4d015a7becef8401cce3f1e07756980a26cd5d04a806924cd","ansi-wl-pprint-0.6.9-a2a5a82f0dda324638d65a03fd5311d9adbaaf655f5688baf31de8c8a2e5a686","base-4.14.3.0","containers-0.6.5.1","hostname-1.0-a81e773a8679491b2cf913154430d20a33f93ed6f4554b930c893277d3f6ba43","old-locale-1.0.0.7-0b56be282c9d84e8a62244b3b072a0d01762b387596f58798264e4b9c6aa0b1c","random-1.2.0-2582a6283f6e8be75a7a3a45af494827ff1c10897473f915a522fd9a4b441210","regex-posix-0.96.0.0-6e5c96176f90239b1b35ea81399d2149d2bbf5bc0c0d85e6660a46b539cb7abb","time-1.9.3","xml-1.3.14-1aebc396e1d8eed7019387ea5aaacd1f989a750252a8ba709d99c0557b7fbbf5"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"test-framework-hunit-0.3.0.2-251703d47b62042b244e7d589c2a4bc1754ecd3c68d7d25fa52563917e5fb486","pkg-name":"test-framework-hunit","pkg-version":"0.3.0.2","flags":{"base3":false,"base4":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"7fd007e9cb082cd64a2213a6d36acf057f7d6df6b5343a088e81b2b3a9a23545","pkg-src-sha256":"95cb8ee02a850b164bfdabdf4dbc839d621361f3ac770ad21ea43a8bde360bf8","components":{"lib":{"depends":["HUnit-1.6.2.0-314ab465650beeeec200f38d63ecc71fad8c18b79234495712d8cbf66cc392ef","base-4.14.3.0","extensible-exceptions-0.1.1.4-8cc6a1f8ee4f082c86b889e18baaf343050ddbc7a582cb6ff369da69867f1c1b","test-framework-0.8.2.0-4acaaf8eda1287dd7e779b387dd505fd725d0ee0383eeb97d73df9fa7ee5eb34"],"exe-depends":[]}}},{"type":"pre-existing","id":"text-1.2.4.1","pkg-name":"text","pkg-version":"1.2.4.1","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0","template-haskell-2.16.0.0"]},{"type":"configured","id":"th-abstraction-0.3.2.0-d7dbeb8154b6dd18f43d59e413543ac1bec4c700d695dccb3dc6268af1544009","pkg-name":"th-abstraction","pkg-version":"0.3.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9b5b4e6e2bbff9b075ad7751ee98e2107090bd17b51d5442695b8990e4db6521","pkg-src-sha256":"36fef33ad0f34b9b8fb5552fe6187579a00d5f90d938e9bc24d382a9919feb79","depends":["base-4.14.3.0","containers-0.6.5.1","ghc-prim-0.6.1","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"th-compat-0.1.2-f673eb08c16520585c802ecd381034ab8705dd899881810ed7fc99b2b45167db","pkg-name":"th-compat","pkg-version":"0.1.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3d55de1adc542c1a870c9ada90da2fbbe5f4e8bcd3eed545a55c3df9311b32a8","pkg-src-sha256":"2bc45d0199de3dc65ebc9b71251799f5238869dbc6a66bdf0c06c7e23d603801","depends":["base-4.14.3.0","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"time-1.9.3","pkg-name":"time","pkg-version":"1.9.3","depends":["base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"configured","id":"time-compat-1.9.5-71a65c2deb18d6d8d92b409212320e2c85df8b72a793ab4e2eb7c477a23b71f4","pkg-name":"time-compat","pkg-version":"1.9.5","flags":{"old-locale":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a586bd5a59b47ea0c9eafc55c6936ede11126f4a6e619d6d7aeefee73c43d9b8","pkg-src-sha256":"3126b267d19f31d52a3c36f13a8788be03242f829a5bddd8a3084e134d01e3a6","depends":["base-4.14.3.0","base-orphans-0.8.4-5c47df155956fb73bbb69058ad0037967c377270cdf9afc72baa7ecfd53b2d7d","deepseq-1.4.4.0","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"time-manager-0.0.0-bc7a85c82be20473dfe915bd8d3f3d3c39f4329684c4a119a5da74bba91eb38c","pkg-name":"time-manager","pkg-version":"0.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d258b1d08f9b926823f5380e9201303b0ebeefe4f9e0047c0cbd7b6728135ee1","pkg-src-sha256":"90a616ed20b2119bb64f78f84230b6798cde22a35e87bc8d9ee08cdf1d90fcdb","depends":["auto-update-0.1.6-e8e826113afdb347fe8d7388c54fbeeb751a076150519ea04e74fa71c78c46e4","base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"configured","id":"transformers-base-0.4.5.2-f59c3b08e18ebf1e05bdd152225473dbafc17b3afcdc67346a6635ed5b4de427","pkg-name":"transformers-base","pkg-version":"0.4.5.2","flags":{"orphaninstances":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e4d8155470905ba2942033a1537fc4cf91927d1c9b34693fd57ddf3bc02334af","pkg-src-sha256":"d0c80c63fdce6a077dd8eda4f1ff289b85578703a3f1272e141d400fe23245e8","depends":["base-4.14.3.0","base-orphans-0.8.4-5c47df155956fb73bbb69058ad0037967c377270cdf9afc72baa7ecfd53b2d7d","stm-2.5.0.1","transformers-0.5.6.2","transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede","pkg-name":"transformers-compat","pkg-version":"0.6.6","flags":{"five":false,"five-three":true,"four":false,"generic-deriving":true,"mtl":true,"three":false,"two":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"510709db2b12d1510d70de824ee544ca0a9e6f27aa7e299218cbacc0750b4a5e","pkg-src-sha256":"7e2e0251e5e6d28142615a4b950a3fabac9c0b7804b1ec4a4ae985f19519a9f9","depends":["base-4.14.3.0","ghc-prim-0.6.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"type-equality-1-4cd1419c88ebdbd4cd0a28c94eb2a79dd5234fbd3edbd50a599c817080638d8c","pkg-name":"type-equality","pkg-version":"1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f2a895a7b22384d9b43a9c6608725b2de7581e77e5b20ab9cfe3f959f6cd71a8","pkg-src-sha256":"4728b502a211454ef682a10d7a3e817c22d06ba509df114bb267ef9d43a08ce8","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.14.3.0","bytestring-0.10.12.0","time-1.9.3"]},{"type":"configured","id":"unix-compat-0.5.3-2bc2837e6f4bbc1b7104bd912ca92ab1f2ad1e42c984992d69f66d4dc3a997dd","pkg-name":"unix-compat","pkg-version":"0.5.3","flags":{"old-time":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"60be4a0b2e1cd873e5ad5f0cc9e53575b77640567abb43ef700d5b323ca2ac49","pkg-src-sha256":"0893b597ea0db406429d0d563506af6755728eface0e1981f9392122db88e5c8","depends":["base-4.14.3.0","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"unix-time-0.4.7-327f5b87b2611e066655cbb58cf346c1d0142212ed35f6a6dd6f01879cb86dc4","pkg-name":"unix-time","pkg-version":"0.4.7","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c0d971d04561875b908451c563df8728fe6d8639c90e070b244227f13f76ab8e","pkg-src-sha256":"19233f8badf921d444c6165689253d877cfed58ce08f28cad312558a9280de09","components":{"lib":{"depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","old-time-1.1.0.3-dfe22a7c6d4d35e59baed241e72dc9c2daa94f91b4983c47fb8eae5a99b18922"],"exe-depends":["hsc2hs-0.68.7-e-hsc2hs-664c04f5ad5632a07731b57f398bef2f771ab84da35218b03d98405047bf669c"]}}},{"type":"configured","id":"unliftio-core-0.2.0.1-d0855bd29dffa1bf2bc5c121ed96f93f42e3ddc4c54f561bd3f7a186584466ac","pkg-name":"unliftio-core","pkg-version":"0.2.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9b3e44ea9aacacbfc35b3b54015af450091916ac3618a41868ebf6546977659a","pkg-src-sha256":"919f0d1297ea2f5373118553c1df2a9405d8b9e31a8307e829da67d4953c299a","depends":["base-4.14.3.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47","pkg-name":"unordered-containers","pkg-version":"0.2.13.0","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6310c636f92ed4908fdd0de582b6be31c2851c7b5f2ec14e9f416eb94df7a078","pkg-src-sha256":"86b01369ab8eb311383a052d389337e2cd71a63088323f02932754df4aa37b55","depends":["base-4.14.3.0","deepseq-1.4.4.0","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"uuid-types-1.0.4-6086ee179fe2f1ed9da5bd809a02f7629168918177bc5196b524120354539813","pkg-name":"uuid-types","pkg-version":"1.0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"34de8cf688e30f668cba5e5d79e907eb7f65bca2538ce927fddb42d74840036b","pkg-src-sha256":"c2aa2ccaa3a74259aca1f57cc1c277822086430814ce5e4f38cfd868fe48ec06","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","deepseq-1.4.4.0","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","random-1.2.0-2582a6283f6e8be75a7a3a45af494827ff1c10897473f915a522fd9a4b441210","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"vault-0.3.1.5-e6aaa3e9286a9fe1f03f6431c42c07e12b49138cf64435197da23c125d649f30","pkg-name":"vault","pkg-version":"0.3.1.5","flags":{"useghc":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"10398b6c75b00a5a9f37423c3f064acad4cfdfacb76e2baac1bd9ba225286d67","pkg-src-sha256":"ac2a6b6adf58598c5c8faa931ae961a8a2aa50ddb2f0f7a2044ff6e8c3d433a0","depends":["base-4.14.3.0","containers-0.6.5.1","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"vector-0.12.2.0-84be1736eb2fdcccd3f3255cdd99deab0bc6b8c8104c444c17df2676a325d9a1","pkg-name":"vector","pkg-version":"0.12.2.0","flags":{"boundschecks":true,"internalchecks":false,"unsafechecks":false,"wall":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6e81683c2c19b4aea58f1f453547cb03851b3cfd4031b8eb82abfa4643a13494","pkg-src-sha256":"17ab0b84c87859333ff681bb9f768368779677925bd589ff4baa05be3fd26b50","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1","primitive-0.7.1.0-7ccb0748f64fa9b4343f00f3d4c0f11f2cb114d7cdaf164ea91f4084bcecf2b4"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"vector-algorithms-0.8.0.4-d44a9018bc6e936bbaccd8d7592d9f20d5027e9444ae406c591e0aa8b143babb","pkg-name":"vector-algorithms","pkg-version":"0.8.0.4","flags":{"bench":true,"boundschecks":true,"internalchecks":false,"llvm":false,"properties":true,"unsafechecks":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bf4760b23a0fee09abb8c9e3c952c870f5dc9780876e9d7e38ab2bdd98c8f283","pkg-src-sha256":"76176a56778bf30a275b1089ee6db24ec6c67d92525145f8dfe215b80137af3b","depends":["base-4.14.3.0","bytestring-0.10.12.0","primitive-0.7.1.0-7ccb0748f64fa9b4343f00f3d4c0f11f2cb114d7cdaf164ea91f4084bcecf2b4","vector-0.12.2.0-84be1736eb2fdcccd3f3255cdd99deab0bc6b8c8104c444c17df2676a325d9a1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"void-0.7.3-a42d1eef0f87c637011e4d9f1374cf8032d62a9528998a747d2eddaf6d987c86","pkg-name":"void","pkg-version":"0.7.3","flags":{"safe":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"13d30f62fcdf065e595d679d4ac8b4b0c1bb1a1b73db7b5b5a8f857cb5c8a546","pkg-src-sha256":"53af758ddc37dc63981671e503438d02c6f64a2d8744e9bec557a894431f7317","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"wai-3.2.3-f78cd8b8b3b0191ae95f0a17d9e4679af13a09b5426dd7a64a7c2ee96cde9059","pkg-name":"wai","pkg-version":"3.2.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c7518618bdb842116dbc1a4e4553223799eef43add19278c2bbffb4536595fe0","pkg-src-sha256":"5574d6541000988fe204d3032db87fd0a5404cdbde33ee4fa02e6006768229f8","depends":["base-4.14.3.0","bytestring-0.10.12.0","http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","text-1.2.4.1","vault-0.3.1.5-e6aaa3e9286a9fe1f03f6431c42c07e12b49138cf64435197da23c125d649f30"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"wai-app-static-3.1.7.2-063d791ea745dac9aae85ff14de9fe9c456f6e85653b4f9f97a90b8a1e8555df","pkg-name":"wai-app-static","pkg-version":"3.1.7.2","flags":{"print":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ad6b8b07777e6d63f5bf84da2522ac469ff66219a59cdb72baeb69af95e4ffe0","pkg-src-sha256":"c8e7db8ddb31d2297df4cae0add63e514f2a8ef92a68541707585f8148690f8d","depends":["base-4.14.3.0","blaze-html-0.9.1.2-022d22b03693695c24e4963a307d0e6faa8216dac14462831e569778bf44c77c","blaze-markup-0.8.2.8-bc2dff2d134f02b5cf60656035ece9a666b81e8bb3192243e4bce0571e4e3e98","bytestring-0.10.12.0","containers-0.6.5.1","cryptonite-0.28-c4162375c9a940361371e61f131514da5733be9b0f847ca300a4aacfb7afbc2f","directory-1.3.6.0","file-embed-0.0.13.0-07dd896cc8ff066813a1f3f766a7baaef44afa16095bcd2a3f20db4174a292d6","filepath-1.4.2.1","http-date-0.0.11-8a0bfcf14f2c7820a253801ceb7f8fdcbe28785a9c1061585750e7de9d541055","http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","memory-0.15.0-e3b790978092deb24c20e670f314f00f6280d43c1441412b7c11be54cd23a855","mime-types-0.1.0.9-6d101b38a5c1e1264b6a27339e11234fbbd759a5d3562d5310626611c3604e6a","old-locale-1.0.0.7-0b56be282c9d84e8a62244b3b072a0d01762b387596f58798264e4b9c6aa0b1c","optparse-applicative-0.15.1.0-ff69718b26c95902c84e69b0d38586ca2b71b8bb5566d63b9fcabab034f14315","template-haskell-2.16.0.0","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-compat-0.5.3-2bc2837e6f4bbc1b7104bd912ca92ab1f2ad1e42c984992d69f66d4dc3a997dd","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47","wai-3.2.3-f78cd8b8b3b0191ae95f0a17d9e4679af13a09b5426dd7a64a7c2ee96cde9059","wai-extra-3.0.32-2aba6dc4516932801d14dbedbc45c653eab5b878ceb83d48aa3355f2e092b6a6","warp-3.3.14-e75ca651b306735e7a4c986568378b5ab2592061a7a8b739ff4742530de5cc2f","zlib-0.6.2.3-a637f3112bea0ad58c129e9e214d7009d480609a743e2473280eb8404869d423"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"wai-app-static-3.1.7.2-e-warp-9901da3d600430101d53709ca6d58b231800bd28ed46206a1afc0ca453f2378d","pkg-name":"wai-app-static","pkg-version":"3.1.7.2","flags":{"print":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ad6b8b07777e6d63f5bf84da2522ac469ff66219a59cdb72baeb69af95e4ffe0","pkg-src-sha256":"c8e7db8ddb31d2297df4cae0add63e514f2a8ef92a68541707585f8148690f8d","depends":["base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","directory-1.3.6.0","mime-types-0.1.0.9-6d101b38a5c1e1264b6a27339e11234fbbd759a5d3562d5310626611c3604e6a","text-1.2.4.1","wai-app-static-3.1.7.2-063d791ea745dac9aae85ff14de9fe9c456f6e85653b4f9f97a90b8a1e8555df"],"exe-depends":[],"component-name":"exe:warp","bin-file":"/store/ghc-8.10.7/wai-app-static-3.1.7.2-e-warp-9901da3d600430101d53709ca6d58b231800bd28ed46206a1afc0ca453f2378d/bin/warp"},{"type":"configured","id":"wai-extra-3.0.32-2aba6dc4516932801d14dbedbc45c653eab5b878ceb83d48aa3355f2e092b6a6","pkg-name":"wai-extra","pkg-version":"3.0.32","flags":{"build-example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"7a9e65c4555e1b937dc788b8ba249dbacd4f36840c60581bc27115a5c4a48079","pkg-src-sha256":"0052878f765dda7a8cbd2c5b72295a80d0251a03b267dbb67633d3aafcaee698","depends":["aeson-1.4.7.1-52a0a9a1400dce323fd3d192ed978d613759f226f95780101e22948c7029ceb3","ansi-terminal-0.11-68045ba4dc159ef4d015a7becef8401cce3f1e07756980a26cd5d04a806924cd","base-4.14.3.0","base64-bytestring-1.0.0.3-f9e5becf7dfbc91185d0c57f336812ed0311b41786ecb3bcc51fb08ba37fd76b","bytestring-0.10.12.0","case-insensitive-1.2.1.0-04d96ac70421b0f8f3b44d7428a3ecc840602b9c41723a4e68226276ba482222","containers-0.6.5.1","cookie-0.4.5-1666bb4d62c924da233e083065c6a869a88b0c3a1c692a55dbf161d4c809b252","data-default-class-0.1.2.0-17ceafe0f96b0cdbafad084ab784938676a45ba49a92d1c9875e1376c64a517d","deepseq-1.4.4.0","directory-1.3.6.0","fast-logger-3.0.3-dcaa0bb54cf4bc4a51b14dbb2590735910e4d1d57d62aad4cca1896d4ef4bc6a","http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","http2-2.0.6-df60e47325f865bff182031be49c2b1bd6484fb39639e3eecab84084e0b440fe","iproute-1.7.11-655ccfd58d1d0ad48ae49e3cc9b9dcca77e69497b27720261e1fb11b3da244b8","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","old-locale-1.0.0.7-0b56be282c9d84e8a62244b3b072a0d01762b387596f58798264e4b9c6aa0b1c","resourcet-1.2.4.2-302da70f53a381e3946d9bc3f2c181c3464035a3dd78edb509158b7de3de01cc","streaming-commons-0.2.2.1-942cb4328612adafa73367d11a898b63952d40a880d771224be522f99e9b4d7d","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2","unix-compat-0.5.3-2bc2837e6f4bbc1b7104bd912ca92ab1f2ad1e42c984992d69f66d4dc3a997dd","vault-0.3.1.5-e6aaa3e9286a9fe1f03f6431c42c07e12b49138cf64435197da23c125d649f30","void-0.7.3-a42d1eef0f87c637011e4d9f1374cf8032d62a9528998a747d2eddaf6d987c86","wai-3.2.3-f78cd8b8b3b0191ae95f0a17d9e4679af13a09b5426dd7a64a7c2ee96cde9059","wai-logger-2.3.6-f95a799adae8b044547c71c6c74079de223418e3a072b5d2b6481746fbb66c46","word8-0.1.3-a52b0b2e8eaf12d4065c5bb0feed18420e66828a5f860b7767d8b6a9bf6c7dca","zlib-0.6.2.3-a637f3112bea0ad58c129e9e214d7009d480609a743e2473280eb8404869d423"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"wai-logger-2.3.6-f95a799adae8b044547c71c6c74079de223418e3a072b5d2b6481746fbb66c46","pkg-name":"wai-logger","pkg-version":"2.3.6","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2cf80c00b7247277f84e14869f43bf05e9cccb59ca26fb2b5bb20f74edae56e2","pkg-src-sha256":"e2fbd8c74fa0a31f9ea0faa53f4ad4e588644a34d8dfc7cc50d85c245c3c7541","components":{"lib":{"depends":["base-4.14.3.0","byteorder-1.0.4-8941468c0399921cea5e6aac8bdd2d7cfbbfbfcb24a4ebd26a56fb6d0ed63534","bytestring-0.10.12.0","fast-logger-3.0.3-dcaa0bb54cf4bc4a51b14dbb2590735910e4d1d57d62aad4cca1896d4ef4bc6a","http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","wai-3.2.3-f78cd8b8b3b0191ae95f0a17d9e4679af13a09b5426dd7a64a7c2ee96cde9059"],"exe-depends":[]},"setup":{"depends":["Cabal-3.2.1.0","base-4.14.3.0","cabal-doctest-1.0.8-cc5c2e87559eb18bdfdc001ed167b2e0d0b78de00dcfa62e272ab89cba37ff46"],"exe-depends":[]}}},{"type":"configured","id":"wai-websockets-3.0.1.2-e-wai-websockets-example-32a164fba5a85343fd9f1541ccd83e246f2d36cbcb031f06d2979c0db7bb49a7","pkg-name":"wai-websockets","pkg-version":"3.0.1.2","flags":{"example":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0e713ddb8c28d47be76cefeab3a73b6876477d648ddcd873ba6b15d08691aa7f","pkg-src-sha256":"917cceb08f296d7dc6b6cafb66133ae53888b2c98b8fb2a2d7fa629d75ab5d2c","depends":["base-4.14.3.0","bytestring-0.10.12.0","case-insensitive-1.2.1.0-04d96ac70421b0f8f3b44d7428a3ecc840602b9c41723a4e68226276ba482222","file-embed-0.0.13.0-07dd896cc8ff066813a1f3f766a7baaef44afa16095bcd2a3f20db4174a292d6","http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","text-1.2.4.1","transformers-0.5.6.2","wai-3.2.3-f78cd8b8b3b0191ae95f0a17d9e4679af13a09b5426dd7a64a7c2ee96cde9059","wai-app-static-3.1.7.2-063d791ea745dac9aae85ff14de9fe9c456f6e85653b4f9f97a90b8a1e8555df","wai-websockets-3.0.1.2-ff20345d458ca8ad8918f900d7cc52c9d7f4edf34f54ea9426ed0152b4129d9a","warp-3.3.14-e75ca651b306735e7a4c986568378b5ab2592061a7a8b739ff4742530de5cc2f","websockets-0.12.7.2-9a73545fb032fca4a3ff32d85cc5c4b62eac54762308714d8f3022bba46aa4e0"],"exe-depends":[],"component-name":"exe:wai-websockets-example","bin-file":"/store/ghc-8.10.7/wai-websockets-3.0.1.2-e-wai-websockets-example-32a164fba5a85343fd9f1541ccd83e246f2d36cbcb031f06d2979c0db7bb49a7/bin/wai-websockets-example"},{"type":"configured","id":"wai-websockets-3.0.1.2-ff20345d458ca8ad8918f900d7cc52c9d7f4edf34f54ea9426ed0152b4129d9a","pkg-name":"wai-websockets","pkg-version":"3.0.1.2","flags":{"example":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0e713ddb8c28d47be76cefeab3a73b6876477d648ddcd873ba6b15d08691aa7f","pkg-src-sha256":"917cceb08f296d7dc6b6cafb66133ae53888b2c98b8fb2a2d7fa629d75ab5d2c","depends":["base-4.14.3.0","bytestring-0.10.12.0","case-insensitive-1.2.1.0-04d96ac70421b0f8f3b44d7428a3ecc840602b9c41723a4e68226276ba482222","http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","transformers-0.5.6.2","wai-3.2.3-f78cd8b8b3b0191ae95f0a17d9e4679af13a09b5426dd7a64a7c2ee96cde9059","websockets-0.12.7.2-9a73545fb032fca4a3ff32d85cc5c4b62eac54762308714d8f3022bba46aa4e0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"warp-3.3.14-e75ca651b306735e7a4c986568378b5ab2592061a7a8b739ff4742530de5cc2f","pkg-name":"warp","pkg-version":"3.3.14","flags":{"allow-sendfilefd":true,"network-bytestring":false,"warp-debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cd627497cb2a43ab7923d7df3aa90480ea2dac0de1b05455b40a89ea789ac2c7","pkg-src-sha256":"2331da1ac67c644828883498301bee7bbf59f8b3d79b37850a621cba9a811572","depends":["array-0.5.4.0","async-2.2.3-61de372d98a1e267d734e51b5e1b4cff35a2fc324ce981f8581dd50ab715530c","auto-update-0.1.6-e8e826113afdb347fe8d7388c54fbeeb751a076150519ea04e74fa71c78c46e4","base-4.14.3.0","bsb-http-chunked-0.0.0.4-93c3de301fc0c7f414768bbce87bf5ebfb21b2cc4b90db023ff41feac4be585b","bytestring-0.10.12.0","case-insensitive-1.2.1.0-04d96ac70421b0f8f3b44d7428a3ecc840602b9c41723a4e68226276ba482222","containers-0.6.5.1","ghc-prim-0.6.1","hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","http-date-0.0.11-8a0bfcf14f2c7820a253801ceb7f8fdcbe28785a9c1061585750e7de9d541055","http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","http2-2.0.6-df60e47325f865bff182031be49c2b1bd6484fb39639e3eecab84084e0b440fe","iproute-1.7.11-655ccfd58d1d0ad48ae49e3cc9b9dcca77e69497b27720261e1fb11b3da244b8","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","simple-sendfile-0.2.30-582c15ed93e6db542d7c9ac4cc6c2f444258db9ec8bd7a0210a901e1a1cdcb65","stm-2.5.0.1","streaming-commons-0.2.2.1-942cb4328612adafa73367d11a898b63952d40a880d771224be522f99e9b4d7d","text-1.2.4.1","time-manager-0.0.0-bc7a85c82be20473dfe915bd8d3f3d3c39f4329684c4a119a5da74bba91eb38c","unix-2.7.2.2","unix-compat-0.5.3-2bc2837e6f4bbc1b7104bd912ca92ab1f2ad1e42c984992d69f66d4dc3a997dd","vault-0.3.1.5-e6aaa3e9286a9fe1f03f6431c42c07e12b49138cf64435197da23c125d649f30","wai-3.2.3-f78cd8b8b3b0191ae95f0a17d9e4679af13a09b5426dd7a64a7c2ee96cde9059","word8-0.1.3-a52b0b2e8eaf12d4065c5bb0feed18420e66828a5f860b7767d8b6a9bf6c7dca","x509-1.7.5-70029ef763fd15a3a0f57750c5952e47a961410c40c88681736543158773ba8a"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"webdriver-0.9.0.1-35a56a29edc76894542404eac80a7216f880803a2f4567121fc370db555d5d3e","pkg-name":"webdriver","pkg-version":"0.9.0.1","flags":{"developer":false,"network-uri":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"95b810162a436390f83e8aa5e0038bb3a094f2f0ad35f30d3c07e2a3564ae26f","pkg-src-sha256":"135950889784b9d323c70ebf7ecd75b8df194489a303d85995b1fccc7549dff0","depends":["aeson-1.4.7.1-52a0a9a1400dce323fd3d192ed978d613759f226f95780101e22948c7029ceb3","attoparsec-0.13.2.5-101b2cdaf6874d1152c4a364734790b0bd77a38358f95a8c9a6ec3606cca3d3b","base-4.14.3.0","base64-bytestring-1.0.0.3-f9e5becf7dfbc91185d0c57f336812ed0311b41786ecb3bcc51fb08ba37fd76b","bytestring-0.10.12.0","call-stack-0.3.0-766edef699faf57980b537804dab60a9f3ac1de3a91de98cf4fcfd0435e80ded","data-default-class-0.1.2.0-17ceafe0f96b0cdbafad084ab784938676a45ba49a92d1c9875e1376c64a517d","directory-1.3.6.0","directory-tree-0.12.1-7aef9d3ea02418dfb0b81c0f4df3582801c93089fc39ffbf62cd8e06d5673f48","exceptions-0.10.4","filepath-1.4.2.1","http-client-0.7.6-bc867bac8a0aae16e34a39f4373870f6fb81169fb4dc90912002cf8c8417157f","http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","lifted-base-0.2.3.12-d676308f67e6ea842d5113b274f0d27bb940d5b6f46d966d107583274c238bb5","monad-control-1.0.2.3-15717da05dfc99ece4f412301d4ad426993cb1e971bd790b62b9b7cd65892c0b","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","network-uri-2.6.4.1-5ef235b928a29ecc3adc1d005831c62dce98cd2facaab3ea93b098cddd1ce995","scientific-0.3.6.2-42e3b56e032df0ce79f9062afa301c4cf62b7891d5bcc06b2adf3c10aaa3a378","temporary-1.3-ff789bf78c36599a0a16db6158f62be122deb703e96987b84a1d080b3218a979","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","transformers-base-0.4.5.2-f59c3b08e18ebf1e05bdd152225473dbafc17b3afcdc67346a6635ed5b4de427","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47","vector-0.12.2.0-84be1736eb2fdcccd3f3255cdd99deab0bc6b8c8104c444c17df2676a325d9a1","zip-archive-0.4.1-0407cfd03f1387943c6ee463976a39a402f94cc5ad054a470b8a7b44d9890ae3"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"websockets-0.12.7.2-9a73545fb032fca4a3ff32d85cc5c4b62eac54762308714d8f3022bba46aa4e0","pkg-name":"websockets","pkg-version":"0.12.7.2","flags":{"example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"5a6a3e40ee0c4e6b2cdc573a332ba4a06bb115b97b58147ed3fb005e3ede5ede","pkg-src-sha256":"84c45a5db481b4c969dddfa7d3cca257ac2a97801594f1180b596d41035122ad","depends":["SHA-1.6.4.4-fb858600c6b2e7dd75168be718cdde3ada98013127ddbf5eab1169065d6bfdfc","async-2.2.3-61de372d98a1e267d734e51b5e1b4cff35a2fc324ce981f8581dd50ab715530c","attoparsec-0.13.2.5-101b2cdaf6874d1152c4a364734790b0bd77a38358f95a8c9a6ec3606cca3d3b","base-4.14.3.0","base64-bytestring-1.0.0.3-f9e5becf7dfbc91185d0c57f336812ed0311b41786ecb3bcc51fb08ba37fd76b","binary-0.8.8.0","bytestring-0.10.12.0","bytestring-builder-0.10.8.2.0-91b0d6bc8faf4964d8d2787800f0633b603b423516feb8c19def5491e95ed21c","case-insensitive-1.2.1.0-04d96ac70421b0f8f3b44d7428a3ecc840602b9c41723a4e68226276ba482222","clock-0.8.2-2c2c7b4fade89668e1d92d470dbc6dac9cac04e6f6ec45820457ddda3c27587a","containers-0.6.5.1","entropy-0.4.1.6-23d69be192f334e6ffc35b304aea12f8575026f35e495f0e703663c33c3cf18d","network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","random-1.2.0-2582a6283f6e8be75a7a3a45af494827ff1c10897473f915a522fd9a4b441210","streaming-commons-0.2.2.1-942cb4328612adafa73367d11a898b63952d40a880d771224be522f99e9b4d7d","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"wl-pprint-text-1.2.0.1-f65bf92b2ca9aa1c1aba70c2a50d26c1a0a57919fafc7d735fbaf8708f5bf560","pkg-name":"wl-pprint-text","pkg-version":"1.2.0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"14d3c6f5708da415558b1683d54c406864639cf6b08a8de7f36e8bcd08896603","pkg-src-sha256":"9e6efdba61da70caf85560570648ec097b88cc2b92bc1306135b93f0ff9b0c0c","components":{"lib":{"depends":["base-4.14.3.0","base-compat-0.11.2-b863e3e1a5ee375ab25bec4afb10b3d53ce241746b505b3edc9ba3eb7e9b3361","text-1.2.4.1"],"exe-depends":[]}}},{"type":"configured","id":"word8-0.1.3-a52b0b2e8eaf12d4065c5bb0feed18420e66828a5f860b7767d8b6a9bf6c7dca","pkg-name":"word8","pkg-version":"0.1.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e5464d0600821a116467d4b12fef12b15ff040c3599500e5f0274225e78c6faf","pkg-src-sha256":"2630934c75728bfbf390c1f0206b225507b354f68d4047b06c018a36823b5d8a","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"x509-1.7.5-70029ef763fd15a3a0f57750c5952e47a961410c40c88681736543158773ba8a","pkg-name":"x509","pkg-version":"1.7.5","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"01185a9a17bee4e89287d9e32bfaa673133cf2b09a39759627bed1f72ea528fd","pkg-src-sha256":"b1b0fcbb4aa0d749ed2b54710c2ebd6d900cb932108ad14f97640cf4ca60c7c8","depends":["asn1-encoding-0.9.6-49f037fcb9444c19e8f30436cd6b5eb8efad2370bda9b0ba2856e8d501e8e70d","asn1-parse-0.9.5-14fa65dc20e3abccda9883188f30a5f5d0158e6c256abc9999d5e53419e4e2cf","asn1-types-0.3.4-7aaf8aa4bb5627deee7969088cf079090846bd49986985822143e0cfc0ef9c3d","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","cryptonite-0.28-c4162375c9a940361371e61f131514da5733be9b0f847ca300a4aacfb7afbc2f","hourglass-0.2.12-7f1a2f8e035f979a92fc06fb0a3622206548d2e7eae3800f34fe5ed8e9047d93","memory-0.15.0-e3b790978092deb24c20e670f314f00f6280d43c1441412b7c11be54cd23a855","mtl-2.2.2","pem-0.2.4-ce55be6cefac4d646278605f2a4d3a94535dd6ee2149d7186fb2a9b2834098e2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"xhtml-3000.2.2.1","pkg-name":"xhtml","pkg-version":"3000.2.2.1","depends":["base-4.14.3.0"]},{"type":"configured","id":"xml-1.3.14-1aebc396e1d8eed7019387ea5aaacd1f989a750252a8ba709d99c0557b7fbbf5","pkg-name":"xml","pkg-version":"1.3.14","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c7a33d37c968c769723931a33e4e795f0aadda6cb62e7073ded8a2db52509d95","pkg-src-sha256":"32d1a1a9f21a59176d84697f96ae3a13a0198420e3e4f1c48abbab7d2425013d","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0","text-1.2.4.1"],"exe-depends":[]}}},{"type":"configured","id":"yaml-0.11.5.0-f343c7e162c8d325f1d496c33d87fe89cf5a20b66600d096d0bf1e902e6baa1a","pkg-name":"yaml","pkg-version":"0.11.5.0","flags":{"no-examples":true,"no-exe":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"499783456cb70964b6ff29e310d1785829e57eb872ec143a9a81da0edb69cb61","pkg-src-sha256":"b28e748bd69948cb1b43694d4d7c74756e060e09ca91688d0485e23f19d6cdad","depends":["aeson-1.4.7.1-52a0a9a1400dce323fd3d192ed978d613759f226f95780101e22948c7029ceb3","attoparsec-0.13.2.5-101b2cdaf6874d1152c4a364734790b0bd77a38358f95a8c9a6ec3606cca3d3b","base-4.14.3.0","bytestring-0.10.12.0","conduit-1.3.4.1-370668f1ebcb07704d42c7d9513f477c1993b011c50722b04740e706f73165ef","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","libyaml-0.1.2-a1b62c66fb76d114c3ef330aaa99817281069d6c18f5704b5d311fc904e102a1","mtl-2.2.2","resourcet-1.2.4.2-302da70f53a381e3946d9bc3f2c181c3464035a3dd78edb509158b7de3de01cc","scientific-0.3.6.2-42e3b56e032df0ce79f9062afa301c4cf62b7891d5bcc06b2adf3c10aaa3a378","template-haskell-2.16.0.0","text-1.2.4.1","transformers-0.5.6.2","unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47","vector-0.12.2.0-84be1736eb2fdcccd3f3255cdd99deab0bc6b8c8104c444c17df2676a325d9a1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"zip-archive-0.4.1-0407cfd03f1387943c6ee463976a39a402f94cc5ad054a470b8a7b44d9890ae3","pkg-name":"zip-archive","pkg-version":"0.4.1","flags":{"executable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"51774bdc747d20b8f23172315f9c3fdd6c11de01607e98e9890eb87fb49566d7","pkg-src-sha256":"c5d5c9976241dcc25b0d8753dc526bb1bfef60f30dee38c53a7ae56e6be9b1b1","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","digest-0.0.1.2-49962857791e1f806aa8abe46447eb9b3fd34bfadd4dcff262ce2a0ad85fc46d","directory-1.3.6.0","filepath-1.4.2.1","mtl-2.2.2","pretty-1.1.3.6","text-1.2.4.1","time-1.9.3","unix-2.7.2.2","zlib-0.6.2.3-a637f3112bea0ad58c129e9e214d7009d480609a743e2473280eb8404869d423"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"zlib-0.6.2.3-a637f3112bea0ad58c129e9e214d7009d480609a743e2473280eb8404869d423","pkg-name":"zlib","pkg-version":"0.6.2.3","flags":{"bundled-c-zlib":false,"non-blocking-ffi":false,"pkg-config":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"28f4d460c260e074cab833625454564b9783a3389b7bb91fd54da2790b39592c","pkg-src-sha256":"807f6bddf9cb3c517ce5757d991dde3c7e319953a22c86ee03d74534bd5abc88","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"}],"targets":[{"pkg-name":"Cabal","pkg-version":"3.2.1.0","component-name":"lib","available":[{"id":"Cabal-3.2.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"HUnit","pkg-version":"1.6.2.0","component-name":"lib","available":[{"id":"HUnit-1.6.2.0-314ab465650beeeec200f38d63ecc71fad8c18b79234495712d8cbf66cc392ef","component-name":"lib","build-by-default":true}]},{"pkg-name":"HUnit","pkg-version":"1.6.2.0","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"lib","available":[{"id":"SHA-1.6.4.4-fb858600c6b2e7dd75168be718cdde3ada98013127ddbf5eab1169065d6bfdfc","component-name":"lib","build-by-default":true}]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"exe:sha1","available":["TargetNotBuildable"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"exe:sha224","available":["TargetNotBuildable"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"exe:sha256","available":["TargetNotBuildable"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"exe:sha384","available":["TargetNotBuildable"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"exe:sha512","available":["TargetNotBuildable"]},{"pkg-name":"SHA","pkg-version":"1.6.4.4","component-name":"test:test-sha","available":["TargetNotLocal"]},{"pkg-name":"StateVar","pkg-version":"1.2.1","component-name":"lib","available":[{"id":"StateVar-1.2.1-cdb9ff81c4b8442ce9dc6c5b7311e6c2f41a738f99e8b73459a76b1c5a949b7c","component-name":"lib","build-by-default":true}]},{"pkg-name":"adjunctions","pkg-version":"4.4","component-name":"lib","available":[{"id":"adjunctions-4.4-7afb2e346a87af64a67e82ed94119085b73323baed1e84cdb18bd6d25e7cb8da","component-name":"lib","build-by-default":true}]},{"pkg-name":"adjunctions","pkg-version":"4.4","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"aeson","pkg-version":"1.4.7.1","component-name":"lib","available":[{"id":"aeson-1.4.7.1-52a0a9a1400dce323fd3d192ed978d613759f226f95780101e22948c7029ceb3","component-name":"lib","build-by-default":true}]},{"pkg-name":"aeson","pkg-version":"1.4.7.1","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"ansi-terminal","pkg-version":"0.11","component-name":"lib","available":[{"id":"ansi-terminal-0.11-68045ba4dc159ef4d015a7becef8401cce3f1e07756980a26cd5d04a806924cd","component-name":"lib","build-by-default":true}]},{"pkg-name":"ansi-terminal","pkg-version":"0.11","component-name":"exe:ansi-terminal-example","available":["TargetNotBuildable"]},{"pkg-name":"ansi-wl-pprint","pkg-version":"0.6.9","component-name":"lib","available":[{"id":"ansi-wl-pprint-0.6.9-a2a5a82f0dda324638d65a03fd5311d9adbaaf655f5688baf31de8c8a2e5a686","component-name":"lib","build-by-default":true}]},{"pkg-name":"ansi-wl-pprint","pkg-version":"0.6.9","component-name":"exe:ansi-wl-pprint-example","available":["TargetNotBuildable"]},{"pkg-name":"appar","pkg-version":"0.1.8","component-name":"lib","available":[{"id":"appar-0.1.8-8fb5a263212cce5a622c5468fcdb68a68f1f79d9768ea726c629381d06b97677","component-name":"lib","build-by-default":true}]},{"pkg-name":"array","pkg-version":"0.5.4.0","component-name":"lib","available":[{"id":"array-0.5.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"asn1-encoding","pkg-version":"0.9.6","component-name":"lib","available":[{"id":"asn1-encoding-0.9.6-49f037fcb9444c19e8f30436cd6b5eb8efad2370bda9b0ba2856e8d501e8e70d","component-name":"lib","build-by-default":true}]},{"pkg-name":"asn1-encoding","pkg-version":"0.9.6","component-name":"test:tests-asn1-encoding","available":["TargetNotLocal"]},{"pkg-name":"asn1-parse","pkg-version":"0.9.5","component-name":"lib","available":[{"id":"asn1-parse-0.9.5-14fa65dc20e3abccda9883188f30a5f5d0158e6c256abc9999d5e53419e4e2cf","component-name":"lib","build-by-default":true}]},{"pkg-name":"asn1-types","pkg-version":"0.3.4","component-name":"lib","available":[{"id":"asn1-types-0.3.4-7aaf8aa4bb5627deee7969088cf079090846bd49986985822143e0cfc0ef9c3d","component-name":"lib","build-by-default":true}]},{"pkg-name":"async","pkg-version":"2.2.3","component-name":"lib","available":[{"id":"async-2.2.3-61de372d98a1e267d734e51b5e1b4cff35a2fc324ce981f8581dd50ab715530c","component-name":"lib","build-by-default":true}]},{"pkg-name":"async","pkg-version":"2.2.3","component-name":"exe:concasync","available":["TargetNotBuildable"]},{"pkg-name":"async","pkg-version":"2.2.3","component-name":"exe:conccancel","available":["TargetNotBuildable"]},{"pkg-name":"async","pkg-version":"2.2.3","component-name":"exe:race","available":["TargetNotBuildable"]},{"pkg-name":"async","pkg-version":"2.2.3","component-name":"test:test-async","available":["TargetNotLocal"]},{"pkg-name":"attoparsec","pkg-version":"0.13.2.5","component-name":"lib","available":[{"id":"attoparsec-0.13.2.5-101b2cdaf6874d1152c4a364734790b0bd77a38358f95a8c9a6ec3606cca3d3b","component-name":"lib","build-by-default":true}]},{"pkg-name":"attoparsec","pkg-version":"0.13.2.5","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"attoparsec","pkg-version":"0.13.2.5","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"auto-update","pkg-version":"0.1.6","component-name":"lib","available":[{"id":"auto-update-0.1.6-e8e826113afdb347fe8d7388c54fbeeb751a076150519ea04e74fa71c78c46e4","component-name":"lib","build-by-default":true}]},{"pkg-name":"auto-update","pkg-version":"0.1.6","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"base","pkg-version":"4.14.3.0","component-name":"lib","available":[{"id":"base-4.14.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base-compat","pkg-version":"0.11.2","component-name":"lib","available":[{"id":"base-compat-0.11.2-b863e3e1a5ee375ab25bec4afb10b3d53ce241746b505b3edc9ba3eb7e9b3361","component-name":"lib","build-by-default":true}]},{"pkg-name":"base-compat-batteries","pkg-version":"0.11.2","component-name":"lib","available":[{"id":"base-compat-batteries-0.11.2-976ab05059efb80b88e21c895dd960e4bb0f14193691c3fd7fdbc501899ba3e4","component-name":"lib","build-by-default":true}]},{"pkg-name":"base-compat-batteries","pkg-version":"0.11.2","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"base-orphans","pkg-version":"0.8.4","component-name":"lib","available":[{"id":"base-orphans-0.8.4-5c47df155956fb73bbb69058ad0037967c377270cdf9afc72baa7ecfd53b2d7d","component-name":"lib","build-by-default":true}]},{"pkg-name":"base-orphans","pkg-version":"0.8.4","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"base16-bytestring","pkg-version":"0.1.1.7","component-name":"lib","available":[{"id":"base16-bytestring-0.1.1.7-77925cf395cd9922858f7d16362a46276afd7053ca6079c4e932cddc9574150e","component-name":"lib","build-by-default":true}]},{"pkg-name":"base16-bytestring","pkg-version":"0.1.1.7","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"base64-bytestring","pkg-version":"1.0.0.3","component-name":"lib","available":[{"id":"base64-bytestring-1.0.0.3-f9e5becf7dfbc91185d0c57f336812ed0311b41786ecb3bcc51fb08ba37fd76b","component-name":"lib","build-by-default":true}]},{"pkg-name":"base64-bytestring","pkg-version":"1.0.0.3","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"base64-bytestring","pkg-version":"1.0.0.3","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"basement","pkg-version":"0.0.11","component-name":"lib","available":[{"id":"basement-0.0.11-274c4ae453d426264bb6282174f264d18ecb1b70dab6099919dfa6bb95920f32","component-name":"lib","build-by-default":true}]},{"pkg-name":"bifunctors","pkg-version":"5.5.7","component-name":"lib","available":[{"id":"bifunctors-5.5.7-fa9f071c0ca8eb588a51415afcae581f1e95061bab18698e1b9f8c2d1bbcbc63","component-name":"lib","build-by-default":true}]},{"pkg-name":"bifunctors","pkg-version":"5.5.7","component-name":"test:bifunctors-spec","available":["TargetNotLocal"]},{"pkg-name":"binary","pkg-version":"0.8.8.0","component-name":"lib","available":[{"id":"binary-0.8.8.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"blaze-builder","pkg-version":"0.4.2.1","component-name":"lib","available":[{"id":"blaze-builder-0.4.2.1-c694e0e375f646ecf1acece0f97effbaa4b3f19f5ece616657e500d5ffe1867c","component-name":"lib","build-by-default":true}]},{"pkg-name":"blaze-builder","pkg-version":"0.4.2.1","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"blaze-html","pkg-version":"0.9.1.2","component-name":"lib","available":[{"id":"blaze-html-0.9.1.2-022d22b03693695c24e4963a307d0e6faa8216dac14462831e569778bf44c77c","component-name":"lib","build-by-default":true}]},{"pkg-name":"blaze-html","pkg-version":"0.9.1.2","component-name":"test:blaze-html-tests","available":["TargetNotLocal"]},{"pkg-name":"blaze-markup","pkg-version":"0.8.2.8","component-name":"lib","available":[{"id":"blaze-markup-0.8.2.8-bc2dff2d134f02b5cf60656035ece9a666b81e8bb3192243e4bce0571e4e3e98","component-name":"lib","build-by-default":true}]},{"pkg-name":"blaze-markup","pkg-version":"0.8.2.8","component-name":"test:blaze-markup-tests","available":["TargetNotLocal"]},{"pkg-name":"bsb-http-chunked","pkg-version":"0.0.0.4","component-name":"lib","available":[{"id":"bsb-http-chunked-0.0.0.4-93c3de301fc0c7f414768bbce87bf5ebfb21b2cc4b90db023ff41feac4be585b","component-name":"lib","build-by-default":true}]},{"pkg-name":"bsb-http-chunked","pkg-version":"0.0.0.4","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"bsb-http-chunked","pkg-version":"0.0.0.4","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"bsb-http-chunked","pkg-version":"0.0.0.4","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"byteable","pkg-version":"0.1.1","component-name":"lib","available":[{"id":"byteable-0.1.1-ba0f6a5de53bd5be451d958f4b3e20e1bc251f579f854e09e5b7db3d17f030fa","component-name":"lib","build-by-default":true}]},{"pkg-name":"byteorder","pkg-version":"1.0.4","component-name":"lib","available":[{"id":"byteorder-1.0.4-8941468c0399921cea5e6aac8bdd2d7cfbbfbfcb24a4ebd26a56fb6d0ed63534","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring","pkg-version":"0.10.12.0","component-name":"lib","available":[{"id":"bytestring-0.10.12.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"bytestring-builder","pkg-version":"0.10.8.2.0","component-name":"lib","available":[{"id":"bytestring-builder-0.10.8.2.0-91b0d6bc8faf4964d8d2787800f0633b603b423516feb8c19def5491e95ed21c","component-name":"lib","build-by-default":true}]},{"pkg-name":"cabal-doctest","pkg-version":"1.0.8","component-name":"lib","available":[{"id":"cabal-doctest-1.0.8-cc5c2e87559eb18bdfdc001ed167b2e0d0b78de00dcfa62e272ab89cba37ff46","component-name":"lib","build-by-default":true}]},{"pkg-name":"call-stack","pkg-version":"0.3.0","component-name":"lib","available":[{"id":"call-stack-0.3.0-766edef699faf57980b537804dab60a9f3ac1de3a91de98cf4fcfd0435e80ded","component-name":"lib","build-by-default":true}]},{"pkg-name":"call-stack","pkg-version":"0.3.0","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"case-insensitive","pkg-version":"1.2.1.0","component-name":"lib","available":[{"id":"case-insensitive-1.2.1.0-04d96ac70421b0f8f3b44d7428a3ecc840602b9c41723a4e68226276ba482222","component-name":"lib","build-by-default":true}]},{"pkg-name":"case-insensitive","pkg-version":"1.2.1.0","component-name":"test:test-case-insensitive","available":["TargetNotLocal"]},{"pkg-name":"case-insensitive","pkg-version":"1.2.1.0","component-name":"bench:bench-case-insensitive","available":["TargetNotLocal"]},{"pkg-name":"clock","pkg-version":"0.8.2","component-name":"lib","available":[{"id":"clock-0.8.2-2c2c7b4fade89668e1d92d470dbc6dac9cac04e6f6ec45820457ddda3c27587a","component-name":"lib","build-by-default":true}]},{"pkg-name":"clock","pkg-version":"0.8.2","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"clock","pkg-version":"0.8.2","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"colour","pkg-version":"2.3.5","component-name":"lib","available":[{"id":"colour-2.3.5-a5aa9f2be50d4ed011c1be7700b7a83002fe6b60755a26d197e6fc7ce5768c6f","component-name":"lib","build-by-default":true}]},{"pkg-name":"colour","pkg-version":"2.3.5","component-name":"test:test-colour","available":["TargetNotLocal"]},{"pkg-name":"comonad","pkg-version":"5.0.8","component-name":"lib","available":[{"id":"comonad-5.0.8-84dad871ca1e06bf26db07aebb9423762f4131e55712cd07cb7957905813d252","component-name":"lib","build-by-default":true}]},{"pkg-name":"conduit","pkg-version":"1.3.4.1","component-name":"lib","available":[{"id":"conduit-1.3.4.1-370668f1ebcb07704d42c7d9513f477c1993b011c50722b04740e706f73165ef","component-name":"lib","build-by-default":true}]},{"pkg-name":"conduit","pkg-version":"1.3.4.1","component-name":"test:conduit-test","available":["TargetNotLocal"]},{"pkg-name":"conduit","pkg-version":"1.3.4.1","component-name":"bench:optimize-201408","available":["TargetNotLocal"]},{"pkg-name":"conduit","pkg-version":"1.3.4.1","component-name":"bench:unfused","available":["TargetNotLocal"]},{"pkg-name":"constraints","pkg-version":"0.13","component-name":"lib","available":[{"id":"constraints-0.13-4b01ef386e6a78dd5a5f51064f7a9b86949fdaf2d54fb07641c19705461b230d","component-name":"lib","build-by-default":true}]},{"pkg-name":"constraints","pkg-version":"0.13","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"containers","pkg-version":"0.6.5.1","component-name":"lib","available":[{"id":"containers-0.6.5.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"contravariant","pkg-version":"1.5.3","component-name":"lib","available":[{"id":"contravariant-1.5.3-d3a9d369e446e3ff9ca5798448ac1aeb48842e7951f9a1992079a218abf646b6","component-name":"lib","build-by-default":true}]},{"pkg-name":"cookie","pkg-version":"0.4.5","component-name":"lib","available":[{"id":"cookie-0.4.5-1666bb4d62c924da233e083065c6a869a88b0c3a1c692a55dbf161d4c809b252","component-name":"lib","build-by-default":true}]},{"pkg-name":"cookie","pkg-version":"0.4.5","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"cryptohash","pkg-version":"0.11.9","component-name":"lib","available":[{"id":"cryptohash-0.11.9-aa23ead3b32b01f8b290c64b004126442b9bbdfee20fdf41511410330eaf28ce","component-name":"lib","build-by-default":true}]},{"pkg-name":"cryptohash","pkg-version":"0.11.9","component-name":"test:test-kat","available":["TargetNotLocal"]},{"pkg-name":"cryptohash","pkg-version":"0.11.9","component-name":"bench:bench-api","available":["TargetNotLocal"]},{"pkg-name":"cryptohash","pkg-version":"0.11.9","component-name":"bench:bench-hashes","available":["TargetNotLocal"]},{"pkg-name":"cryptohash","pkg-version":"0.11.9","component-name":"bench:bench-hmac","available":["TargetNotLocal"]},{"pkg-name":"cryptonite","pkg-version":"0.28","component-name":"lib","available":[{"id":"cryptonite-0.28-c4162375c9a940361371e61f131514da5733be9b0f847ca300a4aacfb7afbc2f","component-name":"lib","build-by-default":true}]},{"pkg-name":"cryptonite","pkg-version":"0.28","component-name":"test:test-cryptonite","available":["TargetNotLocal"]},{"pkg-name":"cryptonite","pkg-version":"0.28","component-name":"bench:bench-cryptonite","available":["TargetNotLocal"]},{"pkg-name":"data-default","pkg-version":"0.7.1.1","component-name":"lib","available":[{"id":"data-default-0.7.1.1-14a5dd71fd9b9460c9e01d850dbf5a924905b919addadf74a1e21023ba2090c9","component-name":"lib","build-by-default":true}]},{"pkg-name":"data-default-class","pkg-version":"0.1.2.0","component-name":"lib","available":[{"id":"data-default-class-0.1.2.0-17ceafe0f96b0cdbafad084ab784938676a45ba49a92d1c9875e1376c64a517d","component-name":"lib","build-by-default":true}]},{"pkg-name":"data-default-instances-containers","pkg-version":"0.0.1","component-name":"lib","available":[{"id":"data-default-instances-containers-0.0.1-54c5dd643760980377e2aebc9a73fae4974414a5ea72744d6f967916c6f32c61","component-name":"lib","build-by-default":true}]},{"pkg-name":"data-default-instances-dlist","pkg-version":"0.0.1","component-name":"lib","available":[{"id":"data-default-instances-dlist-0.0.1-c42bb74da18690ecb87c15192fab756c4e4c029e0200de4c6bd5c86e23d6a254","component-name":"lib","build-by-default":true}]},{"pkg-name":"data-default-instances-old-locale","pkg-version":"0.0.1","component-name":"lib","available":[{"id":"data-default-instances-old-locale-0.0.1-1b5c29e0a5f4e61dd28c301aeed67bc08930d48ce94f25ecdcc1276822946c61","component-name":"lib","build-by-default":true}]},{"pkg-name":"deepseq","pkg-version":"1.4.4.0","component-name":"lib","available":[{"id":"deepseq-1.4.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"digest","pkg-version":"0.0.1.2","component-name":"lib","available":[{"id":"digest-0.0.1.2-49962857791e1f806aa8abe46447eb9b3fd34bfadd4dcff262ce2a0ad85fc46d","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory","pkg-version":"1.3.6.0","component-name":"lib","available":[{"id":"directory-1.3.6.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory-tree","pkg-version":"0.12.1","component-name":"lib","available":[{"id":"directory-tree-0.12.1-7aef9d3ea02418dfb0b81c0f4df3582801c93089fc39ffbf62cd8e06d5673f48","component-name":"lib","build-by-default":true}]},{"pkg-name":"directory-tree","pkg-version":"0.12.1","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"distributive","pkg-version":"0.6.2.1","component-name":"lib","available":[{"id":"distributive-0.6.2.1-590207038e714f2c87eff8c936fa808c84df073258a026835d614af402cdf034","component-name":"lib","build-by-default":true}]},{"pkg-name":"distributive","pkg-version":"0.6.2.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"dlist","pkg-version":"0.8.0.8","component-name":"lib","available":[{"id":"dlist-0.8.0.8-37f052ad713a5f768e754fa19302aed2e64fdc36b33cd00a589c6d1dd3800dfe","component-name":"lib","build-by-default":true}]},{"pkg-name":"dlist","pkg-version":"0.8.0.8","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"easy-file","pkg-version":"0.2.2","component-name":"lib","available":[{"id":"easy-file-0.2.2-81dad8f595046adec420f2364e68bef6c6c4dc00dea05594e7a72fe17b4388b9","component-name":"lib","build-by-default":true}]},{"pkg-name":"enclosed-exceptions","pkg-version":"1.0.3","component-name":"lib","available":[{"id":"enclosed-exceptions-1.0.3-116b50bd2397f153ecb8506eb04e6c16ca9f5e330047f2e884a6bb84c8d1e8b4","component-name":"lib","build-by-default":true}]},{"pkg-name":"enclosed-exceptions","pkg-version":"1.0.3","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"entropy","pkg-version":"0.4.1.6","component-name":"lib","available":[{"id":"entropy-0.4.1.6-23d69be192f334e6ffc35b304aea12f8575026f35e495f0e703663c33c3cf18d","component-name":"lib","build-by-default":true}]},{"pkg-name":"exceptions","pkg-version":"0.10.4","component-name":"lib","available":[{"id":"exceptions-0.10.4","component-name":"lib","build-by-default":true}]},{"pkg-name":"executable-path","pkg-version":"0.0.3.1","component-name":"lib","available":[{"id":"executable-path-0.0.3.1-8850d4a31accb5fd8d5f871c9214154d6cdd6a1217e4d43acdf765e7f8f5f0ac","component-name":"lib","build-by-default":true}]},{"pkg-name":"extensible-exceptions","pkg-version":"0.1.1.4","component-name":"lib","available":[{"id":"extensible-exceptions-0.1.1.4-8cc6a1f8ee4f082c86b889e18baaf343050ddbc7a582cb6ff369da69867f1c1b","component-name":"lib","build-by-default":true}]},{"pkg-name":"fast-logger","pkg-version":"3.0.3","component-name":"lib","available":[{"id":"fast-logger-3.0.3-dcaa0bb54cf4bc4a51b14dbb2590735910e4d1d57d62aad4cca1896d4ef4bc6a","component-name":"lib","build-by-default":true}]},{"pkg-name":"fast-logger","pkg-version":"3.0.3","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"file-embed","pkg-version":"0.0.13.0","component-name":"lib","available":[{"id":"file-embed-0.0.13.0-07dd896cc8ff066813a1f3f766a7baaef44afa16095bcd2a3f20db4174a292d6","component-name":"lib","build-by-default":true}]},{"pkg-name":"file-embed","pkg-version":"0.0.13.0","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"filepath","pkg-version":"1.4.2.1","component-name":"lib","available":[{"id":"filepath-1.4.2.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"free","pkg-version":"5.1.3","component-name":"lib","available":[{"id":"free-5.1.3-f330c46773f99df34d4d64a78d98ad438cab6434e3affbd43c9735f52fd71728","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-boot","pkg-version":"8.10.7","component-name":"lib","available":[{"id":"ghc-boot-8.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-boot-th","pkg-version":"8.10.7","component-name":"lib","available":[{"id":"ghc-boot-th-8.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-compact","pkg-version":"0.1.0.0","component-name":"lib","available":[{"id":"ghc-compact-0.1.0.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-heap","pkg-version":"8.10.7","component-name":"lib","available":[{"id":"ghc-heap-8.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-paths","pkg-version":"0.1.0.12","component-name":"lib","available":[{"id":"ghc-paths-0.1.0.12-b698ec3f14b7264932d5870dfa659247742f258bbfa6d0baf97b12d62d607135","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.6.1","component-name":"lib","available":[{"id":"ghc-prim-0.6.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghci","pkg-version":"8.10.7","component-name":"lib","available":[{"id":"ghci-8.10.7","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"lib","available":[{"id":"ghcjs-8.10.7-inplace","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:ghcjs","available":[{"id":"ghcjs-8.10.7-inplace-ghcjs","component-name":"exe:ghcjs","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:ghcjs-boot","available":[{"id":"ghcjs-8.10.7-inplace-ghcjs-boot","component-name":"exe:ghcjs-boot","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:ghcjs-dumparchive","available":[{"id":"ghcjs-8.10.7-inplace-ghcjs-dumparchive","component-name":"exe:ghcjs-dumparchive","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:ghcjs-pkg","available":[{"id":"ghcjs-8.10.7-inplace-ghcjs-pkg","component-name":"exe:ghcjs-pkg","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:haddock","available":[{"id":"ghcjs-8.10.7-inplace-haddock","component-name":"exe:haddock","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:private-ghcjs-hsc2hs","available":[{"id":"ghcjs-8.10.7-inplace-private-ghcjs-hsc2hs","component-name":"exe:private-ghcjs-hsc2hs","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:private-ghcjs-run","available":[{"id":"ghcjs-8.10.7-inplace-private-ghcjs-run","component-name":"exe:private-ghcjs-run","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:private-ghcjs-touchy","available":["TargetNotBuildable"]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:private-ghcjs-unlit","available":[{"id":"ghcjs-8.10.7-inplace-private-ghcjs-unlit","component-name":"exe:private-ghcjs-unlit","build-by-default":true}]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"exe:private-ghcjs-wrapper","available":["TargetNotBuildable"]},{"pkg-name":"ghcjs","pkg-version":"8.10.7","component-name":"test:test","available":[{"id":"ghcjs-8.10.7-inplace-test","component-name":"test:test","build-by-default":true}]},{"pkg-name":"ghcjs-th","pkg-version":"0.1.0.0","component-name":"lib","available":[{"id":"ghcjs-th-0.1.0.0-inplace","component-name":"lib","build-by-default":true}]},{"pkg-name":"happy","pkg-version":"1.20.0","component-name":"exe:happy","available":[{"id":"happy-1.20.0-e-happy-3381209c89ac2203d07bd4b222160e1a46477e5747b38342479eae0cc9ed21a8","component-name":"exe:happy","build-by-default":true}]},{"pkg-name":"happy","pkg-version":"1.20.0","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"hashable","pkg-version":"1.3.1.0","component-name":"lib","available":[{"id":"hashable-1.3.1.0-564753cf17a1add5c46186b831cbea5bf0134d07ce651f274f2b99d57730e2b2","component-name":"lib","build-by-default":true}]},{"pkg-name":"hashable","pkg-version":"1.3.1.0","component-name":"test:hashable-examples","available":["TargetNotLocal"]},{"pkg-name":"hashable","pkg-version":"1.3.1.0","component-name":"test:hashable-tests","available":["TargetNotLocal"]},{"pkg-name":"hostname","pkg-version":"1.0","component-name":"lib","available":[{"id":"hostname-1.0-a81e773a8679491b2cf913154430d20a33f93ed6f4554b930c893277d3f6ba43","component-name":"lib","build-by-default":true}]},{"pkg-name":"hourglass","pkg-version":"0.2.12","component-name":"lib","available":[{"id":"hourglass-0.2.12-7f1a2f8e035f979a92fc06fb0a3622206548d2e7eae3800f34fe5ed8e9047d93","component-name":"lib","build-by-default":true}]},{"pkg-name":"hourglass","pkg-version":"0.2.12","component-name":"test:test-hourglass","available":["TargetNotLocal"]},{"pkg-name":"hourglass","pkg-version":"0.2.12","component-name":"bench:bench-hourglass","available":["TargetNotLocal"]},{"pkg-name":"hpc","pkg-version":"0.6.1.0","component-name":"lib","available":[{"id":"hpc-0.6.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"hsc2hs","pkg-version":"0.68.7","component-name":"exe:hsc2hs","available":[{"id":"hsc2hs-0.68.7-e-hsc2hs-664c04f5ad5632a07731b57f398bef2f771ab84da35218b03d98405047bf669c","component-name":"exe:hsc2hs","build-by-default":true}]},{"pkg-name":"hsc2hs","pkg-version":"0.68.7","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"http-client","pkg-version":"0.7.6","component-name":"lib","available":[{"id":"http-client-0.7.6-bc867bac8a0aae16e34a39f4373870f6fb81169fb4dc90912002cf8c8417157f","component-name":"lib","build-by-default":true}]},{"pkg-name":"http-client","pkg-version":"0.7.6","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"http-client","pkg-version":"0.7.6","component-name":"test:spec-nonet","available":["TargetNotLocal"]},{"pkg-name":"http-date","pkg-version":"0.0.11","component-name":"lib","available":[{"id":"http-date-0.0.11-8a0bfcf14f2c7820a253801ceb7f8fdcbe28785a9c1061585750e7de9d541055","component-name":"lib","build-by-default":true}]},{"pkg-name":"http-date","pkg-version":"0.0.11","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"http-date","pkg-version":"0.0.11","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"http-types","pkg-version":"0.12.3","component-name":"lib","available":[{"id":"http-types-0.12.3-4e17183468badc2f43f143b7ee05da6af13dee91e604abece963af8f86bc5ddc","component-name":"lib","build-by-default":true}]},{"pkg-name":"http-types","pkg-version":"0.12.3","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"http-types","pkg-version":"0.12.3","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"lib","available":[{"id":"http2-2.0.6-df60e47325f865bff182031be49c2b1bd6484fb39639e3eecab84084e0b440fe","component-name":"lib","build-by-default":true}]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"exe:frame-encode","available":["TargetNotBuildable"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"exe:hpack-debug","available":["TargetNotBuildable"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"exe:hpack-encode","available":["TargetNotBuildable"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"exe:hpack-stat","available":["TargetNotBuildable"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"test:doctest","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"test:frame","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"test:hpack","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"bench:header-compression","available":["TargetNotLocal"]},{"pkg-name":"http2","pkg-version":"2.0.6","component-name":"bench:priority","available":["TargetNotLocal"]},{"pkg-name":"indexed-traversable","pkg-version":"0.1.1","component-name":"lib","available":[{"id":"indexed-traversable-0.1.1-859ad062f72f50cb0e073dc82fa2adde481c5f84e83dfb553607a7a6b1160be1","component-name":"lib","build-by-default":true}]},{"pkg-name":"integer-gmp","pkg-version":"1.0.3.0","component-name":"lib","available":[{"id":"integer-gmp-1.0.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"integer-logarithms","pkg-version":"1.0.3.1","component-name":"lib","available":[{"id":"integer-logarithms-1.0.3.1-32259a5ad23876e1cc8b3c3578f0af2894940ba8ed87dc4e1dc5162ea050a14c","component-name":"lib","build-by-default":true}]},{"pkg-name":"integer-logarithms","pkg-version":"1.0.3.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"invariant","pkg-version":"0.5.3","component-name":"lib","available":[{"id":"invariant-0.5.3-31ab128e2fba5ccfde647a220f5af6673702e43abfc49fae9c158d95c172a7e9","component-name":"lib","build-by-default":true}]},{"pkg-name":"invariant","pkg-version":"0.5.3","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"iproute","pkg-version":"1.7.11","component-name":"lib","available":[{"id":"iproute-1.7.11-655ccfd58d1d0ad48ae49e3cc9b9dcca77e69497b27720261e1fb11b3da244b8","component-name":"lib","build-by-default":true}]},{"pkg-name":"iproute","pkg-version":"1.7.11","component-name":"test:doctest","available":["TargetNotLocal"]},{"pkg-name":"iproute","pkg-version":"1.7.11","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"kan-extensions","pkg-version":"5.2.2","component-name":"lib","available":[{"id":"kan-extensions-5.2.2-99b79e6dc7a50799b9e9d629a22ce906230cf23141e7ca52fb5d48022fe8d862","component-name":"lib","build-by-default":true}]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"lib","available":[{"id":"lens-4.19.2-a365e8ee15eac5187637caf0f9a84168dcf51fefd5a0ada0844b88a6cd4de834","component-name":"lib","build-by-default":true}]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"test:hunit","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"test:properties","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"test:templates","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"bench:alongside","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"bench:folds","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"bench:plated","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"bench:traversals","available":["TargetNotLocal"]},{"pkg-name":"lens","pkg-version":"4.19.2","component-name":"bench:unsafe","available":["TargetNotLocal"]},{"pkg-name":"libyaml","pkg-version":"0.1.2","component-name":"lib","available":[{"id":"libyaml-0.1.2-a1b62c66fb76d114c3ef330aaa99817281069d6c18f5704b5d311fc904e102a1","component-name":"lib","build-by-default":true}]},{"pkg-name":"lifted-async","pkg-version":"0.10.1.3","component-name":"lib","available":[{"id":"lifted-async-0.10.1.3-83cf5de09b953f58e5801096270a0fc5d005a60d1c90f81216f25c636b060566","component-name":"lib","build-by-default":true}]},{"pkg-name":"lifted-async","pkg-version":"0.10.1.3","component-name":"test:regression-tests","available":["TargetNotLocal"]},{"pkg-name":"lifted-async","pkg-version":"0.10.1.3","component-name":"test:test-lifted-async","available":["TargetNotLocal"]},{"pkg-name":"lifted-async","pkg-version":"0.10.1.3","component-name":"bench:benchmark-lifted-async","available":["TargetNotLocal"]},{"pkg-name":"lifted-async","pkg-version":"0.10.1.3","component-name":"bench:benchmark-lifted-async-threaded","available":["TargetNotLocal"]},{"pkg-name":"lifted-base","pkg-version":"0.2.3.12","component-name":"lib","available":[{"id":"lifted-base-0.2.3.12-d676308f67e6ea842d5113b274f0d27bb940d5b6f46d966d107583274c238bb5","component-name":"lib","build-by-default":true}]},{"pkg-name":"lifted-base","pkg-version":"0.2.3.12","component-name":"test:test-lifted-base","available":["TargetNotLocal"]},{"pkg-name":"lifted-base","pkg-version":"0.2.3.12","component-name":"bench:bench-lifted-base","available":["TargetNotLocal"]},{"pkg-name":"memory","pkg-version":"0.15.0","component-name":"lib","available":[{"id":"memory-0.15.0-e3b790978092deb24c20e670f314f00f6280d43c1441412b7c11be54cd23a855","component-name":"lib","build-by-default":true}]},{"pkg-name":"memory","pkg-version":"0.15.0","component-name":"test:test-memory","available":["TargetNotLocal"]},{"pkg-name":"mime-types","pkg-version":"0.1.0.9","component-name":"lib","available":[{"id":"mime-types-0.1.0.9-6d101b38a5c1e1264b6a27339e11234fbbd759a5d3562d5310626611c3604e6a","component-name":"lib","build-by-default":true}]},{"pkg-name":"monad-control","pkg-version":"1.0.2.3","component-name":"lib","available":[{"id":"monad-control-1.0.2.3-15717da05dfc99ece4f412301d4ad426993cb1e971bd790b62b9b7cd65892c0b","component-name":"lib","build-by-default":true}]},{"pkg-name":"mono-traversable","pkg-version":"1.0.15.1","component-name":"lib","available":[{"id":"mono-traversable-1.0.15.1-14a7b01eb3da98ee8bec53e1a2c3325795947148555bfd08e601059e3f8ef800","component-name":"lib","build-by-default":true}]},{"pkg-name":"mono-traversable","pkg-version":"1.0.15.1","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"mono-traversable","pkg-version":"1.0.15.1","component-name":"bench:sorting","available":["TargetNotLocal"]},{"pkg-name":"mtl","pkg-version":"2.2.2","component-name":"lib","available":[{"id":"mtl-2.2.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"network","pkg-version":"3.1.2.1","component-name":"lib","available":[{"id":"network-3.1.2.1-6db674957a82e804f5cd1b8604faefe4d02b0888eca4d90642b7b8e588874014","component-name":"lib","build-by-default":true}]},{"pkg-name":"network","pkg-version":"3.1.2.1","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"network","pkg-version":"3.1.2.1","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"network-byte-order","pkg-version":"0.1.6","component-name":"lib","available":[{"id":"network-byte-order-0.1.6-56958e8e281dbc9e6cdcc1129b8ebeecd09fcefe9a6eab7f59bb0bd26dd6d6f8","component-name":"lib","build-by-default":true}]},{"pkg-name":"network-byte-order","pkg-version":"0.1.6","component-name":"test:doctest","available":["TargetNotLocal"]},{"pkg-name":"network-uri","pkg-version":"2.6.4.1","component-name":"lib","available":[{"id":"network-uri-2.6.4.1-5ef235b928a29ecc3adc1d005831c62dce98cd2facaab3ea93b098cddd1ce995","component-name":"lib","build-by-default":true}]},{"pkg-name":"network-uri","pkg-version":"2.6.4.1","component-name":"test:uri","available":["TargetNotLocal"]},{"pkg-name":"network-uri","pkg-version":"2.6.4.1","component-name":"bench:uri-bench","available":["TargetNotLocal"]},{"pkg-name":"old-locale","pkg-version":"1.0.0.7","component-name":"lib","available":[{"id":"old-locale-1.0.0.7-0b56be282c9d84e8a62244b3b072a0d01762b387596f58798264e4b9c6aa0b1c","component-name":"lib","build-by-default":true}]},{"pkg-name":"old-time","pkg-version":"1.1.0.3","component-name":"lib","available":[{"id":"old-time-1.1.0.3-dfe22a7c6d4d35e59baed241e72dc9c2daa94f91b4983c47fb8eae5a99b18922","component-name":"lib","build-by-default":true}]},{"pkg-name":"optparse-applicative","pkg-version":"0.15.1.0","component-name":"lib","available":[{"id":"optparse-applicative-0.15.1.0-ff69718b26c95902c84e69b0d38586ca2b71b8bb5566d63b9fcabab034f14315","component-name":"lib","build-by-default":true}]},{"pkg-name":"optparse-applicative","pkg-version":"0.15.1.0","component-name":"test:tests","available":["TargetNotLocal"]},{"pkg-name":"parallel","pkg-version":"3.2.2.0","component-name":"lib","available":[{"id":"parallel-3.2.2.0-ec2949e70412ce6ff7ffd865dd2d3b7cb720043a39b010d37a44ef3b76e4424d","component-name":"lib","build-by-default":true}]},{"pkg-name":"parsec","pkg-version":"3.1.14.0","component-name":"lib","available":[{"id":"parsec-3.1.14.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"pem","pkg-version":"0.2.4","component-name":"lib","available":[{"id":"pem-0.2.4-ce55be6cefac4d646278605f2a4d3a94535dd6ee2149d7186fb2a9b2834098e2","component-name":"lib","build-by-default":true}]},{"pkg-name":"pem","pkg-version":"0.2.4","component-name":"test:test-pem","available":["TargetNotLocal"]},{"pkg-name":"pretty","pkg-version":"1.1.3.6","component-name":"lib","available":[{"id":"pretty-1.1.3.6","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.7.1.0","component-name":"lib","available":[{"id":"primitive-0.7.1.0-7ccb0748f64fa9b4343f00f3d4c0f11f2cb114d7cdaf164ea91f4084bcecf2b4","component-name":"lib","build-by-default":true}]},{"pkg-name":"primitive","pkg-version":"0.7.1.0","component-name":"test:test-qc","available":["TargetNotLocal"]},{"pkg-name":"process","pkg-version":"1.6.13.2","component-name":"lib","available":[{"id":"process-1.6.13.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"profunctors","pkg-version":"5.6","component-name":"lib","available":[{"id":"profunctors-5.6-6fde5b754660999c4bdfb6d35878d4000620c3d338cda12a93bb9d35059f3397","component-name":"lib","build-by-default":true}]},{"pkg-name":"psqueues","pkg-version":"0.2.7.2","component-name":"lib","available":[{"id":"psqueues-0.2.7.2-db0c1fae7218798631412dfc6a6f21047ef8dfd74a6ff1624df380bb287b085f","component-name":"lib","build-by-default":true}]},{"pkg-name":"psqueues","pkg-version":"0.2.7.2","component-name":"test:psqueues-tests","available":["TargetNotLocal"]},{"pkg-name":"psqueues","pkg-version":"0.2.7.2","component-name":"bench:psqueues-benchmarks","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"lib","available":[{"id":"random-1.2.0-2582a6283f6e8be75a7a3a45af494827ff1c10897473f915a522fd9a4b441210","component-name":"lib","build-by-default":true}]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"test:legacy-test","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"random","pkg-version":"1.2.0","component-name":"bench:legacy-bench","available":["TargetNotLocal"]},{"pkg-name":"reflection","pkg-version":"2.1.6","component-name":"lib","available":[{"id":"reflection-2.1.6-e0014472389fc81f3e7fd7fd3c1cfe3f04370072826a8003cbb29e0a7fc8c50a","component-name":"lib","build-by-default":true}]},{"pkg-name":"reflection","pkg-version":"2.1.6","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"regex-base","pkg-version":"0.94.0.1","component-name":"lib","available":[{"id":"regex-base-0.94.0.1-3a17040d054766ab8dc57f26c7d65c9c0f8782a8ce82862d2e8d4da9aa36c4bd","component-name":"lib","build-by-default":true}]},{"pkg-name":"regex-posix","pkg-version":"0.96.0.0","component-name":"lib","available":[{"id":"regex-posix-0.96.0.0-6e5c96176f90239b1b35ea81399d2149d2bbf5bc0c0d85e6660a46b539cb7abb","component-name":"lib","build-by-default":true}]},{"pkg-name":"resourcet","pkg-version":"1.2.4.2","component-name":"lib","available":[{"id":"resourcet-1.2.4.2-302da70f53a381e3946d9bc3f2c181c3464035a3dd78edb509158b7de3de01cc","component-name":"lib","build-by-default":true}]},{"pkg-name":"resourcet","pkg-version":"1.2.4.2","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"safe","pkg-version":"0.3.19","component-name":"lib","available":[{"id":"safe-0.3.19-51e71c14211a5a289b16e0d6b07ca550bda815589f5bf3e7d68eb5d66dbd69d4","component-name":"lib","build-by-default":true}]},{"pkg-name":"safe","pkg-version":"0.3.19","component-name":"test:safe-test","available":["TargetNotLocal"]},{"pkg-name":"scientific","pkg-version":"0.3.6.2","component-name":"lib","available":[{"id":"scientific-0.3.6.2-42e3b56e032df0ce79f9062afa301c4cf62b7891d5bcc06b2adf3c10aaa3a378","component-name":"lib","build-by-default":true}]},{"pkg-name":"scientific","pkg-version":"0.3.6.2","component-name":"test:test-scientific","available":["TargetNotLocal"]},{"pkg-name":"scientific","pkg-version":"0.3.6.2","component-name":"bench:bench-scientific","available":["TargetNotLocal"]},{"pkg-name":"semigroupoids","pkg-version":"5.3.4","component-name":"lib","available":[{"id":"semigroupoids-5.3.4-149842f32a584b89e1316295da35aa131274d2e9c2c7302c87f39990b9e3c118","component-name":"lib","build-by-default":true}]},{"pkg-name":"semigroupoids","pkg-version":"5.3.4","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"semigroups","pkg-version":"0.19.1","component-name":"lib","available":[{"id":"semigroups-0.19.1-9fc2a2aad08381bf3b7b83a5a7a86b5f9c4de3e16843376dbd6cd99e824757e1","component-name":"lib","build-by-default":true}]},{"pkg-name":"shelly","pkg-version":"1.9.0","component-name":"lib","available":[{"id":"shelly-1.9.0-d6d8c7f447b6bd65c18b3be6927750eb9dfd02f79324a8f06ca3bfa0bb425079","component-name":"lib","build-by-default":true}]},{"pkg-name":"shelly","pkg-version":"1.9.0","component-name":"exe:Color","available":["TargetNotBuildable"]},{"pkg-name":"shelly","pkg-version":"1.9.0","component-name":"exe:drain","available":["TargetNotBuildable"]},{"pkg-name":"shelly","pkg-version":"1.9.0","component-name":"exe:run-handles","available":["TargetNotBuildable"]},{"pkg-name":"shelly","pkg-version":"1.9.0","component-name":"test:shelly-testsuite","available":["TargetNotLocal"]},{"pkg-name":"simple-sendfile","pkg-version":"0.2.30","component-name":"lib","available":[{"id":"simple-sendfile-0.2.30-582c15ed93e6db542d7c9ac4cc6c2f444258db9ec8bd7a0210a901e1a1cdcb65","component-name":"lib","build-by-default":true}]},{"pkg-name":"simple-sendfile","pkg-version":"0.2.30","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"split","pkg-version":"0.2.3.4","component-name":"lib","available":[{"id":"split-0.2.3.4-b35824015585af9ca2cfc77c94ab6a24b60b6ac2cac313cec0606c2533291814","component-name":"lib","build-by-default":true}]},{"pkg-name":"split","pkg-version":"0.2.3.4","component-name":"test:split-tests","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"lib","available":[{"id":"splitmix-0.1.0.3-d6f6b66e6617160e1a17af8ff83c4d20299913bc8d11f722313ea9e9a089a3d3","component-name":"lib","build-by-default":true}]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:examples","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:initialization","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:montecarlo-pi","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:montecarlo-pi-32","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:splitmix-dieharder","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"test:splitmix-tests","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"bench:comparison","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"bench:range","available":["TargetNotLocal"]},{"pkg-name":"splitmix","pkg-version":"0.1.0.3","component-name":"bench:simple-sum","available":["TargetNotLocal"]},{"pkg-name":"stm","pkg-version":"2.5.0.1","component-name":"lib","available":[{"id":"stm-2.5.0.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"streaming-commons","pkg-version":"0.2.2.1","component-name":"lib","available":[{"id":"streaming-commons-0.2.2.1-942cb4328612adafa73367d11a898b63952d40a880d771224be522f99e9b4d7d","component-name":"lib","build-by-default":true}]},{"pkg-name":"streaming-commons","pkg-version":"0.2.2.1","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"streaming-commons","pkg-version":"0.2.2.1","component-name":"bench:builder-to-bytestring-io","available":["TargetNotLocal"]},{"pkg-name":"streaming-commons","pkg-version":"0.2.2.1","component-name":"bench:count-chars","available":["TargetNotLocal"]},{"pkg-name":"streaming-commons","pkg-version":"0.2.2.1","component-name":"bench:decode-memory-usage","available":["TargetNotLocal"]},{"pkg-name":"stringsearch","pkg-version":"0.3.6.6","component-name":"lib","available":[{"id":"stringsearch-0.3.6.6-ed3c625583d8ef2c2cbb8a855cd2444fedee837a8e8140f5a903278226083f8e","component-name":"lib","build-by-default":true}]},{"pkg-name":"syb","pkg-version":"0.7.2.1","component-name":"lib","available":[{"id":"syb-0.7.2.1-f17324f538cc1a70b6242a24980d699ca900c553769879889ca40466f83fd57f","component-name":"lib","build-by-default":true}]},{"pkg-name":"syb","pkg-version":"0.7.2.1","component-name":"test:unit-tests","available":["TargetNotLocal"]},{"pkg-name":"tagged","pkg-version":"0.8.6.1","component-name":"lib","available":[{"id":"tagged-0.8.6.1-90fe6ab77927b221fb709757ad97b1ec8b6385ae75970a39cb1a5fcfc832cffd","component-name":"lib","build-by-default":true}]},{"pkg-name":"tar","pkg-version":"0.5.1.1","component-name":"lib","available":[{"id":"tar-0.5.1.1-643c87cd04d43966ba086abf693a99a6c8e6a74b2250a8c6db6f078672b95893","component-name":"lib","build-by-default":true}]},{"pkg-name":"tar","pkg-version":"0.5.1.1","component-name":"test:properties","available":["TargetNotLocal"]},{"pkg-name":"tar","pkg-version":"0.5.1.1","component-name":"bench:bench","available":["TargetNotLocal"]},{"pkg-name":"template-haskell","pkg-version":"2.16.0.0","component-name":"lib","available":[{"id":"template-haskell-2.16.0.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"temporary","pkg-version":"1.3","component-name":"lib","available":[{"id":"temporary-1.3-ff789bf78c36599a0a16db6158f62be122deb703e96987b84a1d080b3218a979","component-name":"lib","build-by-default":true}]},{"pkg-name":"temporary","pkg-version":"1.3","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"terminfo","pkg-version":"0.4.1.4","component-name":"lib","available":[{"id":"terminfo-0.4.1.4","component-name":"lib","build-by-default":true}]},{"pkg-name":"test-framework","pkg-version":"0.8.2.0","component-name":"lib","available":[{"id":"test-framework-0.8.2.0-4acaaf8eda1287dd7e779b387dd505fd725d0ee0383eeb97d73df9fa7ee5eb34","component-name":"lib","build-by-default":true}]},{"pkg-name":"test-framework","pkg-version":"0.8.2.0","component-name":"test:test-framework-tests","available":["TargetNotLocal"]},{"pkg-name":"test-framework-hunit","pkg-version":"0.3.0.2","component-name":"lib","available":[{"id":"test-framework-hunit-0.3.0.2-251703d47b62042b244e7d589c2a4bc1754ecd3c68d7d25fa52563917e5fb486","component-name":"lib","build-by-default":true}]},{"pkg-name":"text","pkg-version":"1.2.4.1","component-name":"lib","available":[{"id":"text-1.2.4.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"th-abstraction","pkg-version":"0.3.2.0","component-name":"lib","available":[{"id":"th-abstraction-0.3.2.0-d7dbeb8154b6dd18f43d59e413543ac1bec4c700d695dccb3dc6268af1544009","component-name":"lib","build-by-default":true}]},{"pkg-name":"th-abstraction","pkg-version":"0.3.2.0","component-name":"test:unit-tests","available":["TargetNotLocal"]},{"pkg-name":"th-compat","pkg-version":"0.1.2","component-name":"lib","available":[{"id":"th-compat-0.1.2-f673eb08c16520585c802ecd381034ab8705dd899881810ed7fc99b2b45167db","component-name":"lib","build-by-default":true}]},{"pkg-name":"th-compat","pkg-version":"0.1.2","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"time","pkg-version":"1.9.3","component-name":"lib","available":[{"id":"time-1.9.3","component-name":"lib","build-by-default":true}]},{"pkg-name":"time-compat","pkg-version":"1.9.5","component-name":"lib","available":[{"id":"time-compat-1.9.5-71a65c2deb18d6d8d92b409212320e2c85df8b72a793ab4e2eb7c477a23b71f4","component-name":"lib","build-by-default":true}]},{"pkg-name":"time-compat","pkg-version":"1.9.5","component-name":"test:instances","available":["TargetNotLocal"]},{"pkg-name":"time-compat","pkg-version":"1.9.5","component-name":"test:main","available":["TargetNotLocal"]},{"pkg-name":"time-manager","pkg-version":"0.0.0","component-name":"lib","available":[{"id":"time-manager-0.0.0-bc7a85c82be20473dfe915bd8d3f3d3c39f4329684c4a119a5da74bba91eb38c","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers","pkg-version":"0.5.6.2","component-name":"lib","available":[{"id":"transformers-0.5.6.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers-base","pkg-version":"0.4.5.2","component-name":"lib","available":[{"id":"transformers-base-0.4.5.2-f59c3b08e18ebf1e05bdd152225473dbafc17b3afcdc67346a6635ed5b4de427","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers-compat","pkg-version":"0.6.6","component-name":"lib","available":[{"id":"transformers-compat-0.6.6-c13045e1ff52ee93041fb029a1d9e9a05c37a0cb700d2c921faf08c34edcaede","component-name":"lib","build-by-default":true}]},{"pkg-name":"type-equality","pkg-version":"1","component-name":"lib","available":[{"id":"type-equality-1-4cd1419c88ebdbd4cd0a28c94eb2a79dd5234fbd3edbd50a599c817080638d8c","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix","pkg-version":"2.7.2.2","component-name":"lib","available":[{"id":"unix-2.7.2.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix-compat","pkg-version":"0.5.3","component-name":"lib","available":[{"id":"unix-compat-0.5.3-2bc2837e6f4bbc1b7104bd912ca92ab1f2ad1e42c984992d69f66d4dc3a997dd","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix-time","pkg-version":"0.4.7","component-name":"lib","available":[{"id":"unix-time-0.4.7-327f5b87b2611e066655cbb58cf346c1d0142212ed35f6a6dd6f01879cb86dc4","component-name":"lib","build-by-default":true}]},{"pkg-name":"unix-time","pkg-version":"0.4.7","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"unix-time","pkg-version":"0.4.7","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"unliftio-core","pkg-version":"0.2.0.1","component-name":"lib","available":[{"id":"unliftio-core-0.2.0.1-d0855bd29dffa1bf2bc5c121ed96f93f42e3ddc4c54f561bd3f7a186584466ac","component-name":"lib","build-by-default":true}]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"lib","available":[{"id":"unordered-containers-0.2.13.0-35460b21e441aeebe83724b11caf0fabc4c79c49a4c3453dc1ec91e4ce589e47","component-name":"lib","build-by-default":true}]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:hashmap-lazy-properties","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:hashmap-strict-properties","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:hashset-properties","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:list-tests","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:regressions","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"test:strictness-properties","available":["TargetNotLocal"]},{"pkg-name":"unordered-containers","pkg-version":"0.2.13.0","component-name":"bench:benchmarks","available":["TargetNotLocal"]},{"pkg-name":"uuid-types","pkg-version":"1.0.4","component-name":"lib","available":[{"id":"uuid-types-1.0.4-6086ee179fe2f1ed9da5bd809a02f7629168918177bc5196b524120354539813","component-name":"lib","build-by-default":true}]},{"pkg-name":"uuid-types","pkg-version":"1.0.4","component-name":"test:testuuid","available":["TargetNotLocal"]},{"pkg-name":"vault","pkg-version":"0.3.1.5","component-name":"lib","available":[{"id":"vault-0.3.1.5-e6aaa3e9286a9fe1f03f6431c42c07e12b49138cf64435197da23c125d649f30","component-name":"lib","build-by-default":true}]},{"pkg-name":"vector","pkg-version":"0.12.2.0","component-name":"lib","available":[{"id":"vector-0.12.2.0-84be1736eb2fdcccd3f3255cdd99deab0bc6b8c8104c444c17df2676a325d9a1","component-name":"lib","build-by-default":true}]},{"pkg-name":"vector","pkg-version":"0.12.2.0","component-name":"test:vector-doctest","available":["TargetNotLocal"]},{"pkg-name":"vector","pkg-version":"0.12.2.0","component-name":"test:vector-tests-O0","available":["TargetNotLocal"]},{"pkg-name":"vector","pkg-version":"0.12.2.0","component-name":"test:vector-tests-O2","available":["TargetNotLocal"]},{"pkg-name":"vector-algorithms","pkg-version":"0.8.0.4","component-name":"lib","available":[{"id":"vector-algorithms-0.8.0.4-d44a9018bc6e936bbaccd8d7592d9f20d5027e9444ae406c591e0aa8b143babb","component-name":"lib","build-by-default":true}]},{"pkg-name":"vector-algorithms","pkg-version":"0.8.0.4","component-name":"test:properties","available":["TargetNotLocal"]},{"pkg-name":"vector-algorithms","pkg-version":"0.8.0.4","component-name":"bench:simple-bench","available":["TargetNotLocal"]},{"pkg-name":"void","pkg-version":"0.7.3","component-name":"lib","available":[{"id":"void-0.7.3-a42d1eef0f87c637011e4d9f1374cf8032d62a9528998a747d2eddaf6d987c86","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai","pkg-version":"3.2.3","component-name":"lib","available":[{"id":"wai-3.2.3-f78cd8b8b3b0191ae95f0a17d9e4679af13a09b5426dd7a64a7c2ee96cde9059","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai","pkg-version":"3.2.3","component-name":"test:test","available":["TargetNotLocal"]},{"pkg-name":"wai-app-static","pkg-version":"3.1.7.2","component-name":"lib","available":[{"id":"wai-app-static-3.1.7.2-063d791ea745dac9aae85ff14de9fe9c456f6e85653b4f9f97a90b8a1e8555df","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai-app-static","pkg-version":"3.1.7.2","component-name":"exe:warp","available":[{"id":"wai-app-static-3.1.7.2-e-warp-9901da3d600430101d53709ca6d58b231800bd28ed46206a1afc0ca453f2378d","component-name":"exe:warp","build-by-default":true}]},{"pkg-name":"wai-app-static","pkg-version":"3.1.7.2","component-name":"test:runtests","available":["TargetNotLocal"]},{"pkg-name":"wai-extra","pkg-version":"3.0.32","component-name":"lib","available":[{"id":"wai-extra-3.0.32-2aba6dc4516932801d14dbedbc45c653eab5b878ceb83d48aa3355f2e092b6a6","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai-extra","pkg-version":"3.0.32","component-name":"exe:example","available":["TargetNotBuildable"]},{"pkg-name":"wai-extra","pkg-version":"3.0.32","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"wai-logger","pkg-version":"2.3.6","component-name":"lib","available":[{"id":"wai-logger-2.3.6-f95a799adae8b044547c71c6c74079de223418e3a072b5d2b6481746fbb66c46","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai-logger","pkg-version":"2.3.6","component-name":"test:doctests","available":["TargetNotLocal"]},{"pkg-name":"wai-websockets","pkg-version":"3.0.1.2","component-name":"lib","available":[{"id":"wai-websockets-3.0.1.2-ff20345d458ca8ad8918f900d7cc52c9d7f4edf34f54ea9426ed0152b4129d9a","component-name":"lib","build-by-default":true}]},{"pkg-name":"wai-websockets","pkg-version":"3.0.1.2","component-name":"exe:wai-websockets-example","available":[{"id":"wai-websockets-3.0.1.2-e-wai-websockets-example-32a164fba5a85343fd9f1541ccd83e246f2d36cbcb031f06d2979c0db7bb49a7","component-name":"exe:wai-websockets-example","build-by-default":true}]},{"pkg-name":"warp","pkg-version":"3.3.14","component-name":"lib","available":[{"id":"warp-3.3.14-e75ca651b306735e7a4c986568378b5ab2592061a7a8b739ff4742530de5cc2f","component-name":"lib","build-by-default":true}]},{"pkg-name":"warp","pkg-version":"3.3.14","component-name":"test:doctest","available":["TargetNotLocal"]},{"pkg-name":"warp","pkg-version":"3.3.14","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"warp","pkg-version":"3.3.14","component-name":"bench:parser","available":["TargetNotLocal"]},{"pkg-name":"webdriver","pkg-version":"0.9.0.1","component-name":"lib","available":[{"id":"webdriver-0.9.0.1-35a56a29edc76894542404eac80a7216f880803a2f4567121fc370db555d5d3e","component-name":"lib","build-by-default":true}]},{"pkg-name":"websockets","pkg-version":"0.12.7.2","component-name":"lib","available":[{"id":"websockets-0.12.7.2-9a73545fb032fca4a3ff32d85cc5c4b62eac54762308714d8f3022bba46aa4e0","component-name":"lib","build-by-default":true}]},{"pkg-name":"websockets","pkg-version":"0.12.7.2","component-name":"exe:websockets-autobahn","available":["TargetNotBuildable"]},{"pkg-name":"websockets","pkg-version":"0.12.7.2","component-name":"exe:websockets-example","available":["TargetNotBuildable"]},{"pkg-name":"websockets","pkg-version":"0.12.7.2","component-name":"test:websockets-tests","available":["TargetNotLocal"]},{"pkg-name":"websockets","pkg-version":"0.12.7.2","component-name":"bench:bench-mask","available":["TargetNotLocal"]},{"pkg-name":"wl-pprint-text","pkg-version":"1.2.0.1","component-name":"lib","available":[{"id":"wl-pprint-text-1.2.0.1-f65bf92b2ca9aa1c1aba70c2a50d26c1a0a57919fafc7d735fbaf8708f5bf560","component-name":"lib","build-by-default":true}]},{"pkg-name":"word8","pkg-version":"0.1.3","component-name":"lib","available":[{"id":"word8-0.1.3-a52b0b2e8eaf12d4065c5bb0feed18420e66828a5f860b7767d8b6a9bf6c7dca","component-name":"lib","build-by-default":true}]},{"pkg-name":"word8","pkg-version":"0.1.3","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"word8","pkg-version":"0.1.3","component-name":"bench:criterion","available":["TargetNotLocal"]},{"pkg-name":"x509","pkg-version":"1.7.5","component-name":"lib","available":[{"id":"x509-1.7.5-70029ef763fd15a3a0f57750c5952e47a961410c40c88681736543158773ba8a","component-name":"lib","build-by-default":true}]},{"pkg-name":"x509","pkg-version":"1.7.5","component-name":"test:test-x509","available":["TargetNotLocal"]},{"pkg-name":"xhtml","pkg-version":"3000.2.2.1","component-name":"lib","available":[{"id":"xhtml-3000.2.2.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"xml","pkg-version":"1.3.14","component-name":"lib","available":[{"id":"xml-1.3.14-1aebc396e1d8eed7019387ea5aaacd1f989a750252a8ba709d99c0557b7fbbf5","component-name":"lib","build-by-default":true}]},{"pkg-name":"yaml","pkg-version":"0.11.5.0","component-name":"lib","available":[{"id":"yaml-0.11.5.0-f343c7e162c8d325f1d496c33d87fe89cf5a20b66600d096d0bf1e902e6baa1a","component-name":"lib","build-by-default":true}]},{"pkg-name":"yaml","pkg-version":"0.11.5.0","component-name":"exe:examples","available":["TargetNotBuildable"]},{"pkg-name":"yaml","pkg-version":"0.11.5.0","component-name":"exe:json2yaml","available":["TargetNotBuildable"]},{"pkg-name":"yaml","pkg-version":"0.11.5.0","component-name":"exe:yaml2json","available":["TargetNotBuildable"]},{"pkg-name":"yaml","pkg-version":"0.11.5.0","component-name":"test:spec","available":["TargetNotLocal"]},{"pkg-name":"zip-archive","pkg-version":"0.4.1","component-name":"lib","available":[{"id":"zip-archive-0.4.1-0407cfd03f1387943c6ee463976a39a402f94cc5ad054a470b8a7b44d9890ae3","component-name":"lib","build-by-default":true}]},{"pkg-name":"zip-archive","pkg-version":"0.4.1","component-name":"exe:zip-archive","available":["TargetNotBuildable"]},{"pkg-name":"zip-archive","pkg-version":"0.4.1","component-name":"test:test-zip-archive","available":["TargetNotLocal"]},{"pkg-name":"zlib","pkg-version":"0.6.2.3","component-name":"lib","available":[{"id":"zlib-0.6.2.3-a637f3112bea0ad58c129e9e214d7009d480609a743e2473280eb8404869d423","component-name":"lib","build-by-default":true}]},{"pkg-name":"zlib","pkg-version":"0.6.2.3","component-name":"test:tests","available":["TargetNotLocal"]}]} \ No newline at end of file diff --git a/materialized/ghcjs/happy/ghc8107/plan.json b/materialized/ghcjs/happy/ghc8107/plan.json new file mode 100644 index 0000000000..aeb0dba3c1 --- /dev/null +++ b/materialized/ghcjs/happy/ghc8107/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-8.10.7","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"base-4.14.3.0","pkg-name":"base","pkg-version":"4.14.3.0","depends":["ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"pre-existing","id":"deepseq-1.4.4.0","pkg-name":"deepseq","pkg-version":"1.4.4.0","depends":["array-0.5.4.0","base-4.14.3.0","ghc-prim-0.6.1"]},{"type":"pre-existing","id":"ghc-prim-0.6.1","pkg-name":"ghc-prim","pkg-version":"0.6.1","depends":[]},{"type":"configured","id":"happy-1.19.12-inplace-happy","pkg-name":"happy","pkg-version":"1.19.12","flags":{"small_base":true},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/happy-1.19.12/x/happy","build-info":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/happy-1.19.12/x/happy/build-info.json","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","mtl-2.2.2"],"exe-depends":[],"component-name":"exe:happy","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-8.10.7/happy-1.19.12/x/happy/build/happy/happy"},{"type":"pre-existing","id":"integer-gmp-1.0.3.0","pkg-name":"integer-gmp","pkg-version":"1.0.3.0","depends":["ghc-prim-0.6.1"]},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.14.3.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.14.3.0","ghc-prim-0.6.1"]}],"targets":[{"pkg-name":"array","pkg-version":"0.5.4.0","component-name":"lib","available":[{"id":"array-0.5.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base","pkg-version":"4.14.3.0","component-name":"lib","available":[{"id":"base-4.14.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"containers","pkg-version":"0.6.5.1","component-name":"lib","available":[{"id":"containers-0.6.5.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"deepseq","pkg-version":"1.4.4.0","component-name":"lib","available":[{"id":"deepseq-1.4.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.6.1","component-name":"lib","available":[{"id":"ghc-prim-0.6.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"happy","pkg-version":"1.19.12","component-name":"exe:happy","available":[{"id":"happy-1.19.12-inplace-happy","component-name":"exe:happy","build-by-default":true}]},{"pkg-name":"happy","pkg-version":"1.19.12","component-name":"test:tests","available":["TargetDisabledByUser"]},{"pkg-name":"integer-gmp","pkg-version":"1.0.3.0","component-name":"lib","available":[{"id":"integer-gmp-1.0.3.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"mtl","pkg-version":"2.2.2","component-name":"lib","available":[{"id":"mtl-2.2.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers","pkg-version":"0.5.6.2","component-name":"lib","available":[{"id":"transformers-0.5.6.2","component-name":"lib","build-by-default":true}]}]} \ No newline at end of file diff --git a/materialized/happy-1.20.0/plan.json b/materialized/happy-1.20.0/plan.json new file mode 100644 index 0000000000..20e629b835 --- /dev/null +++ b/materialized/happy-1.20.0/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.10.3.0","cabal-lib-version":"3.10.3.0","compiler-id":"ghc-9.0.2","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.15.1.0"]},{"type":"pre-existing","id":"base-4.15.1.0","pkg-name":"base","pkg-version":"4.15.1.0","depends":["ghc-bignum-1.1","ghc-prim-0.7.0"]},{"type":"pre-existing","id":"containers-0.6.4.1","pkg-name":"containers","pkg-version":"0.6.4.1","depends":["array-0.5.4.0","base-4.15.1.0","deepseq-1.4.5.0"]},{"type":"pre-existing","id":"deepseq-1.4.5.0","pkg-name":"deepseq","pkg-version":"1.4.5.0","depends":["array-0.5.4.0","base-4.15.1.0","ghc-prim-0.7.0"]},{"type":"pre-existing","id":"ghc-bignum-1.1","pkg-name":"ghc-bignum","pkg-version":"1.1","depends":["ghc-prim-0.7.0"]},{"type":"pre-existing","id":"ghc-prim-0.7.0","pkg-name":"ghc-prim","pkg-version":"0.7.0","depends":[]},{"type":"configured","id":"happy-1.20.0-inplace-happy","pkg-name":"happy","pkg-version":"1.20.0","flags":{},"style":"local","pkg-src":{"type":"local","path":"./."},"dist-dir":"./dist-newstyle/build/x86_64-linux/ghc-9.0.2/happy-1.20.0/x/happy","build-info":"./dist-newstyle/build/x86_64-linux/ghc-9.0.2/happy-1.20.0/x/happy/build-info.json","depends":["array-0.5.4.0","base-4.15.1.0","containers-0.6.4.1","mtl-2.2.2"],"exe-depends":[],"component-name":"exe:happy","bin-file":"./dist-newstyle/build/x86_64-linux/ghc-9.0.2/happy-1.20.0/x/happy/build/happy/happy"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.15.1.0","transformers-0.5.6.2"]},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.15.1.0","ghc-prim-0.7.0"]}],"targets":[{"pkg-name":"array","pkg-version":"0.5.4.0","component-name":"lib","available":[{"id":"array-0.5.4.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"base","pkg-version":"4.15.1.0","component-name":"lib","available":[{"id":"base-4.15.1.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"containers","pkg-version":"0.6.4.1","component-name":"lib","available":[{"id":"containers-0.6.4.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"deepseq","pkg-version":"1.4.5.0","component-name":"lib","available":[{"id":"deepseq-1.4.5.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-bignum","pkg-version":"1.1","component-name":"lib","available":[{"id":"ghc-bignum-1.1","component-name":"lib","build-by-default":true}]},{"pkg-name":"ghc-prim","pkg-version":"0.7.0","component-name":"lib","available":[{"id":"ghc-prim-0.7.0","component-name":"lib","build-by-default":true}]},{"pkg-name":"happy","pkg-version":"1.20.0","component-name":"exe:happy","available":[{"id":"happy-1.20.0-inplace-happy","component-name":"exe:happy","build-by-default":true}]},{"pkg-name":"happy","pkg-version":"1.20.0","component-name":"test:tests","available":["TargetDisabledByUser"]},{"pkg-name":"mtl","pkg-version":"2.2.2","component-name":"lib","available":[{"id":"mtl-2.2.2","component-name":"lib","build-by-default":true}]},{"pkg-name":"transformers","pkg-version":"0.5.6.2","component-name":"lib","available":[{"id":"transformers-0.5.6.2","component-name":"lib","build-by-default":true}]}]} \ No newline at end of file From aa834401b920136f4d3178719abc53573af400e5 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Wed, 18 Sep 2024 15:38:00 +1200 Subject: [PATCH 045/109] Bump nixpkgs-unstable and ghc911 --- flake.lock | 6 +++--- lazy-inputs/ghc911/flake.lock | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/flake.lock b/flake.lock index 2b032447ed..aeff46e437 100644 --- a/flake.lock +++ b/flake.lock @@ -557,11 +557,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1726481836, - "narHash": "sha256-MWTBH4dd5zIz2iatDb8IkqSjIeFum9jAqkFxgHLdzO4=", + "lastModified": 1726583932, + "narHash": "sha256-zACxiQx8knB3F8+Ze+1BpiYrI+CbhxyWpcSID9kVhkQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "20f9370d5f588fb8c72e844c54511cab054b5f40", + "rev": "658e7223191d2598641d50ee4e898126768fe847", "type": "github" }, "original": { diff --git a/lazy-inputs/ghc911/flake.lock b/lazy-inputs/ghc911/flake.lock index 6c61054fb6..7362cb589e 100644 --- a/lazy-inputs/ghc911/flake.lock +++ b/lazy-inputs/ghc911/flake.lock @@ -3,11 +3,11 @@ "ghc911": { "flake": false, "locked": { - "lastModified": 1718926152, - "narHash": "sha256-/8JCzx83juIl0ZZ68sYsc2BxVNy4XPXaGRkLz6w535I=", + "lastModified": 1726585445, + "narHash": "sha256-IdwQBex4boY6s0Plj5+ixf36rfYSUyMdTWrztKvZH30=", "ref": "refs/heads/master", - "rev": "c8a8727ef67a3212abbf9f928bef67dfef276adf", - "revCount": 66999, + "rev": "7fd9e5e29ab54eb406880077463e8552e2ddd39a", + "revCount": 67238, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" From 5ce8dedf7ea193ecd7a2a468d7d7f095dac65dea Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Wed, 18 Sep 2024 15:57:03 +1200 Subject: [PATCH 046/109] Simplify bootPkgs --- overlays/bootstrap.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index fbc931e845..e76611cef8 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -1006,7 +1006,7 @@ in { ({config, pkgs, ...}: { compilerSelection = p: p.haskell.compiler; version = "1.19.12"; - inherit version ghcOverride index-state; + inherit ghcOverride index-state; materialized = ../materialized/bootstrap + "/${buildBootstrapper.compilerNixName}/happy-${version}"; }); hscolour = (final.haskell-nix.hackage-package From f309e8230b6ed7fcce8a93dd324bef72086541df Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Wed, 18 Sep 2024 15:58:03 +1200 Subject: [PATCH 047/109] Simplify bootPkgs --- overlays/bootstrap.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index e76611cef8..2dbb7923cd 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -1007,7 +1007,7 @@ in { compilerSelection = p: p.haskell.compiler; version = "1.19.12"; inherit ghcOverride index-state; - materialized = ../materialized/bootstrap + "/${buildBootstrapper.compilerNixName}/happy-${version}"; + materialized = ../materialized/bootstrap + "/${buildBootstrapper.compilerNixName}/happy-1.19.12"; }); hscolour = (final.haskell-nix.hackage-package ({config, pkgs, ...}: { From 366a923eb90812b4fec4a96822aeb3f2dc4c564c Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Thu, 19 Sep 2024 11:39:00 +1200 Subject: [PATCH 048/109] Update ghc911 --- lazy-inputs/ghc911/flake.lock | 8 ++++---- overlays/bootstrap.nix | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lazy-inputs/ghc911/flake.lock b/lazy-inputs/ghc911/flake.lock index 7362cb589e..1e883aec87 100644 --- a/lazy-inputs/ghc911/flake.lock +++ b/lazy-inputs/ghc911/flake.lock @@ -3,11 +3,11 @@ "ghc911": { "flake": false, "locked": { - "lastModified": 1726585445, - "narHash": "sha256-IdwQBex4boY6s0Plj5+ixf36rfYSUyMdTWrztKvZH30=", + "lastModified": 1726660620, + "narHash": "sha256-A+vKrnt0dC9mA6vIUjeAneo6oHL/5JHmnFw/zD2K/q0=", "ref": "refs/heads/master", - "rev": "7fd9e5e29ab54eb406880077463e8552e2ddd39a", - "revCount": 67238, + "rev": "35eb4f428ab72b712ea78d6ef86b956e321c3bb2", + "revCount": 67241, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 2dbb7923cd..548c11c07c 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -81,7 +81,7 @@ in { # Try to avoid reordering the patches unless a patch is added or changed that # will be applied to most versions of the GHC anyway (reordering the patches # results in rebuilds of GHC and reduces sharing in /nix/store). - in always ./patches/ghc/dll-loader-8.4.2.patch # https://gitlab.haskell.org/ghc/ghc/merge_requests/949 -- open + in until "9.11" ./patches/ghc/dll-loader-8.4.2.patch # https://gitlab.haskell.org/ghc/ghc/merge_requests/949 -- open ++ until "9.2" ./patches/ghc/ghc-8.4.3-Cabal2201-no-hackage-tests.patch # ? ++ until "9.2" ./patches/ghc/cabal-host.patch # https://github.com/haskell/cabal/issues/5887 ++ fromUntil "9.2" "9.4" ./patches/ghc/ghc-9.2-cabal-host.patch # https://github.com/haskell/cabal/issues/5887 From e76e58972709d0b3fc5178240665f18db95b21ec Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Thu, 19 Sep 2024 18:49:17 +1200 Subject: [PATCH 049/109] Reduce the number of compilers tested --- ci.nix | 20 +++++++++----------- test/plugin/default.nix | 2 +- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/ci.nix b/ci.nix index 59727de473..b6346c086e 100644 --- a/ci.nix +++ b/ci.nix @@ -62,19 +62,17 @@ # from here (so that is no longer cached) also remove ./materialized/ghcXXX. # Update supported-ghc-versions.md to reflect any changes made here. nixpkgs.lib.optionalAttrs (nixpkgsName == "R2405") { - ghc94 = false; ghc96 = false; ghc98 = false; } // nixpkgs.lib.optionalAttrs (nixpkgsName == "unstable") { ghc810 = true; - ghc90 = false; - ghc92 = true; - ghc94 = true; + ghc92 = false; + ghc94 = false; ghc96 = true; - ghc96llvm = true; ghc98 = true; - ghc98llvm = true; + ghc98llvm = false; ghc910 = true; + ghc910llvm = true; ghc911 = true; }))); crossSystems = nixpkgsName: nixpkgs: compiler-nix-name: @@ -85,21 +83,21 @@ && (__match ".*llvm" compiler-nix-name == null) && ((system == "x86_64-linux" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948"]) || (system == "aarch64-linux" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948"]) - || (system == "x86_64-darwin" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948"]) - || (system == "aarch64-darwin" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948"]) + || (system == "x86_64-darwin" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948" "ghc966" "ghc982"]) + || (system == "aarch64-darwin" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948" "ghc966" "ghc982"]) )) { inherit (lib.systems.examples) ghcjs; } // lib.optionalAttrs ( (__match ".*llvm" compiler-nix-name == null) - && ((system == "x86_64-linux" && !builtins.elem compiler-nix-name ["ghc884" "ghc91120240620"]) # Including GHC HEAD here because the patches for rts/RtsSymbols.c no longer apply and mingwW64 GHC build fails without them + && ((system == "x86_64-linux" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc91120240918"]) # Including GHC HEAD here because the patches for rts/RtsSymbols.c no longer apply and mingwW64 GHC build fails without them || (system == "x86_64-darwin" && builtins.elem compiler-nix-name []))) { # TODO add ghc versions when we have more darwin build capacity inherit (lib.systems.examples) mingwW64; } // lib.optionalAttrs (nixpkgsName == "unstable" && (__match ".*llvm" compiler-nix-name == null) - && ((system == "x86_64-linux" && !builtins.elem compiler-nix-name ["ghc884" "ghc8107" "ghc902" "ghc928"]) + && ((system == "x86_64-linux" && !builtins.elem compiler-nix-name ["ghc884" "ghc8107" "ghc902" "ghc928" "ghc948"]) || (system == "x86_64-darwin" && builtins.elem compiler-nix-name []))) { # TODO add ghc versions when we have more darwin build capacity inherit (lib.systems.examples) ucrt64; - } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "unstable" && !builtins.elem compiler-nix-name ["ghc884"]) { + } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "unstable" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948"]) { # Musl cross only works on linux # aarch64 cross only works on linux inherit (lib.systems.examples) musl64 aarch64-multiplatform; diff --git a/test/plugin/default.nix b/test/plugin/default.nix index a0ec112075..893e85de42 100644 --- a/test/plugin/default.nix +++ b/test/plugin/default.nix @@ -20,7 +20,7 @@ in recurseIntoAttrs { # Not sure why this breaks for ghc 8.10.7 meta.disabled = compiler-nix-name == "ghc8107" - || builtins.elem compiler-nix-name [ "ghc91120240620" ] + || builtins.elem compiler-nix-name [ "ghc91120240918" ] || stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isGhcjs || stdenv.hostPlatform.isWindows From 915aaf4b0185bf4cb8916ba13d7165610ae854c9 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Thu, 19 Sep 2024 21:33:47 +1200 Subject: [PATCH 050/109] Bump llvm for ghc >=9.10 --- overlays/bootstrap.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 548c11c07c..fdb2e5a70c 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -832,8 +832,8 @@ in { }; inherit sphinx; - buildLlvmPackages = final.buildPackages.llvmPackages_12; - llvmPackages = final.llvmPackages_12; + buildLlvmPackages = final.buildPackages.llvmPackages_15; + llvmPackages = final.llvmPackages_15; src-spec.file = final.haskell-nix.sources.ghc9101; src-spec.version = "9.10.1"; @@ -868,8 +868,8 @@ in { }; inherit sphinx; - buildLlvmPackages = final.buildPackages.llvmPackages_12; - llvmPackages = final.llvmPackages_12; + buildLlvmPackages = final.buildPackages.llvmPackages_15; + llvmPackages = final.llvmPackages_15; src-spec.file = src; src-spec.version = version; From cac7369b85e68b89469ee1a72f9d860f15ca0304 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Thu, 19 Sep 2024 23:15:32 +1200 Subject: [PATCH 051/109] Update patch upper bounds --- overlays/bootstrap.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index fdb2e5a70c..2b816de04d 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -183,8 +183,8 @@ in { ++ onAarch64 (until "9.0" ./patches/ghc/ghc-8.10-better-symbol-addr-debug.patch) ++ onAarch64 (until "9.0" ./patches/ghc/ghc-8.10-aarch64-handle-none-rela.patch) ++ onWindows (until "9.0" ./patches/ghc/5b08e0c06e038448a63aa9bd7f163b23d824ba4b.patch) - ++ onAarch64 (from "9.0" ./patches/ghc/ghc-9.0-better-symbol-addr-debug.patch) - ++ onAarch64 (from "9.0" ./patches/ghc/ghc-9.0-aarch64-handle-none-rela.patch) + ++ onAarch64 (fromUntil "9.0" "9.11" ./patches/ghc/ghc-9.0-better-symbol-addr-debug.patch) + ++ onAarch64 (fromUntil "9.0" "9.11" ./patches/ghc/ghc-9.0-aarch64-handle-none-rela.patch) ++ onWindows (fromUntil "9.6.3" "9.6.4" ./patches/ghc/ghc-9.6-hadrian-splitsections.patch) ++ onWindows (fromUntil "9.8.1" "9.8.2" ./patches/ghc/ghc-9.6-hadrian-splitsections.patch) From b9150b021bf79f52abb161704428cf534df8e62d Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 20 Sep 2024 00:26:11 +1200 Subject: [PATCH 052/109] Include clang for useLLVM GHC --- compiler/ghc/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index 414e20341a..679a689839 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -232,7 +232,7 @@ let if targetPlatform.isGhcjs then [ buildPackages.emscripten ] else if hostPlatform == buildPlatform - then [ targetPackages.stdenv.cc ] ++ lib.optional useLLVM llvmPackages.llvm + then [ targetPackages.stdenv.cc ] ++ lib.optionals useLLVM [llvmPackages.llvm llvmPackages.clang] else assert targetPlatform == hostPlatform; # build != host == target [ stdenv.cc ] ++ lib.optional useLLVM buildLlvmPackages.llvm; From a9e6f397699abcf71347a6f68fd2d9c53c13c6a6 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 20 Sep 2024 00:37:15 +1200 Subject: [PATCH 053/109] ifdLevel 1 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 333cbfd5b9..ced3c36cab 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 0; + ifdLevel = 1; runningHydraEvalTest = false; compiler = "ghc928"; config = import ./config.nix; From d8b5cc77abaec60eaed50a57892539db0b3a3edf Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 20 Sep 2024 09:47:44 +1200 Subject: [PATCH 054/109] Add materialized files --- .../ghc9101llvm-aarch64/base.nix | 34 ++++++++ .../ghc9101llvm-aarch64/deriveConstants.nix | 39 +++++++++ .../ghc9101llvm-aarch64/genprimopcode.nix | 40 +++++++++ .../ghc9101llvm-aarch64/ghc-bignum.nix | 37 +++++++++ .../ghc9101llvm-aarch64/ghc-boot.nix | 47 +++++++++++ .../ghc9101llvm-aarch64/ghc-heap.nix | 36 +++++++++ .../ghc9101llvm-aarch64/ghc-internal.nix | 49 +++++++++++ .../ghc9101llvm-aarch64/ghc-platform.nix | 31 +++++++ .../ghc9101llvm-aarch64/ghc-prim.nix | 47 +++++++++++ .../ghc9101llvm-aarch64/ghc.nix | 81 +++++++++++++++++++ .../ghc9101llvm-aarch64/ghci.nix | 45 +++++++++++ .../ghc9101llvm-aarch64/hpc.nix | 38 +++++++++ .../ghc9101llvm-aarch64/integer-gmp.nix | 36 +++++++++ .../ghc9101llvm-aarch64/iserv.nix | 41 ++++++++++ .../ghc9101llvm-aarch64/remote-iserv.nix | 36 +++++++++ .../ghc9101llvm-aarch64/template-haskell.nix | 36 +++++++++ .../ghc9101llvm/base.nix | 34 ++++++++ .../ghc9101llvm/deriveConstants.nix | 39 +++++++++ .../ghc9101llvm/genprimopcode.nix | 40 +++++++++ .../ghc9101llvm/ghc-bignum.nix | 37 +++++++++ .../ghc9101llvm/ghc-boot.nix | 47 +++++++++++ .../ghc9101llvm/ghc-heap.nix | 36 +++++++++ .../ghc9101llvm/ghc-internal.nix | 49 +++++++++++ .../ghc9101llvm/ghc-platform.nix | 31 +++++++ .../ghc9101llvm/ghc-prim.nix | 47 +++++++++++ .../ghc-boot-packages-nix/ghc9101llvm/ghc.nix | 81 +++++++++++++++++++ .../ghc9101llvm/ghci.nix | 45 +++++++++++ .../ghc-boot-packages-nix/ghc9101llvm/hpc.nix | 38 +++++++++ .../ghc9101llvm/integer-gmp.nix | 36 +++++++++ .../ghc9101llvm/iserv.nix | 41 ++++++++++ .../ghc9101llvm/remote-iserv.nix | 36 +++++++++ .../ghc9101llvm/template-haskell.nix | 36 +++++++++ 32 files changed, 1346 insertions(+) create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/base.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/deriveConstants.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/genprimopcode.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-bignum.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-boot.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-heap.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-internal.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-platform.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-prim.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghci.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/hpc.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/integer-gmp.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/iserv.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/remote-iserv.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/template-haskell.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/base.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/deriveConstants.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/genprimopcode.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-bignum.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-boot.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-heap.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-internal.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-platform.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-prim.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/ghc.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/ghci.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/hpc.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/integer-gmp.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/iserv.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/remote-iserv.nix create mode 100644 materialized/ghc-boot-packages-nix/ghc9101llvm/template-haskell.nix diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/base.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/base.nix new file mode 100644 index 0000000000..6587385f50 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/base.nix @@ -0,0 +1,34 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "base"; version = "4.20.0.0"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "Core Libraries Committee "; + author = ""; + homepage = ""; + url = ""; + synopsis = "Core data structures and operations"; + description = "Haskell's base library provides, among other things, core types (e.g. [Bool](\"Data.Bool\") and [Int](\"Data.Int\")),\ndata structures (e.g. [List](\"Data.List\"), [Tuple](\"Data.Tuple\") and [Maybe](\"Data.Maybe\")),\nthe [Exception](\"Control.Exception\") mechanism, and the [IO](\"System.IO\") & [Concurrency](\"Control.Concurrent\") operations.\nThe \"Prelude\" module, which is imported by default, exposes a curated set of types and functions from other modules.\n\nOther data structures like [Map](https://hackage.haskell.org/package/containers/docs/Data-Map.html),\n[Set](https://hackage.haskell.org/package/containers/docs/Data-Set.html) are available in the [containers](https://hackage.haskell.org/package/containers) library.\nTo work with textual data, use the [text](https://hackage.haskell.org/package/text/docs/Data-Text.html) library."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."ghc-internal" or (errorHandler.buildDepError "ghc-internal")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/deriveConstants.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/deriveConstants.nix new file mode 100644 index 0000000000..135cdd02f6 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/deriveConstants.nix @@ -0,0 +1,39 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "1.10"; + identifier = { name = "deriveConstants"; version = "0.1"; }; + license = "BSD-3-Clause"; + copyright = "XXX"; + maintainer = "XXX"; + author = "XXX"; + homepage = ""; + url = ""; + synopsis = "Derive header files containing various constants for the GHC build process"; + description = "This utility is responsible for generating a number of C header files\nneeded during the GHC build process. See @rts/include/ghc.mk@ in the GHC\nbuild system for details."; + buildType = "Simple"; + }; + components = { + exes = { + "deriveConstants" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."process" or (errorHandler.buildDepError "process")) + (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) + (hsPkgs."directory" or (errorHandler.buildDepError "directory")) + ]; + buildable = true; + }; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/genprimopcode.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/genprimopcode.nix new file mode 100644 index 0000000000..49bbe516ba --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/genprimopcode.nix @@ -0,0 +1,40 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = { build-tool-depends = true; }; + package = { + specVersion = "2.0"; + identifier = { name = "genprimopcode"; version = "0.1"; }; + license = "BSD-3-Clause"; + copyright = "XXX"; + maintainer = "XXX"; + author = "XXX"; + homepage = ""; + url = ""; + synopsis = "Generates various files implementing GHC's primitive operations."; + description = "This utility reads a textual description of GHC's primitive operations\n(@primops.txt.pp@) and produces a number of outputs. These include,\n\n* the @GHC.Prim@ module included in the @ghc-prim@ package.\n* the @GHC.PrimopWrappers@ module included in the @ghc-prim@ package.\n* an LaTeX document describing the primitive operations."; + buildType = "Simple"; + }; + components = { + exes = { + "genprimopcode" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."array" or (errorHandler.buildDepError "array")) + ]; + build-tools = pkgs.lib.optionals (flags.build-tool-depends) [ + (hsPkgs.pkgsBuildBuild.alex.components.exes.alex or (pkgs.pkgsBuildBuild.alex or (errorHandler.buildToolDepError "alex:alex"))) + (hsPkgs.pkgsBuildBuild.happy.components.exes.happy or (pkgs.pkgsBuildBuild.happy or (errorHandler.buildToolDepError "happy:happy"))) + ]; + buildable = true; + }; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-bignum.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-bignum.nix new file mode 100644 index 0000000000..46af6e0e9f --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-bignum.nix @@ -0,0 +1,37 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = { native = false; ffi = false; gmp = false; check = false; }; + package = { + specVersion = "2.0"; + identifier = { name = "ghc-bignum"; version = "1.3"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "libraries@haskell.org"; + author = "Sylvain Henry"; + homepage = ""; + url = ""; + synopsis = "GHC BigNum library"; + description = "This package provides the low-level implementation of the standard\n'BigNat', 'Natural' and 'Integer' types."; + buildType = "Configure"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + ]; + buildable = (if !flags.native && !flags.gmp && !flags.ffi + then false + else true) && (if flags.native && (flags.gmp || flags.ffi) + then false + else true) && (if flags.gmp && flags.ffi then false else true); + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-boot.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-boot.nix new file mode 100644 index 0000000000..15e674919f --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-boot.nix @@ -0,0 +1,47 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "ghc-boot"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "ghc-devs@haskell.org"; + author = ""; + homepage = ""; + url = ""; + synopsis = "Shared functionality between GHC and its boot libraries"; + description = "This library is shared between GHC, ghc-pkg, and other boot\nlibraries.\n.\nA note about \"GHC.Unit.Database\": it only deals with the subset of\nthe package database that the compiler cares about: modules\npaths etc and not package metadata like description, authors\netc. It is thus not a library interface to ghc-pkg and is *not*\nsuitable for modifying GHC package databases.\n.\nThe package database format and this library are constructed in\nsuch a way that while ghc-pkg depends on Cabal, the GHC library\nand program do not have to depend on Cabal."; + buildType = "Custom"; + setup-depends = [ + (hsPkgs.pkgsBuildBuild.base or (pkgs.pkgsBuildBuild.base or (errorHandler.setupDepError "base"))) + (hsPkgs.pkgsBuildBuild.Cabal or (pkgs.pkgsBuildBuild.Cabal or (errorHandler.setupDepError "Cabal"))) + (hsPkgs.pkgsBuildBuild.directory or (pkgs.pkgsBuildBuild.directory or (errorHandler.setupDepError "directory"))) + (hsPkgs.pkgsBuildBuild.filepath or (pkgs.pkgsBuildBuild.filepath or (errorHandler.setupDepError "filepath"))) + ]; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."binary" or (errorHandler.buildDepError "binary")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."directory" or (errorHandler.buildDepError "directory")) + (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."ghc-platform" or (errorHandler.buildDepError "ghc-platform")) + (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th")) + ] ++ pkgs.lib.optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix")); + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-heap.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-heap.nix new file mode 100644 index 0000000000..4eeb9a331b --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-heap.nix @@ -0,0 +1,36 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "ghc-heap"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "libraries@haskell.org"; + author = ""; + homepage = ""; + url = ""; + synopsis = "Functions for walking GHC's heap"; + description = "This package provides functions for walking the GHC heap data structures\nand retrieving information about those data structures."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + (hsPkgs."rts" or (errorHandler.buildDepError "rts")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + ] ++ pkgs.lib.optional (compiler.isGhc && compiler.version.ge "9.9") (hsPkgs."ghc-internal" or (errorHandler.buildDepError "ghc-internal")); + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-internal.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-internal.nix new file mode 100644 index 0000000000..fe7b871e5a --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-internal.nix @@ -0,0 +1,49 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "ghc-internal"; version = "9.1001.0"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "Core Libraries Committee "; + author = ""; + homepage = ""; + url = ""; + synopsis = "Basic libraries"; + description = "This package contains the Standard Haskell \"Prelude\" and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities."; + buildType = "Configure"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."rts" or (errorHandler.buildDepError "rts")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + (hsPkgs."ghc-bignum" or (errorHandler.buildDepError "ghc-bignum")) + ]; + libs = pkgs.lib.optionals (system.isWindows) [ + (pkgs."wsock32" or (errorHandler.sysDepError "wsock32")) + (pkgs."user32" or (errorHandler.sysDepError "user32")) + (pkgs."shell32" or (errorHandler.sysDepError "shell32")) + (pkgs."mingw32" or (errorHandler.sysDepError "mingw32")) + (pkgs."kernel32" or (errorHandler.sysDepError "kernel32")) + (pkgs."advapi32" or (errorHandler.sysDepError "advapi32")) + (pkgs."mingwex" or (errorHandler.sysDepError "mingwex")) + (pkgs."ws2_32" or (errorHandler.sysDepError "ws2_32")) + (pkgs."shlwapi" or (errorHandler.sysDepError "shlwapi")) + (pkgs."ole32" or (errorHandler.sysDepError "ole32")) + (pkgs."rpcrt4" or (errorHandler.sysDepError "rpcrt4")) + (pkgs."ntdll" or (errorHandler.sysDepError "ntdll")) + ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-platform.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-platform.nix new file mode 100644 index 0000000000..9a99aece09 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-platform.nix @@ -0,0 +1,31 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "ghc-platform"; version = "0.1.0.0"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "ghc-devs@haskell.org"; + author = "Rodrigo Mesquita"; + homepage = ""; + url = ""; + synopsis = "Platform information used by GHC and friends"; + description = ""; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-prim.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-prim.nix new file mode 100644 index 0000000000..546c5704d0 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc-prim.nix @@ -0,0 +1,47 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = { need-atomic = false; }; + package = { + specVersion = "2.2"; + identifier = { name = "ghc-prim"; version = "0.11.0"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "libraries@haskell.org"; + author = ""; + homepage = ""; + url = ""; + synopsis = "GHC primitives"; + description = "This package contains the primitive types and operations supplied by GHC.\nIt is an internal package, only for the use of GHC developers.\nGHC users should not use it! If you do use it then expect\nbreaking changes at any time without warning. You should prefer\nto import @GHC.Exts@ from the @base@ package instead."; + buildType = "Custom"; + setup-depends = [ + (hsPkgs.pkgsBuildBuild.base or (pkgs.pkgsBuildBuild.base or (errorHandler.setupDepError "base"))) + (hsPkgs.pkgsBuildBuild.process or (pkgs.pkgsBuildBuild.process or (errorHandler.setupDepError "process"))) + (hsPkgs.pkgsBuildBuild.filepath or (pkgs.pkgsBuildBuild.filepath or (errorHandler.setupDepError "filepath"))) + (hsPkgs.pkgsBuildBuild.directory or (pkgs.pkgsBuildBuild.directory or (errorHandler.setupDepError "directory"))) + (hsPkgs.pkgsBuildBuild.Cabal or (pkgs.pkgsBuildBuild.Cabal or (errorHandler.setupDepError "Cabal"))) + ]; + }; + components = { + "library" = { + depends = [ (hsPkgs."rts" or (errorHandler.buildDepError "rts")) ]; + libs = (pkgs.lib.optionals (system.isWindows) [ + (pkgs."user32" or (errorHandler.sysDepError "user32")) + (pkgs."mingw32" or (errorHandler.sysDepError "mingw32")) + (pkgs."mingwex" or (errorHandler.sysDepError "mingwex")) + (pkgs."ucrt" or (errorHandler.sysDepError "ucrt")) + ] ++ pkgs.lib.optionals (system.isLinux) [ + (pkgs."c" or (errorHandler.sysDepError "c")) + (pkgs."m" or (errorHandler.sysDepError "m")) + ]) ++ pkgs.lib.optional (flags.need-atomic) (pkgs."atomic" or (errorHandler.sysDepError "atomic")); + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc.nix new file mode 100644 index 0000000000..177131f35c --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghc.nix @@ -0,0 +1,81 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = { + internal-interpreter = false; + dynamic-system-linker = true; + build-tool-depends = true; + with-libzstd = false; + static-libzstd = false; + hadrian-stage0 = false; + }; + package = { + specVersion = "2.2"; + identifier = { name = "ghc"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "glasgow-haskell-users@haskell.org"; + author = "The GHC Team"; + homepage = "http://www.haskell.org/ghc/"; + url = ""; + synopsis = "The GHC API"; + description = "GHC's functionality can be useful for more things than just\ncompiling Haskell programs. Important use cases are programs\nthat analyse (and perhaps transform) Haskell code. Others\ninclude loading Haskell code dynamically in a GHCi-like manner.\nFor this reason, a lot of GHC's functionality is made available\nthrough this package.\n\nSee \nfor more information.\n\n__This package is not PVP-compliant.__\n\nThis package directly exposes GHC internals, which can and do change with\nevery release."; + buildType = "Custom"; + setup-depends = [ + (hsPkgs.pkgsBuildBuild.base or (pkgs.pkgsBuildBuild.base or (errorHandler.setupDepError "base"))) + (hsPkgs.pkgsBuildBuild.Cabal or (pkgs.pkgsBuildBuild.Cabal or (errorHandler.setupDepError "Cabal"))) + (hsPkgs.pkgsBuildBuild.directory or (pkgs.pkgsBuildBuild.directory or (errorHandler.setupDepError "directory"))) + (hsPkgs.pkgsBuildBuild.process or (pkgs.pkgsBuildBuild.process or (errorHandler.setupDepError "process"))) + (hsPkgs.pkgsBuildBuild.filepath or (pkgs.pkgsBuildBuild.filepath or (errorHandler.setupDepError "filepath"))) + (hsPkgs.pkgsBuildBuild.containers or (pkgs.pkgsBuildBuild.containers or (errorHandler.setupDepError "containers"))) + ]; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."directory" or (errorHandler.buildDepError "directory")) + (hsPkgs."process" or (errorHandler.buildDepError "process")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."binary" or (errorHandler.buildDepError "binary")) + (hsPkgs."time" or (errorHandler.buildDepError "time")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."array" or (errorHandler.buildDepError "array")) + (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) + (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell")) + (hsPkgs."hpc" or (errorHandler.buildDepError "hpc")) + (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) + (hsPkgs."exceptions" or (errorHandler.buildDepError "exceptions")) + (hsPkgs."semaphore-compat" or (errorHandler.buildDepError "semaphore-compat")) + (hsPkgs."stm" or (errorHandler.buildDepError "stm")) + (hsPkgs."ghc-boot" or (errorHandler.buildDepError "ghc-boot")) + (hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap")) + (hsPkgs."ghci" or (errorHandler.buildDepError "ghci")) + ] ++ (if system.isWindows + then [ (hsPkgs."Win32" or (errorHandler.buildDepError "Win32")) ] + else [ (hsPkgs."unix" or (errorHandler.buildDepError "unix")) ]); + libs = pkgs.lib.optionals (flags.with-libzstd) (if flags.static-libzstd + then pkgs.lib.optional (!system.isOsx) (pkgs.":libzstd.a" or (errorHandler.sysDepError ":libzstd.a")) + else [ (pkgs."zstd" or (errorHandler.sysDepError "zstd")) ]); + build-tools = pkgs.lib.optionals (flags.build-tool-depends) [ + (hsPkgs.pkgsBuildBuild.alex.components.exes.alex or (pkgs.pkgsBuildBuild.alex or (errorHandler.buildToolDepError "alex:alex"))) + (hsPkgs.pkgsBuildBuild.happy.components.exes.happy or (pkgs.pkgsBuildBuild.happy or (errorHandler.buildToolDepError "happy:happy"))) + (hsPkgs.pkgsBuildBuild.genprimopcode.components.exes.genprimopcode or (pkgs.pkgsBuildBuild.genprimopcode or (errorHandler.buildToolDepError "genprimopcode:genprimopcode"))) + (hsPkgs.pkgsBuildBuild.deriveConstants.components.exes.deriveConstants or (pkgs.pkgsBuildBuild.deriveConstants or (errorHandler.buildToolDepError "deriveConstants:deriveConstants"))) + ]; + buildable = if flags.with-libzstd + then if flags.static-libzstd + then if system.isOsx then false else true + else true + else true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghci.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghci.nix new file mode 100644 index 0000000000..d709146815 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/ghci.nix @@ -0,0 +1,45 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = { internal-interpreter = false; }; + package = { + specVersion = "1.10"; + identifier = { name = "ghci"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "ghc-devs@haskell.org"; + author = ""; + homepage = ""; + url = ""; + synopsis = "The library supporting GHC's interactive interpreter"; + description = "This library offers interfaces which mediate interactions between the\n@ghci@ interactive shell and @iserv@, GHC's out-of-process interpreter\nbackend."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."rts" or (errorHandler.buildDepError "rts")) + (hsPkgs."array" or (errorHandler.buildDepError "array")) + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + (hsPkgs."binary" or (errorHandler.buildDepError "binary")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) + (hsPkgs."ghc-boot" or (errorHandler.buildDepError "ghc-boot")) + (hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap")) + (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell")) + (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) + ] ++ pkgs.lib.optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix")); + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/hpc.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/hpc.nix new file mode 100644 index 0000000000..f27cdbe473 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/hpc.nix @@ -0,0 +1,38 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "2.2"; + identifier = { name = "hpc"; version = "0.7.0.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "ghc-devs@haskell.org"; + author = "Andy Gill"; + homepage = ""; + url = ""; + synopsis = "Code Coverage Library for Haskell"; + description = "This package provides the code coverage library for Haskell.\n\nSee for more\ninformation."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."directory" or (errorHandler.buildDepError "directory")) + (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) + (hsPkgs."time" or (errorHandler.buildDepError "time")) + ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/integer-gmp.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/integer-gmp.nix new file mode 100644 index 0000000000..8594679a59 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/integer-gmp.nix @@ -0,0 +1,36 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "2.0"; + identifier = { name = "integer-gmp"; version = "1.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "hvr@gnu.org"; + author = "Herbert Valerio Riedel"; + homepage = "https://www.haskell.org/ghc/"; + url = ""; + synopsis = "Integer library based on GMP"; + description = "This package used to provide an implementation of the standard 'Integer'\ntype based on the\n.\n\nIt is now deprecated in favor of the 'ghc-bignum' package.\n\nIts purpose is to provide backward compatibility for codes directly\ndepending on the `integer-gmp` package."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + (hsPkgs."ghc-bignum" or (errorHandler.buildDepError "ghc-bignum")) + (hsPkgs."ghc-internal" or (errorHandler.buildDepError "ghc-internal")) + ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/iserv.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/iserv.nix new file mode 100644 index 0000000000..07aef2d361 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/iserv.nix @@ -0,0 +1,41 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "1.10"; + identifier = { name = "iserv"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = "XXX"; + maintainer = "XXX"; + author = "XXX"; + homepage = ""; + url = ""; + synopsis = "iserv allows GHC to delegate Template Haskell computations"; + description = "GHC can be provided with a path to the iserv binary with\n@-pgmi=/path/to/iserv-bin@, and will in combination with\n@-fexternal-interpreter@, compile Template Haskell though the\n@iserv-bin@ delegate. This is very similar to how ghcjs has been\ncompiling Template Haskell, by spawning a separate delegate (so\ncalled runner on the javascript vm) and evaluating the splices\nthere."; + buildType = "Simple"; + }; + components = { + exes = { + "iserv" = { + depends = [ + (hsPkgs."array" or (errorHandler.buildDepError "array")) + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."binary" or (errorHandler.buildDepError "binary")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."ghci" or (errorHandler.buildDepError "ghci")) + ] ++ pkgs.lib.optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix")); + buildable = true; + }; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/remote-iserv.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/remote-iserv.nix new file mode 100644 index 0000000000..69711f6e83 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/remote-iserv.nix @@ -0,0 +1,36 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "1.10"; + identifier = { name = "remote-iserv"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = "XXX"; + maintainer = "Moritz Angermann "; + author = "Moritz Angermann "; + homepage = ""; + url = ""; + synopsis = "iserv allows GHC to delegate Template Haskell computations"; + description = "This is a very simple remote runner for iserv, to be used together\nwith iserv-proxy. The foundamental idea is that this this wrapper\nstarts running the GHCi server on a given port to which iserv-proxy will\nthen connect."; + buildType = "Simple"; + }; + components = { + exes = { + "remote-iserv" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."ghci" or (errorHandler.buildDepError "ghci")) + ]; + buildable = true; + }; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/template-haskell.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/template-haskell.nix new file mode 100644 index 0000000000..b975251e7e --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm-aarch64/template-haskell.nix @@ -0,0 +1,36 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "1.10"; + identifier = { name = "template-haskell"; version = "2.22.0.0"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "libraries@haskell.org"; + author = ""; + homepage = ""; + url = ""; + synopsis = "Support library for Template Haskell"; + description = "This package provides modules containing facilities for manipulating\nHaskell source code using Template Haskell.\n\nSee for more\ninformation."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + (hsPkgs."pretty" or (errorHandler.buildDepError "pretty")) + ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/base.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/base.nix new file mode 100644 index 0000000000..6587385f50 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/base.nix @@ -0,0 +1,34 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "base"; version = "4.20.0.0"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "Core Libraries Committee "; + author = ""; + homepage = ""; + url = ""; + synopsis = "Core data structures and operations"; + description = "Haskell's base library provides, among other things, core types (e.g. [Bool](\"Data.Bool\") and [Int](\"Data.Int\")),\ndata structures (e.g. [List](\"Data.List\"), [Tuple](\"Data.Tuple\") and [Maybe](\"Data.Maybe\")),\nthe [Exception](\"Control.Exception\") mechanism, and the [IO](\"System.IO\") & [Concurrency](\"Control.Concurrent\") operations.\nThe \"Prelude\" module, which is imported by default, exposes a curated set of types and functions from other modules.\n\nOther data structures like [Map](https://hackage.haskell.org/package/containers/docs/Data-Map.html),\n[Set](https://hackage.haskell.org/package/containers/docs/Data-Set.html) are available in the [containers](https://hackage.haskell.org/package/containers) library.\nTo work with textual data, use the [text](https://hackage.haskell.org/package/text/docs/Data-Text.html) library."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."ghc-internal" or (errorHandler.buildDepError "ghc-internal")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/deriveConstants.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/deriveConstants.nix new file mode 100644 index 0000000000..135cdd02f6 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/deriveConstants.nix @@ -0,0 +1,39 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "1.10"; + identifier = { name = "deriveConstants"; version = "0.1"; }; + license = "BSD-3-Clause"; + copyright = "XXX"; + maintainer = "XXX"; + author = "XXX"; + homepage = ""; + url = ""; + synopsis = "Derive header files containing various constants for the GHC build process"; + description = "This utility is responsible for generating a number of C header files\nneeded during the GHC build process. See @rts/include/ghc.mk@ in the GHC\nbuild system for details."; + buildType = "Simple"; + }; + components = { + exes = { + "deriveConstants" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."process" or (errorHandler.buildDepError "process")) + (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) + (hsPkgs."directory" or (errorHandler.buildDepError "directory")) + ]; + buildable = true; + }; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/genprimopcode.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/genprimopcode.nix new file mode 100644 index 0000000000..49bbe516ba --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/genprimopcode.nix @@ -0,0 +1,40 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = { build-tool-depends = true; }; + package = { + specVersion = "2.0"; + identifier = { name = "genprimopcode"; version = "0.1"; }; + license = "BSD-3-Clause"; + copyright = "XXX"; + maintainer = "XXX"; + author = "XXX"; + homepage = ""; + url = ""; + synopsis = "Generates various files implementing GHC's primitive operations."; + description = "This utility reads a textual description of GHC's primitive operations\n(@primops.txt.pp@) and produces a number of outputs. These include,\n\n* the @GHC.Prim@ module included in the @ghc-prim@ package.\n* the @GHC.PrimopWrappers@ module included in the @ghc-prim@ package.\n* an LaTeX document describing the primitive operations."; + buildType = "Simple"; + }; + components = { + exes = { + "genprimopcode" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."array" or (errorHandler.buildDepError "array")) + ]; + build-tools = pkgs.lib.optionals (flags.build-tool-depends) [ + (hsPkgs.pkgsBuildBuild.alex.components.exes.alex or (pkgs.pkgsBuildBuild.alex or (errorHandler.buildToolDepError "alex:alex"))) + (hsPkgs.pkgsBuildBuild.happy.components.exes.happy or (pkgs.pkgsBuildBuild.happy or (errorHandler.buildToolDepError "happy:happy"))) + ]; + buildable = true; + }; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-bignum.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-bignum.nix new file mode 100644 index 0000000000..46af6e0e9f --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-bignum.nix @@ -0,0 +1,37 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = { native = false; ffi = false; gmp = false; check = false; }; + package = { + specVersion = "2.0"; + identifier = { name = "ghc-bignum"; version = "1.3"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "libraries@haskell.org"; + author = "Sylvain Henry"; + homepage = ""; + url = ""; + synopsis = "GHC BigNum library"; + description = "This package provides the low-level implementation of the standard\n'BigNat', 'Natural' and 'Integer' types."; + buildType = "Configure"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + ]; + buildable = (if !flags.native && !flags.gmp && !flags.ffi + then false + else true) && (if flags.native && (flags.gmp || flags.ffi) + then false + else true) && (if flags.gmp && flags.ffi then false else true); + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-boot.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-boot.nix new file mode 100644 index 0000000000..15e674919f --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-boot.nix @@ -0,0 +1,47 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "ghc-boot"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "ghc-devs@haskell.org"; + author = ""; + homepage = ""; + url = ""; + synopsis = "Shared functionality between GHC and its boot libraries"; + description = "This library is shared between GHC, ghc-pkg, and other boot\nlibraries.\n.\nA note about \"GHC.Unit.Database\": it only deals with the subset of\nthe package database that the compiler cares about: modules\npaths etc and not package metadata like description, authors\netc. It is thus not a library interface to ghc-pkg and is *not*\nsuitable for modifying GHC package databases.\n.\nThe package database format and this library are constructed in\nsuch a way that while ghc-pkg depends on Cabal, the GHC library\nand program do not have to depend on Cabal."; + buildType = "Custom"; + setup-depends = [ + (hsPkgs.pkgsBuildBuild.base or (pkgs.pkgsBuildBuild.base or (errorHandler.setupDepError "base"))) + (hsPkgs.pkgsBuildBuild.Cabal or (pkgs.pkgsBuildBuild.Cabal or (errorHandler.setupDepError "Cabal"))) + (hsPkgs.pkgsBuildBuild.directory or (pkgs.pkgsBuildBuild.directory or (errorHandler.setupDepError "directory"))) + (hsPkgs.pkgsBuildBuild.filepath or (pkgs.pkgsBuildBuild.filepath or (errorHandler.setupDepError "filepath"))) + ]; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."binary" or (errorHandler.buildDepError "binary")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."directory" or (errorHandler.buildDepError "directory")) + (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."ghc-platform" or (errorHandler.buildDepError "ghc-platform")) + (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th")) + ] ++ pkgs.lib.optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix")); + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-heap.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-heap.nix new file mode 100644 index 0000000000..4eeb9a331b --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-heap.nix @@ -0,0 +1,36 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "ghc-heap"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "libraries@haskell.org"; + author = ""; + homepage = ""; + url = ""; + synopsis = "Functions for walking GHC's heap"; + description = "This package provides functions for walking the GHC heap data structures\nand retrieving information about those data structures."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + (hsPkgs."rts" or (errorHandler.buildDepError "rts")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + ] ++ pkgs.lib.optional (compiler.isGhc && compiler.version.ge "9.9") (hsPkgs."ghc-internal" or (errorHandler.buildDepError "ghc-internal")); + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-internal.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-internal.nix new file mode 100644 index 0000000000..fe7b871e5a --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-internal.nix @@ -0,0 +1,49 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "ghc-internal"; version = "9.1001.0"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "Core Libraries Committee "; + author = ""; + homepage = ""; + url = ""; + synopsis = "Basic libraries"; + description = "This package contains the Standard Haskell \"Prelude\" and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities."; + buildType = "Configure"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."rts" or (errorHandler.buildDepError "rts")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + (hsPkgs."ghc-bignum" or (errorHandler.buildDepError "ghc-bignum")) + ]; + libs = pkgs.lib.optionals (system.isWindows) [ + (pkgs."wsock32" or (errorHandler.sysDepError "wsock32")) + (pkgs."user32" or (errorHandler.sysDepError "user32")) + (pkgs."shell32" or (errorHandler.sysDepError "shell32")) + (pkgs."mingw32" or (errorHandler.sysDepError "mingw32")) + (pkgs."kernel32" or (errorHandler.sysDepError "kernel32")) + (pkgs."advapi32" or (errorHandler.sysDepError "advapi32")) + (pkgs."mingwex" or (errorHandler.sysDepError "mingwex")) + (pkgs."ws2_32" or (errorHandler.sysDepError "ws2_32")) + (pkgs."shlwapi" or (errorHandler.sysDepError "shlwapi")) + (pkgs."ole32" or (errorHandler.sysDepError "ole32")) + (pkgs."rpcrt4" or (errorHandler.sysDepError "rpcrt4")) + (pkgs."ntdll" or (errorHandler.sysDepError "ntdll")) + ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-platform.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-platform.nix new file mode 100644 index 0000000000..9a99aece09 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-platform.nix @@ -0,0 +1,31 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "ghc-platform"; version = "0.1.0.0"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "ghc-devs@haskell.org"; + author = "Rodrigo Mesquita"; + homepage = ""; + url = ""; + synopsis = "Platform information used by GHC and friends"; + description = ""; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-prim.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-prim.nix new file mode 100644 index 0000000000..546c5704d0 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc-prim.nix @@ -0,0 +1,47 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = { need-atomic = false; }; + package = { + specVersion = "2.2"; + identifier = { name = "ghc-prim"; version = "0.11.0"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "libraries@haskell.org"; + author = ""; + homepage = ""; + url = ""; + synopsis = "GHC primitives"; + description = "This package contains the primitive types and operations supplied by GHC.\nIt is an internal package, only for the use of GHC developers.\nGHC users should not use it! If you do use it then expect\nbreaking changes at any time without warning. You should prefer\nto import @GHC.Exts@ from the @base@ package instead."; + buildType = "Custom"; + setup-depends = [ + (hsPkgs.pkgsBuildBuild.base or (pkgs.pkgsBuildBuild.base or (errorHandler.setupDepError "base"))) + (hsPkgs.pkgsBuildBuild.process or (pkgs.pkgsBuildBuild.process or (errorHandler.setupDepError "process"))) + (hsPkgs.pkgsBuildBuild.filepath or (pkgs.pkgsBuildBuild.filepath or (errorHandler.setupDepError "filepath"))) + (hsPkgs.pkgsBuildBuild.directory or (pkgs.pkgsBuildBuild.directory or (errorHandler.setupDepError "directory"))) + (hsPkgs.pkgsBuildBuild.Cabal or (pkgs.pkgsBuildBuild.Cabal or (errorHandler.setupDepError "Cabal"))) + ]; + }; + components = { + "library" = { + depends = [ (hsPkgs."rts" or (errorHandler.buildDepError "rts")) ]; + libs = (pkgs.lib.optionals (system.isWindows) [ + (pkgs."user32" or (errorHandler.sysDepError "user32")) + (pkgs."mingw32" or (errorHandler.sysDepError "mingw32")) + (pkgs."mingwex" or (errorHandler.sysDepError "mingwex")) + (pkgs."ucrt" or (errorHandler.sysDepError "ucrt")) + ] ++ pkgs.lib.optionals (system.isLinux) [ + (pkgs."c" or (errorHandler.sysDepError "c")) + (pkgs."m" or (errorHandler.sysDepError "m")) + ]) ++ pkgs.lib.optional (flags.need-atomic) (pkgs."atomic" or (errorHandler.sysDepError "atomic")); + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc.nix new file mode 100644 index 0000000000..177131f35c --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghc.nix @@ -0,0 +1,81 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = { + internal-interpreter = false; + dynamic-system-linker = true; + build-tool-depends = true; + with-libzstd = false; + static-libzstd = false; + hadrian-stage0 = false; + }; + package = { + specVersion = "2.2"; + identifier = { name = "ghc"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "glasgow-haskell-users@haskell.org"; + author = "The GHC Team"; + homepage = "http://www.haskell.org/ghc/"; + url = ""; + synopsis = "The GHC API"; + description = "GHC's functionality can be useful for more things than just\ncompiling Haskell programs. Important use cases are programs\nthat analyse (and perhaps transform) Haskell code. Others\ninclude loading Haskell code dynamically in a GHCi-like manner.\nFor this reason, a lot of GHC's functionality is made available\nthrough this package.\n\nSee \nfor more information.\n\n__This package is not PVP-compliant.__\n\nThis package directly exposes GHC internals, which can and do change with\nevery release."; + buildType = "Custom"; + setup-depends = [ + (hsPkgs.pkgsBuildBuild.base or (pkgs.pkgsBuildBuild.base or (errorHandler.setupDepError "base"))) + (hsPkgs.pkgsBuildBuild.Cabal or (pkgs.pkgsBuildBuild.Cabal or (errorHandler.setupDepError "Cabal"))) + (hsPkgs.pkgsBuildBuild.directory or (pkgs.pkgsBuildBuild.directory or (errorHandler.setupDepError "directory"))) + (hsPkgs.pkgsBuildBuild.process or (pkgs.pkgsBuildBuild.process or (errorHandler.setupDepError "process"))) + (hsPkgs.pkgsBuildBuild.filepath or (pkgs.pkgsBuildBuild.filepath or (errorHandler.setupDepError "filepath"))) + (hsPkgs.pkgsBuildBuild.containers or (pkgs.pkgsBuildBuild.containers or (errorHandler.setupDepError "containers"))) + ]; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."directory" or (errorHandler.buildDepError "directory")) + (hsPkgs."process" or (errorHandler.buildDepError "process")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."binary" or (errorHandler.buildDepError "binary")) + (hsPkgs."time" or (errorHandler.buildDepError "time")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."array" or (errorHandler.buildDepError "array")) + (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) + (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell")) + (hsPkgs."hpc" or (errorHandler.buildDepError "hpc")) + (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) + (hsPkgs."exceptions" or (errorHandler.buildDepError "exceptions")) + (hsPkgs."semaphore-compat" or (errorHandler.buildDepError "semaphore-compat")) + (hsPkgs."stm" or (errorHandler.buildDepError "stm")) + (hsPkgs."ghc-boot" or (errorHandler.buildDepError "ghc-boot")) + (hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap")) + (hsPkgs."ghci" or (errorHandler.buildDepError "ghci")) + ] ++ (if system.isWindows + then [ (hsPkgs."Win32" or (errorHandler.buildDepError "Win32")) ] + else [ (hsPkgs."unix" or (errorHandler.buildDepError "unix")) ]); + libs = pkgs.lib.optionals (flags.with-libzstd) (if flags.static-libzstd + then pkgs.lib.optional (!system.isOsx) (pkgs.":libzstd.a" or (errorHandler.sysDepError ":libzstd.a")) + else [ (pkgs."zstd" or (errorHandler.sysDepError "zstd")) ]); + build-tools = pkgs.lib.optionals (flags.build-tool-depends) [ + (hsPkgs.pkgsBuildBuild.alex.components.exes.alex or (pkgs.pkgsBuildBuild.alex or (errorHandler.buildToolDepError "alex:alex"))) + (hsPkgs.pkgsBuildBuild.happy.components.exes.happy or (pkgs.pkgsBuildBuild.happy or (errorHandler.buildToolDepError "happy:happy"))) + (hsPkgs.pkgsBuildBuild.genprimopcode.components.exes.genprimopcode or (pkgs.pkgsBuildBuild.genprimopcode or (errorHandler.buildToolDepError "genprimopcode:genprimopcode"))) + (hsPkgs.pkgsBuildBuild.deriveConstants.components.exes.deriveConstants or (pkgs.pkgsBuildBuild.deriveConstants or (errorHandler.buildToolDepError "deriveConstants:deriveConstants"))) + ]; + buildable = if flags.with-libzstd + then if flags.static-libzstd + then if system.isOsx then false else true + else true + else true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/ghci.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghci.nix new file mode 100644 index 0000000000..d709146815 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/ghci.nix @@ -0,0 +1,45 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = { internal-interpreter = false; }; + package = { + specVersion = "1.10"; + identifier = { name = "ghci"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "ghc-devs@haskell.org"; + author = ""; + homepage = ""; + url = ""; + synopsis = "The library supporting GHC's interactive interpreter"; + description = "This library offers interfaces which mediate interactions between the\n@ghci@ interactive shell and @iserv@, GHC's out-of-process interpreter\nbackend."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."rts" or (errorHandler.buildDepError "rts")) + (hsPkgs."array" or (errorHandler.buildDepError "array")) + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + (hsPkgs."binary" or (errorHandler.buildDepError "binary")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) + (hsPkgs."ghc-boot" or (errorHandler.buildDepError "ghc-boot")) + (hsPkgs."ghc-heap" or (errorHandler.buildDepError "ghc-heap")) + (hsPkgs."template-haskell" or (errorHandler.buildDepError "template-haskell")) + (hsPkgs."transformers" or (errorHandler.buildDepError "transformers")) + ] ++ pkgs.lib.optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix")); + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/hpc.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/hpc.nix new file mode 100644 index 0000000000..f27cdbe473 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/hpc.nix @@ -0,0 +1,38 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "2.2"; + identifier = { name = "hpc"; version = "0.7.0.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "ghc-devs@haskell.org"; + author = "Andy Gill"; + homepage = ""; + url = ""; + synopsis = "Code Coverage Library for Haskell"; + description = "This package provides the code coverage library for Haskell.\n\nSee for more\ninformation."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."directory" or (errorHandler.buildDepError "directory")) + (hsPkgs."filepath" or (errorHandler.buildDepError "filepath")) + (hsPkgs."time" or (errorHandler.buildDepError "time")) + ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/integer-gmp.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/integer-gmp.nix new file mode 100644 index 0000000000..8594679a59 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/integer-gmp.nix @@ -0,0 +1,36 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "2.0"; + identifier = { name = "integer-gmp"; version = "1.1"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "hvr@gnu.org"; + author = "Herbert Valerio Riedel"; + homepage = "https://www.haskell.org/ghc/"; + url = ""; + synopsis = "Integer library based on GMP"; + description = "This package used to provide an implementation of the standard 'Integer'\ntype based on the\n.\n\nIt is now deprecated in favor of the 'ghc-bignum' package.\n\nIts purpose is to provide backward compatibility for codes directly\ndepending on the `integer-gmp` package."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + (hsPkgs."ghc-bignum" or (errorHandler.buildDepError "ghc-bignum")) + (hsPkgs."ghc-internal" or (errorHandler.buildDepError "ghc-internal")) + ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/iserv.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/iserv.nix new file mode 100644 index 0000000000..07aef2d361 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/iserv.nix @@ -0,0 +1,41 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "1.10"; + identifier = { name = "iserv"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = "XXX"; + maintainer = "XXX"; + author = "XXX"; + homepage = ""; + url = ""; + synopsis = "iserv allows GHC to delegate Template Haskell computations"; + description = "GHC can be provided with a path to the iserv binary with\n@-pgmi=/path/to/iserv-bin@, and will in combination with\n@-fexternal-interpreter@, compile Template Haskell though the\n@iserv-bin@ delegate. This is very similar to how ghcjs has been\ncompiling Template Haskell, by spawning a separate delegate (so\ncalled runner on the javascript vm) and evaluating the splices\nthere."; + buildType = "Simple"; + }; + components = { + exes = { + "iserv" = { + depends = [ + (hsPkgs."array" or (errorHandler.buildDepError "array")) + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."binary" or (errorHandler.buildDepError "binary")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."containers" or (errorHandler.buildDepError "containers")) + (hsPkgs."deepseq" or (errorHandler.buildDepError "deepseq")) + (hsPkgs."ghci" or (errorHandler.buildDepError "ghci")) + ] ++ pkgs.lib.optional (!system.isWindows) (hsPkgs."unix" or (errorHandler.buildDepError "unix")); + buildable = true; + }; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/remote-iserv.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/remote-iserv.nix new file mode 100644 index 0000000000..69711f6e83 --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/remote-iserv.nix @@ -0,0 +1,36 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "1.10"; + identifier = { name = "remote-iserv"; version = "9.10.1"; }; + license = "BSD-3-Clause"; + copyright = "XXX"; + maintainer = "Moritz Angermann "; + author = "Moritz Angermann "; + homepage = ""; + url = ""; + synopsis = "iserv allows GHC to delegate Template Haskell computations"; + description = "This is a very simple remote runner for iserv, to be used together\nwith iserv-proxy. The foundamental idea is that this this wrapper\nstarts running the GHCi server on a given port to which iserv-proxy will\nthen connect."; + buildType = "Simple"; + }; + components = { + exes = { + "remote-iserv" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."ghci" or (errorHandler.buildDepError "ghci")) + ]; + buildable = true; + }; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } diff --git a/materialized/ghc-boot-packages-nix/ghc9101llvm/template-haskell.nix b/materialized/ghc-boot-packages-nix/ghc9101llvm/template-haskell.nix new file mode 100644 index 0000000000..b975251e7e --- /dev/null +++ b/materialized/ghc-boot-packages-nix/ghc9101llvm/template-haskell.nix @@ -0,0 +1,36 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "1.10"; + identifier = { name = "template-haskell"; version = "2.22.0.0"; }; + license = "BSD-3-Clause"; + copyright = ""; + maintainer = "libraries@haskell.org"; + author = ""; + homepage = ""; + url = ""; + synopsis = "Support library for Template Haskell"; + description = "This package provides modules containing facilities for manipulating\nHaskell source code using Template Haskell.\n\nSee for more\ninformation."; + buildType = "Simple"; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."ghc-boot-th" or (errorHandler.buildDepError "ghc-boot-th")) + (hsPkgs."ghc-prim" or (errorHandler.buildDepError "ghc-prim")) + (hsPkgs."pretty" or (errorHandler.buildDepError "pretty")) + ]; + buildable = true; + }; + }; + } // rec { src = pkgs.lib.mkDefault ./.; } From 852d6c7f9701164228c30c730c9b027958b76d0d Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 20 Sep 2024 09:54:50 +1200 Subject: [PATCH 055/109] Disable haskell-gi-overloading (it's too slow to build) --- test/gi-gtk/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/gi-gtk/default.nix b/test/gi-gtk/default.nix index 7567264cff..aebd4c552b 100644 --- a/test/gi-gtk/default.nix +++ b/test/gi-gtk/default.nix @@ -8,6 +8,8 @@ let inherit compiler-nix-name evalPackages; src = testSrc "gi-gtk"; cabalProjectLocal = builtins.readFile ../cabal.project.local + '' + -- The overloading feature of haskell-gi makes build times very long + constraints: haskell-gi-overloading ==0.0 if impl(ghc >=9.11) constraints: filepath source ''; From 2a3d7f2443eb06b72bce3bd5e7277e4aa465c380 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 20 Sep 2024 10:14:49 +1200 Subject: [PATCH 056/109] Update patch upper bound --- overlays/bootstrap.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 2b816de04d..0125b188f6 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -126,7 +126,7 @@ in { ++ onWindows (fromUntil "9.6.3" "9.11" ./patches/ghc/ghc-9.8-hadrian-win-cross.patch) # support R_X86_64_PC64 (ELF constant 24) - IMAGE_REL_AMD64_SREL32 (PE constant 14), which seems to appear with 9.6 more frequently, and # results in "unhandled PEi386 relocation type 14". - ++ onWindows (fromUntil "9.4.1" "9.12" ./patches/ghc/win-reloc-x86_64-pc64.patch) + ++ onWindows (fromUntil "9.4.1" "9.11" ./patches/ghc/win-reloc-x86_64-pc64.patch) # ++ onWindows (fromUntil "9.4.1" "9.10" ./patches/ghc/Win32-depends-on-mingwex.patch) # if the host system provides ucrt (e.g. wine with ucrtbase.dll), we may end up linking against symbols from ucrtbase, instead of msvcrt, # thus leading to broken code. E.g. the handles we create and hand to wine will all be busted, because they come from one and are processed From 26e6735b58c5f6d43cce413f05800bb9096257c6 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 20 Sep 2024 13:00:21 +1200 Subject: [PATCH 057/109] ifdLevel 2 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index ced3c36cab..62ae19c1e0 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 1; + ifdLevel = 2; runningHydraEvalTest = false; compiler = "ghc928"; config = import ./config.nix; From 663ae4f8e6d7c48c4fc8730c24d816b9968759d9 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 20 Sep 2024 23:18:30 +1200 Subject: [PATCH 058/109] Fixes for GHC HEAD --- lib/call-cabal-project-to-nix.nix | 76 ++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/lib/call-cabal-project-to-nix.nix b/lib/call-cabal-project-to-nix.nix index dde71b0b18..f51b870b9a 100644 --- a/lib/call-cabal-project-to-nix.nix +++ b/lib/call-cabal-project-to-nix.nix @@ -396,6 +396,7 @@ let # GHCJS 8.10 does not have these "Cabal-syntax" "exceptions" + "file-io" "ghc" "ghc-bignum" "ghc-experimental" @@ -422,6 +423,79 @@ let evalPackages.jq ]; } (let varname = x: builtins.replaceStrings ["-"] ["_"] x; in '' + PACKAGE_VERSION=${ghc.version} + ProjectVersion=${ghc.version} + + # The following logic is from GHC m4/setup_project_version.m4 + + # Split PACKAGE_VERSION into (possibly empty) parts + VERSION_MAJOR=`echo $PACKAGE_VERSION | sed 's/^\([^.]*\)\(\.\{0,1\}\(.*\)\)$/\1'/` + VERSION_TMP=`echo $PACKAGE_VERSION | sed 's/^\([^.]*\)\(\.\{0,1\}\(.*\)\)$/\3'/` + VERSION_MINOR=`echo $VERSION_TMP | sed 's/^\([^.]*\)\(\.\{0,1\}\(.*\)\)$/\1'/` + ProjectPatchLevel=`echo $VERSION_TMP | sed 's/^\([^.]*\)\(\.\{0,1\}\(.*\)\)$/\3'/` + + # Calculate project version as an integer, using 2 digits for minor version + case $VERSION_MINOR in + ?) ProjectVersionInt=''${VERSION_MAJOR}0''${VERSION_MINOR} ;; + ??) ProjectVersionInt=''${VERSION_MAJOR}''${VERSION_MINOR} ;; + *) echo bad minor version in $PACKAGE_VERSION; exit 1 ;; + esac + # AC_SUBST([ProjectVersionInt]) + + # The project patchlevel is zero unless stated otherwise + test -z "$ProjectPatchLevel" && ProjectPatchLevel=0 + + # Save split version of ProjectPatchLevel + ProjectPatchLevel1=`echo $ProjectPatchLevel | sed 's/^\([^.]*\)\(\.\{0,1\}\(.*\)\)$/\1/'` + ProjectPatchLevel2=`echo $ProjectPatchLevel | sed 's/^\([^.]*\)\(\.\{0,1\}\(.*\)\)$/\3/'` + + # The project patchlevel1/2 is zero unless stated otherwise + test -z "$ProjectPatchLevel1" && ProjectPatchLevel1=0 + test -z "$ProjectPatchLevel2" && ProjectPatchLevel2=0 + + # AC_SUBST([ProjectPatchLevel1]) + # AC_SUBST([ProjectPatchLevel2]) + + # Remove dots from the patch level; this allows us to have versions like 6.4.1.20050508 + ProjectPatchLevel=`echo $ProjectPatchLevel | sed 's/\.//'` + + # AC_SUBST([ProjectPatchLevel]) + + # The version of the GHC package changes every day, since the + # patchlevel is the current date. We don't want to force + # recompilation of the entire compiler when this happens, so for + # GHC HEAD we omit the patchlevel from the package version number. + # + # The ProjectPatchLevel1 > 20000000 iff GHC HEAD. If it's for a stable + # release like 7.10.1 or for a release candidate such as 7.10.1.20141224 + # then we don't omit the patchlevel components. + + ProjectVersionMunged="$ProjectVersion" + if test "$ProjectPatchLevel1" -gt 20000000; then + ProjectVersionMunged="''${VERSION_MAJOR}.''${VERSION_MINOR}" + fi + # AC_SUBST([ProjectVersionMunged]) + + # The version used for libraries tightly coupled with GHC (e.g. + # ghc-internal) which need a major version bump for every minor/patchlevel + # GHC version. + # Example: for GHC=9.10.1, ProjectVersionForLib=9.1001 + # + # Just like with project version munged, we don't want to use the + # patchlevel version which changes every day, so if using GHC HEAD, the + # patchlevel = 00. + case $VERSION_MINOR in + ?) ProjectVersionForLibUpperHalf=''${VERSION_MAJOR}.0''${VERSION_MINOR} ;; + ??) ProjectVersionForLibUpperHalf=''${VERSION_MAJOR}.''${VERSION_MINOR} ;; + *) echo bad minor version in $PACKAGE_VERSION; exit 1 ;; + esac + # GHC HEAD uses patch level version > 20000000 + case $ProjectPatchLevel1 in + ?) ProjectVersionForLib=''${ProjectVersionForLibUpperHalf}0''${ProjectPatchLevel1} ;; + ??) ProjectVersionForLib=''${ProjectVersionForLibUpperHalf}''${ProjectPatchLevel1} ;; + *) ProjectVersionForLib=''${ProjectVersionForLibUpperHalf}00 + esac + PKGS="" ${pkgs.lib.concatStrings (builtins.map (name: '' @@ -441,7 +515,7 @@ let fi if [[ "$cabal_file" != "" ]]; then fixed_cabal_file=$(mktemp) - cat $cabal_file | sed -e 's/@ProjectVersionMunged@/${ghc.version}/g' -e 's/default: *@[A-Za-z0-9]*@/default: False/g' -e 's/@Suffix@//g' > $fixed_cabal_file + cat $cabal_file | sed -e "s/@ProjectVersionMunged@/$ProjectVersionMunged/g" -e "s/@ProjectVersionForLib@/$ProjectVersionForLib/g" -e 's/default: *@[A-Za-z0-9]*@/default: False/g' -e 's/@Suffix@//g' > $fixed_cabal_file json_cabal_file=$(mktemp) cabal2json $fixed_cabal_file > $json_cabal_file From 2f22c3135c7e0d3a8ee6c67312c0ee504731a2a9 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Sat, 21 Sep 2024 10:47:25 +1200 Subject: [PATCH 059/109] ifdLevel 3 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 62ae19c1e0..15ee49425d 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 2; + ifdLevel = 3; runningHydraEvalTest = false; compiler = "ghc928"; config = import ./config.nix; From 7600b7ff43807da4141fb99abcf264320a6c762f Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Sat, 21 Sep 2024 22:00:50 +1200 Subject: [PATCH 060/109] Fixes for GHC HEAD --- lib/load-cabal-plan.nix | 3 ++- test/cabal.project.local | 9 ++++++++- test/call-cabal-project-to-nix/default.nix | 13 +++++++++---- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/load-cabal-plan.nix b/lib/load-cabal-plan.nix index 39407838f2..5cab78138d 100644 --- a/lib/load-cabal-plan.nix +++ b/lib/load-cabal-plan.nix @@ -92,7 +92,8 @@ in { } // pkgs.lib.optionalAttrs (p.pkg-src.type or "" == "source-repo") { # Replace the source repository packages with versions created when # parsing the `cabal.project` file. - src = pkgs.lib.lists.elemAt callProjectResults.sourceRepos (pkgs.lib.strings.toInt p.pkg-src.source-repo.location) + "/${p.pkg-src.source-repo.subdir}"; + src = pkgs.lib.lists.elemAt callProjectResults.sourceRepos (pkgs.lib.strings.toInt p.pkg-src.source-repo.location) + + pkgs.lib.optionalString (p.pkg-src.source-repo.subdir != ".") "/${p.pkg-src.source-repo.subdir}"; } // pkgs.lib.optionalAttrs (cabal2nix ? package-description-override && p.pkg-version == cabal2nix.package.identifier.version) { # Use the `.cabal` file from the `Cabal2Nix` if it for the matching # version of the package (the one in the plan). diff --git a/test/cabal.project.local b/test/cabal.project.local index 0ef494c263..3adc2626ba 100644 --- a/test/cabal.project.local +++ b/test/cabal.project.local @@ -14,6 +14,13 @@ allow-newer: hsc2hs:* if impl(ghc >=9.10.1) extra-packages: process +if impl(ghc >=9.11) + source-repository-package + type: git + location: https://github.com/hamishmack/extra.git + tag: 3cced868b7f270acb90b7064d34e2d4c5952ca48 + --sha256: sha256-e2JHNRvkpws18dWmc+RUPWEESX+LV9W0u25dCG2e8ws= + repository head.hackage.ghc.haskell.org url: https://ghc.gitlab.haskell.org/head.hackage/ secure: True @@ -22,7 +29,7 @@ repository head.hackage.ghc.haskell.org f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89 26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d - --sha256: sha256-yyYXGnFwUr6MaUEXz6odRv+IJMCmAZioN5dz3LbY1n4= + --sha256: sha256-Z4NrYC11bsuJp4IPy6cRoFQ03wLAPEaejM9Y52n4EHk= repository ghcjs-overlay url: https://raw.githubusercontent.com/input-output-hk/hackage-overlay-ghcjs/d37efd733666d090bf1c83bf7d5f9cb71b1dacc1 diff --git a/test/call-cabal-project-to-nix/default.nix b/test/call-cabal-project-to-nix/default.nix index 44662853d1..40423c8b07 100644 --- a/test/call-cabal-project-to-nix/default.nix +++ b/test/call-cabal-project-to-nix/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, buildPackages, mkCabalProjectPkgSet, callCabalProjectToNix, importAndFilterProject, recurseIntoAttrs, haskellLib, testSrc, compiler-nix-name, evalPackages }: +{ stdenv, lib, buildPackages, mkCabalProjectPkgSet, callCabalProjectToNix, loadCabalPlan, recurseIntoAttrs, haskellLib, testSrc, compiler-nix-name, evalPackages }: with lib; @@ -15,11 +15,16 @@ let ''; }; pkgSet = mkCabalProjectPkgSet { - plan-pkgs = importAndFilterProject { - inherit (callProjectResults) projectNix sourceRepos src; + plan-pkgs = loadCabalPlan { + inherit callProjectResults; + selectedCompiler = buildPackages.haskell-nix.compiler.${compiler-nix-name}; }; + inherit compiler-nix-name; inherit (callProjectResults) extra-hackages; - modules = [{ inherit evalPackages; }]; + modules = [{ + inherit evalPackages; + compiler.nix-name = compiler-nix-name; + }]; }; packages = pkgSet.config.hsPkgs; From caec44be77d24077d90b08be7deb7ba0c1c2e94b Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 23 Sep 2024 11:49:58 +1200 Subject: [PATCH 061/109] Fix supported-languages for GHC HEAD --- lib/supported-languages.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/supported-languages.nix b/lib/supported-languages.nix index 58748ab6e1..ee5ba8f194 100644 --- a/lib/supported-languages.nix +++ b/lib/supported-languages.nix @@ -308,5 +308,9 @@ evalPackages.writeTextFile { ${pkgs.lib.optionalString (builtins.compareVersions ghc.version "9.11" >=0) '' OrPatterns NoOrPatterns + MultilineStrings + NoMultilineStrings + NamedDefaults + NoNamedDefaults ''}''; } From d55ec23d1bac0364a289305316bbbf312b12300e Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 23 Sep 2024 13:09:20 +1200 Subject: [PATCH 062/109] More fixes for GHC HEAD --- test/cabal-simple/default.nix | 7 +++++-- test/cabal.project.local | 15 +++++---------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/test/cabal-simple/default.nix b/test/cabal-simple/default.nix index 9fd0b7e42a..c98578cfe6 100644 --- a/test/cabal-simple/default.nix +++ b/test/cabal-simple/default.nix @@ -31,8 +31,11 @@ in recurseIntoAttrs { # Used for testing externally with nix-shell (../tests.sh). test-shell = (project.shellFor { - tools = { cabal = { cabalProjectLocal = builtins.readFile ../cabal.project.local; }; }; - withHoogle = !__elem compiler-nix-name ["ghc901" "ghc902" "ghc921" "ghc922" "ghc923" "ghc924" "ghc925" "ghc926" "ghc927"]; + tools = { + cabal = { cabalProjectLocal = builtins.readFile ../cabal.project.local; }; + hoogle = { cabalProjectLocal = builtins.readFile ../cabal.project.local; }; + }; + withHoogle = true; }).overrideAttrs (_: _: { meta = rec { platforms = lib.platforms.all; diff --git a/test/cabal.project.local b/test/cabal.project.local index 3adc2626ba..db3a1f6521 100644 --- a/test/cabal.project.local +++ b/test/cabal.project.local @@ -7,6 +7,8 @@ if impl(ghc>=9.10.1) if impl(ghc > 9.11) allow-newer: *:containers, *:time constraints: base-compat >=0.14.0, aeson >=2.2.1.0 + -- From https://ghc.gitlab.haskell.org/head.hackage/cabal.constraints + constraints: extra ==1.7.14 -- This prevents hsc2hs from causing old versions of packages from being added to plan.json allow-newer: hsc2hs:* @@ -14,13 +16,6 @@ allow-newer: hsc2hs:* if impl(ghc >=9.10.1) extra-packages: process -if impl(ghc >=9.11) - source-repository-package - type: git - location: https://github.com/hamishmack/extra.git - tag: 3cced868b7f270acb90b7064d34e2d4c5952ca48 - --sha256: sha256-e2JHNRvkpws18dWmc+RUPWEESX+LV9W0u25dCG2e8ws= - repository head.hackage.ghc.haskell.org url: https://ghc.gitlab.haskell.org/head.hackage/ secure: True @@ -29,14 +24,14 @@ repository head.hackage.ghc.haskell.org f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89 26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d - --sha256: sha256-Z4NrYC11bsuJp4IPy6cRoFQ03wLAPEaejM9Y52n4EHk= + --sha256: sha256-VFRuIfs3k6nyLVvT445wFRDy+bpcy1LVmLCMg1Oo/uE= repository ghcjs-overlay - url: https://raw.githubusercontent.com/input-output-hk/hackage-overlay-ghcjs/d37efd733666d090bf1c83bf7d5f9cb71b1dacc1 + url: https://raw.githubusercontent.com/input-output-hk/hackage-overlay-ghcjs/01ecad22c0a72e3c5a49262357cf0b062892d87f secure: True root-keys: key-threshold: 0 - --sha256: sha256-6I5mu1QFdvWFm6jWOUMKGm3VHvB7vSqiBjjHgAZJReo= + --sha256: sha256-BjyXYh6oS4wE1iHlY/7as7vkmjxFOXzK6nOYzbzjQrM= if os(ghcjs) extra-packages: ghci From c20f0c015ca01b2d287f4751626946f1867f5c1e Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 23 Sep 2024 17:43:09 +1200 Subject: [PATCH 063/109] Possible fix for plugin failure on aarch64-darwin --- compiler/ghc/default.nix | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index 679a689839..0ff2b458b6 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -362,14 +362,8 @@ let # Sometimes we have to dispatch between the bintools wrapper and the unwrapped # derivation for certain tools depending on the platform. bintoolsFor = { - # GHC needs install_name_tool on all darwin platforms. On aarch64-darwin it is - # part of the bintools wrapper (due to codesigning requirements), but not on - # x86_64-darwin. - install_name_tool = - if stdenv.targetPlatform.isAarch64 - then targetCC.bintools - else targetCC.bintools.bintools; - # Same goes for strip. + # GHC needs install_name_tool on all darwin platforms. + install_name_tool = targetCC.bintools.bintools; strip = # TODO(@sternenseemann): also use wrapper if linker == "bfd" or "gold" if stdenv.targetPlatform.isAarch64 From 7ac6c38d4161378b1fe1b09ec0aec60b92e257e3 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Tue, 24 Sep 2024 09:18:55 +1200 Subject: [PATCH 064/109] ifdLevel 0 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 15ee49425d..333cbfd5b9 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 3; + ifdLevel = 0; runningHydraEvalTest = false; compiler = "ghc928"; config = import ./config.nix; From b0c2fb31a757e472a5718fc8dffe046140292976 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Tue, 24 Sep 2024 09:28:00 +1200 Subject: [PATCH 065/109] ifdLevel 3 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 333cbfd5b9..15ee49425d 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 0; + ifdLevel = 3; runningHydraEvalTest = false; compiler = "ghc928"; config = import ./config.nix; From 7a225bc64476bb0ba2f1b967bd189524286881d9 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Tue, 24 Sep 2024 14:16:34 +1200 Subject: [PATCH 066/109] Add emar and emranlib to ghc js builds --- compiler/ghc/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index 0ff2b458b6..8af70ecc68 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -401,7 +401,9 @@ stdenv.mkDerivation (rec { export CC="${targetCC}/bin/emcc" export CXX="${targetCC}/bin/em++" export LD="${targetCC}/bin/emcc" + export AR="${targetCC}/bin/emar" export NM="${targetCC}/share/emscripten/emnm" + export RANLIB="${targetCC}/bin/emranlib" export EM_CACHE=$(mktemp -d) mv config.sub.ghcjs config.sub '' From de5afd71b584302792a377281f0bf132c9d01ca0 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Tue, 24 Sep 2024 14:17:04 +1200 Subject: [PATCH 067/109] Fix `repo-tar` downloads --- lib/load-cabal-plan.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/load-cabal-plan.nix b/lib/load-cabal-plan.nix index 5cab78138d..a4ac61a05d 100644 --- a/lib/load-cabal-plan.nix +++ b/lib/load-cabal-plan.nix @@ -94,6 +94,11 @@ in { # parsing the `cabal.project` file. src = pkgs.lib.lists.elemAt callProjectResults.sourceRepos (pkgs.lib.strings.toInt p.pkg-src.source-repo.location) + pkgs.lib.optionalString (p.pkg-src.source-repo.subdir != ".") "/${p.pkg-src.source-repo.subdir}"; + } // pkgs.lib.optionalAttrs (p.pkg-src.type or "" == "repo-tar") { + src = pkgs.fetchurl { + url = p.pkg-src.repo.uri + "${pkgs.lib.optionalString (!pkgs.lib.hasSuffix "/" p.pkg-src.repo.uri) "/"}package/${p.pkg-name}-${p.pkg-version}.tar.gz"; + sha256 = p.pkg-src-sha256; + }; } // pkgs.lib.optionalAttrs (cabal2nix ? package-description-override && p.pkg-version == cabal2nix.package.identifier.version) { # Use the `.cabal` file from the `Cabal2Nix` if it for the matching # version of the package (the one in the plan). From 4e41959d88cbcbf3adb97e61f8f5dec50dbf89b3 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Tue, 24 Sep 2024 15:02:11 +1200 Subject: [PATCH 068/109] Fix `repo-tar` downloads --- lib/load-cabal-plan.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/load-cabal-plan.nix b/lib/load-cabal-plan.nix index a4ac61a05d..14ba6db55a 100644 --- a/lib/load-cabal-plan.nix +++ b/lib/load-cabal-plan.nix @@ -95,10 +95,10 @@ in { src = pkgs.lib.lists.elemAt callProjectResults.sourceRepos (pkgs.lib.strings.toInt p.pkg-src.source-repo.location) + pkgs.lib.optionalString (p.pkg-src.source-repo.subdir != ".") "/${p.pkg-src.source-repo.subdir}"; } // pkgs.lib.optionalAttrs (p.pkg-src.type or "" == "repo-tar") { - src = pkgs.fetchurl { + src = pkgs.lib.mkDefault (pkgs.fetchurl { url = p.pkg-src.repo.uri + "${pkgs.lib.optionalString (!pkgs.lib.hasSuffix "/" p.pkg-src.repo.uri) "/"}package/${p.pkg-name}-${p.pkg-version}.tar.gz"; sha256 = p.pkg-src-sha256; - }; + }); } // pkgs.lib.optionalAttrs (cabal2nix ? package-description-override && p.pkg-version == cabal2nix.package.identifier.version) { # Use the `.cabal` file from the `Cabal2Nix` if it for the matching # version of the package (the one in the plan). From 431caa527f65b64cf6e29212dd44289e6eefa61c Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Tue, 24 Sep 2024 17:19:30 +1200 Subject: [PATCH 069/109] More fixes for ghc HEAD --- test/js-template-haskell/default.nix | 3 ++- test/shell-for-setup-deps/default.nix | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/test/js-template-haskell/default.nix b/test/js-template-haskell/default.nix index 1348f75a59..423ed3dd40 100644 --- a/test/js-template-haskell/default.nix +++ b/test/js-template-haskell/default.nix @@ -7,7 +7,8 @@ let project = project' { inherit compiler-nix-name evalPackages; src = testSrc "js-template-haskell"; - cabalProjectLocal = '' + cabalProjectLocal = builtins.readFile ../cabal.project.local + + '' if arch(javascript) extra-packages: ghci constraints: ghcjs installed diff --git a/test/shell-for-setup-deps/default.nix b/test/shell-for-setup-deps/default.nix index 9e7f228ce8..6bf7214373 100644 --- a/test/shell-for-setup-deps/default.nix +++ b/test/shell-for-setup-deps/default.nix @@ -10,7 +10,8 @@ let }; env = project.shellFor { - withHoogle = !__elem compiler-nix-name ["ghc901" "ghc902" "ghc921" "ghc922" "ghc923" "ghc924" "ghc925" "ghc926" "ghc927"]; + tools.hoogle = { cabalProjectLocal = builtins.readFile ../cabal.project.local; }; + withHoogle = true; }; in recurseIntoAttrs ({ From 6886c43de10fd306d582a4cb7dc9b87ab2c3035c Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Tue, 24 Sep 2024 19:13:14 +1200 Subject: [PATCH 070/109] Fix for GHC 9.6 JS backend --- compiler/ghc/default.nix | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index 8af70ecc68..ef2c6b34b5 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -397,16 +397,26 @@ stdenv.mkDerivation (rec { done '' # Use emscripten and the `config.sub` saved by `postPatch` - + lib.optionalString (targetPlatform.isGhcjs) '' + + lib.optionalString (targetPlatform.isGhcjs) ('' export CC="${targetCC}/bin/emcc" export CXX="${targetCC}/bin/em++" export LD="${targetCC}/bin/emcc" - export AR="${targetCC}/bin/emar" - export NM="${targetCC}/share/emscripten/emnm" - export RANLIB="${targetCC}/bin/emranlib" + '' + ( + # Including AR and RANLIB here breaks tests.js-template-haskell for GHC 9.6 + # `LLVM ERROR: malformed uleb128, extends past end` + if builtins.compareVersions ghc-version "9.8" >= 0 + then '' + export AR="${targetCC}/bin/emar" + export NM="${targetCC}/share/emscripten/emnm" + export RANLIB="${targetCC}/bin/emranlib" + '' + else '' + export NM="${targetCC}/share/emscripten/emnm" + '' + ) + '' export EM_CACHE=$(mktemp -d) mv config.sub.ghcjs config.sub - '' + '') # GHC is a bit confused on its cross terminology, as these would normally be # the *host* tools. + lib.optionalString (!targetPlatform.isGhcjs) ('' From 8956daa3713d001c04060465c9ddafd0515453ac Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Tue, 24 Sep 2024 20:05:50 +1200 Subject: [PATCH 071/109] Fix for GHC HEAD JS --- modules/install-plan/non-reinstallable.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/install-plan/non-reinstallable.nix b/modules/install-plan/non-reinstallable.nix index b454634b40..2e92bbd39f 100644 --- a/modules/install-plan/non-reinstallable.nix +++ b/modules/install-plan/non-reinstallable.nix @@ -6,7 +6,7 @@ "ghc-internal"] ++ lib.optionals (pkgs.stdenv.hostPlatform.isGhcjs) ([ # ghci and its dependencies - "ghci" "binary" "bytestring" "containers" "template-haskell" "array" "deepseq" "filepath" "ghc-boot" "ghc-boot-th" "ghc-heap" "transformers" "unix" "directory" "time" "ghc-platform" "os-string"] + "ghci" "binary" "bytestring" "containers" "template-haskell" "array" "deepseq" "file-io" "filepath" "ghc-boot" "ghc-boot-th" "ghc-heap" "transformers" "unix" "directory" "time" "ghc-platform" "os-string"] ++ lib.optionals (builtins.compareVersions config.compiler.version "8.11" < 0) [ "ghcjs-prim" "ghcjs-th"]); -} \ No newline at end of file +} From 209c2cd386f13ce6133ce23ab729fc5e8482f08a Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Wed, 25 Sep 2024 16:53:56 +1200 Subject: [PATCH 072/109] fix syntax errors --- overlays/bootstrap.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 95ba8fbb08..3b62f70cb1 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -220,17 +220,17 @@ in { && (final.stdenv.targetPlatform.isAarch64 || final.stdenv.targetPlatform.is32bit)) (fromUntil "9.6.1" "9.11" ./patches/ghc/iserv-syms.patch) ++ onAndroid (until "9.0" ./patches/ghc/ghc-8.10.7-weak-symbols-2.patch) - ++ onDarwin (onAarch64 (until "9.0" ./patches/ghc/ghc-8.10.7-rts-aarch64-darwin.patch) - ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10-android.patch) - ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10.7-android-bionic-symbols.patch) - ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10.7-bionic-libc.patch) - ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch) + ++ onDarwin (onAarch64 (until "9.0" ./patches/ghc/ghc-8.10.7-rts-aarch64-darwin.patch)) + ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10-android.patch)) + ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10.7-android-bionic-symbols.patch)) + ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10.7-bionic-libc.patch)) + ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch)) ++ onAndroid (fromUntil "9.0" "9.8"./patches/ghc/ghc-9.6-hadrian-android.patch) ++ onMusl (onAarch64 (fromUntil "9.0" "9.8" ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch)) ++ on32bit (from "9.0" ./patches/ghc/ghc-9.6-32bit-cmm.patch) # this one is to allow linking extra symbols from iserv. # This one will lead to segv's on darwin, when calling `strlen` during lookupStrHashTable. `strlen` ends up being called with 0x0. - ++ final.lib.optionls ( + ++ final.lib.optionals ( (final.stdenv.targetPlatform.isAndroid || final.stdenv.targetPlatform.isLinux) && (final.stdenv.targetPlatform.isAarch64 || final.stdenv.targetPlatform.is32bit)) (fromUntil "9.6.1" "9.10" ./patches/ghc/iserv-syms.patch) From dd3ecbbef3398622ae996dd9a40814bf5d8950b0 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Thu, 26 Sep 2024 16:47:31 +1200 Subject: [PATCH 073/109] ifdLevel 0 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 15ee49425d..333cbfd5b9 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 3; + ifdLevel = 0; runningHydraEvalTest = false; compiler = "ghc928"; config = import ./config.nix; From aec1d0b9fa43fbbb04d617008ef2616f3d04045d Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 10:23:26 +1200 Subject: [PATCH 074/109] Disable darwin on hydra for now. --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 333cbfd5b9..ad58e7bdbd 100644 --- a/flake.nix +++ b/flake.nix @@ -91,7 +91,7 @@ callFlake = import flake-compat; ifdLevel = 0; - runningHydraEvalTest = false; + runningHydraEvalTest = true; compiler = "ghc928"; config = import ./config.nix; From 6b879fe29448e3998f73550ea879b06a0842f20f Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 10:23:54 +1200 Subject: [PATCH 075/109] ifdLevel 1 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index ad58e7bdbd..50b9f7da31 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 0; + ifdLevel = 1; runningHydraEvalTest = true; compiler = "ghc928"; config = import ./config.nix; From 0395359720e8109b4e7b1e4148cdf5f1498406e9 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 10:28:41 +1200 Subject: [PATCH 076/109] ifdLevel 2 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 50b9f7da31..34fe7bcdef 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 1; + ifdLevel = 2; runningHydraEvalTest = true; compiler = "ghc928"; config = import ./config.nix; From ff5049a13f4c8cc2f8133dcd0ee0de4a9d0f7593 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 10:29:09 +1200 Subject: [PATCH 077/109] ifdLevel 3 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 34fe7bcdef..84f6872e86 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 2; + ifdLevel = 3; runningHydraEvalTest = true; compiler = "ghc928"; config = import ./config.nix; From 226e097f39d3ad15be4e5833d6538fedaa8f1e0c Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 13:51:07 +1200 Subject: [PATCH 078/109] Fix eval --- compiler/ghc/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/ghc/default.nix b/compiler/ghc/default.nix index 57cc0f6195..82eea15145 100644 --- a/compiler/ghc/default.nix +++ b/compiler/ghc/default.nix @@ -733,7 +733,7 @@ stdenv.mkDerivation (rec { --replace 'dynamic-library-dirs:' 'dynamic-library-dirs: ${libcxx}/lib' find . -name 'system*.conf*' cat mk/system-cxx-std-lib-1.0.conf - '' + lib.optionalString (installStage1 && stdenv.targetPlatform.isNativeMusl) '' + '' + lib.optionalString (installStage1 && haskell-nix.haskellLib.isNativeMusl) '' substituteInPlace hadrian/cfg/system.config \ --replace 'cross-compiling = YES' \ 'cross-compiling = NO' @@ -823,7 +823,7 @@ stdenv.mkDerivation (rec { --replace 'dynamic-library-dirs:' 'dynamic-library-dirs: ${libcxx}/lib' find . -name 'system*.conf*' cat mk/system-cxx-std-lib-1.0.conf - '' + lib.optionalString (installStage1 && stdenv.targetPlatform.isNativeMusl) '' + '' + lib.optionalString (installStage1 && haskell-nix.haskellLib.isNativeMusl) '' substituteInPlace hadrian/cfg/system.config \ --replace 'cross-compiling = YES' \ 'cross-compiling = NO' From bf96421e3be68b3d2fc5e4432ec4858f0f542f82 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 16:49:23 +1200 Subject: [PATCH 079/109] Fix patches --- overlays/bootstrap.nix | 1 - overlays/mingw_w64.nix | 2 -- 2 files changed, 3 deletions(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 3b62f70cb1..490d055662 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -234,7 +234,6 @@ in { (final.stdenv.targetPlatform.isAndroid || final.stdenv.targetPlatform.isLinux) && (final.stdenv.targetPlatform.isAarch64 || final.stdenv.targetPlatform.is32bit)) (fromUntil "9.6.1" "9.10" ./patches/ghc/iserv-syms.patch) - ++ onWindows (from "9.4" ./patches/ghc/ghc-9.6-fix-code-symbol-jumps.patch) ++ onAndroid (fromUntil "9.6.3" "9.10" ./patches/ghc/ghc-9.6-iog.patch) ++ on32bit (fromUntil "9.6" "9.12" ./patches/ghc/ghc-9.6-genapply-cross-arch.patch) ++ onAndroid (fromUntil "9.6" "9.9" ./patches/ghc/ghc-9.6-debug-secno.patch) diff --git a/overlays/mingw_w64.nix b/overlays/mingw_w64.nix index fa794a357a..a309a8d10e 100644 --- a/overlays/mingw_w64.nix +++ b/overlays/mingw_w64.nix @@ -39,8 +39,6 @@ let REMOTE_ISERV=$(mktemp -d) ln -s ${interpreter.override { - patches = [ ./patches/iserv-proxy-keep-cafs.patch ] - ; enableDebugRTS = true; setupBuildFlags = ["--ghc-option=-optl-Wl,--disable-dynamicbase,--disable-high-entropy-va,--image-base=0x400000" ]; }}/bin/* $REMOTE_ISERV From 4eaf4b57d6d3f7e073793b2c494d9e0f05601859 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 17:08:07 +1200 Subject: [PATCH 080/109] Fix patches --- overlays/linux-cross.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/overlays/linux-cross.nix b/overlays/linux-cross.nix index c4068c98f0..1fc2c8864d 100644 --- a/overlays/linux-cross.nix +++ b/overlays/linux-cross.nix @@ -50,8 +50,7 @@ let (>&2 echo "---> Starting ${interpreter.exeName} on port $PORT") ${qemu}/bin/qemu-${qemuSuffix} ${interpreter.override ({ - patches = lib.optional (builtins.compareVersions interpreter.version "9.0" > 0) ./patches/iserv-proxy-keep-cafs.patch - ++ lib.optional (builtins.compareVersions interpreter.version "9.0" > 0 && hostPlatform.isAndroid && hostPlatform.isAarch32) ./patches/iserv-proxy-interpreter-9.3-android32.patch + patches = lib.optional (builtins.compareVersions interpreter.version "9.0" > 0 && hostPlatform.isAndroid && hostPlatform.isAarch32) ./patches/iserv-proxy-interpreter-9.3-android32.patch ++ lib.optional (builtins.compareVersions interpreter.version "9.0" > 0 && hostPlatform.isAndroid && hostPlatform.isAarch64) ./patches/iserv-proxy-interpreter-9.3-android.patch ; } // lib.optionalAttrs hostPlatform.isAndroid { From 502db1605432c451502532f7720405ee75db4065 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 17:12:16 +1200 Subject: [PATCH 081/109] ifdLevel 0 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 84f6872e86..ad58e7bdbd 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 3; + ifdLevel = 0; runningHydraEvalTest = true; compiler = "ghc928"; config = import ./config.nix; From 79350f931c6e8bd56980a199a9c8610d16ba3ed5 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 17:15:07 +1200 Subject: [PATCH 082/109] ifdLevel 1 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index ad58e7bdbd..50b9f7da31 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 0; + ifdLevel = 1; runningHydraEvalTest = true; compiler = "ghc928"; config = import ./config.nix; From 48fae4a4048307cc6445915a8d49ea3d98c314eb Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 17:15:35 +1200 Subject: [PATCH 083/109] ifdLevel 2 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 50b9f7da31..34fe7bcdef 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 1; + ifdLevel = 2; runningHydraEvalTest = true; compiler = "ghc928"; config = import ./config.nix; From 885c20727f84a448c39b9fef8758e2b6a81d4612 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 17:18:08 +1200 Subject: [PATCH 084/109] ifdLevel 3 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 34fe7bcdef..84f6872e86 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 2; + ifdLevel = 3; runningHydraEvalTest = true; compiler = "ghc928"; config = import ./config.nix; From 79a06064381a4fe3a767b924ebe95f05803297d1 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 22:11:38 +1200 Subject: [PATCH 085/109] Add upper bound for patch --- overlays/bootstrap.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 490d055662..7842a83a90 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -227,7 +227,7 @@ in { ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch)) ++ onAndroid (fromUntil "9.0" "9.8"./patches/ghc/ghc-9.6-hadrian-android.patch) ++ onMusl (onAarch64 (fromUntil "9.0" "9.8" ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch)) - ++ on32bit (from "9.0" ./patches/ghc/ghc-9.6-32bit-cmm.patch) + ++ on32bit (fromUntil "9.0" "9.4" ./patches/ghc/ghc-9.6-32bit-cmm.patch) # this one is to allow linking extra symbols from iserv. # This one will lead to segv's on darwin, when calling `strlen` during lookupStrHashTable. `strlen` ends up being called with 0x0. ++ final.lib.optionals ( From d828c0bf3b6c938c81f6f525dce4021edb41562e Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Fri, 27 Sep 2024 22:18:35 +1200 Subject: [PATCH 086/109] Add ArchX86 and ArchRISCV64 --- lib/call-cabal-project-to-nix.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/call-cabal-project-to-nix.nix b/lib/call-cabal-project-to-nix.nix index 3a97ef6558..6f0f5e5739 100644 --- a/lib/call-cabal-project-to-nix.nix +++ b/lib/call-cabal-project-to-nix.nix @@ -342,6 +342,10 @@ let echo ',("target arch","${ if pkgs.stdenv.targetPlatform.isx86_64 then "ArchX86_64" + else if pkgs.stdenv.targetPlatform.isx86 + then "ArchX86" + else if pkgs.stdenv.targetPlatform.isRiscV64 + then "ArchRISCV64" else if pkgs.stdenv.targetPlatform.isAarch64 then "ArchAArch64" else if pkgs.stdenv.targetPlatform.isJavaScript From cac3cf75b8ad74ea4b8ec4a8f0f45065c598829c Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Sat, 28 Sep 2024 00:02:15 +1200 Subject: [PATCH 087/109] Fix logic for iserv-syms.patch --- overlays/bootstrap.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 7842a83a90..103f29dbf7 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -215,8 +215,7 @@ in { # This one will lead to segv's on darwin, when calling `strlen` during lookupStrHashTable. `strlen` ends up being called with 0x0. # This patch will allow adding additional symbols to iserv, instead of having to patch them into GHC all the time. ++ final.lib.optionals ( - final.stdenv.targetPlatform != final.stdenv.hostPlatform - && (final.stdenv.targetPlatform.isAndroid || final.stdenv.targetPlatform.isLinux) + (final.stdenv.targetPlatform.isAndroid || final.stdenv.targetPlatform.isLinux) && (final.stdenv.targetPlatform.isAarch64 || final.stdenv.targetPlatform.is32bit)) (fromUntil "9.6.1" "9.11" ./patches/ghc/iserv-syms.patch) ++ onAndroid (until "9.0" ./patches/ghc/ghc-8.10.7-weak-symbols-2.patch) From 106a506632c3e0189408859d94f6108508be7e07 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Sat, 28 Sep 2024 00:06:48 +1200 Subject: [PATCH 088/109] Fix logic for iserv-syms.patch --- overlays/bootstrap.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 103f29dbf7..0730024b80 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -227,12 +227,6 @@ in { ++ onAndroid (fromUntil "9.0" "9.8"./patches/ghc/ghc-9.6-hadrian-android.patch) ++ onMusl (onAarch64 (fromUntil "9.0" "9.8" ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch)) ++ on32bit (fromUntil "9.0" "9.4" ./patches/ghc/ghc-9.6-32bit-cmm.patch) - # this one is to allow linking extra symbols from iserv. - # This one will lead to segv's on darwin, when calling `strlen` during lookupStrHashTable. `strlen` ends up being called with 0x0. - ++ final.lib.optionals ( - (final.stdenv.targetPlatform.isAndroid || final.stdenv.targetPlatform.isLinux) - && (final.stdenv.targetPlatform.isAarch64 || final.stdenv.targetPlatform.is32bit)) - (fromUntil "9.6.1" "9.10" ./patches/ghc/iserv-syms.patch) ++ onAndroid (fromUntil "9.6.3" "9.10" ./patches/ghc/ghc-9.6-iog.patch) ++ on32bit (fromUntil "9.6" "9.12" ./patches/ghc/ghc-9.6-genapply-cross-arch.patch) ++ onAndroid (fromUntil "9.6" "9.9" ./patches/ghc/ghc-9.6-debug-secno.patch) From 6c3161057f0278c85e9f9522187970a039fc184b Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Sat, 28 Sep 2024 10:29:52 +1200 Subject: [PATCH 089/109] Remove old patch. Latest upstream GHC >9.6 have a better one. --- overlays/bootstrap.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 0730024b80..9fc6b8c250 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -228,7 +228,6 @@ in { ++ onMusl (onAarch64 (fromUntil "9.0" "9.8" ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch)) ++ on32bit (fromUntil "9.0" "9.4" ./patches/ghc/ghc-9.6-32bit-cmm.patch) ++ onAndroid (fromUntil "9.6.3" "9.10" ./patches/ghc/ghc-9.6-iog.patch) - ++ on32bit (fromUntil "9.6" "9.12" ./patches/ghc/ghc-9.6-genapply-cross-arch.patch) ++ onAndroid (fromUntil "9.6" "9.9" ./patches/ghc/ghc-9.6-debug-secno.patch) ++ onAndroid (on32bit (fromUntil "9.6" "9.9"./patches/ghc/ghc-9.6-missing-symbols-deadbeef.patch)) From 52ebca36fdc857db8f7aa066a7d6f107f6d958c5 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 30 Sep 2024 11:32:22 +1300 Subject: [PATCH 090/109] ifdLevel 0 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 15ee49425d..333cbfd5b9 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 3; + ifdLevel = 0; runningHydraEvalTest = false; compiler = "ghc928"; config = import ./config.nix; From a70f5ad478c2c0cf32704d34d776093fefdbd83f Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 30 Sep 2024 12:01:36 +1300 Subject: [PATCH 091/109] ifdLevel 1 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 333cbfd5b9..ced3c36cab 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 0; + ifdLevel = 1; runningHydraEvalTest = false; compiler = "ghc928"; config = import ./config.nix; From b139433ff6a1c22889545366bda6d898c2b86fcb Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 30 Sep 2024 16:06:36 +1300 Subject: [PATCH 092/109] Fix hadrian strip patch --- overlays/bootstrap.nix | 3 +- .../ghc/ghc-9.8-hadrian-strip-cmd.patch | 55 +++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 overlays/patches/ghc/ghc-9.8-hadrian-strip-cmd.patch diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 9fc6b8c250..4d88254db8 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -225,7 +225,8 @@ in { ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10.7-bionic-libc.patch)) ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch)) ++ onAndroid (fromUntil "9.0" "9.8"./patches/ghc/ghc-9.6-hadrian-android.patch) - ++ onMusl (onAarch64 (fromUntil "9.0" "9.8" ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch)) + ++ onMusl (onAarch64 (fromUntil "9.4" "9.8" ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch)) + ++ onMusl (onAarch64 (fromUntil "9.8" "9.12" ./patches/ghc/ghc-9.8-hadrian-strip-cmd.patch)) ++ on32bit (fromUntil "9.0" "9.4" ./patches/ghc/ghc-9.6-32bit-cmm.patch) ++ onAndroid (fromUntil "9.6.3" "9.10" ./patches/ghc/ghc-9.6-iog.patch) ++ onAndroid (fromUntil "9.6" "9.9" ./patches/ghc/ghc-9.6-debug-secno.patch) diff --git a/overlays/patches/ghc/ghc-9.8-hadrian-strip-cmd.patch b/overlays/patches/ghc/ghc-9.8-hadrian-strip-cmd.patch new file mode 100644 index 0000000000..e6dc4079e5 --- /dev/null +++ b/overlays/patches/ghc/ghc-9.8-hadrian-strip-cmd.patch @@ -0,0 +1,55 @@ +diff --git a/hadrian/cfg/system.config.in b/hadrian/cfg/system.config.in +index 4912673869..85b5c58c2a 100644 +--- a/hadrian/cfg/system.config.in ++++ b/hadrian/cfg/system.config.in +@@ -18,6 +18,7 @@ merge-objects = @MergeObjsCmd@ + system-merge-objects = @LD_STAGE0@ + objdump = @ObjdumpCmd@ + ranlib = @REAL_RANLIB_CMD@ ++strip = @StripCmd@ + sphinx-build = @SPHINXBUILD@ + system-ar = @AR_STAGE0@ + system-cc = @CC_STAGE0@ +diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs +index a0f639d325..55f9a2f902 100644 +--- a/hadrian/src/Oracles/Setting.hs ++++ b/hadrian/src/Oracles/Setting.hs +@@ -73,6 +73,7 @@ data Setting = BuildArch + | ProjectPatchLevel + | ProjectPatchLevel1 + | ProjectPatchLevel2 ++ | Strip + | SystemGhc + | TargetArch + | TargetOs +@@ -176,6 +177,7 @@ setting key = lookupSystemConfig $ case key of + ProjectPatchLevel -> "project-patch-level" + ProjectPatchLevel1 -> "project-patch-level1" + ProjectPatchLevel2 -> "project-patch-level2" ++ Strip -> "strip" + SystemGhc -> "system-ghc" + TargetArch -> "target-arch" + TargetArmVersion -> "target-arm-version" +diff --git a/hadrian/src/Settings/Builders/Cabal.hs b/hadrian/src/Settings/Builders/Cabal.hs +index 75eb78ccd8..6904c973d4 100644 +--- a/hadrian/src/Settings/Builders/Cabal.hs ++++ b/hadrian/src/Settings/Builders/Cabal.hs +@@ -85,15 +85,11 @@ commonCabalArgs :: Stage -> Args + commonCabalArgs stage = do + verbosity <- expr getVerbosity + pkg <- getPackage ++ strip <- getSetting Strip + package_id <- expr $ pkgUnitId stage pkg + let prefix = "${pkgroot}" ++ (if windowsHost then "" else "/..") +- mconcat [ -- Don't strip libraries when cross compiling. +- -- TODO: We need to set @--with-strip=(stripCmdPath :: Action FilePath)@, +- -- and if it's @:@ disable stripping as well. As it is now, I believe +- -- we might have issues with stripping on Windows, as I can't see a +- -- consumer of 'stripCmdPath'. +- -- TODO: See https://github.com/snowleopard/hadrian/issues/549. +- flag CrossCompiling ? pure [ "--disable-executable-stripping" ++ mconcat [ notStage0 ? strip /= "" ? pure [ "--with-strip=" ++ strip ] ++ , flag CrossCompiling ? pure [ "--disable-executable-stripping" + , "--disable-library-stripping" ] + -- We don't want to strip the debug RTS + , S.package rts ? pure [ "--disable-executable-stripping" From 8f2754f895f62ce9f6f9cb29738f1aaeb6e4d903 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 30 Sep 2024 16:14:38 +1300 Subject: [PATCH 093/109] Fix hadrian strip patch --- overlays/bootstrap.nix | 5 +- .../ghc/ghc-9.10-hadrian-strip-cmd.patch | 55 +++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 overlays/patches/ghc/ghc-9.10-hadrian-strip-cmd.patch diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 4d88254db8..1522e4c9f9 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -225,8 +225,9 @@ in { ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10.7-bionic-libc.patch)) ++ onAndroid (onAarch32 (until "9.2" ./patches/ghc/ghc-8.10.7-cross-dont-build-stage2-tools.patch)) ++ onAndroid (fromUntil "9.0" "9.8"./patches/ghc/ghc-9.6-hadrian-android.patch) - ++ onMusl (onAarch64 (fromUntil "9.4" "9.8" ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch)) - ++ onMusl (onAarch64 (fromUntil "9.8" "9.12" ./patches/ghc/ghc-9.8-hadrian-strip-cmd.patch)) + ++ onMusl (onAarch64 (fromUntil "9.4" "9.8" ./patches/ghc/ghc-9.6-hadrian-strip-cmd.patch)) + ++ onMusl (onAarch64 (fromUntil "9.8" "9.10" ./patches/ghc/ghc-9.8-hadrian-strip-cmd.patch)) + ++ onMusl (onAarch64 (fromUntil "9.10" "9.12" ./patches/ghc/ghc-9.10-hadrian-strip-cmd.patch)) ++ on32bit (fromUntil "9.0" "9.4" ./patches/ghc/ghc-9.6-32bit-cmm.patch) ++ onAndroid (fromUntil "9.6.3" "9.10" ./patches/ghc/ghc-9.6-iog.patch) ++ onAndroid (fromUntil "9.6" "9.9" ./patches/ghc/ghc-9.6-debug-secno.patch) diff --git a/overlays/patches/ghc/ghc-9.10-hadrian-strip-cmd.patch b/overlays/patches/ghc/ghc-9.10-hadrian-strip-cmd.patch new file mode 100644 index 0000000000..523f05328b --- /dev/null +++ b/overlays/patches/ghc/ghc-9.10-hadrian-strip-cmd.patch @@ -0,0 +1,55 @@ +diff --git a/hadrian/cfg/system.config.in b/hadrian/cfg/system.config.in +index e8e6076f9a..e748ca514d 100644 +--- a/hadrian/cfg/system.config.in ++++ b/hadrian/cfg/system.config.in +@@ -13,6 +13,7 @@ cc = @CC@ + happy = @HappyCmd@ + make = @MakeCmd@ + objdump = @ObjdumpCmd@ ++strip = @StripCmd@ + sphinx-build = @SPHINXBUILD@ + system-ghc = @WithGhc@ + system-ghc-pkg = @GhcPkgCmd@ +diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs +index b20b023173..881c122885 100644 +--- a/hadrian/src/Oracles/Setting.hs ++++ b/hadrian/src/Oracles/Setting.hs +@@ -69,6 +69,7 @@ data Setting = CursesIncludeDir + | ProjectPatchLevel + | ProjectPatchLevel1 + | ProjectPatchLevel2 ++ | Strip + | SystemGhc + | TargetPlatformFull + | BourneShell +@@ -125,6 +126,7 @@ setting key = lookupSystemConfig $ case key of + ProjectPatchLevel -> "project-patch-level" + ProjectPatchLevel1 -> "project-patch-level1" + ProjectPatchLevel2 -> "project-patch-level2" ++ Strip -> "strip" + SystemGhc -> "system-ghc" + TargetPlatformFull -> "target-platform-full" + BourneShell -> "bourne-shell" +diff --git a/hadrian/src/Settings/Builders/Cabal.hs b/hadrian/src/Settings/Builders/Cabal.hs +index 3e83bb5634..241f8a51ef 100644 +--- a/hadrian/src/Settings/Builders/Cabal.hs ++++ b/hadrian/src/Settings/Builders/Cabal.hs +@@ -84,15 +84,11 @@ cabalSetupArgs = builder (Cabal Setup) ? do + commonCabalArgs :: Stage -> Args + commonCabalArgs stage = do + pkg <- getPackage ++ strip <- getSetting Strip + package_id <- expr $ pkgUnitId stage pkg + let prefix = "${pkgroot}" ++ (if windowsHost then "" else "/..") +- mconcat [ -- Don't strip libraries when cross compiling. +- -- TODO: We need to set @--with-strip=(stripCmdPath :: Action FilePath)@, +- -- and if it's @:@ disable stripping as well. As it is now, I believe +- -- we might have issues with stripping on Windows, as I can't see a +- -- consumer of 'stripCmdPath'. +- -- TODO: See https://github.com/snowleopard/hadrian/issues/549. +- flag CrossCompiling ? pure [ "--disable-executable-stripping" ++ mconcat [ notStage0 ? strip /= "" ? pure [ "--with-strip=" ++ strip ] ++ , flag CrossCompiling ? pure [ "--disable-executable-stripping" + , "--disable-library-stripping" ] + -- We don't want to strip the debug RTS + , S.package rts ? pure [ "--disable-executable-stripping" From 4692b1a1407f7854c932b018ca10d108c89a78fd Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 30 Sep 2024 18:25:09 +1300 Subject: [PATCH 094/109] Fix haddock (now that isNativeMusl works correctly) --- builder/ghc-for-component-wrapper.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/ghc-for-component-wrapper.nix b/builder/ghc-for-component-wrapper.nix index 454b946b27..dee214d7d8 100644 --- a/builder/ghc-for-component-wrapper.nix +++ b/builder/ghc-for-component-wrapper.nix @@ -23,7 +23,7 @@ let libDir = "$wrappedGhc/${configFiles.libDir}"; docDir = "$wrappedGhc/share/doc/ghc/html"; # For musl we can use haddock from the buildGHC - haddock = if stdenv.hostPlatform.isLinux && stdenv.targetPlatform.isMusl && !haskellLib.isNativeMusl + haddock = if stdenv.targetPlatform.isMusl then ghc.buildGHC else ghc; From 173edcc4157f54a6f1dcce99fa1fd9ef60527903 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 30 Sep 2024 18:38:30 +1300 Subject: [PATCH 095/109] Fix haddock (now that isNativeMusl works correctly) --- builder/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/default.nix b/builder/default.nix index 6a029e8964..98c1b977c5 100644 --- a/builder/default.nix +++ b/builder/default.nix @@ -68,7 +68,7 @@ let let haskellPackages = { # For musl we can use haddock from the buildGHC - ghc = if stdenv.hostPlatform.isLinux && stdenv.targetPlatform.isMusl && !haskellLib.isNativeMusl + ghc = if stdenv.targetPlatform.isMusl then ghc.buildGHC else ghc; inherit packages hoogle; From 076782fcc8f06e5a5f377849d7c8648b17e3cee5 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 30 Sep 2024 19:34:10 +1300 Subject: [PATCH 096/109] Avoid building source-pins on hackage (just make sure the components needed are present). --- overlays/haskell.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/overlays/haskell.nix b/overlays/haskell.nix index 267632d06d..8332ec839d 100644 --- a/overlays/haskell.nix +++ b/overlays/haskell.nix @@ -1075,7 +1075,9 @@ final: prev: { roots' = compiler-nix-name: ifdLevel: final.recurseIntoAttrs ({ # Things that require no IFD to build - inherit (final.buildPackages.haskell-nix) source-pins; + source-pin-hackage = hackageSrc; + source-pin-stackage = stackageSrc; + source-pin-haskell-nix = final.path; # Double buildPackages is intentional, # see comment in lib/default.nix for details. # Using buildPackages rather than evalPackages so both darwin and linux From 321acd915908bd725fcfb7b8a6f146ef41d4017f Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 30 Sep 2024 21:11:02 +1300 Subject: [PATCH 097/109] ifdLevel 2 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index ced3c36cab..62ae19c1e0 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 1; + ifdLevel = 2; runningHydraEvalTest = false; compiler = "ghc928"; config = import ./config.nix; From ecabb6e0368273cfbbbbadaf024fd162b16dc731 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 30 Sep 2024 21:41:55 +1300 Subject: [PATCH 098/109] Fix for native musl builds --- builder/ghc-for-component-wrapper.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder/ghc-for-component-wrapper.nix b/builder/ghc-for-component-wrapper.nix index dee214d7d8..bf007ab853 100644 --- a/builder/ghc-for-component-wrapper.nix +++ b/builder/ghc-for-component-wrapper.nix @@ -125,7 +125,7 @@ let done '' - + lib.optionalString (stdenv.targetPlatform.isMusl && !haskellLib.isNativeMusl && builtins.compareVersions ghc.version "9.9" >0) '' + + lib.optionalString (stdenv.targetPlatform.isMusl && builtins.compareVersions ghc.version "9.9" >0) '' ln -s $wrappedGhc/bin/${ghcCommand}-iserv $wrappedGhc/bin/ghc-iserv ln -s $wrappedGhc/bin/${ghcCommand}-iserv-prof $wrappedGhc/bin/ghc-iserv-prof '' From 922ec59a557643ff305a381ffd25bb8a2b64c289 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 30 Sep 2024 23:17:04 +1300 Subject: [PATCH 099/109] ifdLevel 3 --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 62ae19c1e0..15ee49425d 100644 --- a/flake.nix +++ b/flake.nix @@ -90,7 +90,7 @@ let callFlake = import flake-compat; - ifdLevel = 2; + ifdLevel = 3; runningHydraEvalTest = false; compiler = "ghc928"; config = import ./config.nix; From 4b883cf298bd6db38feec620ce9668e730027e0d Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Tue, 1 Oct 2024 12:45:22 +1300 Subject: [PATCH 100/109] Add musl32 and android tests --- ci.nix | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/ci.nix b/ci.nix index b6346c086e..7f3fff04b2 100644 --- a/ci.nix +++ b/ci.nix @@ -66,8 +66,8 @@ ghc98 = false; } // nixpkgs.lib.optionalAttrs (nixpkgsName == "unstable") { ghc810 = true; - ghc92 = false; - ghc94 = false; + ghc92 = true; + ghc94 = true; ghc96 = true; ghc98 = true; ghc98llvm = false; @@ -81,30 +81,30 @@ let lib = nixpkgs.lib; in lib.optionalAttrs (nixpkgsName == "unstable" && (__match ".*llvm" compiler-nix-name == null) - && ((system == "x86_64-linux" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948"]) - || (system == "aarch64-linux" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948"]) - || (system == "x86_64-darwin" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948" "ghc966" "ghc982"]) - || (system == "aarch64-darwin" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948" "ghc966" "ghc982"]) + && ((system == "x86_64-linux" && !builtins.elem compiler-nix-name ["ghc902" "ghc928" "ghc948"]) + || (system == "aarch64-linux" && !builtins.elem compiler-nix-name ["ghc902" "ghc928" "ghc948"]) + || (system == "x86_64-darwin" && !builtins.elem compiler-nix-name ["ghc902" "ghc928" "ghc948" "ghc966" "ghc982"]) + || (system == "aarch64-darwin" && !builtins.elem compiler-nix-name ["ghc902" "ghc928" "ghc948" "ghc966" "ghc982"]) )) { inherit (lib.systems.examples) ghcjs; } // lib.optionalAttrs ( (__match ".*llvm" compiler-nix-name == null) - && ((system == "x86_64-linux" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc91120240918"]) # Including GHC HEAD here because the patches for rts/RtsSymbols.c no longer apply and mingwW64 GHC build fails without them + && ((system == "x86_64-linux" && !builtins.elem compiler-nix-name ["ghc902" "ghc928" "ghc91120240918"]) # Including GHC HEAD here because the patches for rts/RtsSymbols.c no longer apply and mingwW64 GHC build fails without them || (system == "x86_64-darwin" && builtins.elem compiler-nix-name []))) { # TODO add ghc versions when we have more darwin build capacity inherit (lib.systems.examples) mingwW64; } // lib.optionalAttrs (nixpkgsName == "unstable" && (__match ".*llvm" compiler-nix-name == null) - && ((system == "x86_64-linux" && !builtins.elem compiler-nix-name ["ghc884" "ghc8107" "ghc902" "ghc928" "ghc948"]) + && ((system == "x86_64-linux" && !builtins.elem compiler-nix-name ["ghc8107" "ghc902" "ghc928" "ghc948"]) || (system == "x86_64-darwin" && builtins.elem compiler-nix-name []))) { # TODO add ghc versions when we have more darwin build capacity inherit (lib.systems.examples) ucrt64; - } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "unstable" && !builtins.elem compiler-nix-name ["ghc884" "ghc902" "ghc928" "ghc948"]) { + } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "unstable") { # Musl cross only works on linux # aarch64 cross only works on linux - inherit (lib.systems.examples) musl64 aarch64-multiplatform; - } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "unstable" && builtins.elem compiler-nix-name ["ghc927" "ghc928"]) { + inherit (lib.systems.examples) musl32 musl64 aarch64-multiplatform aarch64-android armv7a-android-prebuilt; + } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "unstable" && !builtins.elem compiler-nix-name ["ghc8107" "ghc902"]) { # TODO fix this for the compilers we build with hadrian (ghc >=9.4) inherit (lib.systems.examples) aarch64-multiplatform-musl; - } // lib.optionalAttrs (system == "aarch64-linux" && nixpkgsName == "unstable" && !builtins.elem compiler-nix-name ["ghc884" "ghc8107" "ghc902"]) { + } // lib.optionalAttrs (system == "aarch64-linux" && nixpkgsName == "unstable" && !builtins.elem compiler-nix-name ["ghc8107" "ghc902"]) { inherit (lib.systems.examples) aarch64-multiplatform-musl; }; isDisabled = d: d.meta.disabled or false; From 4f04b861574b65fa2f9b15b1313c5d7256c96841 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Tue, 1 Oct 2024 14:57:05 +1300 Subject: [PATCH 101/109] Add AArch32 to call-cabal-project-to-nix.nix --- lib/call-cabal-project-to-nix.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/call-cabal-project-to-nix.nix b/lib/call-cabal-project-to-nix.nix index 6f0f5e5739..fbda651eff 100644 --- a/lib/call-cabal-project-to-nix.nix +++ b/lib/call-cabal-project-to-nix.nix @@ -348,6 +348,8 @@ let then "ArchRISCV64" else if pkgs.stdenv.targetPlatform.isAarch64 then "ArchAArch64" + else if pkgs.stdenv.targetPlatform.isAarch32 + then "ArchAArch32" else if pkgs.stdenv.targetPlatform.isJavaScript then "ArchJavaScript" else throw "Unknown target arch ${pkgs.stdenv.targetPlatform.config}" From df06075d7793b3d8063d38f8ef5d665eb1f624a3 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Wed, 2 Oct 2024 17:29:45 +1300 Subject: [PATCH 102/109] Update iserv-proxy patches --- .../patches/iserv-proxy-interpreter-9.3-android.patch | 9 ++++++--- .../patches/iserv-proxy-interpreter-9.3-android32.patch | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/overlays/patches/iserv-proxy-interpreter-9.3-android.patch b/overlays/patches/iserv-proxy-interpreter-9.3-android.patch index 12f3dda3fe..ec106c1e69 100644 --- a/overlays/patches/iserv-proxy-interpreter-9.3-android.patch +++ b/overlays/patches/iserv-proxy-interpreter-9.3-android.patch @@ -324,14 +324,17 @@ index 0000000..d447895 +} \ No newline at end of file diff --git a/iserv-proxy.cabal b/iserv-proxy.cabal -index a0eeaeb..a146108 100644 +index 5f1449a..328b000 100644 --- a/iserv-proxy.cabal +++ b/iserv-proxy.cabal -@@ -103,6 +103,7 @@ Executable iserv-proxy +@@ -106,9 +106,7 @@ Executable iserv-proxy-interpreter -- We need to pass -fkeep-cafs to ensure that the interpreter retains CAFs -- Iserv and GHC do something similar. ghc-options: -fkeep-cafs +- -- no idea how to check for musl :-/ +- if os(linux) && arch(aarch64) +- c-sources: cbits/symbols.aarch64-musl.c + c-sources: cbits/symbols.c + Build-Depends: base >= 4 && < 5, iserv-proxy - diff --git a/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch b/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch index 7aeba03e07..f91fbb7978 100644 --- a/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch +++ b/overlays/patches/iserv-proxy-interpreter-9.3-android32.patch @@ -453,14 +453,17 @@ index 0000000..9974c73 +} \ No newline at end of file diff --git a/iserv-proxy.cabal b/iserv-proxy.cabal -index eca2047..51a125b 100644 +index 5f1449a..328b000 100644 --- a/iserv-proxy.cabal +++ b/iserv-proxy.cabal -@@ -104,6 +104,7 @@ Executable iserv-proxy-interpreter +@@ -106,9 +106,7 @@ Executable iserv-proxy-interpreter -- We need to pass -fkeep-cafs to ensure that the interpreter retains CAFs -- Iserv and GHC do something similar. ghc-options: -fkeep-cafs +- -- no idea how to check for musl :-/ +- if os(linux) && arch(aarch64) +- c-sources: cbits/symbols.aarch64-musl.c + c-sources: cbits/symbols.c + Build-Depends: base >= 4 && < 5, iserv-proxy - From 8e088347e4fb5f534bca5237369c772d3eeab6c8 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Wed, 2 Oct 2024 17:31:30 +1300 Subject: [PATCH 103/109] Fix duplication of patch in overlays/bootstrap.nix --- overlays/bootstrap.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 1522e4c9f9..61a0c06712 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -231,7 +231,6 @@ in { ++ on32bit (fromUntil "9.0" "9.4" ./patches/ghc/ghc-9.6-32bit-cmm.patch) ++ onAndroid (fromUntil "9.6.3" "9.10" ./patches/ghc/ghc-9.6-iog.patch) ++ onAndroid (fromUntil "9.6" "9.9" ./patches/ghc/ghc-9.6-debug-secno.patch) - ++ onAndroid (on32bit (fromUntil "9.6" "9.9"./patches/ghc/ghc-9.6-missing-symbols-deadbeef.patch)) # Allow loading static external plugins into cross compilers ++ onCross (fromUntil "9.6.1" "9.11" ./patches/ghc/5c80a27488acfe3610ddfcb99a1e961002e386d0.patch) From a090d4efbae3b60979875c6346feaef8796c9e44 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Thu, 3 Oct 2024 13:25:20 +1300 Subject: [PATCH 104/109] Add missing materialized file --- materialized/spdx-3.25.0/licenses.json | 8360 ++++++++++++++++++++++++ 1 file changed, 8360 insertions(+) create mode 100644 materialized/spdx-3.25.0/licenses.json diff --git a/materialized/spdx-3.25.0/licenses.json b/materialized/spdx-3.25.0/licenses.json new file mode 100644 index 0000000000..6c1a1e1337 --- /dev/null +++ b/materialized/spdx-3.25.0/licenses.json @@ -0,0 +1,8360 @@ +{ + "licenseListVersion": "3.25.0", + "licenses": [ + { + "reference": "https://spdx.org/licenses/0BSD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/0BSD.json", + "referenceNumber": 582, + "name": "BSD Zero Clause License", + "licenseId": "0BSD", + "seeAlso": [ + "http://landley.net/toybox/license.html", + "https://opensource.org/licenses/0BSD" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/3D-Slicer-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/3D-Slicer-1.0.json", + "referenceNumber": 466, + "name": "3D Slicer License v1.0", + "licenseId": "3D-Slicer-1.0", + "seeAlso": [ + "https://slicer.org/LICENSE", + "https://github.com/Slicer/Slicer/blob/main/License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AAL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AAL.json", + "referenceNumber": 252, + "name": "Attribution Assurance License", + "licenseId": "AAL", + "seeAlso": [ + "https://opensource.org/licenses/attribution" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Abstyles.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Abstyles.json", + "referenceNumber": 456, + "name": "Abstyles License", + "licenseId": "Abstyles", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Abstyles" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AdaCore-doc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AdaCore-doc.json", + "referenceNumber": 355, + "name": "AdaCore Doc License", + "licenseId": "AdaCore-doc", + "seeAlso": [ + "https://github.com/AdaCore/xmlada/blob/master/docs/index.rst", + "https://github.com/AdaCore/gnatcoll-core/blob/master/docs/index.rst", + "https://github.com/AdaCore/gnatcoll-db/blob/master/docs/index.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-2006.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-2006.json", + "referenceNumber": 128, + "name": "Adobe Systems Incorporated Source Code License Agreement", + "licenseId": "Adobe-2006", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AdobeLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-Display-PostScript.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-Display-PostScript.json", + "referenceNumber": 433, + "name": "Adobe Display PostScript License", + "licenseId": "Adobe-Display-PostScript", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L752" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-Glyph.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-Glyph.json", + "referenceNumber": 125, + "name": "Adobe Glyph List License", + "licenseId": "Adobe-Glyph", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-Utopia.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-Utopia.json", + "referenceNumber": 495, + "name": "Adobe Utopia Font License", + "licenseId": "Adobe-Utopia", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/font/adobe-utopia-100dpi/-/blob/master/COPYING?ref_type\u003dheads" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ADSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ADSL.json", + "referenceNumber": 560, + "name": "Amazon Digital Services License", + "licenseId": "ADSL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AFL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-1.1.json", + "referenceNumber": 14, + "name": "Academic Free License v1.1", + "licenseId": "AFL-1.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", + "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-1.2.json", + "referenceNumber": 622, + "name": "Academic Free License v1.2", + "licenseId": "AFL-1.2", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-1.2.txt", + "http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-2.0.json", + "referenceNumber": 559, + "name": "Academic Free License v2.0", + "licenseId": "AFL-2.0", + "seeAlso": [ + "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-2.1.json", + "referenceNumber": 570, + "name": "Academic Free License v2.1", + "licenseId": "AFL-2.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-2.1.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-3.0.json", + "referenceNumber": 332, + "name": "Academic Free License v3.0", + "licenseId": "AFL-3.0", + "seeAlso": [ + "http://www.rosenlaw.com/AFL3.0.htm", + "https://opensource.org/licenses/afl-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Afmparse.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Afmparse.json", + "referenceNumber": 163, + "name": "Afmparse License", + "licenseId": "Afmparse", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Afmparse" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0.json", + "referenceNumber": 657, + "name": "Affero General Public License v1.0", + "licenseId": "AGPL-1.0", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-only.json", + "referenceNumber": 142, + "name": "Affero General Public License v1.0 only", + "licenseId": "AGPL-1.0-only", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-or-later.json", + "referenceNumber": 155, + "name": "Affero General Public License v1.0 or later", + "licenseId": "AGPL-1.0-or-later", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0.json", + "referenceNumber": 70, + "name": "GNU Affero General Public License v3.0", + "licenseId": "AGPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-only.json", + "referenceNumber": 330, + "name": "GNU Affero General Public License v3.0 only", + "licenseId": "AGPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-or-later.json", + "referenceNumber": 366, + "name": "GNU Affero General Public License v3.0 or later", + "licenseId": "AGPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Aladdin.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Aladdin.json", + "referenceNumber": 557, + "name": "Aladdin Free Public License", + "licenseId": "Aladdin", + "seeAlso": [ + "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/AMD-newlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMD-newlib.json", + "referenceNumber": 340, + "name": "AMD newlib License", + "licenseId": "AMD-newlib", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/sys/a29khif/_close.S;h\u003d04f52ae00de1dafbd9055ad8d73c5c697a3aae7f;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AMDPLPA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMDPLPA.json", + "referenceNumber": 467, + "name": "AMD\u0027s plpa_map.c License", + "licenseId": "AMDPLPA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AML.json", + "referenceNumber": 299, + "name": "Apple MIT License", + "licenseId": "AML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AML-glslang.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AML-glslang.json", + "referenceNumber": 567, + "name": "AML glslang variant License", + "licenseId": "AML-glslang", + "seeAlso": [ + "https://github.com/KhronosGroup/glslang/blob/main/LICENSE.txt#L949", + "https://docs.omniverse.nvidia.com/install-guide/latest/common/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AMPAS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMPAS.json", + "referenceNumber": 414, + "name": "Academy of Motion Picture Arts and Sciences BSD", + "licenseId": "AMPAS", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ANTLR-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ANTLR-PD.json", + "referenceNumber": 460, + "name": "ANTLR Software Rights Notice", + "licenseId": "ANTLR-PD", + "seeAlso": [ + "http://www.antlr2.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ANTLR-PD-fallback.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ANTLR-PD-fallback.json", + "referenceNumber": 65, + "name": "ANTLR Software Rights Notice with license fallback", + "licenseId": "ANTLR-PD-fallback", + "seeAlso": [ + "http://www.antlr2.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/any-OSI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/any-OSI.json", + "referenceNumber": 310, + "name": "Any OSI License", + "licenseId": "any-OSI", + "seeAlso": [ + "https://metacpan.org/pod/Exporter::Tidy#LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Apache-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-1.0.json", + "referenceNumber": 250, + "name": "Apache License 1.0", + "licenseId": "Apache-1.0", + "seeAlso": [ + "http://www.apache.org/licenses/LICENSE-1.0" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Apache-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-1.1.json", + "referenceNumber": 288, + "name": "Apache License 1.1", + "licenseId": "Apache-1.1", + "seeAlso": [ + "http://apache.org/licenses/LICENSE-1.1", + "https://opensource.org/licenses/Apache-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Apache-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-2.0.json", + "referenceNumber": 143, + "name": "Apache License 2.0", + "licenseId": "Apache-2.0", + "seeAlso": [ + "https://www.apache.org/licenses/LICENSE-2.0", + "https://opensource.org/licenses/Apache-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/APAFML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APAFML.json", + "referenceNumber": 636, + "name": "Adobe Postscript AFM License", + "licenseId": "APAFML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APL-1.0.json", + "referenceNumber": 85, + "name": "Adaptive Public License 1.0", + "licenseId": "APL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/APL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/App-s2p.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/App-s2p.json", + "referenceNumber": 238, + "name": "App::s2p License", + "licenseId": "App-s2p", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/App-s2p" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.0.json", + "referenceNumber": 335, + "name": "Apple Public Source License 1.0", + "licenseId": "APSL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/APSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.1.json", + "referenceNumber": 308, + "name": "Apple Public Source License 1.1", + "licenseId": "APSL-1.1", + "seeAlso": [ + "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/APSL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.2.json", + "referenceNumber": 280, + "name": "Apple Public Source License 1.2", + "licenseId": "APSL-1.2", + "seeAlso": [ + "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/APSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-2.0.json", + "referenceNumber": 592, + "name": "Apple Public Source License 2.0", + "licenseId": "APSL-2.0", + "seeAlso": [ + "http://www.opensource.apple.com/license/apsl/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Arphic-1999.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Arphic-1999.json", + "referenceNumber": 32, + "name": "Arphic Public License", + "licenseId": "Arphic-1999", + "seeAlso": [ + "http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0.json", + "referenceNumber": 138, + "name": "Artistic License 1.0", + "licenseId": "Artistic-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Artistic-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0-cl8.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-cl8.json", + "referenceNumber": 353, + "name": "Artistic License 1.0 w/clause 8", + "licenseId": "Artistic-1.0-cl8", + "seeAlso": [ + "https://opensource.org/licenses/Artistic-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0-Perl.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-Perl.json", + "referenceNumber": 660, + "name": "Artistic License 1.0 (Perl)", + "licenseId": "Artistic-1.0-Perl", + "seeAlso": [ + "http://dev.perl.org/licenses/artistic.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Artistic-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-2.0.json", + "referenceNumber": 277, + "name": "Artistic License 2.0", + "licenseId": "Artistic-2.0", + "seeAlso": [ + "http://www.perlfoundation.org/artistic_license_2_0", + "https://www.perlfoundation.org/artistic-license-20.html", + "https://opensource.org/licenses/artistic-license-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.json", + "referenceNumber": 166, + "name": "ASWF Digital Assets License version 1.0", + "licenseId": "ASWF-Digital-Assets-1.0", + "seeAlso": [ + "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.json", + "referenceNumber": 29, + "name": "ASWF Digital Assets License 1.1", + "licenseId": "ASWF-Digital-Assets-1.1", + "seeAlso": [ + "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Baekmuk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Baekmuk.json", + "referenceNumber": 380, + "name": "Baekmuk License", + "licenseId": "Baekmuk", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:Baekmuk?rd\u003dLicensing/Baekmuk" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Bahyph.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bahyph.json", + "referenceNumber": 368, + "name": "Bahyph License", + "licenseId": "Bahyph", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Bahyph" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Barr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Barr.json", + "referenceNumber": 195, + "name": "Barr License", + "licenseId": "Barr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Barr" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bcrypt-Solar-Designer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/bcrypt-Solar-Designer.json", + "referenceNumber": 478, + "name": "bcrypt Solar Designer License", + "licenseId": "bcrypt-Solar-Designer", + "seeAlso": [ + "https://github.com/bcrypt-ruby/bcrypt-ruby/blob/master/ext/mri/crypt_blowfish.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Beerware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Beerware.json", + "referenceNumber": 616, + "name": "Beerware License", + "licenseId": "Beerware", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Beerware", + "https://people.freebsd.org/~phk/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Bitstream-Charter.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bitstream-Charter.json", + "referenceNumber": 455, + "name": "Bitstream Charter Font License", + "licenseId": "Bitstream-Charter", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Charter#License_Text", + "https://raw.githubusercontent.com/blackhole89/notekit/master/data/fonts/Charter%20license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Bitstream-Vera.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bitstream-Vera.json", + "referenceNumber": 370, + "name": "Bitstream Vera Font License", + "licenseId": "Bitstream-Vera", + "seeAlso": [ + "https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/", + "https://docubrain.com/sites/default/files/licenses/bitstream-vera.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BitTorrent-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.0.json", + "referenceNumber": 106, + "name": "BitTorrent Open Source License v1.0", + "licenseId": "BitTorrent-1.0", + "seeAlso": [ + "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1\u003d1.1\u0026r2\u003d1.1.1.1\u0026diff_format\u003ds" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BitTorrent-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.1.json", + "referenceNumber": 541, + "name": "BitTorrent Open Source License v1.1", + "licenseId": "BitTorrent-1.1", + "seeAlso": [ + "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/blessing.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/blessing.json", + "referenceNumber": 359, + "name": "SQLite Blessing", + "licenseId": "blessing", + "seeAlso": [ + "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln\u003d4-9", + "https://sqlite.org/src/artifact/df5091916dbb40e6" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BlueOak-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BlueOak-1.0.0.json", + "referenceNumber": 606, + "name": "Blue Oak Model License 1.0.0", + "licenseId": "BlueOak-1.0.0", + "seeAlso": [ + "https://blueoakcouncil.org/license/1.0.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Boehm-GC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Boehm-GC.json", + "referenceNumber": 127, + "name": "Boehm-Demers-Weiser GC License", + "licenseId": "Boehm-GC", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT#Another_Minimal_variant_(found_in_libatomic_ops)", + "https://github.com/uim/libgcroots/blob/master/COPYING", + "https://github.com/ivmai/libatomic_ops/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Borceux.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Borceux.json", + "referenceNumber": 571, + "name": "Borceux license", + "licenseId": "Borceux", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Borceux" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Brian-Gladman-2-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-2-Clause.json", + "referenceNumber": 416, + "name": "Brian Gladman 2-Clause License", + "licenseId": "Brian-Gladman-2-Clause", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L140-L156", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Brian-Gladman-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-3-Clause.json", + "referenceNumber": 290, + "name": "Brian Gladman 3-Clause License", + "licenseId": "Brian-Gladman-3-Clause", + "seeAlso": [ + "https://github.com/SWI-Prolog/packages-clib/blob/master/sha1/brg_endian.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-1-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-1-Clause.json", + "referenceNumber": 419, + "name": "BSD 1-Clause License", + "licenseId": "BSD-1-Clause", + "seeAlso": [ + "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision\u003d326823" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause.json", + "referenceNumber": 229, + "name": "BSD 2-Clause \"Simplified\" License", + "licenseId": "BSD-2-Clause", + "seeAlso": [ + "https://opensource.org/licenses/BSD-2-Clause" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Darwin.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Darwin.json", + "referenceNumber": 296, + "name": "BSD 2-Clause - Ian Darwin variant", + "licenseId": "BSD-2-Clause-Darwin", + "seeAlso": [ + "https://github.com/file/file/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-first-lines.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-first-lines.json", + "referenceNumber": 217, + "name": "BSD 2-Clause - first lines requirement", + "licenseId": "BSD-2-Clause-first-lines", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L664-L690", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json", + "referenceNumber": 564, + "name": "BSD 2-Clause FreeBSD License", + "licenseId": "BSD-2-Clause-FreeBSD", + "seeAlso": [ + "http://www.freebsd.org/copyright/freebsd-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json", + "referenceNumber": 376, + "name": "BSD 2-Clause NetBSD License", + "licenseId": "BSD-2-Clause-NetBSD", + "seeAlso": [ + "http://www.netbsd.org/about/redistribution.html#default" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Patent.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Patent.json", + "referenceNumber": 4, + "name": "BSD-2-Clause Plus Patent License", + "licenseId": "BSD-2-Clause-Patent", + "seeAlso": [ + "https://opensource.org/licenses/BSDplusPatent" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Views.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Views.json", + "referenceNumber": 514, + "name": "BSD 2-Clause with views sentence", + "licenseId": "BSD-2-Clause-Views", + "seeAlso": [ + "http://www.freebsd.org/copyright/freebsd-license.html", + "https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh", + "https://github.com/protegeproject/protege/blob/master/license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause.json", + "referenceNumber": 584, + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "licenseId": "BSD-3-Clause", + "seeAlso": [ + "https://opensource.org/licenses/BSD-3-Clause", + "https://www.eclipse.org/org/documents/edl-v10.php" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-acpica.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-acpica.json", + "referenceNumber": 341, + "name": "BSD 3-Clause acpica variant", + "licenseId": "BSD-3-Clause-acpica", + "seeAlso": [ + "https://github.com/acpica/acpica/blob/master/source/common/acfileio.c#L119" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Attribution.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Attribution.json", + "referenceNumber": 71, + "name": "BSD with attribution", + "licenseId": "BSD-3-Clause-Attribution", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Clear.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Clear.json", + "referenceNumber": 253, + "name": "BSD 3-Clause Clear License", + "licenseId": "BSD-3-Clause-Clear", + "seeAlso": [ + "http://labs.metacarta.com/license-explanation.html#license" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-flex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-flex.json", + "referenceNumber": 52, + "name": "BSD 3-Clause Flex variant", + "licenseId": "BSD-3-Clause-flex", + "seeAlso": [ + "https://github.com/westes/flex/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-HP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-HP.json", + "referenceNumber": 215, + "name": "Hewlett-Packard BSD variant license", + "licenseId": "BSD-3-Clause-HP", + "seeAlso": [ + "https://github.com/zdohnal/hplip/blob/master/COPYING#L939" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-LBNL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-LBNL.json", + "referenceNumber": 301, + "name": "Lawrence Berkeley National Labs BSD variant license", + "licenseId": "BSD-3-Clause-LBNL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/LBNLBSD" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Modification.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Modification.json", + "referenceNumber": 47, + "name": "BSD 3-Clause Modification", + "licenseId": "BSD-3-Clause-Modification", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json", + "referenceNumber": 615, + "name": "BSD 3-Clause No Military License", + "licenseId": "BSD-3-Clause-No-Military-License", + "seeAlso": [ + "https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE", + "https://github.com/greymass/swift-eosio/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json", + "referenceNumber": 647, + "name": "BSD 3-Clause No Nuclear License", + "licenseId": "BSD-3-Clause-No-Nuclear-License", + "seeAlso": [ + "http://download.oracle.com/otn-pub/java/licenses/bsd.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json", + "referenceNumber": 377, + "name": "BSD 3-Clause No Nuclear License 2014", + "licenseId": "BSD-3-Clause-No-Nuclear-License-2014", + "seeAlso": [ + "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json", + "referenceNumber": 54, + "name": "BSD 3-Clause No Nuclear Warranty", + "licenseId": "BSD-3-Clause-No-Nuclear-Warranty", + "seeAlso": [ + "https://jogamp.org/git/?p\u003dgluegen.git;a\u003dblob_plain;f\u003dLICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json", + "referenceNumber": 633, + "name": "BSD 3-Clause Open MPI variant", + "licenseId": "BSD-3-Clause-Open-MPI", + "seeAlso": [ + "https://www.open-mpi.org/community/license.php", + "http://www.netlib.org/lapack/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Sun.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Sun.json", + "referenceNumber": 270, + "name": "BSD 3-Clause Sun Microsystems", + "licenseId": "BSD-3-Clause-Sun", + "seeAlso": [ + "https://github.com/xmlark/msv/blob/b9316e2f2270bc1606952ea4939ec87fbba157f3/xsdlib/src/main/java/com/sun/msv/datatype/regexp/InternalImpl.java" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause.json", + "referenceNumber": 470, + "name": "BSD 4-Clause \"Original\" or \"Old\" License", + "licenseId": "BSD-4-Clause", + "seeAlso": [ + "http://directory.fsf.org/wiki/License:BSD_4Clause" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause-Shortened.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-Shortened.json", + "referenceNumber": 220, + "name": "BSD 4 Clause Shortened", + "licenseId": "BSD-4-Clause-Shortened", + "seeAlso": [ + "https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause-UC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-UC.json", + "referenceNumber": 175, + "name": "BSD-4-Clause (University of California-Specific)", + "licenseId": "BSD-4-Clause-UC", + "seeAlso": [ + "http://www.freebsd.org/copyright/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4.3RENO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4.3RENO.json", + "referenceNumber": 361, + "name": "BSD 4.3 RENO License", + "licenseId": "BSD-4.3RENO", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dbinutils-gdb.git;a\u003dblob;f\u003dlibiberty/strcasecmp.c;h\u003d131d81c2ce7881fa48c363dc5bf5fb302c61ce0b;hb\u003dHEAD", + "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT#L55-63" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4.3TAHOE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4.3TAHOE.json", + "referenceNumber": 46, + "name": "BSD 4.3 TAHOE License", + "licenseId": "BSD-4.3TAHOE", + "seeAlso": [ + "https://github.com/389ds/389-ds-base/blob/main/ldap/include/sysexits-compat.h#L15", + "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id\u003da74c6b4ee49397cf330b333da1042bffa60ed14f#n1788" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.json", + "referenceNumber": 297, + "name": "BSD Advertising Acknowledgement License", + "licenseId": "BSD-Advertising-Acknowledgement", + "seeAlso": [ + "https://github.com/python-excel/xlrd/blob/master/LICENSE#L33" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.json", + "referenceNumber": 86, + "name": "BSD with Attribution and HPND disclaimer", + "licenseId": "BSD-Attribution-HPND-disclaimer", + "seeAlso": [ + "https://github.com/cyrusimap/cyrus-sasl/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Inferno-Nettverk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Inferno-Nettverk.json", + "referenceNumber": 89, + "name": "BSD-Inferno-Nettverk", + "licenseId": "BSD-Inferno-Nettverk", + "seeAlso": [ + "https://www.inet.no/dante/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Protection.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Protection.json", + "referenceNumber": 394, + "name": "BSD Protection License", + "licenseId": "BSD-Protection", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Source-beginning-file.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Source-beginning-file.json", + "referenceNumber": 378, + "name": "BSD Source Code Attribution - beginning of file variant", + "licenseId": "BSD-Source-beginning-file", + "seeAlso": [ + "https://github.com/lattera/freebsd/blob/master/sys/cam/cam.c#L4" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Source-Code.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Source-Code.json", + "referenceNumber": 605, + "name": "BSD Source Code Attribution", + "licenseId": "BSD-Source-Code", + "seeAlso": [ + "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Systemics.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Systemics.json", + "referenceNumber": 327, + "name": "Systemics BSD variant license", + "licenseId": "BSD-Systemics", + "seeAlso": [ + "https://metacpan.org/release/DPARIS/Crypt-DES-2.07/source/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Systemics-W3Works.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Systemics-W3Works.json", + "referenceNumber": 427, + "name": "Systemics W3Works BSD variant license", + "licenseId": "BSD-Systemics-W3Works", + "seeAlso": [ + "https://metacpan.org/release/DPARIS/Crypt-Blowfish-2.14/source/COPYRIGHT#L7" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSL-1.0.json", + "referenceNumber": 334, + "name": "Boost Software License 1.0", + "licenseId": "BSL-1.0", + "seeAlso": [ + "http://www.boost.org/LICENSE_1_0.txt", + "https://opensource.org/licenses/BSL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BUSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BUSL-1.1.json", + "referenceNumber": 285, + "name": "Business Source License 1.1", + "licenseId": "BUSL-1.1", + "seeAlso": [ + "https://mariadb.com/bsl11/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bzip2-1.0.5.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.5.json", + "referenceNumber": 574, + "name": "bzip2 and libbzip2 License v1.0.5", + "licenseId": "bzip2-1.0.5", + "seeAlso": [ + "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bzip2-1.0.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.6.json", + "referenceNumber": 534, + "name": "bzip2 and libbzip2 License v1.0.6", + "licenseId": "bzip2-1.0.6", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dbzip2.git;a\u003dblob;f\u003dLICENSE;hb\u003dbzip2-1.0.6", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html", + "https://sourceware.org/cgit/valgrind/tree/mpi/libmpiwrap.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/C-UDA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/C-UDA-1.0.json", + "referenceNumber": 162, + "name": "Computational Use of Data Agreement v1.0", + "licenseId": "C-UDA-1.0", + "seeAlso": [ + "https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md", + "https://cdla.dev/computational-use-of-data-agreement-v1-0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CAL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CAL-1.0.json", + "referenceNumber": 99, + "name": "Cryptographic Autonomy License 1.0", + "licenseId": "CAL-1.0", + "seeAlso": [ + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json", + "referenceNumber": 333, + "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)", + "licenseId": "CAL-1.0-Combined-Work-Exception", + "seeAlso": [ + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Caldera.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Caldera.json", + "referenceNumber": 528, + "name": "Caldera License", + "licenseId": "Caldera", + "seeAlso": [ + "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Caldera-no-preamble.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Caldera-no-preamble.json", + "referenceNumber": 233, + "name": "Caldera License (without preamble)", + "licenseId": "Caldera-no-preamble", + "seeAlso": [ + "https://github.com/apache/apr/blob/trunk/LICENSE#L298C6-L298C29" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Catharon.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Catharon.json", + "referenceNumber": 337, + "name": "Catharon License", + "licenseId": "Catharon", + "seeAlso": [ + "https://github.com/scummvm/scummvm/blob/v2.8.0/LICENSES/CatharonLicense.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CATOSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CATOSL-1.1.json", + "referenceNumber": 134, + "name": "Computer Associates Trusted Open Source License 1.1", + "licenseId": "CATOSL-1.1", + "seeAlso": [ + "https://opensource.org/licenses/CATOSL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-1.0.json", + "referenceNumber": 415, + "name": "Creative Commons Attribution 1.0 Generic", + "licenseId": "CC-BY-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.0.json", + "referenceNumber": 428, + "name": "Creative Commons Attribution 2.0 Generic", + "licenseId": "CC-BY-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5.json", + "referenceNumber": 573, + "name": "Creative Commons Attribution 2.5 Generic", + "licenseId": "CC-BY-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.5-AU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5-AU.json", + "referenceNumber": 388, + "name": "Creative Commons Attribution 2.5 Australia", + "licenseId": "CC-BY-2.5-AU", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.5/au/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0.json", + "referenceNumber": 132, + "name": "Creative Commons Attribution 3.0 Unported", + "licenseId": "CC-BY-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-AT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AT.json", + "referenceNumber": 25, + "name": "Creative Commons Attribution 3.0 Austria", + "licenseId": "CC-BY-3.0-AT", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/at/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-AU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AU.json", + "referenceNumber": 392, + "name": "Creative Commons Attribution 3.0 Australia", + "licenseId": "CC-BY-3.0-AU", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/au/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-DE.json", + "referenceNumber": 21, + "name": "Creative Commons Attribution 3.0 Germany", + "licenseId": "CC-BY-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-IGO.json", + "referenceNumber": 596, + "name": "Creative Commons Attribution 3.0 IGO", + "licenseId": "CC-BY-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-NL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-NL.json", + "referenceNumber": 157, + "name": "Creative Commons Attribution 3.0 Netherlands", + "licenseId": "CC-BY-3.0-NL", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/nl/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-US.json", + "referenceNumber": 395, + "name": "Creative Commons Attribution 3.0 United States", + "licenseId": "CC-BY-3.0-US", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/us/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-4.0.json", + "referenceNumber": 435, + "name": "Creative Commons Attribution 4.0 International", + "licenseId": "CC-BY-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-1.0.json", + "referenceNumber": 641, + "name": "Creative Commons Attribution Non Commercial 1.0 Generic", + "licenseId": "CC-BY-NC-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/1.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.0.json", + "referenceNumber": 91, + "name": "Creative Commons Attribution Non Commercial 2.0 Generic", + "licenseId": "CC-BY-NC-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/2.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.5.json", + "referenceNumber": 465, + "name": "Creative Commons Attribution Non Commercial 2.5 Generic", + "licenseId": "CC-BY-NC-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/2.5/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0.json", + "referenceNumber": 234, + "name": "Creative Commons Attribution Non Commercial 3.0 Unported", + "licenseId": "CC-BY-NC-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/3.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json", + "referenceNumber": 354, + "name": "Creative Commons Attribution Non Commercial 3.0 Germany", + "licenseId": "CC-BY-NC-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-4.0.json", + "referenceNumber": 53, + "name": "Creative Commons Attribution Non Commercial 4.0 International", + "licenseId": "CC-BY-NC-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json", + "referenceNumber": 88, + "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", + "licenseId": "CC-BY-NC-ND-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json", + "referenceNumber": 426, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", + "licenseId": "CC-BY-NC-ND-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json", + "referenceNumber": 441, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", + "licenseId": "CC-BY-NC-ND-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json", + "referenceNumber": 304, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", + "licenseId": "CC-BY-NC-ND-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json", + "referenceNumber": 121, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany", + "licenseId": "CC-BY-NC-ND-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json", + "referenceNumber": 171, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO", + "licenseId": "CC-BY-NC-ND-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json", + "referenceNumber": 183, + "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", + "licenseId": "CC-BY-NC-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json", + "referenceNumber": 501, + "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", + "licenseId": "CC-BY-NC-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json", + "referenceNumber": 358, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", + "licenseId": "CC-BY-NC-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.json", + "referenceNumber": 260, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany", + "licenseId": "CC-BY-NC-SA-2.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json", + "referenceNumber": 158, + "name": "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France", + "licenseId": "CC-BY-NC-SA-2.0-FR", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json", + "referenceNumber": 33, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales", + "licenseId": "CC-BY-NC-SA-2.0-UK", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json", + "referenceNumber": 222, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", + "licenseId": "CC-BY-NC-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json", + "referenceNumber": 255, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", + "licenseId": "CC-BY-NC-SA-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json", + "referenceNumber": 525, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany", + "licenseId": "CC-BY-NC-SA-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json", + "referenceNumber": 244, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO", + "licenseId": "CC-BY-NC-SA-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json", + "referenceNumber": 513, + "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", + "licenseId": "CC-BY-NC-SA-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-1.0.json", + "referenceNumber": 474, + "name": "Creative Commons Attribution No Derivatives 1.0 Generic", + "licenseId": "CC-BY-ND-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/1.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.0.json", + "referenceNumber": 356, + "name": "Creative Commons Attribution No Derivatives 2.0 Generic", + "licenseId": "CC-BY-ND-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/2.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.5.json", + "referenceNumber": 259, + "name": "Creative Commons Attribution No Derivatives 2.5 Generic", + "licenseId": "CC-BY-ND-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/2.5/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0.json", + "referenceNumber": 527, + "name": "Creative Commons Attribution No Derivatives 3.0 Unported", + "licenseId": "CC-BY-ND-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/3.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json", + "referenceNumber": 214, + "name": "Creative Commons Attribution No Derivatives 3.0 Germany", + "licenseId": "CC-BY-ND-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-4.0.json", + "referenceNumber": 481, + "name": "Creative Commons Attribution No Derivatives 4.0 International", + "licenseId": "CC-BY-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-1.0.json", + "referenceNumber": 588, + "name": "Creative Commons Attribution Share Alike 1.0 Generic", + "licenseId": "CC-BY-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0.json", + "referenceNumber": 180, + "name": "Creative Commons Attribution Share Alike 2.0 Generic", + "licenseId": "CC-BY-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json", + "referenceNumber": 385, + "name": "Creative Commons Attribution Share Alike 2.0 England and Wales", + "licenseId": "CC-BY-SA-2.0-UK", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json", + "referenceNumber": 17, + "name": "Creative Commons Attribution Share Alike 2.1 Japan", + "licenseId": "CC-BY-SA-2.1-JP", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.5.json", + "referenceNumber": 607, + "name": "Creative Commons Attribution Share Alike 2.5 Generic", + "licenseId": "CC-BY-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0.json", + "referenceNumber": 26, + "name": "Creative Commons Attribution Share Alike 3.0 Unported", + "licenseId": "CC-BY-SA-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json", + "referenceNumber": 398, + "name": "Creative Commons Attribution Share Alike 3.0 Austria", + "licenseId": "CC-BY-SA-3.0-AT", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/at/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json", + "referenceNumber": 120, + "name": "Creative Commons Attribution Share Alike 3.0 Germany", + "licenseId": "CC-BY-SA-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.json", + "referenceNumber": 519, + "name": "Creative Commons Attribution-ShareAlike 3.0 IGO", + "licenseId": "CC-BY-SA-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-4.0.json", + "referenceNumber": 13, + "name": "Creative Commons Attribution Share Alike 4.0 International", + "licenseId": "CC-BY-SA-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-PDDC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-PDDC.json", + "referenceNumber": 169, + "name": "Creative Commons Public Domain Dedication and Certification", + "licenseId": "CC-PDDC", + "seeAlso": [ + "https://creativecommons.org/licenses/publicdomain/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC0-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC0-1.0.json", + "referenceNumber": 491, + "name": "Creative Commons Zero v1.0 Universal", + "licenseId": "CC0-1.0", + "seeAlso": [ + "https://creativecommons.org/publicdomain/zero/1.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDDL-1.0.json", + "referenceNumber": 185, + "name": "Common Development and Distribution License 1.0", + "licenseId": "CDDL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/cddl1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDDL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDDL-1.1.json", + "referenceNumber": 476, + "name": "Common Development and Distribution License 1.1", + "licenseId": "CDDL-1.1", + "seeAlso": [ + "http://glassfish.java.net/public/CDDL+GPL_1_1.html", + "https://javaee.github.io/glassfish/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDL-1.0.json", + "referenceNumber": 305, + "name": "Common Documentation License 1.0", + "licenseId": "CDL-1.0", + "seeAlso": [ + "http://www.opensource.apple.com/cdl/", + "https://fedoraproject.org/wiki/Licensing/Common_Documentation_License", + "https://www.gnu.org/licenses/license-list.html#ACDL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDLA-Permissive-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-1.0.json", + "referenceNumber": 386, + "name": "Community Data License Agreement Permissive 1.0", + "licenseId": "CDLA-Permissive-1.0", + "seeAlso": [ + "https://cdla.io/permissive-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDLA-Permissive-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-2.0.json", + "referenceNumber": 590, + "name": "Community Data License Agreement Permissive 2.0", + "licenseId": "CDLA-Permissive-2.0", + "seeAlso": [ + "https://cdla.dev/permissive-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDLA-Sharing-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Sharing-1.0.json", + "referenceNumber": 190, + "name": "Community Data License Agreement Sharing 1.0", + "licenseId": "CDLA-Sharing-1.0", + "seeAlso": [ + "https://cdla.io/sharing-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-1.0.json", + "referenceNumber": 625, + "name": "CeCILL Free Software License Agreement v1.0", + "licenseId": "CECILL-1.0", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-1.1.json", + "referenceNumber": 326, + "name": "CeCILL Free Software License Agreement v1.1", + "licenseId": "CECILL-1.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-2.0.json", + "referenceNumber": 463, + "name": "CeCILL Free Software License Agreement v2.0", + "licenseId": "CECILL-2.0", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CECILL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-2.1.json", + "referenceNumber": 170, + "name": "CeCILL Free Software License Agreement v2.1", + "licenseId": "CECILL-2.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CECILL-B.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-B.json", + "referenceNumber": 196, + "name": "CeCILL-B Free Software License Agreement", + "licenseId": "CECILL-B", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CECILL-C.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-C.json", + "referenceNumber": 178, + "name": "CeCILL-C Free Software License Agreement", + "licenseId": "CECILL-C", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.1.json", + "referenceNumber": 148, + "name": "CERN Open Hardware Licence v1.1", + "licenseId": "CERN-OHL-1.1", + "seeAlso": [ + "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.2.json", + "referenceNumber": 651, + "name": "CERN Open Hardware Licence v1.2", + "licenseId": "CERN-OHL-1.2", + "seeAlso": [ + "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-P-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-P-2.0.json", + "referenceNumber": 543, + "name": "CERN Open Hardware Licence Version 2 - Permissive", + "licenseId": "CERN-OHL-P-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-S-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-S-2.0.json", + "referenceNumber": 396, + "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", + "licenseId": "CERN-OHL-S-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-W-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-W-2.0.json", + "referenceNumber": 614, + "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", + "licenseId": "CERN-OHL-W-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CFITSIO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CFITSIO.json", + "referenceNumber": 568, + "name": "CFITSIO License", + "licenseId": "CFITSIO", + "seeAlso": [ + "https://heasarc.gsfc.nasa.gov/docs/software/fitsio/c/f_user/node9.html", + "https://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/doc/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/check-cvs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/check-cvs.json", + "referenceNumber": 324, + "name": "check-cvs License", + "licenseId": "check-cvs", + "seeAlso": [ + "http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/contrib/check_cvs.in?revision\u003d1.1.4.3\u0026view\u003dmarkup\u0026pathrev\u003dcvs1-11-23#l2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/checkmk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/checkmk.json", + "referenceNumber": 464, + "name": "Checkmk License", + "licenseId": "checkmk", + "seeAlso": [ + "https://github.com/libcheck/check/blob/master/checkmk/checkmk.in" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ClArtistic.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ClArtistic.json", + "referenceNumber": 230, + "name": "Clarified Artistic License", + "licenseId": "ClArtistic", + "seeAlso": [ + "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/", + "http://www.ncftp.com/ncftp/doc/LICENSE.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Clips.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Clips.json", + "referenceNumber": 424, + "name": "Clips License", + "licenseId": "Clips", + "seeAlso": [ + "https://github.com/DrItanium/maya/blob/master/LICENSE.CLIPS" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CMU-Mach.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CMU-Mach.json", + "referenceNumber": 73, + "name": "CMU Mach License", + "licenseId": "CMU-Mach", + "seeAlso": [ + "https://www.cs.cmu.edu/~410/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CMU-Mach-nodoc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CMU-Mach-nodoc.json", + "referenceNumber": 8, + "name": "CMU Mach - no notices-in-documentation variant", + "licenseId": "CMU-Mach-nodoc", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L718-L728", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CNRI-Jython.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Jython.json", + "referenceNumber": 293, + "name": "CNRI Jython License", + "licenseId": "CNRI-Jython", + "seeAlso": [ + "http://www.jython.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CNRI-Python.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Python.json", + "referenceNumber": 402, + "name": "CNRI Python License", + "licenseId": "CNRI-Python", + "seeAlso": [ + "https://opensource.org/licenses/CNRI-Python" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json", + "referenceNumber": 224, + "name": "CNRI Python Open Source GPL Compatible License Agreement", + "licenseId": "CNRI-Python-GPL-Compatible", + "seeAlso": [ + "http://www.python.org/download/releases/1.6.1/download_win/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/COIL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/COIL-1.0.json", + "referenceNumber": 345, + "name": "Copyfree Open Innovation License", + "licenseId": "COIL-1.0", + "seeAlso": [ + "https://coil.apotheon.org/plaintext/01.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Community-Spec-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Community-Spec-1.0.json", + "referenceNumber": 56, + "name": "Community Specification License 1.0", + "licenseId": "Community-Spec-1.0", + "seeAlso": [ + "https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Condor-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Condor-1.1.json", + "referenceNumber": 77, + "name": "Condor Public License v1.1", + "licenseId": "Condor-1.1", + "seeAlso": [ + "http://research.cs.wisc.edu/condor/license.html#condor", + "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/copyleft-next-0.3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.0.json", + "referenceNumber": 322, + "name": "copyleft-next 0.3.0", + "licenseId": "copyleft-next-0.3.0", + "seeAlso": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/copyleft-next-0.3.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.1.json", + "referenceNumber": 403, + "name": "copyleft-next 0.3.1", + "licenseId": "copyleft-next-0.3.1", + "seeAlso": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Cornell-Lossless-JPEG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cornell-Lossless-JPEG.json", + "referenceNumber": 98, + "name": "Cornell Lossless JPEG License", + "licenseId": "Cornell-Lossless-JPEG", + "seeAlso": [ + "https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_lossless_jpeg.cpp#16", + "https://www.mssl.ucl.ac.uk/~mcrw/src/20050920/proto.h", + "https://gitlab.freedesktop.org/libopenraw/libopenraw/blob/master/lib/ljpegdecompressor.cpp#L32" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CPAL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPAL-1.0.json", + "referenceNumber": 548, + "name": "Common Public Attribution License 1.0", + "licenseId": "CPAL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CPAL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPL-1.0.json", + "referenceNumber": 114, + "name": "Common Public License 1.0", + "licenseId": "CPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CPOL-1.02.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPOL-1.02.json", + "referenceNumber": 6, + "name": "Code Project Open License 1.02", + "licenseId": "CPOL-1.02", + "seeAlso": [ + "http://www.codeproject.com/info/cpol10.aspx" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Cronyx.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cronyx.json", + "referenceNumber": 649, + "name": "Cronyx License", + "licenseId": "Cronyx", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/font/alias/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/cronyx-cyrillic/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/misc-cyrillic/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/screen-cyrillic/-/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Crossword.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Crossword.json", + "referenceNumber": 593, + "name": "Crossword License", + "licenseId": "Crossword", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Crossword" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CrystalStacker.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CrystalStacker.json", + "referenceNumber": 241, + "name": "CrystalStacker License", + "licenseId": "CrystalStacker", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd\u003dLicensing/CrystalStacker" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CUA-OPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CUA-OPL-1.0.json", + "referenceNumber": 409, + "name": "CUA Office Public License v1.0", + "licenseId": "CUA-OPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CUA-OPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Cube.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cube.json", + "referenceNumber": 141, + "name": "Cube License", + "licenseId": "Cube", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Cube" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/curl.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/curl.json", + "referenceNumber": 602, + "name": "curl License", + "licenseId": "curl", + "seeAlso": [ + "https://github.com/bagder/curl/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/cve-tou.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/cve-tou.json", + "referenceNumber": 656, + "name": "Common Vulnerability Enumeration ToU License", + "licenseId": "cve-tou", + "seeAlso": [ + "https://www.cve.org/Legal/TermsOfUse" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/D-FSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/D-FSL-1.0.json", + "referenceNumber": 116, + "name": "Deutsche Freie Software Lizenz", + "licenseId": "D-FSL-1.0", + "seeAlso": [ + "http://www.dipp.nrw.de/d-fsl/lizenzen/", + "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt", + "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DEC-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DEC-3-Clause.json", + "referenceNumber": 512, + "name": "DEC 3-Clause License", + "licenseId": "DEC-3-Clause", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L239" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/diffmark.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/diffmark.json", + "referenceNumber": 480, + "name": "diffmark license", + "licenseId": "diffmark", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/diffmark" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DL-DE-BY-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DL-DE-BY-2.0.json", + "referenceNumber": 84, + "name": "Data licence Germany – attribution – version 2.0", + "licenseId": "DL-DE-BY-2.0", + "seeAlso": [ + "https://www.govdata.de/dl-de/by-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DL-DE-ZERO-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DL-DE-ZERO-2.0.json", + "referenceNumber": 522, + "name": "Data licence Germany – zero – version 2.0", + "licenseId": "DL-DE-ZERO-2.0", + "seeAlso": [ + "https://www.govdata.de/dl-de/zero-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DOC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DOC.json", + "referenceNumber": 646, + "name": "DOC License", + "licenseId": "DOC", + "seeAlso": [ + "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", + "https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DocBook-Schema.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DocBook-Schema.json", + "referenceNumber": 153, + "name": "DocBook Schema License", + "licenseId": "DocBook-Schema", + "seeAlso": [ + "https://github.com/docbook/xslt10-stylesheets/blob/efd62655c11cc8773708df7a843613fa1e932bf8/xsl/assembly/schema/docbook51b7.rnc" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DocBook-XML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DocBook-XML.json", + "referenceNumber": 493, + "name": "DocBook XML License", + "licenseId": "DocBook-XML", + "seeAlso": [ + "https://github.com/docbook/xslt10-stylesheets/blob/efd62655c11cc8773708df7a843613fa1e932bf8/xsl/COPYING#L27" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Dotseqn.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Dotseqn.json", + "referenceNumber": 533, + "name": "Dotseqn License", + "licenseId": "Dotseqn", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Dotseqn" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DRL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DRL-1.0.json", + "referenceNumber": 410, + "name": "Detection Rule License 1.0", + "licenseId": "DRL-1.0", + "seeAlso": [ + "https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DRL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DRL-1.1.json", + "referenceNumber": 268, + "name": "Detection Rule License 1.1", + "licenseId": "DRL-1.1", + "seeAlso": [ + "https://github.com/SigmaHQ/Detection-Rule-License/blob/6ec7fbde6101d101b5b5d1fcb8f9b69fbc76c04a/LICENSE.Detection.Rules.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DSDP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DSDP.json", + "referenceNumber": 164, + "name": "DSDP License", + "licenseId": "DSDP", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/DSDP" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/dtoa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/dtoa.json", + "referenceNumber": 263, + "name": "David M. Gay dtoa License", + "licenseId": "dtoa", + "seeAlso": [ + "https://github.com/SWI-Prolog/swipl-devel/blob/master/src/os/dtoa.c", + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/stdlib/mprec.h;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/dvipdfm.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/dvipdfm.json", + "referenceNumber": 61, + "name": "dvipdfm License", + "licenseId": "dvipdfm", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/dvipdfm" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ECL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ECL-1.0.json", + "referenceNumber": 264, + "name": "Educational Community License v1.0", + "licenseId": "ECL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/ECL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ECL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ECL-2.0.json", + "referenceNumber": 363, + "name": "Educational Community License v2.0", + "licenseId": "ECL-2.0", + "seeAlso": [ + "https://opensource.org/licenses/ECL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/eCos-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/eCos-2.0.json", + "referenceNumber": 298, + "name": "eCos license version 2.0", + "licenseId": "eCos-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/ecos-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EFL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EFL-1.0.json", + "referenceNumber": 137, + "name": "Eiffel Forum License v1.0", + "licenseId": "EFL-1.0", + "seeAlso": [ + "http://www.eiffel-nice.org/license/forum.txt", + "https://opensource.org/licenses/EFL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/EFL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EFL-2.0.json", + "referenceNumber": 447, + "name": "Eiffel Forum License v2.0", + "licenseId": "EFL-2.0", + "seeAlso": [ + "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", + "https://opensource.org/licenses/EFL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/eGenix.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/eGenix.json", + "referenceNumber": 348, + "name": "eGenix.com Public License 1.1.0", + "licenseId": "eGenix", + "seeAlso": [ + "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf", + "https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Elastic-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Elastic-2.0.json", + "referenceNumber": 404, + "name": "Elastic License 2.0", + "licenseId": "Elastic-2.0", + "seeAlso": [ + "https://www.elastic.co/licensing/elastic-license", + "https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Entessa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Entessa.json", + "referenceNumber": 198, + "name": "Entessa Public License v1.0", + "licenseId": "Entessa", + "seeAlso": [ + "https://opensource.org/licenses/Entessa" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/EPICS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPICS.json", + "referenceNumber": 532, + "name": "EPICS Open License", + "licenseId": "EPICS", + "seeAlso": [ + "https://epics.anl.gov/license/open.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPL-1.0.json", + "referenceNumber": 115, + "name": "Eclipse Public License 1.0", + "licenseId": "EPL-1.0", + "seeAlso": [ + "http://www.eclipse.org/legal/epl-v10.html", + "https://opensource.org/licenses/EPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPL-2.0.json", + "referenceNumber": 282, + "name": "Eclipse Public License 2.0", + "licenseId": "EPL-2.0", + "seeAlso": [ + "https://www.eclipse.org/legal/epl-2.0", + "https://www.opensource.org/licenses/EPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ErlPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ErlPL-1.1.json", + "referenceNumber": 530, + "name": "Erlang Public License v1.1", + "licenseId": "ErlPL-1.1", + "seeAlso": [ + "http://www.erlang.org/EPLICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/etalab-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/etalab-2.0.json", + "referenceNumber": 129, + "name": "Etalab Open License 2.0", + "licenseId": "etalab-2.0", + "seeAlso": [ + "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", + "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EUDatagrid.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUDatagrid.json", + "referenceNumber": 393, + "name": "EU DataGrid Software License", + "licenseId": "EUDatagrid", + "seeAlso": [ + "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html", + "https://opensource.org/licenses/EUDatagrid" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.0.json", + "referenceNumber": 389, + "name": "European Union Public License 1.0", + "licenseId": "EUPL-1.0", + "seeAlso": [ + "http://ec.europa.eu/idabc/en/document/7330.html", + "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id\u003d31096" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.1.json", + "referenceNumber": 503, + "name": "European Union Public License 1.1", + "licenseId": "EUPL-1.1", + "seeAlso": [ + "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf", + "https://opensource.org/licenses/EUPL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.2.json", + "referenceNumber": 12, + "name": "European Union Public License 1.2", + "licenseId": "EUPL-1.2", + "seeAlso": [ + "https://joinup.ec.europa.eu/page/eupl-text-11-12", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt", + "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt", + "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri\u003dCELEX:32017D0863", + "https://opensource.org/licenses/EUPL-1.2" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Eurosym.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Eurosym.json", + "referenceNumber": 621, + "name": "Eurosym License", + "licenseId": "Eurosym", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Eurosym" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Fair.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Fair.json", + "referenceNumber": 258, + "name": "Fair License", + "licenseId": "Fair", + "seeAlso": [ + "https://web.archive.org/web/20150926120323/http://fairlicense.org/", + "https://opensource.org/licenses/Fair" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/FBM.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FBM.json", + "referenceNumber": 626, + "name": "Fuzzy Bitmap License", + "licenseId": "FBM", + "seeAlso": [ + "https://github.com/SWI-Prolog/packages-xpce/blob/161a40cd82004f731ba48024f9d30af388a7edf5/src/img/gifwrite.c#L21-L26" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FDK-AAC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FDK-AAC.json", + "referenceNumber": 344, + "name": "Fraunhofer FDK AAC Codec Library", + "licenseId": "FDK-AAC", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FDK-AAC", + "https://directory.fsf.org/wiki/License:Fdk" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Ferguson-Twofish.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ferguson-Twofish.json", + "referenceNumber": 362, + "name": "Ferguson Twofish License", + "licenseId": "Ferguson-Twofish", + "seeAlso": [ + "https://github.com/wernerd/ZRTPCPP/blob/6b3cd8e6783642292bad0c21e3e5e5ce45ff3e03/cryptcommon/twofish.c#L113C3-L127" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Frameworx-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Frameworx-1.0.json", + "referenceNumber": 188, + "name": "Frameworx Open License 1.0", + "licenseId": "Frameworx-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Frameworx-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/FreeBSD-DOC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FreeBSD-DOC.json", + "referenceNumber": 151, + "name": "FreeBSD Documentation License", + "licenseId": "FreeBSD-DOC", + "seeAlso": [ + "https://www.freebsd.org/copyright/freebsd-doc-license/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FreeImage.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FreeImage.json", + "referenceNumber": 232, + "name": "FreeImage Public License v1.0", + "licenseId": "FreeImage", + "seeAlso": [ + "http://freeimage.sourceforge.net/freeimage-license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFAP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFAP.json", + "referenceNumber": 436, + "name": "FSF All Permissive License", + "licenseId": "FSFAP", + "seeAlso": [ + "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/FSFAP-no-warranty-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFAP-no-warranty-disclaimer.json", + "referenceNumber": 547, + "name": "FSF All Permissive License (without Warranty)", + "licenseId": "FSFAP-no-warranty-disclaimer", + "seeAlso": [ + "https://git.savannah.gnu.org/cgit/wget.git/tree/util/trunc.c?h\u003dv1.21.3\u0026id\u003d40747a11e44ced5a8ac628a41f879ced3e2ebce9#n6" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFUL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFUL.json", + "referenceNumber": 2, + "name": "FSF Unlimited License", + "licenseId": "FSFUL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFULLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFULLR.json", + "referenceNumber": 508, + "name": "FSF Unlimited License (with License Retention)", + "licenseId": "FSFULLR", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFULLRWD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFULLRWD.json", + "referenceNumber": 640, + "name": "FSF Unlimited License (With License Retention and Warranty Disclaimer)", + "licenseId": "FSFULLRWD", + "seeAlso": [ + "https://lists.gnu.org/archive/html/autoconf/2012-04/msg00061.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FTL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FTL.json", + "referenceNumber": 249, + "name": "Freetype Project License", + "licenseId": "FTL", + "seeAlso": [ + "http://freetype.fis.uniroma2.it/FTL.TXT", + "http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT", + "http://gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Furuseth.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Furuseth.json", + "referenceNumber": 273, + "name": "Furuseth License", + "licenseId": "Furuseth", + "seeAlso": [ + "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT?ref_type\u003dheads#L39-51" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/fwlw.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/fwlw.json", + "referenceNumber": 50, + "name": "fwlw License", + "licenseId": "fwlw", + "seeAlso": [ + "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/fwlw/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GCR-docs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GCR-docs.json", + "referenceNumber": 272, + "name": "Gnome GCR Documentation License", + "licenseId": "GCR-docs", + "seeAlso": [ + "https://github.com/GNOME/gcr/blob/master/docs/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GD.json", + "referenceNumber": 624, + "name": "GD License", + "licenseId": "GD", + "seeAlso": [ + "https://libgd.github.io/manuals/2.3.0/files/license-txt.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1.json", + "referenceNumber": 177, + "name": "GNU Free Documentation License v1.1", + "licenseId": "GFDL-1.1", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-only.json", + "referenceNumber": 216, + "name": "GNU Free Documentation License v1.1 only - invariants", + "licenseId": "GFDL-1.1-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json", + "referenceNumber": 57, + "name": "GNU Free Documentation License v1.1 or later - invariants", + "licenseId": "GFDL-1.1-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json", + "referenceNumber": 38, + "name": "GNU Free Documentation License v1.1 only - no invariants", + "licenseId": "GFDL-1.1-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json", + "referenceNumber": 289, + "name": "GNU Free Documentation License v1.1 or later - no invariants", + "licenseId": "GFDL-1.1-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-only.json", + "referenceNumber": 654, + "name": "GNU Free Documentation License v1.1 only", + "licenseId": "GFDL-1.1-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-or-later.json", + "referenceNumber": 569, + "name": "GNU Free Documentation License v1.1 or later", + "licenseId": "GFDL-1.1-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2.json", + "referenceNumber": 235, + "name": "GNU Free Documentation License v1.2", + "licenseId": "GFDL-1.2", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-only.json", + "referenceNumber": 461, + "name": "GNU Free Documentation License v1.2 only - invariants", + "licenseId": "GFDL-1.2-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json", + "referenceNumber": 391, + "name": "GNU Free Documentation License v1.2 or later - invariants", + "licenseId": "GFDL-1.2-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json", + "referenceNumber": 187, + "name": "GNU Free Documentation License v1.2 only - no invariants", + "licenseId": "GFDL-1.2-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json", + "referenceNumber": 240, + "name": "GNU Free Documentation License v1.2 or later - no invariants", + "licenseId": "GFDL-1.2-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-only.json", + "referenceNumber": 302, + "name": "GNU Free Documentation License v1.2 only", + "licenseId": "GFDL-1.2-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-or-later.json", + "referenceNumber": 562, + "name": "GNU Free Documentation License v1.2 or later", + "licenseId": "GFDL-1.2-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3.json", + "referenceNumber": 60, + "name": "GNU Free Documentation License v1.3", + "licenseId": "GFDL-1.3", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-only.json", + "referenceNumber": 184, + "name": "GNU Free Documentation License v1.3 only - invariants", + "licenseId": "GFDL-1.3-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json", + "referenceNumber": 346, + "name": "GNU Free Documentation License v1.3 or later - invariants", + "licenseId": "GFDL-1.3-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json", + "referenceNumber": 59, + "name": "GNU Free Documentation License v1.3 only - no invariants", + "licenseId": "GFDL-1.3-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json", + "referenceNumber": 281, + "name": "GNU Free Documentation License v1.3 or later - no invariants", + "licenseId": "GFDL-1.3-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-only.json", + "referenceNumber": 642, + "name": "GNU Free Documentation License v1.3 only", + "licenseId": "GFDL-1.3-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-or-later.json", + "referenceNumber": 494, + "name": "GNU Free Documentation License v1.3 or later", + "licenseId": "GFDL-1.3-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Giftware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Giftware.json", + "referenceNumber": 618, + "name": "Giftware License", + "licenseId": "Giftware", + "seeAlso": [ + "http://liballeg.org/license.html#allegro-4-the-giftware-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GL2PS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GL2PS.json", + "referenceNumber": 231, + "name": "GL2PS License", + "licenseId": "GL2PS", + "seeAlso": [ + "http://www.geuz.org/gl2ps/COPYING.GL2PS" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Glide.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Glide.json", + "referenceNumber": 620, + "name": "3dfx Glide License", + "licenseId": "Glide", + "seeAlso": [ + "http://www.users.on.net/~triforce/glidexp/COPYING.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Glulxe.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Glulxe.json", + "referenceNumber": 429, + "name": "Glulxe License", + "licenseId": "Glulxe", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Glulxe" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GLWTPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GLWTPL.json", + "referenceNumber": 154, + "name": "Good Luck With That Public License", + "licenseId": "GLWTPL", + "seeAlso": [ + "https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/gnuplot.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gnuplot.json", + "referenceNumber": 271, + "name": "gnuplot License", + "licenseId": "gnuplot", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Gnuplot" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0.json", + "referenceNumber": 365, + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0+.json", + "referenceNumber": 66, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0-only.json", + "referenceNumber": 563, + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0-or-later.json", + "referenceNumber": 558, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0.json", + "referenceNumber": 613, + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0+.json", + "referenceNumber": 83, + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-only.json", + "referenceNumber": 483, + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-or-later.json", + "referenceNumber": 349, + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json", + "referenceNumber": 475, + "name": "GNU General Public License v2.0 w/Autoconf exception", + "licenseId": "GPL-2.0-with-autoconf-exception", + "seeAlso": [ + "http://ac-archive.sourceforge.net/doc/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json", + "referenceNumber": 492, + "name": "GNU General Public License v2.0 w/Bison exception", + "licenseId": "GPL-2.0-with-bison-exception", + "seeAlso": [ + "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json", + "referenceNumber": 144, + "name": "GNU General Public License v2.0 w/Classpath exception", + "licenseId": "GPL-2.0-with-classpath-exception", + "seeAlso": [ + "https://www.gnu.org/software/classpath/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-font-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-font-exception.json", + "referenceNumber": 579, + "name": "GNU General Public License v2.0 w/Font exception", + "licenseId": "GPL-2.0-with-font-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-faq.html#FontException" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json", + "referenceNumber": 449, + "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", + "licenseId": "GPL-2.0-with-GCC-exception", + "seeAlso": [ + "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0.json", + "referenceNumber": 434, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0+.json", + "referenceNumber": 586, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-only.json", + "referenceNumber": 42, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-or-later.json", + "referenceNumber": 269, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json", + "referenceNumber": 200, + "name": "GNU General Public License v3.0 w/Autoconf exception", + "licenseId": "GPL-3.0-with-autoconf-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/autoconf-exception-3.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json", + "referenceNumber": 546, + "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", + "licenseId": "GPL-3.0-with-GCC-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gcc-exception-3.1.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Graphics-Gems.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Graphics-Gems.json", + "referenceNumber": 437, + "name": "Graphics Gems License", + "licenseId": "Graphics-Gems", + "seeAlso": [ + "https://github.com/erich666/GraphicsGems/blob/master/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/gSOAP-1.3b.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gSOAP-1.3b.json", + "referenceNumber": 658, + "name": "gSOAP Public License v1.3b", + "licenseId": "gSOAP-1.3b", + "seeAlso": [ + "http://www.cs.fsu.edu/~engelen/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/gtkbook.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gtkbook.json", + "referenceNumber": 397, + "name": "gtkbook License", + "licenseId": "gtkbook", + "seeAlso": [ + "https://github.com/slogan621/gtkbook", + "https://github.com/oetiker/rrdtool-1.x/blob/master/src/plbasename.c#L8-L11" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Gutmann.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Gutmann.json", + "referenceNumber": 103, + "name": "Gutmann License", + "licenseId": "Gutmann", + "seeAlso": [ + "https://www.cs.auckland.ac.nz/~pgut001/dumpasn1.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HaskellReport.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HaskellReport.json", + "referenceNumber": 357, + "name": "Haskell Language Report License", + "licenseId": "HaskellReport", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/hdparm.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/hdparm.json", + "referenceNumber": 351, + "name": "hdparm License", + "licenseId": "hdparm", + "seeAlso": [ + "https://github.com/Distrotech/hdparm/blob/4517550db29a91420fb2b020349523b1b4512df2/LICENSE.TXT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HIDAPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HIDAPI.json", + "referenceNumber": 318, + "name": "HIDAPI License", + "licenseId": "HIDAPI", + "seeAlso": [ + "https://github.com/signal11/hidapi/blob/master/LICENSE-orig.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Hippocratic-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Hippocratic-2.1.json", + "referenceNumber": 425, + "name": "Hippocratic License 2.1", + "licenseId": "Hippocratic-2.1", + "seeAlso": [ + "https://firstdonoharm.dev/version/2/1/license.html", + "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HP-1986.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HP-1986.json", + "referenceNumber": 477, + "name": "Hewlett-Packard 1986 License", + "licenseId": "HP-1986", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/machine/hppa/memchr.S;h\u003d1cca3e5e8867aa4bffef1f75a5c1bba25c0c441e;hb\u003dHEAD#l2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HP-1989.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HP-1989.json", + "referenceNumber": 653, + "name": "Hewlett-Packard 1989 License", + "licenseId": "HP-1989", + "seeAlso": [ + "https://github.com/bleargh45/Data-UUID/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND.json", + "referenceNumber": 75, + "name": "Historical Permission Notice and Disclaimer", + "licenseId": "HPND", + "seeAlso": [ + "https://opensource.org/licenses/HPND", + "http://lists.opensource.org/pipermail/license-discuss_lists.opensource.org/2002-November/006304.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/HPND-DEC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-DEC.json", + "referenceNumber": 597, + "name": "Historical Permission Notice and Disclaimer - DEC variant", + "licenseId": "HPND-DEC", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/app/xkbcomp/-/blob/master/COPYING?ref_type\u003dheads#L69" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-doc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-doc.json", + "referenceNumber": 384, + "name": "Historical Permission Notice and Disclaimer - documentation variant", + "licenseId": "HPND-doc", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type\u003dheads#L185-197", + "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type\u003dheads#L70-77" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-doc-sell.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-doc-sell.json", + "referenceNumber": 648, + "name": "Historical Permission Notice and Disclaimer - documentation sell variant", + "licenseId": "HPND-doc-sell", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type\u003dheads#L108-117", + "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type\u003dheads#L153-162" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export-US.json", + "referenceNumber": 551, + "name": "HPND with US Government export control warning", + "licenseId": "HPND-export-US", + "seeAlso": [ + "https://www.kermitproject.org/ck90.html#source" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export-US-acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export-US-acknowledgement.json", + "referenceNumber": 661, + "name": "HPND with US Government export control warning and acknowledgment", + "licenseId": "HPND-export-US-acknowledgement", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L831-L852", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export-US-modify.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export-US-modify.json", + "referenceNumber": 119, + "name": "HPND with US Government export control warning and modification rqmt", + "licenseId": "HPND-export-US-modify", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L1157-L1182", + "https://github.com/pythongssapi/k5test/blob/v0.10.3/K5TEST-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export2-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export2-US.json", + "referenceNumber": 450, + "name": "HPND with US Government export control and 2 disclaimers", + "licenseId": "HPND-export2-US", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L111-L133", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Fenneberg-Livingston.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Fenneberg-Livingston.json", + "referenceNumber": 643, + "name": "Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant", + "licenseId": "HPND-Fenneberg-Livingston", + "seeAlso": [ + "https://github.com/FreeRADIUS/freeradius-client/blob/master/COPYRIGHT#L32", + "https://github.com/radcli/radcli/blob/master/COPYRIGHT#L34" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-INRIA-IMAG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-INRIA-IMAG.json", + "referenceNumber": 583, + "name": "Historical Permission Notice and Disclaimer - INRIA-IMAG variant", + "licenseId": "HPND-INRIA-IMAG", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/ipv6cp.c#L75-L83" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Intel.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Intel.json", + "referenceNumber": 20, + "name": "Historical Permission Notice and Disclaimer - Intel variant", + "licenseId": "HPND-Intel", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/machine/i960/memcpy.S;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Kevlin-Henney.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Kevlin-Henney.json", + "referenceNumber": 637, + "name": "Historical Permission Notice and Disclaimer - Kevlin Henney variant", + "licenseId": "HPND-Kevlin-Henney", + "seeAlso": [ + "https://github.com/mruby/mruby/blob/83d12f8d52522cdb7c8cc46fad34821359f453e6/mrbgems/mruby-dir/src/Win/dirent.c#L127-L140" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Markus-Kuhn.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Markus-Kuhn.json", + "referenceNumber": 172, + "name": "Historical Permission Notice and Disclaimer - Markus Kuhn variant", + "licenseId": "HPND-Markus-Kuhn", + "seeAlso": [ + "https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c", + "https://sourceware.org/git/?p\u003dbinutils-gdb.git;a\u003dblob;f\u003dreadline/readline/support/wcwidth.c;h\u003d0f5ec995796f4813abbcf4972aec0378ab74722a;hb\u003dHEAD#l55" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-merchantability-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-merchantability-variant.json", + "referenceNumber": 572, + "name": "Historical Permission Notice and Disclaimer - merchantability variant", + "licenseId": "HPND-merchantability-variant", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/misc/fini.c;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-MIT-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-MIT-disclaimer.json", + "referenceNumber": 609, + "name": "Historical Permission Notice and Disclaimer with MIT disclaimer", + "licenseId": "HPND-MIT-disclaimer", + "seeAlso": [ + "https://metacpan.org/release/NLNETLABS/Net-DNS-SEC-1.22/source/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Netrek.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Netrek.json", + "referenceNumber": 126, + "name": "Historical Permission Notice and Disclaimer - Netrek variant", + "licenseId": "HPND-Netrek", + "seeAlso": [], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Pbmplus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Pbmplus.json", + "referenceNumber": 242, + "name": "Historical Permission Notice and Disclaimer - Pbmplus variant", + "licenseId": "HPND-Pbmplus", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/netpbm.c#l8" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-MIT-disclaimer-xserver.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-MIT-disclaimer-xserver.json", + "referenceNumber": 160, + "name": "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer", + "licenseId": "HPND-sell-MIT-disclaimer-xserver", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L1781" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-regexpr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-regexpr.json", + "referenceNumber": 44, + "name": "Historical Permission Notice and Disclaimer - sell regexpr variant", + "licenseId": "HPND-sell-regexpr", + "seeAlso": [ + "https://gitlab.com/bacula-org/bacula/-/blob/Branch-11.0/bacula/LICENSE-FOSS?ref_type\u003dheads#L245" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant.json", + "referenceNumber": 485, + "name": "Historical Permission Notice and Disclaimer - sell variant", + "licenseId": "HPND-sell-variant", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h\u003dv4.19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.json", + "referenceNumber": 430, + "name": "HPND sell variant with MIT disclaimer", + "licenseId": "HPND-sell-variant-MIT-disclaimer", + "seeAlso": [ + "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer-rev.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer-rev.json", + "referenceNumber": 10, + "name": "HPND sell variant with MIT disclaimer - reverse", + "licenseId": "HPND-sell-variant-MIT-disclaimer-rev", + "seeAlso": [ + "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/dynlist.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-UC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-UC.json", + "referenceNumber": 423, + "name": "Historical Permission Notice and Disclaimer - University of California variant", + "licenseId": "HPND-UC", + "seeAlso": [ + "https://core.tcl-lang.org/tk/file?name\u003dcompat/unistd.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-UC-export-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-UC-export-US.json", + "referenceNumber": 82, + "name": "Historical Permission Notice and Disclaimer - University of California, US export warning", + "licenseId": "HPND-UC-export-US", + "seeAlso": [ + "https://github.com/RTimothyEdwards/magic/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HTMLTIDY.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HTMLTIDY.json", + "referenceNumber": 439, + "name": "HTML Tidy License", + "licenseId": "HTMLTIDY", + "seeAlso": [ + "https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IBM-pibs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IBM-pibs.json", + "referenceNumber": 604, + "name": "IBM PowerPC Initialization and Boot Software", + "licenseId": "IBM-pibs", + "seeAlso": [ + "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003darch/powerpc/cpu/ppc4xx/miiphy.c;h\u003d297155fdafa064b955e53e9832de93bfb0cfb85b;hb\u003d9fab4bf4cc077c21e43941866f3f2c196f28670d" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ICU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ICU.json", + "referenceNumber": 375, + "name": "ICU License", + "licenseId": "ICU", + "seeAlso": [ + "http://source.icu-project.org/repos/icu/icu/trunk/license.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/IEC-Code-Components-EULA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IEC-Code-Components-EULA.json", + "referenceNumber": 18, + "name": "IEC Code Components End-user licence agreement", + "licenseId": "IEC-Code-Components-EULA", + "seeAlso": [ + "https://www.iec.ch/webstore/custserv/pdf/CC-EULA.pdf", + "https://www.iec.ch/CCv1", + "https://www.iec.ch/copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IJG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IJG.json", + "referenceNumber": 374, + "name": "Independent JPEG Group License", + "licenseId": "IJG", + "seeAlso": [ + "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev\u003d1.2" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/IJG-short.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IJG-short.json", + "referenceNumber": 152, + "name": "Independent JPEG Group License - short", + "licenseId": "IJG-short", + "seeAlso": [ + "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/ljpg/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ImageMagick.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ImageMagick.json", + "referenceNumber": 608, + "name": "ImageMagick License", + "licenseId": "ImageMagick", + "seeAlso": [ + "http://www.imagemagick.org/script/license.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/iMatix.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/iMatix.json", + "referenceNumber": 645, + "name": "iMatix Standard Function Library Agreement", + "licenseId": "iMatix", + "seeAlso": [ + "http://legacy.imatix.com/html/sfl/sfl4.htm#license" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Imlib2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Imlib2.json", + "referenceNumber": 96, + "name": "Imlib2 License", + "licenseId": "Imlib2", + "seeAlso": [ + "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", + "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Info-ZIP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Info-ZIP.json", + "referenceNumber": 451, + "name": "Info-ZIP License", + "licenseId": "Info-ZIP", + "seeAlso": [ + "http://www.info-zip.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Inner-Net-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Inner-Net-2.0.json", + "referenceNumber": 58, + "name": "Inner Net License v2.0", + "licenseId": "Inner-Net-2.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Inner_Net_License", + "https://sourceware.org/git/?p\u003dglibc.git;a\u003dblob;f\u003dLICENSES;h\u003d530893b1dc9ea00755603c68fb36bd4fc38a7be8;hb\u003dHEAD#l207" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Intel.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Intel.json", + "referenceNumber": 316, + "name": "Intel Open Source License", + "licenseId": "Intel", + "seeAlso": [ + "https://opensource.org/licenses/Intel" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Intel-ACPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Intel-ACPI.json", + "referenceNumber": 309, + "name": "Intel ACPI Software License Agreement", + "licenseId": "Intel-ACPI", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Interbase-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Interbase-1.0.json", + "referenceNumber": 665, + "name": "Interbase Public License v1.0", + "licenseId": "Interbase-1.0", + "seeAlso": [ + "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IPA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IPA.json", + "referenceNumber": 237, + "name": "IPA Font License", + "licenseId": "IPA", + "seeAlso": [ + "https://opensource.org/licenses/IPA" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/IPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IPL-1.0.json", + "referenceNumber": 443, + "name": "IBM Public License v1.0", + "licenseId": "IPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/IPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ISC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ISC.json", + "referenceNumber": 131, + "name": "ISC License", + "licenseId": "ISC", + "seeAlso": [ + "https://www.isc.org/licenses/", + "https://www.isc.org/downloads/software-support-policy/isc-license/", + "https://opensource.org/licenses/ISC" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ISC-Veillard.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ISC-Veillard.json", + "referenceNumber": 554, + "name": "ISC Veillard variant", + "licenseId": "ISC-Veillard", + "seeAlso": [ + "https://raw.githubusercontent.com/GNOME/libxml2/4c2e7c651f6c2f0d1a74f350cbda95f7df3e7017/hash.c", + "https://github.com/GNOME/libxml2/blob/master/dict.c", + "https://sourceforge.net/p/ctrio/git/ci/master/tree/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Jam.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Jam.json", + "referenceNumber": 338, + "name": "Jam License", + "licenseId": "Jam", + "seeAlso": [ + "https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html", + "https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/JasPer-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JasPer-2.0.json", + "referenceNumber": 591, + "name": "JasPer License", + "licenseId": "JasPer-2.0", + "seeAlso": [ + "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JPL-image.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JPL-image.json", + "referenceNumber": 343, + "name": "JPL Image Use Policy", + "licenseId": "JPL-image", + "seeAlso": [ + "https://www.jpl.nasa.gov/jpl-image-use-policy" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JPNIC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JPNIC.json", + "referenceNumber": 117, + "name": "Japan Network Information Center License", + "licenseId": "JPNIC", + "seeAlso": [ + "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JSON.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JSON.json", + "referenceNumber": 174, + "name": "JSON License", + "licenseId": "JSON", + "seeAlso": [ + "http://www.json.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Kastrup.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Kastrup.json", + "referenceNumber": 181, + "name": "Kastrup License", + "licenseId": "Kastrup", + "seeAlso": [ + "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/kastrup/binhex.dtx" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Kazlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Kazlib.json", + "referenceNumber": 197, + "name": "Kazlib License", + "licenseId": "Kazlib", + "seeAlso": [ + "http://git.savannah.gnu.org/cgit/kazlib.git/tree/except.c?id\u003d0062df360c2d17d57f6af19b0e444c51feb99036" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Knuth-CTAN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Knuth-CTAN.json", + "referenceNumber": 22, + "name": "Knuth CTAN License", + "licenseId": "Knuth-CTAN", + "seeAlso": [ + "https://ctan.org/license/knuth" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LAL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LAL-1.2.json", + "referenceNumber": 261, + "name": "Licence Art Libre 1.2", + "licenseId": "LAL-1.2", + "seeAlso": [ + "http://artlibre.org/licence/lal/licence-art-libre-12/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LAL-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LAL-1.3.json", + "referenceNumber": 526, + "name": "Licence Art Libre 1.3", + "licenseId": "LAL-1.3", + "seeAlso": [ + "https://artlibre.org/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Latex2e.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Latex2e.json", + "referenceNumber": 3, + "name": "Latex2e License", + "licenseId": "Latex2e", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Latex2e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Latex2e-translated-notice.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Latex2e-translated-notice.json", + "referenceNumber": 104, + "name": "Latex2e with translated notice permission", + "licenseId": "Latex2e-translated-notice", + "seeAlso": [ + "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id\u003da74c6b4ee49397cf330b333da1042bffa60ed14f#n74" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Leptonica.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Leptonica.json", + "referenceNumber": 221, + "name": "Leptonica License", + "licenseId": "Leptonica", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Leptonica" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0.json", + "referenceNumber": 81, + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0+.json", + "referenceNumber": 265, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-only.json", + "referenceNumber": 517, + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-or-later.json", + "referenceNumber": 458, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1.json", + "referenceNumber": 659, + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1+.json", + "referenceNumber": 69, + "name": "GNU Lesser General Public License v2.1 or later", + "licenseId": "LGPL-2.1+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-only.json", + "referenceNumber": 524, + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-or-later.json", + "referenceNumber": 336, + "name": "GNU Lesser General Public License v2.1 or later", + "licenseId": "LGPL-2.1-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0.json", + "referenceNumber": 381, + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0+.json", + "referenceNumber": 303, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-only.json", + "referenceNumber": 225, + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-or-later.json", + "referenceNumber": 411, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPLLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPLLR.json", + "referenceNumber": 87, + "name": "Lesser General Public License For Linguistic Resources", + "licenseId": "LGPLLR", + "seeAlso": [ + "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Libpng.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Libpng.json", + "referenceNumber": 531, + "name": "libpng License", + "licenseId": "Libpng", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libpng-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libpng-2.0.json", + "referenceNumber": 149, + "name": "PNG Reference Library version 2", + "licenseId": "libpng-2.0", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libselinux-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libselinux-1.0.json", + "referenceNumber": 320, + "name": "libselinux public domain notice", + "licenseId": "libselinux-1.0", + "seeAlso": [ + "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libtiff.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libtiff.json", + "referenceNumber": 24, + "name": "libtiff License", + "licenseId": "libtiff", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/libtiff" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libutil-David-Nugent.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libutil-David-Nugent.json", + "referenceNumber": 662, + "name": "libutil David Nugent License", + "licenseId": "libutil-David-Nugent", + "seeAlso": [ + "http://web.mit.edu/freebsd/head/lib/libutil/login_ok.3", + "https://cgit.freedesktop.org/libbsd/tree/man/setproctitle.3bsd" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-P-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-P-1.1.json", + "referenceNumber": 150, + "name": "Licence Libre du Québec – Permissive version 1.1", + "licenseId": "LiLiQ-P-1.1", + "seeAlso": [ + "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", + "http://opensource.org/licenses/LiLiQ-P-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-R-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-R-1.1.json", + "referenceNumber": 203, + "name": "Licence Libre du Québec – Réciprocité version 1.1", + "licenseId": "LiLiQ-R-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-R-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json", + "referenceNumber": 314, + "name": "Licence Libre du Québec – Réciprocité forte version 1.1", + "licenseId": "LiLiQ-Rplus-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-Rplus-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-1-para.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-1-para.json", + "referenceNumber": 577, + "name": "Linux man-pages - 1 paragraph", + "licenseId": "Linux-man-pages-1-para", + "seeAlso": [ + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/getcpu.2#n4" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft.json", + "referenceNumber": 213, + "name": "Linux man-pages Copyleft", + "licenseId": "Linux-man-pages-copyleft", + "seeAlso": [ + "https://www.kernel.org/doc/man-pages/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.json", + "referenceNumber": 352, + "name": "Linux man-pages Copyleft - 2 paragraphs", + "licenseId": "Linux-man-pages-copyleft-2-para", + "seeAlso": [ + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/move_pages.2#n5", + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/migrate_pages.2#n8" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.json", + "referenceNumber": 186, + "name": "Linux man-pages Copyleft Variant", + "licenseId": "Linux-man-pages-copyleft-var", + "seeAlso": [ + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/set_mempolicy.2#n5" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-OpenIB.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-OpenIB.json", + "referenceNumber": 278, + "name": "Linux Kernel Variant of OpenIB.org license", + "licenseId": "Linux-OpenIB", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LOOP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LOOP.json", + "referenceNumber": 521, + "name": "Common Lisp LOOP License", + "licenseId": "LOOP", + "seeAlso": [ + "https://gitlab.com/embeddable-common-lisp/ecl/-/blob/develop/src/lsp/loop.lsp", + "http://git.savannah.gnu.org/cgit/gcl.git/tree/gcl/lsp/gcl_loop.lsp?h\u003dVersion_2_6_13pre", + "https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/src/code/loop.lisp", + "https://github.com/cl-adams/adams/blob/master/LICENSE.md", + "https://github.com/blakemcbride/eclipse-lisp/blob/master/lisp/loop.lisp", + "https://gitlab.common-lisp.net/cmucl/cmucl/-/blob/master/src/code/loop.lisp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPD-document.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPD-document.json", + "referenceNumber": 561, + "name": "LPD Documentation License", + "licenseId": "LPD-document", + "seeAlso": [ + "https://github.com/Cyan4973/xxHash/blob/dev/doc/xxhash_spec.md", + "https://www.ietf.org/rfc/rfc1952.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPL-1.0.json", + "referenceNumber": 267, + "name": "Lucent Public License Version 1.0", + "licenseId": "LPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/LPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LPL-1.02.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPL-1.02.json", + "referenceNumber": 122, + "name": "Lucent Public License v1.02", + "licenseId": "LPL-1.02", + "seeAlso": [ + "http://plan9.bell-labs.com/plan9/license.html", + "https://opensource.org/licenses/LPL-1.02" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.0.json", + "referenceNumber": 133, + "name": "LaTeX Project Public License v1.0", + "licenseId": "LPPL-1.0", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.1.json", + "referenceNumber": 284, + "name": "LaTeX Project Public License v1.1", + "licenseId": "LPPL-1.1", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.2.json", + "referenceNumber": 407, + "name": "LaTeX Project Public License v1.2", + "licenseId": "LPPL-1.2", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.3a.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.3a.json", + "referenceNumber": 510, + "name": "LaTeX Project Public License v1.3a", + "licenseId": "LPPL-1.3a", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3a.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.3c.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.3c.json", + "referenceNumber": 300, + "name": "LaTeX Project Public License v1.3c", + "licenseId": "LPPL-1.3c", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3c.txt", + "https://opensource.org/licenses/LPPL-1.3c" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/lsof.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/lsof.json", + "referenceNumber": 76, + "name": "lsof License", + "licenseId": "lsof", + "seeAlso": [ + "https://github.com/lsof-org/lsof/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.json", + "referenceNumber": 383, + "name": "Lucida Bitmap Fonts License", + "licenseId": "Lucida-Bitmap-Fonts", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/font/bh-100dpi/-/blob/master/COPYING?ref_type\u003dheads" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.json", + "referenceNumber": 239, + "name": "LZMA SDK License (versions 9.11 to 9.20)", + "licenseId": "LZMA-SDK-9.11-to-9.20", + "seeAlso": [ + "https://www.7-zip.org/sdk.html", + "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LZMA-SDK-9.22.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.22.json", + "referenceNumber": 600, + "name": "LZMA SDK License (versions 9.22 and beyond)", + "licenseId": "LZMA-SDK-9.22", + "seeAlso": [ + "https://www.7-zip.org/sdk.html", + "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Mackerras-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mackerras-3-Clause.json", + "referenceNumber": 540, + "name": "Mackerras 3-Clause License", + "licenseId": "Mackerras-3-Clause", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/chap_ms.c#L6-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Mackerras-3-Clause-acknowledgment.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mackerras-3-Clause-acknowledgment.json", + "referenceNumber": 176, + "name": "Mackerras 3-Clause - acknowledgment variant", + "licenseId": "Mackerras-3-Clause-acknowledgment", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/auth.c#L6-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/magaz.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/magaz.json", + "referenceNumber": 93, + "name": "magaz License", + "licenseId": "magaz", + "seeAlso": [ + "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/magaz/magaz.tex" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mailprio.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mailprio.json", + "referenceNumber": 292, + "name": "mailprio License", + "licenseId": "mailprio", + "seeAlso": [ + "https://fossies.org/linux/sendmail/contrib/mailprio" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MakeIndex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MakeIndex.json", + "referenceNumber": 552, + "name": "MakeIndex License", + "licenseId": "MakeIndex", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MakeIndex" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Martin-Birgmeier.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Martin-Birgmeier.json", + "referenceNumber": 364, + "name": "Martin Birgmeier License", + "licenseId": "Martin-Birgmeier", + "seeAlso": [ + "https://github.com/Perl/perl5/blob/blead/util.c#L6136" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/McPhee-slideshow.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/McPhee-slideshow.json", + "referenceNumber": 511, + "name": "McPhee Slideshow License", + "licenseId": "McPhee-slideshow", + "seeAlso": [ + "https://mirror.las.iastate.edu/tex-archive/graphics/metapost/contrib/macros/slideshow/slideshow.mp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/metamail.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/metamail.json", + "referenceNumber": 325, + "name": "metamail License", + "licenseId": "metamail", + "seeAlso": [ + "https://github.com/Dual-Life/mime-base64/blob/master/Base64.xs#L12" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Minpack.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Minpack.json", + "referenceNumber": 634, + "name": "Minpack License", + "licenseId": "Minpack", + "seeAlso": [ + "http://www.netlib.org/minpack/disclaimer", + "https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MirOS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MirOS.json", + "referenceNumber": 202, + "name": "The MirOS Licence", + "licenseId": "MirOS", + "seeAlso": [ + "https://opensource.org/licenses/MirOS" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MIT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT.json", + "referenceNumber": 601, + "name": "MIT License", + "licenseId": "MIT", + "seeAlso": [ + "https://opensource.org/license/mit/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MIT-0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-0.json", + "referenceNumber": 587, + "name": "MIT No Attribution", + "licenseId": "MIT-0", + "seeAlso": [ + "https://github.com/aws/mit-0", + "https://romanrm.net/mit-zero", + "https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MIT-advertising.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-advertising.json", + "referenceNumber": 39, + "name": "Enlightenment License (e16)", + "licenseId": "MIT-advertising", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-CMU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-CMU.json", + "referenceNumber": 36, + "name": "CMU License", + "licenseId": "MIT-CMU", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT?rd\u003dLicensing/MIT#CMU_Style", + "https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-enna.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-enna.json", + "referenceNumber": 207, + "name": "enna License", + "licenseId": "MIT-enna", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#enna" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-feh.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-feh.json", + "referenceNumber": 146, + "name": "feh License", + "licenseId": "MIT-feh", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#feh" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Festival.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Festival.json", + "referenceNumber": 431, + "name": "MIT Festival Variant", + "licenseId": "MIT-Festival", + "seeAlso": [ + "https://github.com/festvox/flite/blob/master/COPYING", + "https://github.com/festvox/speech_tools/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Khronos-old.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Khronos-old.json", + "referenceNumber": 68, + "name": "MIT Khronos - old variant", + "licenseId": "MIT-Khronos-old", + "seeAlso": [ + "https://github.com/KhronosGroup/SPIRV-Cross/blob/main/LICENSES/LicenseRef-KhronosFreeUse.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Modern-Variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Modern-Variant.json", + "referenceNumber": 92, + "name": "MIT License Modern Variant", + "licenseId": "MIT-Modern-Variant", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants", + "https://ptolemy.berkeley.edu/copyright.htm", + "https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MIT-open-group.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-open-group.json", + "referenceNumber": 520, + "name": "MIT Open Group variant", + "licenseId": "MIT-open-group", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xvinfo/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-testregex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-testregex.json", + "referenceNumber": 578, + "name": "MIT testregex Variant", + "licenseId": "MIT-testregex", + "seeAlso": [ + "https://github.com/dotnet/runtime/blob/55e1ac7c07df62c4108d4acedf78f77574470ce5/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/AttRegexTests.cs#L12-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Wu.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Wu.json", + "referenceNumber": 156, + "name": "MIT Tom Wu Variant", + "licenseId": "MIT-Wu", + "seeAlso": [ + "https://github.com/chromium/octane/blob/master/crypto.js" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MITNFA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MITNFA.json", + "referenceNumber": 650, + "name": "MIT +no-false-attribs license", + "licenseId": "MITNFA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MITNFA" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MMIXware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MMIXware.json", + "referenceNumber": 444, + "name": "MMIXware License", + "licenseId": "MMIXware", + "seeAlso": [ + "https://gitlab.lrz.de/mmix/mmixware/-/blob/master/boilerplate.w" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Motosoto.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Motosoto.json", + "referenceNumber": 31, + "name": "Motosoto License", + "licenseId": "Motosoto", + "seeAlso": [ + "https://opensource.org/licenses/Motosoto" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MPEG-SSG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPEG-SSG.json", + "referenceNumber": 323, + "name": "MPEG Software Simulation", + "licenseId": "MPEG-SSG", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/ppm/ppmtompeg/jrevdct.c#l1189" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mpi-permissive.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mpi-permissive.json", + "referenceNumber": 459, + "name": "mpi Permissive License", + "licenseId": "mpi-permissive", + "seeAlso": [ + "https://sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl\u003d19#L19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mpich2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mpich2.json", + "referenceNumber": 448, + "name": "mpich2 License", + "licenseId": "mpich2", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-1.0.json", + "referenceNumber": 248, + "name": "Mozilla Public License 1.0", + "licenseId": "MPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/MPL-1.0.html", + "https://opensource.org/licenses/MPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-1.1.json", + "referenceNumber": 219, + "name": "Mozilla Public License 1.1", + "licenseId": "MPL-1.1", + "seeAlso": [ + "http://www.mozilla.org/MPL/MPL-1.1.html", + "https://opensource.org/licenses/MPL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-2.0.json", + "referenceNumber": 147, + "name": "Mozilla Public License 2.0", + "licenseId": "MPL-2.0", + "seeAlso": [ + "https://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json", + "referenceNumber": 529, + "name": "Mozilla Public License 2.0 (no copyleft exception)", + "licenseId": "MPL-2.0-no-copyleft-exception", + "seeAlso": [ + "https://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/mplus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mplus.json", + "referenceNumber": 553, + "name": "mplus Font License", + "licenseId": "mplus", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:Mplus?rd\u003dLicensing/mplus" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MS-LPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-LPL.json", + "referenceNumber": 412, + "name": "Microsoft Limited Public License", + "licenseId": "MS-LPL", + "seeAlso": [ + "https://www.openhub.net/licenses/mslpl", + "https://github.com/gabegundy/atlserver/blob/master/License.txt", + "https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MS-PL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-PL.json", + "referenceNumber": 360, + "name": "Microsoft Public License", + "licenseId": "MS-PL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-PL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MS-RL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-RL.json", + "referenceNumber": 212, + "name": "Microsoft Reciprocal License", + "licenseId": "MS-RL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-RL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MTLL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MTLL.json", + "referenceNumber": 610, + "name": "Matrix Template Library License", + "licenseId": "MTLL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MulanPSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MulanPSL-1.0.json", + "referenceNumber": 236, + "name": "Mulan Permissive Software License, Version 1", + "licenseId": "MulanPSL-1.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL/", + "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MulanPSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MulanPSL-2.0.json", + "referenceNumber": 523, + "name": "Mulan Permissive Software License, Version 2", + "licenseId": "MulanPSL-2.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Multics.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Multics.json", + "referenceNumber": 462, + "name": "Multics License", + "licenseId": "Multics", + "seeAlso": [ + "https://opensource.org/licenses/Multics" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Mup.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mup.json", + "referenceNumber": 515, + "name": "Mup License", + "licenseId": "Mup", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Mup" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NAIST-2003.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NAIST-2003.json", + "referenceNumber": 118, + "name": "Nara Institute of Science and Technology License (2003)", + "licenseId": "NAIST-2003", + "seeAlso": [ + "https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text", + "https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NASA-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NASA-1.3.json", + "referenceNumber": 488, + "name": "NASA Open Source Agreement 1.3", + "licenseId": "NASA-1.3", + "seeAlso": [ + "http://ti.arc.nasa.gov/opensource/nosa/", + "https://opensource.org/licenses/NASA-1.3" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Naumen.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Naumen.json", + "referenceNumber": 400, + "name": "Naumen Public License", + "licenseId": "Naumen", + "seeAlso": [ + "https://opensource.org/licenses/Naumen" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NBPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NBPL-1.0.json", + "referenceNumber": 168, + "name": "Net Boolean Public License v1", + "licenseId": "NBPL-1.0", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d37b4b3f6cc4bf34e1d3dec61e69914b9819d8894" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCBI-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCBI-PD.json", + "referenceNumber": 599, + "name": "NCBI Public Domain Notice", + "licenseId": "NCBI-PD", + "seeAlso": [ + "https://github.com/ncbi/sra-tools/blob/e8e5b6af4edc460156ad9ce5902d0779cffbf685/LICENSE", + "https://github.com/ncbi/datasets/blob/0ea4cd16b61e5b799d9cc55aecfa016d6c9bd2bf/LICENSE.md", + "https://github.com/ncbi/gprobe/blob/de64d30fee8b4c4013094d7d3139ea89b5dd1ace/LICENSE", + "https://github.com/ncbi/egapx/blob/08930b9dec0c69b2d1a05e5153c7b95ef0a3eb0f/LICENSE", + "https://github.com/ncbi/datasets/blob/master/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCGL-UK-2.0.json", + "referenceNumber": 130, + "name": "Non-Commercial Government Licence", + "licenseId": "NCGL-UK-2.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCL.json", + "referenceNumber": 516, + "name": "NCL Source Code License", + "licenseId": "NCL", + "seeAlso": [ + "https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/modules/module-filter-chain/pffft.c?ref_type\u003dheads#L1-52" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCSA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCSA.json", + "referenceNumber": 652, + "name": "University of Illinois/NCSA Open Source License", + "licenseId": "NCSA", + "seeAlso": [ + "http://otm.illinois.edu/uiuc_openSource", + "https://opensource.org/licenses/NCSA" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Net-SNMP.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/Net-SNMP.json", + "referenceNumber": 469, + "name": "Net-SNMP License", + "licenseId": "Net-SNMP", + "seeAlso": [ + "http://net-snmp.sourceforge.net/about/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NetCDF.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NetCDF.json", + "referenceNumber": 189, + "name": "NetCDF license", + "licenseId": "NetCDF", + "seeAlso": [ + "http://www.unidata.ucar.edu/software/netcdf/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Newsletr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Newsletr.json", + "referenceNumber": 499, + "name": "Newsletr License", + "licenseId": "Newsletr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Newsletr" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NGPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NGPL.json", + "referenceNumber": 167, + "name": "Nethack General Public License", + "licenseId": "NGPL", + "seeAlso": [ + "https://opensource.org/licenses/NGPL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NICTA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NICTA-1.0.json", + "referenceNumber": 486, + "name": "NICTA Public Software License, Version 1.0", + "licenseId": "NICTA-1.0", + "seeAlso": [ + "https://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-PD.json", + "referenceNumber": 194, + "name": "NIST Public Domain Notice", + "licenseId": "NIST-PD", + "seeAlso": [ + "https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt", + "https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-PD-fallback.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-PD-fallback.json", + "referenceNumber": 223, + "name": "NIST Public Domain Notice with license fallback", + "licenseId": "NIST-PD-fallback", + "seeAlso": [ + "https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE", + "https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-Software.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-Software.json", + "referenceNumber": 251, + "name": "NIST Software License", + "licenseId": "NIST-Software", + "seeAlso": [ + "https://github.com/open-quantum-safe/liboqs/blob/40b01fdbb270f8614fde30e65d30e9da18c02393/src/common/rand/rand_nist.c#L1-L15" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NLOD-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLOD-1.0.json", + "referenceNumber": 294, + "name": "Norwegian Licence for Open Government Data (NLOD) 1.0", + "licenseId": "NLOD-1.0", + "seeAlso": [ + "http://data.norge.no/nlod/en/1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NLOD-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLOD-2.0.json", + "referenceNumber": 566, + "name": "Norwegian Licence for Open Government Data (NLOD) 2.0", + "licenseId": "NLOD-2.0", + "seeAlso": [ + "http://data.norge.no/nlod/en/2.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NLPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLPL.json", + "referenceNumber": 367, + "name": "No Limit Public License", + "licenseId": "NLPL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/NLPL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Nokia.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Nokia.json", + "referenceNumber": 145, + "name": "Nokia Open Source License", + "licenseId": "Nokia", + "seeAlso": [ + "https://opensource.org/licenses/nokia" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NOSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NOSL.json", + "referenceNumber": 254, + "name": "Netizen Open Source License", + "licenseId": "NOSL", + "seeAlso": [ + "http://bits.netizen.com.au/licenses/NOSL/nosl.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Noweb.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Noweb.json", + "referenceNumber": 30, + "name": "Noweb License", + "licenseId": "Noweb", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Noweb" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPL-1.0.json", + "referenceNumber": 211, + "name": "Netscape Public License v1.0", + "licenseId": "NPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/NPL/1.0/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPL-1.1.json", + "referenceNumber": 595, + "name": "Netscape Public License v1.1", + "licenseId": "NPL-1.1", + "seeAlso": [ + "http://www.mozilla.org/MPL/NPL/1.1/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NPOSL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPOSL-3.0.json", + "referenceNumber": 664, + "name": "Non-Profit Open Software License 3.0", + "licenseId": "NPOSL-3.0", + "seeAlso": [ + "https://opensource.org/licenses/NOSL3.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NRL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NRL.json", + "referenceNumber": 113, + "name": "NRL License", + "licenseId": "NRL", + "seeAlso": [ + "http://web.mit.edu/network/isakmp/nrllicense.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NTP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NTP.json", + "referenceNumber": 390, + "name": "NTP License", + "licenseId": "NTP", + "seeAlso": [ + "https://opensource.org/licenses/NTP" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NTP-0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NTP-0.json", + "referenceNumber": 64, + "name": "NTP No Attribution", + "licenseId": "NTP-0", + "seeAlso": [ + "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Nunit.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/Nunit.json", + "referenceNumber": 27, + "name": "Nunit License", + "licenseId": "Nunit", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Nunit" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/O-UDA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/O-UDA-1.0.json", + "referenceNumber": 161, + "name": "Open Use of Data Agreement v1.0", + "licenseId": "O-UDA-1.0", + "seeAlso": [ + "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md", + "https://cdla.dev/open-use-of-data-agreement-v1-0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OAR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OAR.json", + "referenceNumber": 100, + "name": "OAR License", + "licenseId": "OAR", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/string/strsignal.c;hb\u003dHEAD#l35" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OCCT-PL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OCCT-PL.json", + "referenceNumber": 408, + "name": "Open CASCADE Technology Public License", + "licenseId": "OCCT-PL", + "seeAlso": [ + "http://www.opencascade.com/content/occt-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OCLC-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OCLC-2.0.json", + "referenceNumber": 468, + "name": "OCLC Research Public License 2.0", + "licenseId": "OCLC-2.0", + "seeAlso": [ + "http://www.oclc.org/research/activities/software/license/v2final.htm", + "https://opensource.org/licenses/OCLC-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ODbL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ODbL-1.0.json", + "referenceNumber": 611, + "name": "Open Data Commons Open Database License v1.0", + "licenseId": "ODbL-1.0", + "seeAlso": [ + "http://www.opendatacommons.org/licenses/odbl/1.0/", + "https://opendatacommons.org/licenses/odbl/1-0/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ODC-By-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ODC-By-1.0.json", + "referenceNumber": 15, + "name": "Open Data Commons Attribution License v1.0", + "licenseId": "ODC-By-1.0", + "seeAlso": [ + "https://opendatacommons.org/licenses/by/1.0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFFIS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFFIS.json", + "referenceNumber": 418, + "name": "OFFIS License", + "licenseId": "OFFIS", + "seeAlso": [ + "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/dicom/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0.json", + "referenceNumber": 603, + "name": "SIL Open Font License 1.0", + "licenseId": "OFL-1.0", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0-no-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0-no-RFN.json", + "referenceNumber": 545, + "name": "SIL Open Font License 1.0 with no Reserved Font Name", + "licenseId": "OFL-1.0-no-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0-RFN.json", + "referenceNumber": 446, + "name": "SIL Open Font License 1.0 with Reserved Font Name", + "licenseId": "OFL-1.0-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1.json", + "referenceNumber": 0, + "name": "SIL Open Font License 1.1", + "licenseId": "OFL-1.1", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1-no-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1-no-RFN.json", + "referenceNumber": 110, + "name": "SIL Open Font License 1.1 with no Reserved Font Name", + "licenseId": "OFL-1.1-no-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1-RFN.json", + "referenceNumber": 90, + "name": "SIL Open Font License 1.1 with Reserved Font Name", + "licenseId": "OFL-1.1-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OGC-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGC-1.0.json", + "referenceNumber": 504, + "name": "OGC Software License, Version 1.0", + "licenseId": "OGC-1.0", + "seeAlso": [ + "https://www.ogc.org/ogc/software/1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGDL-Taiwan-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGDL-Taiwan-1.0.json", + "referenceNumber": 23, + "name": "Taiwan Open Government Data License, version 1.0", + "licenseId": "OGDL-Taiwan-1.0", + "seeAlso": [ + "https://data.gov.tw/license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-Canada-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-Canada-2.0.json", + "referenceNumber": 40, + "name": "Open Government Licence - Canada", + "licenseId": "OGL-Canada-2.0", + "seeAlso": [ + "https://open.canada.ca/en/open-government-licence-canada" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-1.0.json", + "referenceNumber": 497, + "name": "Open Government Licence v1.0", + "licenseId": "OGL-UK-1.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-2.0.json", + "referenceNumber": 556, + "name": "Open Government Licence v2.0", + "licenseId": "OGL-UK-2.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-3.0.json", + "referenceNumber": 585, + "name": "Open Government Licence v3.0", + "licenseId": "OGL-UK-3.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGTSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGTSL.json", + "referenceNumber": 97, + "name": "Open Group Test Suite License", + "licenseId": "OGTSL", + "seeAlso": [ + "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", + "https://opensource.org/licenses/OGTSL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.1.json", + "referenceNumber": 420, + "name": "Open LDAP Public License v1.1", + "licenseId": "OLDAP-1.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d806557a5ad59804ef3a44d5abfbe91d706b0791f" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.2.json", + "referenceNumber": 487, + "name": "Open LDAP Public License v1.2", + "licenseId": "OLDAP-1.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d42b0383c50c299977b5893ee695cf4e486fb0dc7" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.3.json", + "referenceNumber": 627, + "name": "Open LDAP Public License v1.3", + "licenseId": "OLDAP-1.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003de5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.4.json", + "referenceNumber": 45, + "name": "Open LDAP Public License v1.4", + "licenseId": "OLDAP-1.4", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dc9f95c2f3f2ffb5e0ae55fe7388af75547660941" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.json", + "referenceNumber": 537, + "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", + "licenseId": "OLDAP-2.0", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcbf50f4e1185a21abd4c0a54d3f4341fe28f36ea" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.0.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.1.json", + "referenceNumber": 179, + "name": "Open LDAP Public License v2.0.1", + "licenseId": "OLDAP-2.0.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db6d68acd14e51ca3aab4428bf26522aa74873f0e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.1.json", + "referenceNumber": 342, + "name": "Open LDAP Public License v2.1", + "licenseId": "OLDAP-2.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db0d176738e96a0d3b9f85cb51e140a86f21be715" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.json", + "referenceNumber": 347, + "name": "Open LDAP Public License v2.2", + "licenseId": "OLDAP-2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d470b0c18ec67621c85881b2733057fecf4a1acc3" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.1.json", + "referenceNumber": 208, + "name": "Open LDAP Public License v2.2.1", + "licenseId": "OLDAP-2.2.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d4bc786f34b50aa301be6f5600f58a980070f481e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.2.json", + "referenceNumber": 312, + "name": "Open LDAP Public License 2.2.2", + "licenseId": "OLDAP-2.2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003ddf2cc1e21eb7c160695f5b7cffd6296c151ba188" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.3.json", + "referenceNumber": 276, + "name": "Open LDAP Public License v2.3", + "licenseId": "OLDAP-2.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dd32cf54a32d581ab475d23c810b0a7fbaf8d63c3" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.4.json", + "referenceNumber": 108, + "name": "Open LDAP Public License v2.4", + "licenseId": "OLDAP-2.4", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcd1284c4a91a8a380d904eee68d1583f989ed386" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.5.json", + "referenceNumber": 518, + "name": "Open LDAP Public License v2.5", + "licenseId": "OLDAP-2.5", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d6852b9d90022e8593c98205413380536b1b5a7cf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.6.json", + "referenceNumber": 275, + "name": "Open LDAP Public License v2.6", + "licenseId": "OLDAP-2.6", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d1cae062821881f41b73012ba816434897abf4205" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.7.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.7.json", + "referenceNumber": 79, + "name": "Open LDAP Public License v2.7", + "licenseId": "OLDAP-2.7", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d47c2415c1df81556eeb39be6cad458ef87c534a2" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.8.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.8.json", + "referenceNumber": 72, + "name": "Open LDAP Public License v2.8", + "licenseId": "OLDAP-2.8", + "seeAlso": [ + "http://www.openldap.org/software/release/license.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OLFL-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLFL-1.3.json", + "referenceNumber": 204, + "name": "Open Logistics Foundation License Version 1.3", + "licenseId": "OLFL-1.3", + "seeAlso": [ + "https://openlogisticsfoundation.org/licenses/", + "https://opensource.org/license/olfl-1-3/" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OML.json", + "referenceNumber": 505, + "name": "Open Market License", + "licenseId": "OML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Open_Market_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OpenPBS-2.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenPBS-2.3.json", + "referenceNumber": 159, + "name": "OpenPBS v2.3 Software License", + "licenseId": "OpenPBS-2.3", + "seeAlso": [ + "https://github.com/adaptivecomputing/torque/blob/master/PBS_License.txt", + "https://www.mcs.anl.gov/research/projects/openpbs/PBS_License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OpenSSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenSSL.json", + "referenceNumber": 445, + "name": "OpenSSL License", + "licenseId": "OpenSSL", + "seeAlso": [ + "http://www.openssl.org/source/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OpenSSL-standalone.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenSSL-standalone.json", + "referenceNumber": 635, + "name": "OpenSSL License - standalone", + "licenseId": "OpenSSL-standalone", + "seeAlso": [ + "https://library.netapp.com/ecm/ecm_download_file/ECMP1196395", + "https://hstechdocs.helpsystems.com/manuals/globalscape/archive/cuteftp6/open_ssl_license_agreement.htm" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OpenVision.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenVision.json", + "referenceNumber": 589, + "name": "OpenVision License", + "licenseId": "OpenVision", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L66-L98", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html", + "https://fedoraproject.org/wiki/Licensing:MIT#OpenVision_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPL-1.0.json", + "referenceNumber": 80, + "name": "Open Public License v1.0", + "licenseId": "OPL-1.0", + "seeAlso": [ + "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", + "https://fedoraproject.org/wiki/Licensing/Open_Public_License" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/OPL-UK-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPL-UK-3.0.json", + "referenceNumber": 19, + "name": "United Kingdom Open Parliament Licence v3.0", + "licenseId": "OPL-UK-3.0", + "seeAlso": [ + "https://www.parliament.uk/site-information/copyright-parliament/open-parliament-licence/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OPUBL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPUBL-1.0.json", + "referenceNumber": 266, + "name": "Open Publication License v1.0", + "licenseId": "OPUBL-1.0", + "seeAlso": [ + "http://opencontent.org/openpub/", + "https://www.debian.org/opl", + "https://www.ctan.org/license/opl" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OSET-PL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSET-PL-2.1.json", + "referenceNumber": 307, + "name": "OSET Public License version 2.1", + "licenseId": "OSET-PL-2.1", + "seeAlso": [ + "http://www.osetfoundation.org/public-license", + "https://opensource.org/licenses/OPL-2.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-1.0.json", + "referenceNumber": 306, + "name": "Open Software License 1.0", + "licenseId": "OSL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/OSL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-1.1.json", + "referenceNumber": 111, + "name": "Open Software License 1.1", + "licenseId": "OSL-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/OSL1.1" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-2.0.json", + "referenceNumber": 457, + "name": "Open Software License 2.0", + "licenseId": "OSL-2.0", + "seeAlso": [ + "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-2.1.json", + "referenceNumber": 247, + "name": "Open Software License 2.1", + "licenseId": "OSL-2.1", + "seeAlso": [ + "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", + "https://opensource.org/licenses/OSL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-3.0.json", + "referenceNumber": 432, + "name": "Open Software License 3.0", + "licenseId": "OSL-3.0", + "seeAlso": [ + "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", + "https://opensource.org/licenses/OSL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/PADL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PADL.json", + "referenceNumber": 43, + "name": "PADL License", + "licenseId": "PADL", + "seeAlso": [ + "https://git.openldap.org/openldap/openldap/-/blob/master/libraries/libldap/os-local.c?ref_type\u003dheads#L19-23" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Parity-6.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Parity-6.0.0.json", + "referenceNumber": 49, + "name": "The Parity Public License 6.0.0", + "licenseId": "Parity-6.0.0", + "seeAlso": [ + "https://paritylicense.com/versions/6.0.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Parity-7.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Parity-7.0.0.json", + "referenceNumber": 482, + "name": "The Parity Public License 7.0.0", + "licenseId": "Parity-7.0.0", + "seeAlso": [ + "https://paritylicense.com/versions/7.0.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PDDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PDDL-1.0.json", + "referenceNumber": 210, + "name": "Open Data Commons Public Domain Dedication \u0026 License 1.0", + "licenseId": "PDDL-1.0", + "seeAlso": [ + "http://opendatacommons.org/licenses/pddl/1.0/", + "https://opendatacommons.org/licenses/pddl/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PHP-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PHP-3.0.json", + "referenceNumber": 580, + "name": "PHP License v3.0", + "licenseId": "PHP-3.0", + "seeAlso": [ + "http://www.php.net/license/3_0.txt", + "https://opensource.org/licenses/PHP-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/PHP-3.01.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PHP-3.01.json", + "referenceNumber": 594, + "name": "PHP License v3.01", + "licenseId": "PHP-3.01", + "seeAlso": [ + "http://www.php.net/license/3_01.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Pixar.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Pixar.json", + "referenceNumber": 619, + "name": "Pixar License", + "licenseId": "Pixar", + "seeAlso": [ + "https://github.com/PixarAnimationStudios/OpenSubdiv/raw/v3_5_0/LICENSE.txt", + "https://graphics.pixar.com/opensubdiv/docs/license.html", + "https://github.com/PixarAnimationStudios/OpenSubdiv/blob/v3_5_0/opensubdiv/version.cpp#L2-L22" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/pkgconf.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/pkgconf.json", + "referenceNumber": 16, + "name": "pkgconf License", + "licenseId": "pkgconf", + "seeAlso": [ + "https://github.com/pkgconf/pkgconf/blob/master/cli/main.c#L8" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Plexus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Plexus.json", + "referenceNumber": 442, + "name": "Plexus Classworlds License", + "licenseId": "Plexus", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/pnmstitch.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/pnmstitch.json", + "referenceNumber": 502, + "name": "pnmstitch License", + "licenseId": "pnmstitch", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/editor/pnmstitch.c#l2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json", + "referenceNumber": 575, + "name": "PolyForm Noncommercial License 1.0.0", + "licenseId": "PolyForm-Noncommercial-1.0.0", + "seeAlso": [ + "https://polyformproject.org/licenses/noncommercial/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json", + "referenceNumber": 9, + "name": "PolyForm Small Business License 1.0.0", + "licenseId": "PolyForm-Small-Business-1.0.0", + "seeAlso": [ + "https://polyformproject.org/licenses/small-business/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PostgreSQL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PostgreSQL.json", + "referenceNumber": 94, + "name": "PostgreSQL License", + "licenseId": "PostgreSQL", + "seeAlso": [ + "http://www.postgresql.org/about/licence", + "https://opensource.org/licenses/PostgreSQL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/PPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PPL.json", + "referenceNumber": 454, + "name": "Peer Production License", + "licenseId": "PPL", + "seeAlso": [ + "https://wiki.p2pfoundation.net/Peer_Production_License", + "http://www.networkcultures.org/_uploads/%233notebook_telekommunist.pdf" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/PSF-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PSF-2.0.json", + "referenceNumber": 62, + "name": "Python Software Foundation License 2.0", + "licenseId": "PSF-2.0", + "seeAlso": [ + "https://opensource.org/licenses/Python-2.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/psfrag.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/psfrag.json", + "referenceNumber": 279, + "name": "psfrag License", + "licenseId": "psfrag", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/psfrag" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/psutils.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/psutils.json", + "referenceNumber": 387, + "name": "psutils License", + "licenseId": "psutils", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/psutils" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Python-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Python-2.0.json", + "referenceNumber": 498, + "name": "Python License 2.0", + "licenseId": "Python-2.0", + "seeAlso": [ + "https://opensource.org/licenses/Python-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Python-2.0.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Python-2.0.1.json", + "referenceNumber": 453, + "name": "Python License 2.0.1", + "licenseId": "Python-2.0.1", + "seeAlso": [ + "https://www.python.org/download/releases/2.0.1/license/", + "https://docs.python.org/3/license.html", + "https://github.com/python/cpython/blob/main/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/python-ldap.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/python-ldap.json", + "referenceNumber": 422, + "name": "Python ldap License", + "licenseId": "python-ldap", + "seeAlso": [ + "https://github.com/python-ldap/python-ldap/blob/main/LICENCE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Qhull.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Qhull.json", + "referenceNumber": 123, + "name": "Qhull License", + "licenseId": "Qhull", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Qhull" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/QPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/QPL-1.0.json", + "referenceNumber": 329, + "name": "Q Public License 1.0", + "licenseId": "QPL-1.0", + "seeAlso": [ + "http://doc.qt.nokia.com/3.3/license.html", + "https://opensource.org/licenses/QPL-1.0", + "https://doc.qt.io/archives/3.3/license.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.json", + "referenceNumber": 479, + "name": "Q Public License 1.0 - INRIA 2004 variant", + "licenseId": "QPL-1.0-INRIA-2004", + "seeAlso": [ + "https://github.com/maranget/hevea/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/radvd.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/radvd.json", + "referenceNumber": 182, + "name": "radvd License", + "licenseId": "radvd", + "seeAlso": [ + "https://github.com/radvd-project/radvd/blob/master/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Rdisc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Rdisc.json", + "referenceNumber": 101, + "name": "Rdisc License", + "licenseId": "Rdisc", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Rdisc_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/RHeCos-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RHeCos-1.1.json", + "referenceNumber": 373, + "name": "Red Hat eCos Public License v1.1", + "licenseId": "RHeCos-1.1", + "seeAlso": [ + "http://ecos.sourceware.org/old-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/RPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RPL-1.1.json", + "referenceNumber": 369, + "name": "Reciprocal Public License 1.1", + "licenseId": "RPL-1.1", + "seeAlso": [ + "https://opensource.org/licenses/RPL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/RPL-1.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RPL-1.5.json", + "referenceNumber": 102, + "name": "Reciprocal Public License 1.5", + "licenseId": "RPL-1.5", + "seeAlso": [ + "https://opensource.org/licenses/RPL-1.5" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/RPSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RPSL-1.0.json", + "referenceNumber": 663, + "name": "RealNetworks Public Source License v1.0", + "licenseId": "RPSL-1.0", + "seeAlso": [ + "https://helixcommunity.org/content/rpsl", + "https://opensource.org/licenses/RPSL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/RSA-MD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RSA-MD.json", + "referenceNumber": 139, + "name": "RSA Message-Digest License", + "licenseId": "RSA-MD", + "seeAlso": [ + "http://www.faqs.org/rfcs/rfc1321.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/RSCPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RSCPL.json", + "referenceNumber": 405, + "name": "Ricoh Source Code Public License", + "licenseId": "RSCPL", + "seeAlso": [ + "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", + "https://opensource.org/licenses/RSCPL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Ruby.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ruby.json", + "referenceNumber": 192, + "name": "Ruby License", + "licenseId": "Ruby", + "seeAlso": [ + "https://www.ruby-lang.org/en/about/license.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Ruby-pty.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ruby-pty.json", + "referenceNumber": 473, + "name": "Ruby pty extension license", + "licenseId": "Ruby-pty", + "seeAlso": [ + "https://github.com/ruby/ruby/blob/9f6deaa6888a423720b4b127b5314f0ad26cc2e6/ext/pty/pty.c#L775-L786", + "https://github.com/ruby/ruby/commit/0a64817fb80016030c03518fb9459f63c11605ea#diff-ef5fa30838d6d0cecad9e675cc50b24628cfe2cb277c346053fafcc36c91c204", + "https://github.com/ruby/ruby/commit/0a64817fb80016030c03518fb9459f63c11605ea#diff-fedf217c1ce44bda01f0a678d3ff8b198bed478754d699c527a698ad933979a0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SAX-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SAX-PD.json", + "referenceNumber": 205, + "name": "Sax Public Domain Notice", + "licenseId": "SAX-PD", + "seeAlso": [ + "http://www.saxproject.org/copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SAX-PD-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SAX-PD-2.0.json", + "referenceNumber": 209, + "name": "Sax Public Domain Notice 2.0", + "licenseId": "SAX-PD-2.0", + "seeAlso": [ + "http://www.saxproject.org/copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Saxpath.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Saxpath.json", + "referenceNumber": 67, + "name": "Saxpath License", + "licenseId": "Saxpath", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Saxpath_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SCEA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SCEA.json", + "referenceNumber": 617, + "name": "SCEA Shared Source License", + "licenseId": "SCEA", + "seeAlso": [ + "http://research.scea.com/scea_shared_source_license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SchemeReport.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SchemeReport.json", + "referenceNumber": 472, + "name": "Scheme Language Report License", + "licenseId": "SchemeReport", + "seeAlso": [], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sendmail.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sendmail.json", + "referenceNumber": 135, + "name": "Sendmail License", + "licenseId": "Sendmail", + "seeAlso": [ + "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", + "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sendmail-8.23.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sendmail-8.23.json", + "referenceNumber": 226, + "name": "Sendmail License 8.23", + "licenseId": "Sendmail-8.23", + "seeAlso": [ + "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", + "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGI-B-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-1.0.json", + "referenceNumber": 631, + "name": "SGI Free Software License B v1.0", + "licenseId": "SGI-B-1.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGI-B-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-1.1.json", + "referenceNumber": 48, + "name": "SGI Free Software License B v1.1", + "licenseId": "SGI-B-1.1", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGI-B-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-2.0.json", + "referenceNumber": 193, + "name": "SGI Free Software License B v2.0", + "licenseId": "SGI-B-2.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SGI-OpenGL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-OpenGL.json", + "referenceNumber": 565, + "name": "SGI OpenGL License", + "licenseId": "SGI-OpenGL", + "seeAlso": [ + "https://gitlab.freedesktop.org/mesa/glw/-/blob/master/README?ref_type\u003dheads" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGP4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGP4.json", + "referenceNumber": 291, + "name": "SGP4 Permission Notice", + "licenseId": "SGP4", + "seeAlso": [ + "https://celestrak.org/publications/AIAA/2006-6753/faq.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SHL-0.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SHL-0.5.json", + "referenceNumber": 623, + "name": "Solderpad Hardware License v0.5", + "licenseId": "SHL-0.5", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.5/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SHL-0.51.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SHL-0.51.json", + "referenceNumber": 34, + "name": "Solderpad Hardware License, Version 0.51", + "licenseId": "SHL-0.51", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.51/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SimPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SimPL-2.0.json", + "referenceNumber": 630, + "name": "Simple Public License 2.0", + "licenseId": "SimPL-2.0", + "seeAlso": [ + "https://opensource.org/licenses/SimPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/SISSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SISSL.json", + "referenceNumber": 655, + "name": "Sun Industry Standards Source License v1.1", + "licenseId": "SISSL", + "seeAlso": [ + "http://www.openoffice.org/licenses/sissl_license.html", + "https://opensource.org/licenses/SISSL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SISSL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SISSL-1.2.json", + "referenceNumber": 401, + "name": "Sun Industry Standards Source License v1.2", + "licenseId": "SISSL-1.2", + "seeAlso": [ + "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SL.json", + "referenceNumber": 632, + "name": "SL License", + "licenseId": "SL", + "seeAlso": [ + "https://github.com/mtoyoda/sl/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sleepycat.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sleepycat.json", + "referenceNumber": 283, + "name": "Sleepycat License", + "licenseId": "Sleepycat", + "seeAlso": [ + "https://opensource.org/licenses/Sleepycat" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SMLNJ.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SMLNJ.json", + "referenceNumber": 413, + "name": "Standard ML of New Jersey License", + "licenseId": "SMLNJ", + "seeAlso": [ + "https://www.smlnj.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SMPPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SMPPL.json", + "referenceNumber": 321, + "name": "Secure Messaging Protocol Public License", + "licenseId": "SMPPL", + "seeAlso": [ + "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SNIA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SNIA.json", + "referenceNumber": 41, + "name": "SNIA Public License 1.1", + "licenseId": "SNIA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/snprintf.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/snprintf.json", + "referenceNumber": 507, + "name": "snprintf License", + "licenseId": "snprintf", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/master/openbsd-compat/bsd-snprintf.c#L2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/softSurfer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/softSurfer.json", + "referenceNumber": 496, + "name": "softSurfer License", + "licenseId": "softSurfer", + "seeAlso": [ + "https://github.com/mm2/Little-CMS/blob/master/src/cmssm.c#L207", + "https://fedoraproject.org/wiki/Licensing/softSurfer" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Soundex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Soundex.json", + "referenceNumber": 1, + "name": "Soundex License", + "licenseId": "Soundex", + "seeAlso": [ + "https://metacpan.org/release/RJBS/Text-Soundex-3.05/source/Soundex.pm#L3-11" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-86.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-86.json", + "referenceNumber": 257, + "name": "Spencer License 86", + "licenseId": "Spencer-86", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-94.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-94.json", + "referenceNumber": 228, + "name": "Spencer License 94", + "licenseId": "Spencer-94", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", + "https://metacpan.org/release/KNOK/File-MMagic-1.30/source/COPYING#L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-99.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-99.json", + "referenceNumber": 287, + "name": "Spencer License 99", + "licenseId": "Spencer-99", + "seeAlso": [ + "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SPL-1.0.json", + "referenceNumber": 576, + "name": "Sun Public License v1.0", + "licenseId": "SPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/SPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ssh-keyscan.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ssh-keyscan.json", + "referenceNumber": 78, + "name": "ssh-keyscan License", + "licenseId": "ssh-keyscan", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/master/LICENCE#L82" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSH-OpenSSH.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSH-OpenSSH.json", + "referenceNumber": 536, + "name": "SSH OpenSSH license", + "licenseId": "SSH-OpenSSH", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSH-short.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSH-short.json", + "referenceNumber": 438, + "name": "SSH short notice", + "licenseId": "SSH-short", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", + "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1", + "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSLeay-standalone.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSLeay-standalone.json", + "referenceNumber": 421, + "name": "SSLeay License - standalone", + "licenseId": "SSLeay-standalone", + "seeAlso": [ + "https://www.tq-group.com/filedownloads/files/software-license-conditions/OriginalSSLeay/OriginalSSLeay.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSPL-1.0.json", + "referenceNumber": 295, + "name": "Server Side Public License, v 1", + "licenseId": "SSPL-1.0", + "seeAlso": [ + "https://www.mongodb.com/licensing/server-side-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/StandardML-NJ.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/StandardML-NJ.json", + "referenceNumber": 201, + "name": "Standard ML of New Jersey License", + "licenseId": "StandardML-NJ", + "seeAlso": [ + "https://www.smlnj.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SugarCRM-1.1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SugarCRM-1.1.3.json", + "referenceNumber": 11, + "name": "SugarCRM Public License v1.1.3", + "licenseId": "SugarCRM-1.1.3", + "seeAlso": [ + "http://www.sugarcrm.com/crm/SPL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sun-PPP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sun-PPP.json", + "referenceNumber": 313, + "name": "Sun PPP License", + "licenseId": "Sun-PPP", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/eap.c#L7-L16" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sun-PPP-2000.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sun-PPP-2000.json", + "referenceNumber": 489, + "name": "Sun PPP License (2000)", + "licenseId": "Sun-PPP-2000", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/modules/ppp_ahdlc.c#L7-L19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SunPro.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SunPro.json", + "referenceNumber": 440, + "name": "SunPro License", + "licenseId": "SunPro", + "seeAlso": [ + "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_acosh.c", + "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_lgammal.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SWL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SWL.json", + "referenceNumber": 331, + "name": "Scheme Widget Library (SWL) Software License Agreement", + "licenseId": "SWL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/SWL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/swrule.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/swrule.json", + "referenceNumber": 206, + "name": "swrule License", + "licenseId": "swrule", + "seeAlso": [ + "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/misc/swrule.sty" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Symlinks.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Symlinks.json", + "referenceNumber": 136, + "name": "Symlinks License", + "licenseId": "Symlinks", + "seeAlso": [ + "https://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg11494.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TAPR-OHL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TAPR-OHL-1.0.json", + "referenceNumber": 317, + "name": "TAPR Open Hardware License v1.0", + "licenseId": "TAPR-OHL-1.0", + "seeAlso": [ + "https://www.tapr.org/OHL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TCL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TCL.json", + "referenceNumber": 644, + "name": "TCL/TK License", + "licenseId": "TCL", + "seeAlso": [ + "http://www.tcl.tk/software/tcltk/license.html", + "https://fedoraproject.org/wiki/Licensing/TCL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TCP-wrappers.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TCP-wrappers.json", + "referenceNumber": 245, + "name": "TCP Wrappers License", + "licenseId": "TCP-wrappers", + "seeAlso": [ + "http://rc.quest.com/topics/openssh/license.php#tcpwrappers" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TermReadKey.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TermReadKey.json", + "referenceNumber": 37, + "name": "TermReadKey License", + "licenseId": "TermReadKey", + "seeAlso": [ + "https://github.com/jonathanstowe/TermReadKey/blob/master/README#L9-L10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TGPPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TGPPL-1.0.json", + "referenceNumber": 112, + "name": "Transitive Grace Period Public Licence 1.0", + "licenseId": "TGPPL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TGPPL", + "https://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/COPYING.TGPPL.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/threeparttable.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/threeparttable.json", + "referenceNumber": 319, + "name": "threeparttable License", + "licenseId": "threeparttable", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Threeparttable" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TMate.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TMate.json", + "referenceNumber": 509, + "name": "TMate Open Source License", + "licenseId": "TMate", + "seeAlso": [ + "http://svnkit.com/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TORQUE-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TORQUE-1.1.json", + "referenceNumber": 105, + "name": "TORQUE v2.5+ Software License v1.1", + "licenseId": "TORQUE-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TOSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TOSL.json", + "referenceNumber": 107, + "name": "Trusster Open Source License", + "licenseId": "TOSL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TOSL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TPDL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TPDL.json", + "referenceNumber": 124, + "name": "Time::ParseDate License", + "licenseId": "TPDL", + "seeAlso": [ + "https://metacpan.org/pod/Time::ParseDate#LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TPL-1.0.json", + "referenceNumber": 490, + "name": "THOR Public License 1.0", + "licenseId": "TPL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:ThorPublicLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TTWL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TTWL.json", + "referenceNumber": 35, + "name": "Text-Tabs+Wrap License", + "licenseId": "TTWL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TTWL", + "https://github.com/ap/Text-Tabs/blob/master/lib.modern/Text/Tabs.pm#L148" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TTYP0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TTYP0.json", + "referenceNumber": 542, + "name": "TTYP0 License", + "licenseId": "TTYP0", + "seeAlso": [ + "https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TU-Berlin-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TU-Berlin-1.0.json", + "referenceNumber": 372, + "name": "Technische Universitaet Berlin License 1.0", + "licenseId": "TU-Berlin-1.0", + "seeAlso": [ + "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TU-Berlin-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TU-Berlin-2.0.json", + "referenceNumber": 246, + "name": "Technische Universitaet Berlin License 2.0", + "licenseId": "TU-Berlin-2.0", + "seeAlso": [ + "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Ubuntu-font-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ubuntu-font-1.0.json", + "referenceNumber": 191, + "name": "Ubuntu Font Licence v1.0", + "licenseId": "Ubuntu-font-1.0", + "seeAlso": [ + "https://ubuntu.com/legal/font-licence", + "https://assets.ubuntu.com/v1/81e5605d-ubuntu-font-licence-1.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UCAR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UCAR.json", + "referenceNumber": 452, + "name": "UCAR License", + "licenseId": "UCAR", + "seeAlso": [ + "https://github.com/Unidata/UDUNITS-2/blob/master/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UCL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UCL-1.0.json", + "referenceNumber": 550, + "name": "Upstream Compatibility License v1.0", + "licenseId": "UCL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/UCL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ulem.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ulem.json", + "referenceNumber": 399, + "name": "ulem License", + "licenseId": "ulem", + "seeAlso": [ + "https://mirrors.ctan.org/macros/latex/contrib/ulem/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UMich-Merit.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UMich-Merit.json", + "referenceNumber": 581, + "name": "Michigan/Merit Networks License", + "licenseId": "UMich-Merit", + "seeAlso": [ + "https://github.com/radcli/radcli/blob/master/COPYRIGHT#L64" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unicode-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-3.0.json", + "referenceNumber": 262, + "name": "Unicode License v3", + "licenseId": "Unicode-3.0", + "seeAlso": [ + "https://www.unicode.org/license.txt" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Unicode-DFS-2015.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2015.json", + "referenceNumber": 328, + "name": "Unicode License Agreement - Data Files and Software (2015)", + "licenseId": "Unicode-DFS-2015", + "seeAlso": [ + "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unicode-DFS-2016.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2016.json", + "referenceNumber": 484, + "name": "Unicode License Agreement - Data Files and Software (2016)", + "licenseId": "Unicode-DFS-2016", + "seeAlso": [ + "https://www.unicode.org/license.txt", + "http://web.archive.org/web/20160823201924/http://www.unicode.org/copyright.html#License", + "http://www.unicode.org/copyright.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Unicode-TOU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-TOU.json", + "referenceNumber": 628, + "name": "Unicode Terms of Use", + "licenseId": "Unicode-TOU", + "seeAlso": [ + "http://web.archive.org/web/20140704074106/http://www.unicode.org/copyright.html", + "http://www.unicode.org/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UnixCrypt.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UnixCrypt.json", + "referenceNumber": 95, + "name": "UnixCrypt License", + "licenseId": "UnixCrypt", + "seeAlso": [ + "https://foss.heptapod.net/python-libs/passlib/-/blob/branch/stable/LICENSE#L70", + "https://opensource.apple.com/source/JBoss/JBoss-737/jboss-all/jetty/src/main/org/mortbay/util/UnixCrypt.java.auto.html", + "https://archive.eclipse.org/jetty/8.0.1.v20110908/xref/org/eclipse/jetty/http/security/UnixCrypt.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unlicense.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unlicense.json", + "referenceNumber": 218, + "name": "The Unlicense", + "licenseId": "Unlicense", + "seeAlso": [ + "https://unlicense.org/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/UPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UPL-1.0.json", + "referenceNumber": 5, + "name": "Universal Permissive License v1.0", + "licenseId": "UPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/UPL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/URT-RLE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/URT-RLE.json", + "referenceNumber": 165, + "name": "Utah Raster Toolkit Run Length Encoded License", + "licenseId": "URT-RLE", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/pnmtorle.c", + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/rletopnm.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Vim.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Vim.json", + "referenceNumber": 549, + "name": "Vim License", + "licenseId": "Vim", + "seeAlso": [ + "http://vimdoc.sourceforge.net/htmldoc/uganda.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/VOSTROM.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/VOSTROM.json", + "referenceNumber": 544, + "name": "VOSTROM Public License for Open Source", + "licenseId": "VOSTROM", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/VOSTROM" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/VSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/VSL-1.0.json", + "referenceNumber": 109, + "name": "Vovida Software License v1.0", + "licenseId": "VSL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/VSL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/W3C.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C.json", + "referenceNumber": 28, + "name": "W3C Software Notice and License (2002-12-31)", + "licenseId": "W3C", + "seeAlso": [ + "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", + "https://opensource.org/licenses/W3C" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/W3C-19980720.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C-19980720.json", + "referenceNumber": 629, + "name": "W3C Software Notice and License (1998-07-20)", + "licenseId": "W3C-19980720", + "seeAlso": [ + "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/W3C-20150513.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C-20150513.json", + "referenceNumber": 315, + "name": "W3C Software Notice and Document License (2015-05-13)", + "licenseId": "W3C-20150513", + "seeAlso": [ + "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document", + "https://www.w3.org/copyright/software-license-2015/", + "https://www.w3.org/copyright/software-license-2023/" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/w3m.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/w3m.json", + "referenceNumber": 379, + "name": "w3m License", + "licenseId": "w3m", + "seeAlso": [ + "https://github.com/tats/w3m/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Watcom-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Watcom-1.0.json", + "referenceNumber": 612, + "name": "Sybase Open Watcom Public License 1.0", + "licenseId": "Watcom-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Watcom-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Widget-Workshop.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Widget-Workshop.json", + "referenceNumber": 256, + "name": "Widget Workshop License", + "licenseId": "Widget-Workshop", + "seeAlso": [ + "https://github.com/novnc/noVNC/blob/master/core/crypto/des.js#L24" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Wsuipa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Wsuipa.json", + "referenceNumber": 199, + "name": "Wsuipa License", + "licenseId": "Wsuipa", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Wsuipa" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/WTFPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/WTFPL.json", + "referenceNumber": 173, + "name": "Do What The F*ck You Want To Public License", + "licenseId": "WTFPL", + "seeAlso": [ + "http://www.wtfpl.net/about/", + "http://sam.zoy.org/wtfpl/COPYING" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/wxWindows.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/wxWindows.json", + "referenceNumber": 350, + "name": "wxWindows Library License", + "licenseId": "wxWindows", + "seeAlso": [ + "https://opensource.org/licenses/WXwindows" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/X11.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11.json", + "referenceNumber": 274, + "name": "X11 License", + "licenseId": "X11", + "seeAlso": [ + "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/X11-distribute-modifications-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11-distribute-modifications-variant.json", + "referenceNumber": 286, + "name": "X11 License Distribution Modification Variant", + "licenseId": "X11-distribute-modifications-variant", + "seeAlso": [ + "https://github.com/mirror/ncurses/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/X11-swapped.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11-swapped.json", + "referenceNumber": 7, + "name": "X11 swapped final paragraphs", + "licenseId": "X11-swapped", + "seeAlso": [ + "https://github.com/fedeinthemix/chez-srfi/blob/master/srfi/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xdebug-1.03.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xdebug-1.03.json", + "referenceNumber": 471, + "name": "Xdebug License v 1.03", + "licenseId": "Xdebug-1.03", + "seeAlso": [ + "https://github.com/xdebug/xdebug/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xerox.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xerox.json", + "referenceNumber": 417, + "name": "Xerox License", + "licenseId": "Xerox", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xerox" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xfig.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xfig.json", + "referenceNumber": 63, + "name": "Xfig License", + "licenseId": "Xfig", + "seeAlso": [ + "https://github.com/Distrotech/transfig/blob/master/transfig/transfig.c", + "https://fedoraproject.org/wiki/Licensing:MIT#Xfig_Variant", + "https://sourceforge.net/p/mcj/xfig/ci/master/tree/src/Makefile.am" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/XFree86-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/XFree86-1.1.json", + "referenceNumber": 311, + "name": "XFree86 License 1.1", + "licenseId": "XFree86-1.1", + "seeAlso": [ + "http://www.xfree86.org/current/LICENSE4.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/xinetd.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xinetd.json", + "referenceNumber": 406, + "name": "xinetd License", + "licenseId": "xinetd", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xinetd_License" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/xkeyboard-config-Zinoviev.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xkeyboard-config-Zinoviev.json", + "referenceNumber": 55, + "name": "xkeyboard-config Zinoviev License", + "licenseId": "xkeyboard-config-Zinoviev", + "seeAlso": [ + "https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/master/COPYING?ref_type\u003dheads#L178" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/xlock.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xlock.json", + "referenceNumber": 140, + "name": "xlock License", + "licenseId": "xlock", + "seeAlso": [ + "https://fossies.org/linux/tiff/contrib/ras/ras2tif.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xnet.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xnet.json", + "referenceNumber": 639, + "name": "X.Net License", + "licenseId": "Xnet", + "seeAlso": [ + "https://opensource.org/licenses/Xnet" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/xpp.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xpp.json", + "referenceNumber": 243, + "name": "XPP License", + "licenseId": "xpp", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/xpp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/XSkat.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/XSkat.json", + "referenceNumber": 535, + "name": "XSkat License", + "licenseId": "XSkat", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/XSkat_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/xzoom.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xzoom.json", + "referenceNumber": 339, + "name": "xzoom License", + "licenseId": "xzoom", + "seeAlso": [ + "https://metadata.ftp-master.debian.org/changelogs//main/x/xzoom/xzoom_0.3-27_copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/YPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/YPL-1.0.json", + "referenceNumber": 506, + "name": "Yahoo! Public License v1.0", + "licenseId": "YPL-1.0", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/YPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/YPL-1.1.json", + "referenceNumber": 538, + "name": "Yahoo! Public License v1.1", + "licenseId": "YPL-1.1", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.1.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Zed.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zed.json", + "referenceNumber": 500, + "name": "Zed License", + "licenseId": "Zed", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Zed" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zeeff.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zeeff.json", + "referenceNumber": 382, + "name": "Zeeff License", + "licenseId": "Zeeff", + "seeAlso": [ + "ftp://ftp.tin.org/pub/news/utils/newsx/newsx-1.6.tar.gz" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zend-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zend-2.0.json", + "referenceNumber": 51, + "name": "Zend License v2.0", + "licenseId": "Zend-2.0", + "seeAlso": [ + "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Zimbra-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zimbra-1.3.json", + "referenceNumber": 555, + "name": "Zimbra Public License v1.3", + "licenseId": "Zimbra-1.3", + "seeAlso": [ + "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Zimbra-1.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zimbra-1.4.json", + "referenceNumber": 227, + "name": "Zimbra Public License v1.4", + "licenseId": "Zimbra-1.4", + "seeAlso": [ + "http://www.zimbra.com/legal/zimbra-public-license-1-4" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zlib.json", + "referenceNumber": 74, + "name": "zlib License", + "licenseId": "Zlib", + "seeAlso": [ + "http://www.zlib.net/zlib_license.html", + "https://opensource.org/licenses/Zlib" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/zlib-acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/zlib-acknowledgement.json", + "referenceNumber": 371, + "name": "zlib/libpng License with Acknowledgement", + "licenseId": "zlib-acknowledgement", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ZPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-1.1.json", + "referenceNumber": 598, + "name": "Zope Public License 1.1", + "licenseId": "ZPL-1.1", + "seeAlso": [ + "http://old.zope.org/Resources/License/ZPL-1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ZPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-2.0.json", + "referenceNumber": 539, + "name": "Zope Public License 2.0", + "licenseId": "ZPL-2.0", + "seeAlso": [ + "http://old.zope.org/Resources/License/ZPL-2.0", + "https://opensource.org/licenses/ZPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ZPL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-2.1.json", + "referenceNumber": 638, + "name": "Zope Public License 2.1", + "licenseId": "ZPL-2.1", + "seeAlso": [ + "http://old.zope.org/Resources/ZPL/" + ], + "isOsiApproved": true, + "isFsfLibre": true + } + ], + "releaseDate": "2024-08-19" +} \ No newline at end of file From 2145cdb5ae67792c5d2057209c3079340ae63b57 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Thu, 3 Oct 2024 14:48:09 +1300 Subject: [PATCH 105/109] Remove patch already in 9.2.8 --- overlays/bootstrap.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/overlays/bootstrap.nix b/overlays/bootstrap.nix index 61a0c06712..d558eb7d8d 100644 --- a/overlays/bootstrap.nix +++ b/overlays/bootstrap.nix @@ -96,8 +96,6 @@ in { # See https://github.com/input-output-hk/haskell.nix/issues/1027 ++ onAarch32 (until "9.2" ./patches/ghc/ghc-8.10-3434-armv7a.patch) ++ onAarch64 (until "9.2" ./patches/ghc/ghc-8.10-3434.patch) - ++ onAarch64 (fromUntil "9.2.1" "9.4" ./patches/ghc/ghc-9.2-3434.patch) - ++ onAndroid (fromUntil "9.2.1" "9.4" ./patches/ghc/ghc-9.2-3434.patch) ++ until "9.4" ./patches/ghc/ghc-acrt-iob-func.patch ++ until "9.2" ./patches/ghc/ghc-mprotect-nonzero-len.patch From 159fb663723cecc0fa2f32fe80530ac4b0a5a7c0 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Thu, 3 Oct 2024 14:49:16 +1300 Subject: [PATCH 106/109] Build android compilers with nixpkgs 24.05 --- ci.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ci.nix b/ci.nix index 7f3fff04b2..67ba68d7f6 100644 --- a/ci.nix +++ b/ci.nix @@ -64,6 +64,7 @@ nixpkgs.lib.optionalAttrs (nixpkgsName == "R2405") { ghc96 = false; ghc98 = false; + ghc910 = true; } // nixpkgs.lib.optionalAttrs (nixpkgsName == "unstable") { ghc810 = true; ghc92 = true; @@ -100,7 +101,9 @@ } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "unstable") { # Musl cross only works on linux # aarch64 cross only works on linux - inherit (lib.systems.examples) musl32 musl64 aarch64-multiplatform aarch64-android armv7a-android-prebuilt; + inherit (lib.systems.examples) musl32 musl64 aarch64-multiplatform; + } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "R2405") { + inherit (lib.systems.examples) aarch64-android armv7a-android-prebuilt; } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "unstable" && !builtins.elem compiler-nix-name ["ghc8107" "ghc902"]) { # TODO fix this for the compilers we build with hadrian (ghc >=9.4) inherit (lib.systems.examples) aarch64-multiplatform-musl; From a1e0b300ef2c53999e832127fc58acfd6f393e4b Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Thu, 3 Oct 2024 16:16:44 +1300 Subject: [PATCH 107/109] Fix gi-gtk test --- test/gi-gtk/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/gi-gtk/default.nix b/test/gi-gtk/default.nix index aebd4c552b..665d3dfb86 100644 --- a/test/gi-gtk/default.nix +++ b/test/gi-gtk/default.nix @@ -8,6 +8,8 @@ let inherit compiler-nix-name evalPackages; src = testSrc "gi-gtk"; cabalProjectLocal = builtins.readFile ../cabal.project.local + '' + -- haskell-gi 0.26.12 breaks gi-gtkpixbuf + index-state: 2024-09-30T00:00:00Z -- The overloading feature of haskell-gi makes build times very long constraints: haskell-gi-overloading ==0.0 if impl(ghc >=9.11) From 057a33ca0b7abfa292d5e0e34d8cb095ae303e14 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 14 Oct 2024 23:05:59 +1300 Subject: [PATCH 108/109] Fix eval --- test/gi-gtk/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/gi-gtk/default.nix b/test/gi-gtk/default.nix index 665d3dfb86..e7a03292bb 100644 --- a/test/gi-gtk/default.nix +++ b/test/gi-gtk/default.nix @@ -29,7 +29,9 @@ in recurseIntoAttrs rec { # error: incompatible pointer to integer conversion assigning to 'ffi_arg' (aka 'unsigned long') from 'HsPtr' (aka 'void *') [-Wint-conversion] || builtins.elem compiler-nix-name ["ghc8107" "ghc902" "ghc928" "ghc948"] && stdenv.hostPlatform.isAarch64 # Cross compilation to aarch64 is also broken - || stdenv.hostPlatform.isAarch64 && !stdenv.buildPlatform.isAarch64; + || stdenv.hostPlatform.isAarch64 && !stdenv.buildPlatform.isAarch64 + # glu is marked ase broken for isAndroid + || stdenv.hostPlatform.isAndroid; ifdInputs = { inherit (project) plan-nix; From ee588ac25d3305fed5ebd546e20fb3ddccab4ef2 Mon Sep 17 00:00:00 2001 From: Hamish Mackenzie Date: Mon, 14 Oct 2024 23:31:48 +1300 Subject: [PATCH 109/109] Try aarch64-android-prebuilt --- ci.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci.nix b/ci.nix index 4223b5e3d7..ca8c779167 100644 --- a/ci.nix +++ b/ci.nix @@ -102,8 +102,8 @@ # Musl cross only works on linux # aarch64 cross only works on linux inherit (lib.systems.examples) musl32 musl64 aarch64-multiplatform; - } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "R2405" && !builtins.elem compiler-nix-name ["ghc902" "ghc928" "ghc948"]) { - inherit (lib.systems.examples) aarch64-android armv7a-android-prebuilt; + } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "unstable" && !builtins.elem compiler-nix-name ["ghc902" "ghc928" "ghc948"]) { + inherit (lib.systems.examples) aarch64-android-prebuilt armv7a-android-prebuilt; } // lib.optionalAttrs (system == "x86_64-linux" && nixpkgsName == "unstable" && !builtins.elem compiler-nix-name ["ghc8107" "ghc902"]) { # TODO fix this for the compilers we build with hadrian (ghc >=9.4) inherit (lib.systems.examples) aarch64-multiplatform-musl;