From db162f446a55511e6c2e90bbc2562c06e177973c Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Tue, 20 Sep 2022 12:33:44 -0500 Subject: [PATCH 01/52] first go at nixpkgs 22.05 --- default.nix | 5 +++-- .../reflex-packages/dep/reflex-todomvc/github.json | 6 +++--- nixpkgs/github.json | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/default.nix b/default.nix index 633eae571..f60fd0631 100644 --- a/default.nix +++ b/default.nix @@ -125,9 +125,10 @@ let iosSupport = system == "x86_64-darwin"; mobileGhcOverlay allCabalHashesOverlay (self: super: { - binutils-unwrapped = super.binutils-unwrapped.override { + /*binutils-unwrapped = super.binutils-unwrapped.override { autoreconfHook = lib.optional self.stdenv.buildPlatform.isDarwin super.autoreconfHook269; - }; + }; + */ }) (import ./nixpkgs-overlays/ghc.nix { inherit lib; }) ] ++ nixpkgsOverlays; diff --git a/haskell-overlays/reflex-packages/dep/reflex-todomvc/github.json b/haskell-overlays/reflex-packages/dep/reflex-todomvc/github.json index 232de513a..e67ebb899 100644 --- a/haskell-overlays/reflex-packages/dep/reflex-todomvc/github.json +++ b/haskell-overlays/reflex-packages/dep/reflex-todomvc/github.json @@ -1,7 +1,7 @@ { "owner": "reflex-frp", "repo": "reflex-todomvc", - "branch": "master", - "rev": "3facdd7fc1cc585611012c6fef1cafb77a2dfa7a", - "sha256": "1h01lxfmsfvq9bxfhgbixkjm7j1myy2wvdxlksgw8s0cp389v4r1" + "branch": "nostdenvlib", + "rev": "c1611b866b860976b33fccb3a5206b0e0866adb8", + "sha256": "sha256-k3mL7HTy22K1wPQhHkjlwxa/YgAzLf6vN03YSC0q06E=" } diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 4c95fae46..14cfd8651 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -1,8 +1,8 @@ { "owner": "obsidiansystems", "repo": "nixpkgs", - "branch": "aa/reflex-platform-21.05", + "branch": "reflex-platform-22.05", "private": false, - "rev": "d39ee6b7c45deb224d95f717bd1e6e2144e09dd9", - "sha256": "sha256:1qvs24469zap8rw0la2fg3dsdnbs0xlrhn4fxkdbs547hyvrfxl2" + "rev": "1d71c8684047009eac3534a563e695f0070e93e6", + "sha256": "sha256:13r40xk4xshrkw1izwxzlax287vkzcr3qp6ypbghysmy54jw0mr9" } From 7a29413275ec936317067a8d44d895811a624248 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Thu, 22 Sep 2022 08:30:16 -0500 Subject: [PATCH 02/52] More fixes --- android/build-gradle-app.nix | 4 ++-- android/impl.nix | 6 +++--- default.nix | 7 +++++-- haskell-overlays/android/default.nix | 2 +- haskell-overlays/default.nix | 2 +- haskell-overlays/untriaged.nix | 2 +- nixpkgs/github.json | 6 +++--- 7 files changed, 16 insertions(+), 13 deletions(-) diff --git a/android/build-gradle-app.nix b/android/build-gradle-app.nix index 72115c15f..9cd061e93 100644 --- a/android/build-gradle-app.nix +++ b/android/build-gradle-app.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, androidenv, jdk, gnumake, gawk, file +{ stdenv, lib, androidenv, openjdk17_headless, gnumake, gawk, file , which, gradle, fetchurl, buildEnv, runCommand }: args@{ name, src, platformVersions ? [ "8" ] @@ -60,7 +60,7 @@ stdenv.mkDerivation ({ ANDROID_HOME = "${androidsdkComposition.androidsdk}/libexec"; ANDROID_NDK_HOME = "${androidsdkComposition.ndk-bundle}/libexec/android-sdk/ndk-bundle"; - buildInputs = [ jdk gradle ] ++ buildInputs ++ lib.optional useNDK [ androidsdkComposition.ndk-bundle gnumake gawk file which ]; + buildInputs = [ openjdk17_headless gradle ] ++ buildInputs ++ lib.optional useNDK [ androidsdkComposition.ndk-bundle gnumake gawk file which ]; DEPENDENCIES = buildEnv { name = "${name}-maven-deps"; paths = map m2install mavenDeps; diff --git a/android/impl.nix b/android/impl.nix index 771691e94..cf5050c32 100644 --- a/android/impl.nix +++ b/android/impl.nix @@ -14,16 +14,16 @@ let overrideAndroidCabal = package: overrideCabal package (drv: { substitute ${./deploy.sh} $out/bin/deploy \ --subst-var-by coreutils ${nixpkgs.coreutils} \ --subst-var-by adb ${androidenv.androidPkgs_9_0.platform-tools} \ - --subst-var-by java ${nixpkgs.openjdk11} \ + --subst-var-by java ${nixpkgs.openjdk17_headless} \ --subst-var-by out $out chmod +x "$out/bin/deploy" ''; buildInputs = [ androidenv.androidPkgs_9_0.androidsdk ]; } ""; buildGradleApp = import ./build-gradle-app.nix { - inherit (nixpkgs) stdenv lib jdk gnumake gawk file runCommand + inherit (nixpkgs) stdenv lib gnumake openjdk17_headless gawk file runCommand which gradle fetchurl buildEnv; - inherit androidenv; + inherit androidenv; }; inherit (nixpkgs.lib) splitString escapeShellArg mapAttrs attrNames concatStrings optionalString; in { diff --git a/default.nix b/default.nix index f60fd0631..3410ca154 100644 --- a/default.nix +++ b/default.nix @@ -153,13 +153,16 @@ let iosSupport = system == "x86_64-darwin"; android = lib.mapAttrs (_: args: nixpkgsFunc (nixpkgsArgs // args)) rec { aarch64 = { crossSystem = lib.systems.examples.aarch64-android-prebuilt // - { isStatic = true; }; + { + isStatic = true; + sdkVer = "28"; + }; }; aarch32 = { crossSystem = lib.systems.examples.armv7a-android-prebuilt // { isStatic = true; # Choose an old version so it's easier to find phones to test on - sdkVer = "23"; + sdkVer = "28"; }; }; }; diff --git a/haskell-overlays/android/default.nix b/haskell-overlays/android/default.nix index 1ea56293a..bf777fca6 100644 --- a/haskell-overlays/android/default.nix +++ b/haskell-overlays/android/default.nix @@ -12,7 +12,7 @@ self: super: { _dep = super._dep or {} // thunkSet ./dep; android-activity = self.callPackage self._dep.android-activity { - inherit (nixpkgs.buildPackages) jdk; + jdk = nixpkgs.buildPackages.jdk17_headless; }; syb = haskellLib.overrideCabal super.syb (drv: { jailbreak = true; }); diff --git a/haskell-overlays/default.nix b/haskell-overlays/default.nix index 2079b2ebf..408ec0ce2 100644 --- a/haskell-overlays/default.nix +++ b/haskell-overlays/default.nix @@ -63,7 +63,7 @@ rec { # arm* needs the same linker options, x86* -> arm* does not (optionalExtension (super.ghc.stdenv.targetPlatform.isAndroid or false) (self: super: - { + { mkDerivation = drv: super.mkDerivation (drv // { buildFlags = [ "--ghc-option=-optl-fuse-ld=gold" diff --git a/haskell-overlays/untriaged.nix b/haskell-overlays/untriaged.nix index e3ea2fe85..64deece4a 100644 --- a/haskell-overlays/untriaged.nix +++ b/haskell-overlays/untriaged.nix @@ -46,7 +46,7 @@ self: super: { self.callCabal2nix "hnix" (nixpkgs.hackGet ./hnix/hnix-store + "/hnix-store-core") {}; hnix-store-remote = self.callCabal2nix "hnix" (nixpkgs.hackGet ./hnix/hnix-store + "/hnix-store-remote") {}; - data-fix = self.callHackage "data-fix" "0.3.0" {}; + # data-fix = self.callHackage "data-fix" "0.3.0" {}; neat-interpolation = self.callHackage "neat-interpolation" "0.4" {}; prettyprinter = self.callHackage "prettyprinter" "1.7.0" {}; cryptohash-sha512 = doJailbreak super.cryptohash-sha512; diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 14cfd8651..a89ea777a 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -1,8 +1,8 @@ { "owner": "obsidiansystems", "repo": "nixpkgs", - "branch": "reflex-platform-22.05", + "branch": "reflex-platform-unstable", "private": false, - "rev": "1d71c8684047009eac3534a563e695f0070e93e6", - "sha256": "sha256:13r40xk4xshrkw1izwxzlax287vkzcr3qp6ypbghysmy54jw0mr9" + "rev": "b59c8e7d0e6023e41fd421c6f034c7dfd99e8808", + "sha256": "sha256:1zi4cs42qmy4l9whp1fcr9b8m5a12cka6h2dhbx9l2gn0vvjdfrj" } From b1239863be8c1da7aa560cb4e49ab0467ad9663a Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Wed, 5 Oct 2022 05:01:46 -0500 Subject: [PATCH 03/52] android 8_10 works --- android/build-gradle-app.nix | 4 +- android/impl.nix | 30 ++++++-- default.nix | 54 +++++++++++--- haskell-overlays/android/default.nix | 74 +++++++++++++++++++- haskell-overlays/default.nix | 8 ++- haskell-overlays/reflex-packages/default.nix | 19 +++-- nixpkgs/github.json | 4 +- test | 1 + 8 files changed, 165 insertions(+), 29 deletions(-) create mode 100644 test diff --git a/android/build-gradle-app.nix b/android/build-gradle-app.nix index 9cd061e93..72115c15f 100644 --- a/android/build-gradle-app.nix +++ b/android/build-gradle-app.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, androidenv, openjdk17_headless, gnumake, gawk, file +{ stdenv, lib, androidenv, jdk, gnumake, gawk, file , which, gradle, fetchurl, buildEnv, runCommand }: args@{ name, src, platformVersions ? [ "8" ] @@ -60,7 +60,7 @@ stdenv.mkDerivation ({ ANDROID_HOME = "${androidsdkComposition.androidsdk}/libexec"; ANDROID_NDK_HOME = "${androidsdkComposition.ndk-bundle}/libexec/android-sdk/ndk-bundle"; - buildInputs = [ openjdk17_headless gradle ] ++ buildInputs ++ lib.optional useNDK [ androidsdkComposition.ndk-bundle gnumake gawk file which ]; + buildInputs = [ jdk gradle ] ++ buildInputs ++ lib.optional useNDK [ androidsdkComposition.ndk-bundle gnumake gawk file which ]; DEPENDENCIES = buildEnv { name = "${name}-maven-deps"; paths = map m2install mavenDeps; diff --git a/android/impl.nix b/android/impl.nix index cf5050c32..4fadb0d02 100644 --- a/android/impl.nix +++ b/android/impl.nix @@ -1,9 +1,23 @@ env: with env; let overrideAndroidCabal = package: overrideCabal package (drv: { - preConfigure = (drv.preConfigure or "") + '' - sed -i 's%^executable *\(.*\)$%executable lib\1.so\n cc-options: -shared -fPIC\n ld-options: -shared -Wl,--gc-sections,--version-script=${./haskellActivity.version},-u,Java_systems_obsidian_HaskellActivity_haskellStartMain,-u,hs_main\n ghc-options: -shared -fPIC -threaded -no-hs-main -lHSrts_thr -lffi -lm -llog%i' *.cabal + # -Wl,--unresolved-symbols=ignore-in-object-files + preConfigure = (drv.preConfigure or "") + '' + export NIX_CFLAGS_LINK="-no-pie -v" + sed -i 's%^executable *\(.*\)$%executable lib\1.so\n cc-options: -no-pie -shared -fPIC\n ld-options: -no-pie -shared -Wl,--gc-sections,--version-script=${./haskellActivity.version},-u,Java_systems_obsidian_HaskellActivity_haskellStartMain,-u,hs_main\n ghc-options: -fPIC -shared -no-pie -threaded -no-hs-main -lHSrts_thr -lffi -lm -llog%i' *.cabal ''; - }); + # -no-hs-main + configureFlags = (drv.configureFlags or []) ++ [ + "--enable-shared" + ]; + }); + /* + overrideAndroidCabal = package: overrideCabal package (drv: { + preConfigure = '' + export NIX_CFLAGS_COMPILE="" + export NIX_CFLAGS_LINK="-v -no-pie" + ''; + }); + */ androidenv = nixpkgs.androidenv; #TODO: Keep the signing key for dev mode more consistent, e.g. in ~/.config/reflex-platform, so that the app can be reinstalled in-place addDeployScript = src: nixpkgs.runCommand "android-app" { @@ -21,9 +35,13 @@ let overrideAndroidCabal = package: overrideCabal package (drv: { buildInputs = [ androidenv.androidPkgs_9_0.androidsdk ]; } ""; buildGradleApp = import ./build-gradle-app.nix { - inherit (nixpkgs) stdenv lib gnumake openjdk17_headless gawk file runCommand - which gradle fetchurl buildEnv; - inherit androidenv; + inherit (nixpkgs) stdenv lib gnumake gawk file runCommand + which fetchurl buildEnv; + inherit androidenv; + gradle = nixpkgs.gradle.override { + java = nixpkgs.buildPackages.openjdk11_headless; + }; + jdk = nixpkgs.buildPackages.openjdk17_headless; }; inherit (nixpkgs.lib) splitString escapeShellArg mapAttrs attrNames concatStrings optionalString; in { diff --git a/default.nix b/default.nix index 3410ca154..eaa5047dc 100644 --- a/default.nix +++ b/default.nix @@ -51,6 +51,8 @@ let iosSupport = system == "x86_64-darwin"; ghcSplices-8_10 = (super.haskell.compiler.ghc8107.override { # New option for GHC 8.10. Explicitly enable profiling builds enableProfiledLibs = true; + #enableShared = self.stdenv.hostPlatform == self.stdenv.targetPlatform; + #enableShared = false; bootPkgs = super.haskell.packages.ghc865Binary // { happy = super.haskell.packages.ghc865Binary.happy_1_19_12; }; @@ -103,9 +105,9 @@ let iosSupport = system == "x86_64-darwin"; libiconv = super.darwin.libiconv.overrideAttrs (_: lib.optionalAttrs (self.stdenv.hostPlatform != self.stdenv.buildPlatform) { postInstall = "rm $out/include/libcharset.h $out/include/localcharset.h"; - configureFlags = ["--disable-shared" "--enable-static"]; + configureFlags = ["--enable-shared" "--enable-static"]; }); - }; + }; zlib = super.zlib.override (lib.optionalAttrs (self.stdenv.hostPlatform != self.stdenv.buildPlatform) { static = true; shared = false; }); @@ -128,7 +130,37 @@ let iosSupport = system == "x86_64-darwin"; /*binutils-unwrapped = super.binutils-unwrapped.override { autoreconfHook = lib.optional self.stdenv.buildPlatform.isDarwin super.autoreconfHook269; }; - */ + */ + + polkit = super.polkit.override { + gobject-introspection = super.gobject-introspection-unwrapped; + }; + /* + openjdk17_headless = super.openjdk17_headless.override { + openjdk17-bootstrap = super.openjdk17-bootstrap.override { + gtkSupport = false; + }; + }; + */ + openjdk16-bootstrap = super.openjdk16-bootstrap.override { + gtkSupport = false; + }; + adoptopenjdk-hotspot-bin-16 = super.adoptopenjdk-hotspot-bin-16.override { + gtkSupport = false; + }; + sqlite = if self.stdenv.hostPlatform.useAndroidPrebuilt or false then super.sqlite.overrideAttrs (old: { + postBuild = '' + mkdir -p $debug + ''; + }) else super.sqlite; + + libiconv = if self.stdenv.hostPlatform.useAndroidPrebuilt or false then super.libiconv.overrideAttrs (_: { + configureFlags = [ "--disable-shared" "--enable-static" ]; + }) else super.libiconv; + + libffi = if self.stdenv.hostPlatform.useAndroidPrebuilt or false then super.libffi_3_3.overrideAttrs (old: { + + }) else super.libffi; }) (import ./nixpkgs-overlays/ghc.nix { inherit lib; }) ] ++ nixpkgsOverlays; @@ -150,19 +182,25 @@ let iosSupport = system == "x86_64-darwin"; wasmCross = nixpkgs.hackGet ./wasm-cross; webGhcSrc = (import (wasmCross + /webghc.nix) { inherit fetchgit; }).ghc8107SplicesSrc; nixpkgsCross = { + # NOTE(Dylan Green): + # sdkVer 30 is the minimum for android, else we have to use libffi 3.3 + # bionic doesn't support/expose memfd_create before sdk30 + # https://android.googlesource.com/platform/bionic/+/refs/heads/master/docs/status.md + # Look for "new libc functions in R (API Level 30):", memfd_create will be one of the functions / + # symbols we need to build newer libffi + # This means we'll drop all SDKs pre-30 android = lib.mapAttrs (_: args: nixpkgsFunc (nixpkgsArgs // args)) rec { aarch64 = { crossSystem = lib.systems.examples.aarch64-android-prebuilt // { - isStatic = true; - sdkVer = "28"; + #isStatic = true; + sdkVer = "30"; }; }; aarch32 = { crossSystem = lib.systems.examples.armv7a-android-prebuilt // { - isStatic = true; - # Choose an old version so it's easier to find phones to test on - sdkVer = "28"; + #isStatic = true; + sdkVer = "30"; }; }; }; diff --git a/haskell-overlays/android/default.nix b/haskell-overlays/android/default.nix index bf777fca6..f374ab680 100644 --- a/haskell-overlays/android/default.nix +++ b/haskell-overlays/android/default.nix @@ -11,10 +11,69 @@ in self: super: { _dep = super._dep or {} // thunkSet ./dep; - android-activity = self.callPackage self._dep.android-activity { - jdk = nixpkgs.buildPackages.jdk17_headless; - }; + android-activity = haskellLib.overrideCabal (self.callCabal2nix "android-activity" (self._dep.android-activity + "/") { + log = nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries; + }) (drv: let + jdk-fixed = (nixpkgs.buildPackages.jdk17.override { + headless = true; + enableGnome2 = false; + enableJavaFX = false; + openjdk17-bootstrap = nixpkgs.buildPackages.openjdk17-bootstrap.override { + gtkSupport = false; + }; + }); + in { + librarySystemDepends = (drv.librarySystemDepends or []) ++ [ jdk-fixed ]; + enableSharedExecutables = true; + enableSharedLibraries = true; + enableStaticLibraries = false; + buildTools = (drv.buildTools or []) ++ [ nixpkgs.pkg-config ]; + /*preConfigure = '' + export NIX_CFLAGS_LINK="-Wl,--unresolved-symbols=ignore-in-object-files" + export NIX_CFLAGS_COMPILE="-no-pie" + ''; + */ + configureFlags = (drv.configureFlags or []) ++ [ + "--enable-shared" + #"-v3" + ]; + }); + /* + splitmix = haskellLib.overrideCabal super.splitmix (drv: { + enableStaticLibraries = false; + configureFlags = (drv.configureFlags or []) ++ [ + "--disable-static" + ]; + }); + */ +/* + android-activity = (self.callPackage self._dep.android-activity { + jdk = (nixpkgs.buildPackages.jdk17.overrideAttrs (old: { })).override { + headless = true; + enableGnome2 = false; + enableJavaFX = false; + openjdk17-bootstrap = nixpkgs.buildPackages.openjdk17-bootstrap.override { + gtkSupport = false; + }; + }; + }).overrideAttrs (old: { + preConfigure = '' + export LDFLAGS="-v" + export NIX_CFLAGS_LINK="-L${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries}/lib $NIX_CFLAGS_LINK" + export NIX_CFLAGS_COMPILE="-isystem${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries}/include $NIX_CFLAGS_COMPILE" + export NIX_LDFLAGS="-v -L${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries}/lib $NIX_LDFLAGS" + ''; + configureFlags = nixpkgs.lib.remove "--enable-static" ((old.configureFlags or []) ++ [ + "--extra-lib-dirs=${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries}/lib" + "--extra-include-dirs=${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries}/include" + "-v3" + "--ld-option=-v" + ]); + enableSharedExecutables = true; + enableSharedLibraries = true; + }); +*/ syb = haskellLib.overrideCabal super.syb (drv: { jailbreak = true; }); cabal-doctest = null; @@ -34,6 +93,15 @@ self: super: { enableSharedExecutables = false; }); + # HACK(Dylan Green): + # Temporary fix for RPATH troubles regarding attoparsec + attoparsec = haskellLib.overrideCabal super.attoparsec (drv: { + preFixup = '' + rm -rf "$(pwd)" + mkdir "$(pwd)" + ''; + }); + # HACK(matthewbauer): # Temporary fix for https://github.com/ekmett/free/issues/176 # Optimizations are broken on some ARM-based systems for some reason. diff --git a/haskell-overlays/default.nix b/haskell-overlays/default.nix index 408ec0ce2..0eb94e0eb 100644 --- a/haskell-overlays/default.nix +++ b/haskell-overlays/default.nix @@ -66,16 +66,18 @@ rec { { mkDerivation = drv: super.mkDerivation (drv // { buildFlags = [ - "--ghc-option=-optl-fuse-ld=gold" - "--ld-option=-fuse-ld=gold" + #"--ghc-option=-optl-fuse-ld=gold" + #"--ld-option=-fuse-ld=gold" "--ld-option=-fPIE" "--ld-option=-pie" + #"--ld-option=-L${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.binaries}/lib" "--ghc-option=-fPIC" "--ghc-option=-fPIE" ] ++ (drv.buildFlags or [ ]); configureFlags = [ - "--with-ld=${super.ghc.stdenv.targetPlatform.config}-ld.gold" + #"--with-ld=${super.ghc.stdenv.targetPlatform.config}-ld.gold" + #"--ld-option=-v" ] ++ (drv.configureFlags or [ ]); }); })) diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index d6b94519e..5aa8c2bdf 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -46,7 +46,7 @@ in (lib.optional useFastWeak "-ffast-weak") ])) {}; - reflex-todomvc = self.callPackage self._dep.reflex-todomvc {}; + reflex-todomvc = haskellLib.doJailbreak (self.callPackage self._dep.reflex-todomvc {}); reflex-aeson-orphans = self.callCabal2nix "reflex-aeson-orphans" self._dep.reflex-aeson-orphans {}; # The tests for reflex-dom-core are not deterministic, disable them, and run them manually @@ -96,11 +96,20 @@ in '' + (drv.preCheck or ""); }); - reflex-dom = - self.callCabal2nixWithOptions "reflex-dom" (reflexDomRepo + "/reflex-dom") (lib.concatStringsSep " " (lib.concatLists [ + reflex-dom = haskellLib.doJailbreak (haskellLib.overrideCabal (self.callCabal2nixWithOptions "reflex-dom" (reflexDomRepo + "/reflex-dom") (lib.concatStringsSep " " (lib.concatLists [ reflexOptimizerFlag useTemplateHaskellFlag - ])) {}; + ])) { }) (drv: { + preConfigure = '' + sed -i 's|aeson >=1.4 && <1.6|aeson -any|g' *.cabal + ''; + libraryHaskellDepends = [ + self.reflex self.reflex-dom-core + self.jsaddle-webkit2gtk + super.aeson + self.android-activity + ]; + })); chrome-test-utils = self.callCabal2nix "chrome-test-utils" (reflexDomRepo + "/chrome-test-utils") {}; @@ -139,7 +148,7 @@ in # jsaddle-warp = dontCheck (addTestToolDepend (self.callCabal2nix "jsaddle-warp" "${jsaddleSrc}/jsaddle-warp" {})); jsaddle-warp = dontCheck (self.callCabal2nix "jsaddle-warp" (jsaddleSrc + "/jsaddle-warp") {}); - jsaddle-dom = self.callCabal2nix "jsaddle-dom" self._dep.jsaddle-dom {}; + jsaddle-dom = doJailbreak (self.callCabal2nix "jsaddle-dom" self._dep.jsaddle-dom {}); jsaddle-wasm = self.callCabal2nix "jsaddle-wasm" (hackGet (wasmCross + "/jsaddle-wasm")) {}; ghcjs-dom = self.callCabal2nix "ghcjs-dom" (self._dep.ghcjs-dom + "/ghcjs-dom") {}; ghcjs-dom-jsaddle = self.callCabal2nix "ghcjs-dom-jsaddle" (self._dep.ghcjs-dom + "/ghcjs-dom-jsaddle") {}; diff --git a/nixpkgs/github.json b/nixpkgs/github.json index a89ea777a..38f0439d1 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "b59c8e7d0e6023e41fd421c6f034c7dfd99e8808", - "sha256": "sha256:1zi4cs42qmy4l9whp1fcr9b8m5a12cka6h2dhbx9l2gn0vvjdfrj" + "rev": "e416307ad262cbd5851bdf5cca3dc5993bebeb04", + "sha256": "sha256:0cakclkyglvvjqss3b8iqa1830lygrzlbzp0zmgh8hxpvw0xwrz2" } diff --git a/test b/test new file mode 100644 index 000000000..2762bac35 --- /dev/null +++ b/test @@ -0,0 +1 @@ +Environment: [("AR","aarch64-unknown-linux-android-ar"),("CC","aarch64-unknown-linux-android-clang"),("CONFIG_SHELL","/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin/bash"),("CXX","aarch64-unknown-linux-android-clang++"),("HOME","/homeless-shelter"),("JAVA_HOME","/nix/store/g0ysbrwvjlcrzg1bm338rl4r5ylfacn6-openjdk-headless-17.0.4+8/lib/openjdk"),("LANG","en_US.UTF-8"),("LD","aarch64-unknown-linux-android-ld"),("LDFLAGS","-v"),("LOCALE_ARCHIVE","/nix/store/fpzp59yp2wcfw861q247xs5pgsgr9192-glibc-locales-2.35-163/lib/locale/locale-archive"),("NIX_BINTOOLS","/nix/store/fn9qz6bx9wjmvml2inrsm7waxbfwjnb2-aarch64-unknown-linux-android-ndk-toolchain-wrapper-24.0.8215888"),("NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_unknown_linux_android","1"),("NIX_BUILD_CORES","16"),("NIX_BUILD_TOP","/build"),("NIX_CC","/nix/store/k6fx2qn7iz5bhwncsljrsraqsmykv9jc-aarch64-unknown-linux-android-ndk-toolchain-wrapper-24.0.8215888"),("NIX_CC_WRAPPER_TARGET_HOST_aarch64_unknown_linux_android","1"),("NIX_CFLAGS_COMPILE","-isystem/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/toolchain/sysroot/usr/include"),("NIX_CFLAGS_LINK","-L/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib -static"),("NIX_ENFORCE_NO_NATIVE","1"),("NIX_ENFORCE_PURITY","1"),("NIX_HARDENING_ENABLE","fortify stackprotector pic strictoverflow format relro bindnow"),("NIX_INDENT_MAKE","1"),("NIX_LDFLAGS","-v -L/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib -rpath /nix/store/ivr02789c2ia82lsdciv6z5498qyk98l-android-activity-static-aarch64-unknown-linux-android-0.1/lib64 -rpath /nix/store/ivr02789c2ia82lsdciv6z5498qyk98l-android-activity-static-aarch64-unknown-linux-android-0.1/lib -liconv -L/nix/store/cfr2zs7s5vj5fkfx4mqb0pw6jy1h6hva-ncurses-static-aarch64-unknown-linux-android-6.3-p20220507/lib -L/nix/store/1ihppd284lrw8gj0qd0d89s8481lmswl-libffi-static-aarch64-unknown-linux-android-3.4.2/lib -L/nix/store/57qj221bjdg5r9k7ls73s071wjdr25ap-libiconv-static-aarch64-unknown-linux-android-1.16/lib"),("NIX_LOG_FD","2"),("NIX_SSL_CERT_FILE","/no-cert-file.crt"),("NIX_STORE","/nix/store"),("NM","aarch64-unknown-linux-android-nm"),("OBJCOPY","aarch64-unknown-linux-android-objcopy"),("OBJDUMP","aarch64-unknown-linux-android-objdump"),("OLDPWD","/build"),("PATH","/nix/store/4mkmxkryhf7jwvkysf4wsbyygcv2vnv4-hscolour-1.24.4/bin:/nix/store/mq45jdqcrqwm9j4vl0asjc5sbnn9l0vg-ghc-integer-simple-8.10.7/bin:/nix/store/9yj3jdmm5g0jfbcmhxg0bqd75yjhlx9g-ncurses-6.3-p20220507/bin:/nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7/bin:/nix/store/csdl68a178aa6pazh55kg8g7ihblw01i-remove-references-to/bin:/nix/store/f1yk9kbnv0zikz64hn9hx218d04jq73l-patchelf-0.15.0/bin:/nix/store/k6fx2qn7iz5bhwncsljrsraqsmykv9jc-aarch64-unknown-linux-android-ndk-toolchain-wrapper-24.0.8215888/bin:/nix/store/h1k9sv1ivb4i6zdcjl18c9irya74qwka-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/bin:/nix/store/n95s7s6ilkjc7xwqml93acxzj6k0hsfn-coreutils-9.1/bin:/nix/store/fn9qz6bx9wjmvml2inrsm7waxbfwjnb2-aarch64-unknown-linux-android-ndk-toolchain-wrapper-24.0.8215888/bin:/nix/store/n95s7s6ilkjc7xwqml93acxzj6k0hsfn-coreutils-9.1/bin:/nix/store/k0kpf3r2k1d8p9h0gmx23msw3qrybkfk-findutils-4.9.0/bin:/nix/store/jay2imyql1mljkck4g3dnbnak6sd5ks6-diffutils-3.8/bin:/nix/store/5mgbisml783jj5mscxjsr4hlbmn25cyr-gnused-4.8/bin:/nix/store/ix6nn9lwp2w04agkfb1wzwvcnis0mmxw-gnugrep-3.7/bin:/nix/store/mdvw541sarkk8jxfrf9jyjz1gs46wyjn-gawk-5.1.1/bin:/nix/store/f4ja1s5wxs2fxvcyz6kaaqj75icjfrrm-gnutar-1.34/bin:/nix/store/nc3xqj1cq6h418qmqlha193mvmbhx4bp-gzip-1.12/bin:/nix/store/shkayl138d07l29bph4f92x3hwbqlk0j-bzip2-1.0.8-bin/bin:/nix/store/0yw0w4ds9q34c1j7ghrg21gaj415dlym-gnumake-4.3/bin:/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin:/nix/store/541ykirikh68a1djyk5cz7w21f896hj3-patch-2.7.6/bin:/nix/store/q4m8mhkb71yd7vgx5wmm5c7hzs7hsj45-xz-5.2.6-bin/bin:/nix/store/sd2s5syapsykjy5xdkx6407cx1bv9wpn-file-5.42/bin"),("PWD","/build/k985bh5bfsqxmygvisf118mjnfwdixmz-source"),("RANLIB","aarch64-unknown-linux-android-ranlib"),("READELF","aarch64-unknown-linux-android-readelf"),("SHELL","/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin/bash"),("SHLVL","0"),("SIZE","aarch64-unknown-linux-android-size"),("SOURCE_DATE_EPOCH","315532800"),("SSL_CERT_FILE","/no-cert-file.crt"),("STRINGS","aarch64-unknown-linux-android-strings"),("STRIP","aarch64-unknown-linux-android-strip"),("TEMP","/build"),("TEMPDIR","/build"),("TERM","xterm-256color"),("TMP","/build"),("TMPDIR","/build"),("TZ","UTC"),("WINDRES","aarch64-unknown-linux-android-windres"),("XDG_DATA_DIRS","/nix/store/mq45jdqcrqwm9j4vl0asjc5sbnn9l0vg-ghc-integer-simple-8.10.7/share:/nix/store/9yj3jdmm5g0jfbcmhxg0bqd75yjhlx9g-ncurses-6.3-p20220507/share:/nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7/share:/nix/store/f1yk9kbnv0zikz64hn9hx218d04jq73l-patchelf-0.15.0/share"),("_","./Setup"),("buildInputs",""),("buildPhase","runHook preBuild\n./Setup build --with-ghc=aarch64-unknown-linux-android-ghc --with-ghc-pkg=aarch64-unknown-linux-android-ghc-pkg --with-gcc=aarch64-unknown-linux-android-cc --with-ld=aarch64-unknown-linux-android-ld --with-ar=aarch64-unknown-linux-android-ar --with-hsc2hs=aarch64-unknown-linux-android-hsc2hs --with-strip=aarch64-unknown-linux-android-strip --hsc2hs-option=--cross-compile --ld-option=-fPIE --ld-option=-pie --ld-option=-L/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib --ghc-option=-fPIC --ghc-option=-fPIE\nrunHook postBuild\n"),("builder","/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin/bash"),("checkPhase","runHook preCheck\ncheckFlagsArray+=(\n \"--show-details=streaming\"\n \n)\n./Setup test $checkFlags ${checkFlagsArray:+\"${checkFlagsArray[@]}\"}\nrunHook postCheck\n"),("cmakeFlags","-DBUILD_SHARED_LIBS:BOOL=OFF -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_HOST_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_PROCESSOR=x86_64"),("compileBuildDriverPhase","runHook preCompileBuildDriver\n\nfor i in Setup.hs Setup.lhs /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs; do\n test -f $i && break\ndone\n\necho setupCompileFlags: $setupCompileFlags\nghc $setupCompileFlags --make -o Setup -odir $builddir -hidir $builddir $i\n\nrunHook postCompileBuildDriver\n"),("configureFlags","--verbose --prefix=/nix/store/ivr02789c2ia82lsdciv6z5498qyk98l-android-activity-static-aarch64-unknown-linux-android-0.1 --libdir=$prefix/lib/$compiler --libsubdir=$abi/$libname --with-gcc=aarch64-unknown-linux-android-clang --package-db=/build/tmp.10PjVlwBxC/package.conf.d --ghc-options=-j16 +RTS -A64M -RTS --disable-split-objs --disable-library-profiling --disable-profiling --disable-shared --disable-coverage --enable-static --disable-executable-dynamic --disable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --ghc-option=-split-sections --disable-library-stripping --disable-executable-stripping --configure-option=--host=aarch64-unknown-linux-android --with-ghc=aarch64-unknown-linux-android-ghc --with-ghc-pkg=aarch64-unknown-linux-android-ghc-pkg --with-gcc=aarch64-unknown-linux-android-cc --with-ld=aarch64-unknown-linux-android-ld --with-ar=aarch64-unknown-linux-android-ar --with-hsc2hs=aarch64-unknown-linux-android-hsc2hs --with-strip=aarch64-unknown-linux-android-strip --hsc2hs-option=--cross-compile --ld-option=-v --ghc-options=-fexpose-all-unfoldings --enable-static --disable-shared --disable-shared --extra-lib-dirs=/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib --extra-include-dirs=/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/toolchain/sysroot/usr/include -v3 --ld-option=-v --extra-lib-dirs=/nix/store/cfr2zs7s5vj5fkfx4mqb0pw6jy1h6hva-ncurses-static-aarch64-unknown-linux-android-6.3-p20220507/lib --extra-lib-dirs=/nix/store/1ihppd284lrw8gj0qd0d89s8481lmswl-libffi-static-aarch64-unknown-linux-android-3.4.2/lib --extra-include-dirs=/nix/store/57qj221bjdg5r9k7ls73s071wjdr25ap-libiconv-static-aarch64-unknown-linux-android-1.16/include --extra-lib-dirs=/nix/store/57qj221bjdg5r9k7ls73s071wjdr25ap-libiconv-static-aarch64-unknown-linux-android-1.16/lib --extra-include-dirs=/nix/store/g0ysbrwvjlcrzg1bm338rl4r5ylfacn6-openjdk-headless-17.0.4+8/include --extra-lib-dirs=/nix/store/g0ysbrwvjlcrzg1bm338rl4r5ylfacn6-openjdk-headless-17.0.4+8/lib"),("configurePhase","runHook preConfigure\n\nunset GHC_PACKAGE_PATH # Cabal complains if this variable is set during configure.\n\necho configureFlags: $configureFlags\n./Setup configure $configureFlags 2>&1 | /nix/store/n95s7s6ilkjc7xwqml93acxzj6k0hsfn-coreutils-9.1/bin/tee \"$NIX_BUILD_TOP/cabal-configure.log\"\nif /nix/store/ix6nn9lwp2w04agkfb1wzwvcnis0mmxw-gnugrep-3.7/bin/egrep -q -z 'Warning:.*depends on multiple versions' \"$NIX_BUILD_TOP/cabal-configure.log\"; then\n echo >&2 \"*** abort because of serious configure-time warning from Cabal\"\n exit 1\nfi\n\nexport GHC_PACKAGE_PATH=\"$packageConfDir:\"\n\nrunHook postConfigure\n"),("configurePlatforms",""),("depsBuildBuild","/nix/store/mq45jdqcrqwm9j4vl0asjc5sbnn9l0vg-ghc-integer-simple-8.10.7"),("depsBuildBuildPropagated",""),("depsBuildTarget",""),("depsBuildTargetPropagated",""),("depsHostHost",""),("depsHostHostPropagated",""),("depsTargetTarget",""),("depsTargetTargetPropagated",""),("doCheck",""),("doInstallCheck",""),("dontDisableStatic","1"),("dontStrip","1"),("haddockPhase","runHook preHaddock\n\nrunHook postHaddock\n"),("hardeningDisable","pie"),("installPhase","runHook preInstall\n\n./Setup copy \nlocal packageConfDir=\"$out/lib/aarch64-unknown-linux-android-ghc-8.10.7/package.conf.d\"\nlocal packageConfFile=\"$packageConfDir/android-activity-0.1.conf\"\nmkdir -p \"$packageConfDir\"\n./Setup register --gen-pkg-config=$packageConfFile\nif [ -d \"$packageConfFile\" ]; then\n mv \"$packageConfFile/\"* \"$packageConfDir\"\n rmdir \"$packageConfFile\"\nfi\nfor packageConfFile in \"$packageConfDir/\"*; do\n local pkgId=$(gawk -f /nix/store/907d7wf2d113vlv8dlhi1i3d683gc1rs-unpretty-cabal-conf.awk \"$packageConfFile\" \\\n | grep '^id:' | cut -d' ' -f2)\n mv \"$packageConfFile\" \"$packageConfDir/$pkgId.conf\"\ndone\n\n# delete confdir if there are no libraries\nfind $packageConfDir -maxdepth 0 -empty -delete;\n\n\n\n\n\n\n\n\nrunHook postInstall\n"),("mesonFlags","--cross-file=/nix/store/0d6bflf42rgrrxhp10visp67scqncd4g-cross-file.conf -Ddefault_library=static"),("name","android-activity-static-aarch64-unknown-linux-android-0.1"),("nativeBuildInputs","/nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7 /nix/store/csdl68a178aa6pazh55kg8g7ihblw01i-remove-references-to"),("out","/nix/store/ivr02789c2ia82lsdciv6z5498qyk98l-android-activity-static-aarch64-unknown-linux-android-0.1"),("outputs","out"),("patches",""),("pname","android-activity"),("postPatch",""),("preBuild","\necho \"!!! has splices: no\"\necho \"!!! splices at: N/A !!!\"\n"),("preConfigure","export LDFLAGS=\"-v\"\nexport NIX_CFLAGS_LINK=\"-L/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib $NIX_CFLAGS_LINK\"\nexport NIX_CFLAGS_COMPILE=\"-isystem/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/toolchain/sysroot/usr/include\"\nexport NIX_LDFLAGS=\"-v -L/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib $NIX_LDFLAGS\"\n"),("preConfigurePhases","compileBuildDriverPhase updateAutotoolsGnuConfigScriptsPhase"),("preInstallPhases","haddockPhase"),("prePatch",""),("prePhases","setupCompilerEnvironmentPhase"),("propagatedBuildInputs"," /nix/store/slr3yy0qk80wgcsg1w7ijk80yw5bk5br-data-default-static-aarch64-unknown-linux-android-0.7.1.1 /nix/store/g0ysbrwvjlcrzg1bm338rl4r5ylfacn6-openjdk-headless-17.0.4+8"),("propagatedNativeBuildInputs",""),("setOutputFlags",""),("setupCompilerEnvironmentPhase","NIX_BUILD_CORES=$(( NIX_BUILD_CORES < 16 ? NIX_BUILD_CORES : 16 ))\nrunHook preSetupCompilerEnvironment\n\necho \"Build with /nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7.\"\nexport PATH=/nix/store/4mkmxkryhf7jwvkysf4wsbyygcv2vnv4-hscolour-1.24.4/bin:$PATH\n\nbuilddir=\"$(mktemp -d)\"\nsetupPackageConfDir=\"$builddir/setup-package.conf.d\"\nmkdir -p $setupPackageConfDir\npackageConfDir=\"$builddir/package.conf.d\"\nmkdir -p $packageConfDir\n\nsetupCompileFlags=\"-package-db=$setupPackageConfDir -j$NIX_BUILD_CORES +RTS -A64M -RTS -threaded -rtsopts\"\nconfigureFlags=\"--verbose --prefix=$out --libdir=\\$prefix/lib/\\$compiler --libsubdir=\\$abi/\\$libname --with-gcc=$CC --package-db=$packageConfDir --ghc-options=-j$NIX_BUILD_CORES +RTS -A64M -RTS --disable-split-objs --disable-library-profiling --disable-profiling --disable-shared --disable-coverage --enable-static --disable-executable-dynamic --disable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --ghc-option=-split-sections --disable-library-stripping --disable-executable-stripping --configure-option=--host=aarch64-unknown-linux-android --with-ghc=aarch64-unknown-linux-android-ghc --with-ghc-pkg=aarch64-unknown-linux-android-ghc-pkg --with-gcc=aarch64-unknown-linux-android-cc --with-ld=aarch64-unknown-linux-android-ld --with-ar=aarch64-unknown-linux-android-ar --with-hsc2hs=aarch64-unknown-linux-android-hsc2hs --with-strip=aarch64-unknown-linux-android-strip --hsc2hs-option=--cross-compile $configureFlags\"\nfor p in \"${pkgsBuildBuild[@]}\" \"${pkgsBuildHost[@]}\" \"${pkgsBuildTarget[@]}\"; do\n # If this dependency has a package database, then copy the contents of it,\n# unless it is one of our GHCs. These can appear in our dependencies when\n# we are doing native builds, and they have package databases in them, but\n# we do not want to copy them over.\n#\n# We don't need to, since those packages will be provided by the GHC when\n# we compile with it, and doing so can result in having multiple copies of\n# e.g. Cabal in the database with the same name and version, which is\n# ambiguous.\nif [ -d \"$p/lib/ghc-8.10.7/package.conf.d\" ] && [ \"$p\" != \"/nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7\" ] && [ \"$p\" != \"/nix/store/mq45jdqcrqwm9j4vl0asjc5sbnn9l0vg-ghc-integer-simple-8.10.7\" ]; then\n cp -f \"$p/lib/ghc-8.10.7/package.conf.d/\"*.conf $setupPackageConfDir/\n continue\nfi\n\ndone\nghc-pkg --package-db=\"$setupPackageConfDir\" recache\nfor p in \"${pkgsHostHost[@]}\" \"${pkgsHostTarget[@]}\"; do\n # If this dependency has a package database, then copy the contents of it,\n# unless it is one of our GHCs. These can appear in our dependencies when\n# we are doing native builds, and they have package databases in them, but\n# we do not want to copy them over.\n#\n# We don't need to, since those packages will be provided by the GHC when\n# we compile with it, and doing so can result in having multiple copies of\n# e.g. Cabal in the database with the same name and version, which is\n# ambiguous.\nif [ -d \"$p/lib/aarch64-unknown-linux-android-ghc-8.10.7/package.conf.d\" ] && [ \"$p\" != \"/nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7\" ] && [ \"$p\" != \"/nix/store/mq45jdqcrqwm9j4vl0asjc5sbnn9l0vg-ghc-integer-simple-8.10.7\" ]; then\n cp -f \"$p/lib/aarch64-unknown-linux-android-ghc-8.10.7/package.conf.d/\"*.conf $packageConfDir/\n continue\nfi\n\n if [ -d \"$p/include\" ]; then\n configureFlags+=\" --extra-include-dirs=$p/include\"\n fi\n if [ -d \"$p/lib\" ]; then\n configureFlags+=\" --extra-lib-dirs=$p/lib\"\n fi\nif [[ -d \"$p/Library/Frameworks\" ]]; then\n configureFlags+=\" --extra-framework-dirs=$p/Library/Frameworks\"\nfi\ndone\naarch64-unknown-linux-android-ghc-pkg --package-db=\"$packageConfDir\" recache\n\nrunHook postSetupCompilerEnvironment\n"),("shell","/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin/bash"),("src","/nix/store/l4gq8hdh6wv5xg3rn85mq13kh4w22sbs-k985bh5bfsqxmygvisf118mjnfwdixmz-source"),("stdenv","/nix/store/x8vy5j3bzx7nam8qwp115dmdwip046vh-stdenv-linux"),("strictDeps","1"),("system","x86_64-linux"),("version","0.1")] From ceac794c517db4eec2e077fc77523e86dc13d9dc Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Wed, 5 Oct 2022 05:10:27 -0500 Subject: [PATCH 04/52] cleanup, and add more comments add warnings and justifications for some weird looking overrides --- default.nix | 46 ++++++++++++---------------- haskell-overlays/android/default.nix | 42 +------------------------ haskell-overlays/default.nix | 12 +++----- test | 1 - 4 files changed, 26 insertions(+), 75 deletions(-) delete mode 100644 test diff --git a/default.nix b/default.nix index eaa5047dc..5e8de3523 100644 --- a/default.nix +++ b/default.nix @@ -105,7 +105,7 @@ let iosSupport = system == "x86_64-darwin"; libiconv = super.darwin.libiconv.overrideAttrs (_: lib.optionalAttrs (self.stdenv.hostPlatform != self.stdenv.buildPlatform) { postInstall = "rm $out/include/libcharset.h $out/include/localcharset.h"; - configureFlags = ["--enable-shared" "--enable-static"]; + configureFlags = ["--disable-shared" "--enable-static"]; }); }; zlib = super.zlib.override (lib.optionalAttrs @@ -127,28 +127,16 @@ let iosSupport = system == "x86_64-darwin"; mobileGhcOverlay allCabalHashesOverlay (self: super: { - /*binutils-unwrapped = super.binutils-unwrapped.override { - autoreconfHook = lib.optional self.stdenv.buildPlatform.isDarwin super.autoreconfHook269; - }; - */ - - polkit = super.polkit.override { - gobject-introspection = super.gobject-introspection-unwrapped; - }; - /* - openjdk17_headless = super.openjdk17_headless.override { - openjdk17-bootstrap = super.openjdk17-bootstrap.override { - gtkSupport = false; - }; - }; - */ - openjdk16-bootstrap = super.openjdk16-bootstrap.override { - gtkSupport = false; - }; - adoptopenjdk-hotspot-bin-16 = super.adoptopenjdk-hotspot-bin-16.override { - gtkSupport = false; - }; - sqlite = if self.stdenv.hostPlatform.useAndroidPrebuilt or false then super.sqlite.overrideAttrs (old: { + polkit = super.polkit.override { + gobject-introspection = super.gobject-introspection-unwrapped; + }; + openjdk16-bootstrap = super.openjdk16-bootstrap.override { + gtkSupport = false; + }; + adoptopenjdk-hotspot-bin-16 = super.adoptopenjdk-hotspot-bin-16.override { + gtkSupport = false; + }; + sqlite = if self.stdenv.hostPlatform.useAndroidPrebuilt or false then super.sqlite.overrideAttrs (old: { postBuild = '' mkdir -p $debug ''; @@ -158,9 +146,7 @@ let iosSupport = system == "x86_64-darwin"; configureFlags = [ "--disable-shared" "--enable-static" ]; }) else super.libiconv; - libffi = if self.stdenv.hostPlatform.useAndroidPrebuilt or false then super.libffi_3_3.overrideAttrs (old: { - - }) else super.libffi; + libffi = if self.stdenv.hostPlatform.useAndroidPrebuilt or false then super.libffi_3_3 else super.libffi; }) (import ./nixpkgs-overlays/ghc.nix { inherit lib; }) ] ++ nixpkgsOverlays; @@ -189,6 +175,14 @@ let iosSupport = system == "x86_64-darwin"; # Look for "new libc functions in R (API Level 30):", memfd_create will be one of the functions / # symbols we need to build newer libffi # This means we'll drop all SDKs pre-30 + + # NOTE(Dylan Green): + # We don't want to use "isStatic" here as we still rely on shared-objects + # adding "isStatic" completely disables generating most SOs, and we still need them + # for libffi (at the very least) + + # TODO(Dylan Green): + # Look into making this a proper static build up into "reflex-todomvc" android = lib.mapAttrs (_: args: nixpkgsFunc (nixpkgsArgs // args)) rec { aarch64 = { crossSystem = lib.systems.examples.aarch64-android-prebuilt // diff --git a/haskell-overlays/android/default.nix b/haskell-overlays/android/default.nix index f374ab680..9be890d72 100644 --- a/haskell-overlays/android/default.nix +++ b/haskell-overlays/android/default.nix @@ -28,52 +28,12 @@ self: super: { enableSharedLibraries = true; enableStaticLibraries = false; buildTools = (drv.buildTools or []) ++ [ nixpkgs.pkg-config ]; - /*preConfigure = '' - export NIX_CFLAGS_LINK="-Wl,--unresolved-symbols=ignore-in-object-files" - export NIX_CFLAGS_COMPILE="-no-pie" - ''; - */ configureFlags = (drv.configureFlags or []) ++ [ "--enable-shared" #"-v3" ]; }); - - /* - splitmix = haskellLib.overrideCabal super.splitmix (drv: { - enableStaticLibraries = false; - configureFlags = (drv.configureFlags or []) ++ [ - "--disable-static" - ]; - }); - */ -/* - android-activity = (self.callPackage self._dep.android-activity { - jdk = (nixpkgs.buildPackages.jdk17.overrideAttrs (old: { })).override { - headless = true; - enableGnome2 = false; - enableJavaFX = false; - openjdk17-bootstrap = nixpkgs.buildPackages.openjdk17-bootstrap.override { - gtkSupport = false; - }; - }; - }).overrideAttrs (old: { - preConfigure = '' - export LDFLAGS="-v" - export NIX_CFLAGS_LINK="-L${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries}/lib $NIX_CFLAGS_LINK" - export NIX_CFLAGS_COMPILE="-isystem${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries}/include $NIX_CFLAGS_COMPILE" - export NIX_LDFLAGS="-v -L${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries}/lib $NIX_LDFLAGS" - ''; - configureFlags = nixpkgs.lib.remove "--enable-static" ((old.configureFlags or []) ++ [ - "--extra-lib-dirs=${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries}/lib" - "--extra-include-dirs=${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries}/include" - "-v3" - "--ld-option=-v" - ]); - enableSharedExecutables = true; - enableSharedLibraries = true; - }); -*/ + syb = haskellLib.overrideCabal super.syb (drv: { jailbreak = true; }); cabal-doctest = null; diff --git a/haskell-overlays/default.nix b/haskell-overlays/default.nix index 0eb94e0eb..e78be5be8 100644 --- a/haskell-overlays/default.nix +++ b/haskell-overlays/default.nix @@ -55,6 +55,10 @@ rec { (optionalExtension enableExposeAllUnfoldings exposeAllUnfoldings) + #(NEW;Dylan Green): + # We no longer need to set gold as "lld" is default on the + # android toolchain now + #(OLD;Dylan Green): # Force "gold" on Android due to a linker bug on bfd # Also force -fPIC on for Android, we need it either way @@ -66,19 +70,13 @@ rec { { mkDerivation = drv: super.mkDerivation (drv // { buildFlags = [ - #"--ghc-option=-optl-fuse-ld=gold" - #"--ld-option=-fuse-ld=gold" "--ld-option=-fPIE" "--ld-option=-pie" - #"--ld-option=-L${nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.binaries}/lib" "--ghc-option=-fPIC" "--ghc-option=-fPIE" ] ++ (drv.buildFlags or [ ]); - configureFlags = [ - #"--with-ld=${super.ghc.stdenv.targetPlatform.config}-ld.gold" - #"--ld-option=-v" - ] ++ (drv.configureFlags or [ ]); + configureFlags = [ ] ++ (drv.configureFlags or [ ]); }); })) diff --git a/test b/test deleted file mode 100644 index 2762bac35..000000000 --- a/test +++ /dev/null @@ -1 +0,0 @@ -Environment: [("AR","aarch64-unknown-linux-android-ar"),("CC","aarch64-unknown-linux-android-clang"),("CONFIG_SHELL","/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin/bash"),("CXX","aarch64-unknown-linux-android-clang++"),("HOME","/homeless-shelter"),("JAVA_HOME","/nix/store/g0ysbrwvjlcrzg1bm338rl4r5ylfacn6-openjdk-headless-17.0.4+8/lib/openjdk"),("LANG","en_US.UTF-8"),("LD","aarch64-unknown-linux-android-ld"),("LDFLAGS","-v"),("LOCALE_ARCHIVE","/nix/store/fpzp59yp2wcfw861q247xs5pgsgr9192-glibc-locales-2.35-163/lib/locale/locale-archive"),("NIX_BINTOOLS","/nix/store/fn9qz6bx9wjmvml2inrsm7waxbfwjnb2-aarch64-unknown-linux-android-ndk-toolchain-wrapper-24.0.8215888"),("NIX_BINTOOLS_WRAPPER_TARGET_HOST_aarch64_unknown_linux_android","1"),("NIX_BUILD_CORES","16"),("NIX_BUILD_TOP","/build"),("NIX_CC","/nix/store/k6fx2qn7iz5bhwncsljrsraqsmykv9jc-aarch64-unknown-linux-android-ndk-toolchain-wrapper-24.0.8215888"),("NIX_CC_WRAPPER_TARGET_HOST_aarch64_unknown_linux_android","1"),("NIX_CFLAGS_COMPILE","-isystem/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/toolchain/sysroot/usr/include"),("NIX_CFLAGS_LINK","-L/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib -static"),("NIX_ENFORCE_NO_NATIVE","1"),("NIX_ENFORCE_PURITY","1"),("NIX_HARDENING_ENABLE","fortify stackprotector pic strictoverflow format relro bindnow"),("NIX_INDENT_MAKE","1"),("NIX_LDFLAGS","-v -L/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib -rpath /nix/store/ivr02789c2ia82lsdciv6z5498qyk98l-android-activity-static-aarch64-unknown-linux-android-0.1/lib64 -rpath /nix/store/ivr02789c2ia82lsdciv6z5498qyk98l-android-activity-static-aarch64-unknown-linux-android-0.1/lib -liconv -L/nix/store/cfr2zs7s5vj5fkfx4mqb0pw6jy1h6hva-ncurses-static-aarch64-unknown-linux-android-6.3-p20220507/lib -L/nix/store/1ihppd284lrw8gj0qd0d89s8481lmswl-libffi-static-aarch64-unknown-linux-android-3.4.2/lib -L/nix/store/57qj221bjdg5r9k7ls73s071wjdr25ap-libiconv-static-aarch64-unknown-linux-android-1.16/lib"),("NIX_LOG_FD","2"),("NIX_SSL_CERT_FILE","/no-cert-file.crt"),("NIX_STORE","/nix/store"),("NM","aarch64-unknown-linux-android-nm"),("OBJCOPY","aarch64-unknown-linux-android-objcopy"),("OBJDUMP","aarch64-unknown-linux-android-objdump"),("OLDPWD","/build"),("PATH","/nix/store/4mkmxkryhf7jwvkysf4wsbyygcv2vnv4-hscolour-1.24.4/bin:/nix/store/mq45jdqcrqwm9j4vl0asjc5sbnn9l0vg-ghc-integer-simple-8.10.7/bin:/nix/store/9yj3jdmm5g0jfbcmhxg0bqd75yjhlx9g-ncurses-6.3-p20220507/bin:/nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7/bin:/nix/store/csdl68a178aa6pazh55kg8g7ihblw01i-remove-references-to/bin:/nix/store/f1yk9kbnv0zikz64hn9hx218d04jq73l-patchelf-0.15.0/bin:/nix/store/k6fx2qn7iz5bhwncsljrsraqsmykv9jc-aarch64-unknown-linux-android-ndk-toolchain-wrapper-24.0.8215888/bin:/nix/store/h1k9sv1ivb4i6zdcjl18c9irya74qwka-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/bin:/nix/store/n95s7s6ilkjc7xwqml93acxzj6k0hsfn-coreutils-9.1/bin:/nix/store/fn9qz6bx9wjmvml2inrsm7waxbfwjnb2-aarch64-unknown-linux-android-ndk-toolchain-wrapper-24.0.8215888/bin:/nix/store/n95s7s6ilkjc7xwqml93acxzj6k0hsfn-coreutils-9.1/bin:/nix/store/k0kpf3r2k1d8p9h0gmx23msw3qrybkfk-findutils-4.9.0/bin:/nix/store/jay2imyql1mljkck4g3dnbnak6sd5ks6-diffutils-3.8/bin:/nix/store/5mgbisml783jj5mscxjsr4hlbmn25cyr-gnused-4.8/bin:/nix/store/ix6nn9lwp2w04agkfb1wzwvcnis0mmxw-gnugrep-3.7/bin:/nix/store/mdvw541sarkk8jxfrf9jyjz1gs46wyjn-gawk-5.1.1/bin:/nix/store/f4ja1s5wxs2fxvcyz6kaaqj75icjfrrm-gnutar-1.34/bin:/nix/store/nc3xqj1cq6h418qmqlha193mvmbhx4bp-gzip-1.12/bin:/nix/store/shkayl138d07l29bph4f92x3hwbqlk0j-bzip2-1.0.8-bin/bin:/nix/store/0yw0w4ds9q34c1j7ghrg21gaj415dlym-gnumake-4.3/bin:/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin:/nix/store/541ykirikh68a1djyk5cz7w21f896hj3-patch-2.7.6/bin:/nix/store/q4m8mhkb71yd7vgx5wmm5c7hzs7hsj45-xz-5.2.6-bin/bin:/nix/store/sd2s5syapsykjy5xdkx6407cx1bv9wpn-file-5.42/bin"),("PWD","/build/k985bh5bfsqxmygvisf118mjnfwdixmz-source"),("RANLIB","aarch64-unknown-linux-android-ranlib"),("READELF","aarch64-unknown-linux-android-readelf"),("SHELL","/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin/bash"),("SHLVL","0"),("SIZE","aarch64-unknown-linux-android-size"),("SOURCE_DATE_EPOCH","315532800"),("SSL_CERT_FILE","/no-cert-file.crt"),("STRINGS","aarch64-unknown-linux-android-strings"),("STRIP","aarch64-unknown-linux-android-strip"),("TEMP","/build"),("TEMPDIR","/build"),("TERM","xterm-256color"),("TMP","/build"),("TMPDIR","/build"),("TZ","UTC"),("WINDRES","aarch64-unknown-linux-android-windres"),("XDG_DATA_DIRS","/nix/store/mq45jdqcrqwm9j4vl0asjc5sbnn9l0vg-ghc-integer-simple-8.10.7/share:/nix/store/9yj3jdmm5g0jfbcmhxg0bqd75yjhlx9g-ncurses-6.3-p20220507/share:/nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7/share:/nix/store/f1yk9kbnv0zikz64hn9hx218d04jq73l-patchelf-0.15.0/share"),("_","./Setup"),("buildInputs",""),("buildPhase","runHook preBuild\n./Setup build --with-ghc=aarch64-unknown-linux-android-ghc --with-ghc-pkg=aarch64-unknown-linux-android-ghc-pkg --with-gcc=aarch64-unknown-linux-android-cc --with-ld=aarch64-unknown-linux-android-ld --with-ar=aarch64-unknown-linux-android-ar --with-hsc2hs=aarch64-unknown-linux-android-hsc2hs --with-strip=aarch64-unknown-linux-android-strip --hsc2hs-option=--cross-compile --ld-option=-fPIE --ld-option=-pie --ld-option=-L/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib --ghc-option=-fPIC --ghc-option=-fPIE\nrunHook postBuild\n"),("builder","/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin/bash"),("checkPhase","runHook preCheck\ncheckFlagsArray+=(\n \"--show-details=streaming\"\n \n)\n./Setup test $checkFlags ${checkFlagsArray:+\"${checkFlagsArray[@]}\"}\nrunHook postCheck\n"),("cmakeFlags","-DBUILD_SHARED_LIBS:BOOL=OFF -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_HOST_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_PROCESSOR=x86_64"),("compileBuildDriverPhase","runHook preCompileBuildDriver\n\nfor i in Setup.hs Setup.lhs /nix/store/4mdp8nhyfddh7bllbi7xszz7k9955n79-Setup.hs; do\n test -f $i && break\ndone\n\necho setupCompileFlags: $setupCompileFlags\nghc $setupCompileFlags --make -o Setup -odir $builddir -hidir $builddir $i\n\nrunHook postCompileBuildDriver\n"),("configureFlags","--verbose --prefix=/nix/store/ivr02789c2ia82lsdciv6z5498qyk98l-android-activity-static-aarch64-unknown-linux-android-0.1 --libdir=$prefix/lib/$compiler --libsubdir=$abi/$libname --with-gcc=aarch64-unknown-linux-android-clang --package-db=/build/tmp.10PjVlwBxC/package.conf.d --ghc-options=-j16 +RTS -A64M -RTS --disable-split-objs --disable-library-profiling --disable-profiling --disable-shared --disable-coverage --enable-static --disable-executable-dynamic --disable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --ghc-option=-split-sections --disable-library-stripping --disable-executable-stripping --configure-option=--host=aarch64-unknown-linux-android --with-ghc=aarch64-unknown-linux-android-ghc --with-ghc-pkg=aarch64-unknown-linux-android-ghc-pkg --with-gcc=aarch64-unknown-linux-android-cc --with-ld=aarch64-unknown-linux-android-ld --with-ar=aarch64-unknown-linux-android-ar --with-hsc2hs=aarch64-unknown-linux-android-hsc2hs --with-strip=aarch64-unknown-linux-android-strip --hsc2hs-option=--cross-compile --ld-option=-v --ghc-options=-fexpose-all-unfoldings --enable-static --disable-shared --disable-shared --extra-lib-dirs=/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib --extra-include-dirs=/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/toolchain/sysroot/usr/include -v3 --ld-option=-v --extra-lib-dirs=/nix/store/cfr2zs7s5vj5fkfx4mqb0pw6jy1h6hva-ncurses-static-aarch64-unknown-linux-android-6.3-p20220507/lib --extra-lib-dirs=/nix/store/1ihppd284lrw8gj0qd0d89s8481lmswl-libffi-static-aarch64-unknown-linux-android-3.4.2/lib --extra-include-dirs=/nix/store/57qj221bjdg5r9k7ls73s071wjdr25ap-libiconv-static-aarch64-unknown-linux-android-1.16/include --extra-lib-dirs=/nix/store/57qj221bjdg5r9k7ls73s071wjdr25ap-libiconv-static-aarch64-unknown-linux-android-1.16/lib --extra-include-dirs=/nix/store/g0ysbrwvjlcrzg1bm338rl4r5ylfacn6-openjdk-headless-17.0.4+8/include --extra-lib-dirs=/nix/store/g0ysbrwvjlcrzg1bm338rl4r5ylfacn6-openjdk-headless-17.0.4+8/lib"),("configurePhase","runHook preConfigure\n\nunset GHC_PACKAGE_PATH # Cabal complains if this variable is set during configure.\n\necho configureFlags: $configureFlags\n./Setup configure $configureFlags 2>&1 | /nix/store/n95s7s6ilkjc7xwqml93acxzj6k0hsfn-coreutils-9.1/bin/tee \"$NIX_BUILD_TOP/cabal-configure.log\"\nif /nix/store/ix6nn9lwp2w04agkfb1wzwvcnis0mmxw-gnugrep-3.7/bin/egrep -q -z 'Warning:.*depends on multiple versions' \"$NIX_BUILD_TOP/cabal-configure.log\"; then\n echo >&2 \"*** abort because of serious configure-time warning from Cabal\"\n exit 1\nfi\n\nexport GHC_PACKAGE_PATH=\"$packageConfDir:\"\n\nrunHook postConfigure\n"),("configurePlatforms",""),("depsBuildBuild","/nix/store/mq45jdqcrqwm9j4vl0asjc5sbnn9l0vg-ghc-integer-simple-8.10.7"),("depsBuildBuildPropagated",""),("depsBuildTarget",""),("depsBuildTargetPropagated",""),("depsHostHost",""),("depsHostHostPropagated",""),("depsTargetTarget",""),("depsTargetTargetPropagated",""),("doCheck",""),("doInstallCheck",""),("dontDisableStatic","1"),("dontStrip","1"),("haddockPhase","runHook preHaddock\n\nrunHook postHaddock\n"),("hardeningDisable","pie"),("installPhase","runHook preInstall\n\n./Setup copy \nlocal packageConfDir=\"$out/lib/aarch64-unknown-linux-android-ghc-8.10.7/package.conf.d\"\nlocal packageConfFile=\"$packageConfDir/android-activity-0.1.conf\"\nmkdir -p \"$packageConfDir\"\n./Setup register --gen-pkg-config=$packageConfFile\nif [ -d \"$packageConfFile\" ]; then\n mv \"$packageConfFile/\"* \"$packageConfDir\"\n rmdir \"$packageConfFile\"\nfi\nfor packageConfFile in \"$packageConfDir/\"*; do\n local pkgId=$(gawk -f /nix/store/907d7wf2d113vlv8dlhi1i3d683gc1rs-unpretty-cabal-conf.awk \"$packageConfFile\" \\\n | grep '^id:' | cut -d' ' -f2)\n mv \"$packageConfFile\" \"$packageConfDir/$pkgId.conf\"\ndone\n\n# delete confdir if there are no libraries\nfind $packageConfDir -maxdepth 0 -empty -delete;\n\n\n\n\n\n\n\n\nrunHook postInstall\n"),("mesonFlags","--cross-file=/nix/store/0d6bflf42rgrrxhp10visp67scqncd4g-cross-file.conf -Ddefault_library=static"),("name","android-activity-static-aarch64-unknown-linux-android-0.1"),("nativeBuildInputs","/nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7 /nix/store/csdl68a178aa6pazh55kg8g7ihblw01i-remove-references-to"),("out","/nix/store/ivr02789c2ia82lsdciv6z5498qyk98l-android-activity-static-aarch64-unknown-linux-android-0.1"),("outputs","out"),("patches",""),("pname","android-activity"),("postPatch",""),("preBuild","\necho \"!!! has splices: no\"\necho \"!!! splices at: N/A !!!\"\n"),("preConfigure","export LDFLAGS=\"-v\"\nexport NIX_CFLAGS_LINK=\"-L/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib $NIX_CFLAGS_LINK\"\nexport NIX_CFLAGS_COMPILE=\"-isystem/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/toolchain/sysroot/usr/include\"\nexport NIX_LDFLAGS=\"-v -L/nix/store/zb93bdjkg541n5zl9bs41m8a01chmvbs-aarch64-unknown-linux-android-ndk-toolchain-24.0.8215888/lib $NIX_LDFLAGS\"\n"),("preConfigurePhases","compileBuildDriverPhase updateAutotoolsGnuConfigScriptsPhase"),("preInstallPhases","haddockPhase"),("prePatch",""),("prePhases","setupCompilerEnvironmentPhase"),("propagatedBuildInputs"," /nix/store/slr3yy0qk80wgcsg1w7ijk80yw5bk5br-data-default-static-aarch64-unknown-linux-android-0.7.1.1 /nix/store/g0ysbrwvjlcrzg1bm338rl4r5ylfacn6-openjdk-headless-17.0.4+8"),("propagatedNativeBuildInputs",""),("setOutputFlags",""),("setupCompilerEnvironmentPhase","NIX_BUILD_CORES=$(( NIX_BUILD_CORES < 16 ? NIX_BUILD_CORES : 16 ))\nrunHook preSetupCompilerEnvironment\n\necho \"Build with /nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7.\"\nexport PATH=/nix/store/4mkmxkryhf7jwvkysf4wsbyygcv2vnv4-hscolour-1.24.4/bin:$PATH\n\nbuilddir=\"$(mktemp -d)\"\nsetupPackageConfDir=\"$builddir/setup-package.conf.d\"\nmkdir -p $setupPackageConfDir\npackageConfDir=\"$builddir/package.conf.d\"\nmkdir -p $packageConfDir\n\nsetupCompileFlags=\"-package-db=$setupPackageConfDir -j$NIX_BUILD_CORES +RTS -A64M -RTS -threaded -rtsopts\"\nconfigureFlags=\"--verbose --prefix=$out --libdir=\\$prefix/lib/\\$compiler --libsubdir=\\$abi/\\$libname --with-gcc=$CC --package-db=$packageConfDir --ghc-options=-j$NIX_BUILD_CORES +RTS -A64M -RTS --disable-split-objs --disable-library-profiling --disable-profiling --disable-shared --disable-coverage --enable-static --disable-executable-dynamic --disable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --ghc-option=-split-sections --disable-library-stripping --disable-executable-stripping --configure-option=--host=aarch64-unknown-linux-android --with-ghc=aarch64-unknown-linux-android-ghc --with-ghc-pkg=aarch64-unknown-linux-android-ghc-pkg --with-gcc=aarch64-unknown-linux-android-cc --with-ld=aarch64-unknown-linux-android-ld --with-ar=aarch64-unknown-linux-android-ar --with-hsc2hs=aarch64-unknown-linux-android-hsc2hs --with-strip=aarch64-unknown-linux-android-strip --hsc2hs-option=--cross-compile $configureFlags\"\nfor p in \"${pkgsBuildBuild[@]}\" \"${pkgsBuildHost[@]}\" \"${pkgsBuildTarget[@]}\"; do\n # If this dependency has a package database, then copy the contents of it,\n# unless it is one of our GHCs. These can appear in our dependencies when\n# we are doing native builds, and they have package databases in them, but\n# we do not want to copy them over.\n#\n# We don't need to, since those packages will be provided by the GHC when\n# we compile with it, and doing so can result in having multiple copies of\n# e.g. Cabal in the database with the same name and version, which is\n# ambiguous.\nif [ -d \"$p/lib/ghc-8.10.7/package.conf.d\" ] && [ \"$p\" != \"/nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7\" ] && [ \"$p\" != \"/nix/store/mq45jdqcrqwm9j4vl0asjc5sbnn9l0vg-ghc-integer-simple-8.10.7\" ]; then\n cp -f \"$p/lib/ghc-8.10.7/package.conf.d/\"*.conf $setupPackageConfDir/\n continue\nfi\n\ndone\nghc-pkg --package-db=\"$setupPackageConfDir\" recache\nfor p in \"${pkgsHostHost[@]}\" \"${pkgsHostTarget[@]}\"; do\n # If this dependency has a package database, then copy the contents of it,\n# unless it is one of our GHCs. These can appear in our dependencies when\n# we are doing native builds, and they have package databases in them, but\n# we do not want to copy them over.\n#\n# We don't need to, since those packages will be provided by the GHC when\n# we compile with it, and doing so can result in having multiple copies of\n# e.g. Cabal in the database with the same name and version, which is\n# ambiguous.\nif [ -d \"$p/lib/aarch64-unknown-linux-android-ghc-8.10.7/package.conf.d\" ] && [ \"$p\" != \"/nix/store/fyhd49hv8yh0sv9c36df6j2as9cnwp8h-aarch64-unknown-linux-android-ghc-integer-simple-8.10.7\" ] && [ \"$p\" != \"/nix/store/mq45jdqcrqwm9j4vl0asjc5sbnn9l0vg-ghc-integer-simple-8.10.7\" ]; then\n cp -f \"$p/lib/aarch64-unknown-linux-android-ghc-8.10.7/package.conf.d/\"*.conf $packageConfDir/\n continue\nfi\n\n if [ -d \"$p/include\" ]; then\n configureFlags+=\" --extra-include-dirs=$p/include\"\n fi\n if [ -d \"$p/lib\" ]; then\n configureFlags+=\" --extra-lib-dirs=$p/lib\"\n fi\nif [[ -d \"$p/Library/Frameworks\" ]]; then\n configureFlags+=\" --extra-framework-dirs=$p/Library/Frameworks\"\nfi\ndone\naarch64-unknown-linux-android-ghc-pkg --package-db=\"$packageConfDir\" recache\n\nrunHook postSetupCompilerEnvironment\n"),("shell","/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin/bash"),("src","/nix/store/l4gq8hdh6wv5xg3rn85mq13kh4w22sbs-k985bh5bfsqxmygvisf118mjnfwdixmz-source"),("stdenv","/nix/store/x8vy5j3bzx7nam8qwp115dmdwip046vh-stdenv-linux"),("strictDeps","1"),("system","x86_64-linux"),("version","0.1")] From bc76869a2231655912cbd0d81f39f23c54f28390 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Wed, 5 Oct 2022 05:40:05 -0500 Subject: [PATCH 05/52] ghc8_6 aarch32: fix pkg-config; Cleanup overlays --- default.nix | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/default.nix b/default.nix index 5e8de3523..8c1c7a2d4 100644 --- a/default.nix +++ b/default.nix @@ -136,15 +136,22 @@ let iosSupport = system == "x86_64-darwin"; adoptopenjdk-hotspot-bin-16 = super.adoptopenjdk-hotspot-bin-16.override { gtkSupport = false; }; - sqlite = if self.stdenv.hostPlatform.useAndroidPrebuilt or false then super.sqlite.overrideAttrs (old: { + + pkg-config-unwrapped = super.pkg-config-unwrapped.overrideAttrs (old: lib.optionalAttrs (self.stdenv.targetPlatform.isAarch32 or false) { + configureFlags = (old.configureFlags or []) ++ [ + "CFLAGS=-Wno-implicit-function-declaration" + ]; + }); + + sqlite = super.sqlite.overrideAttrs (old: lib.optionalAttrs (self.stdenv.hostPlatform.useAndroidPrebuilt or false) { postBuild = '' mkdir -p $debug ''; - }) else super.sqlite; - - libiconv = if self.stdenv.hostPlatform.useAndroidPrebuilt or false then super.libiconv.overrideAttrs (_: { + }); + + libiconv = super.libiconv.overrideAttrs (old: lib.optionalAttrs (self.stdenv.hostPlatform.useAndroidPrebuilt or false) { configureFlags = [ "--disable-shared" "--enable-static" ]; - }) else super.libiconv; + }); libffi = if self.stdenv.hostPlatform.useAndroidPrebuilt or false then super.libffi_3_3 else super.libffi; }) From 50d7596592ac8ad1d0215f72ea40c85df2ce64af Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Tue, 11 Oct 2022 11:13:49 -0500 Subject: [PATCH 06/52] Working GHC 8.6.5 --- default.nix | 20 ++++---- haskell-overlays/android/default.nix | 13 +++-- haskell-overlays/any-8.6.nix | 51 +++++++++++++++++--- haskell-overlays/ghcjs-8.6/default.nix | 4 +- haskell-overlays/reflex-packages/default.nix | 8 +-- nixpkgs/github.json | 4 +- 6 files changed, 71 insertions(+), 29 deletions(-) diff --git a/default.nix b/default.nix index 8c1c7a2d4..be0f81854 100644 --- a/default.nix +++ b/default.nix @@ -47,6 +47,9 @@ let iosSupport = system == "x86_64-darwin"; bootPkgs = super.haskell.packages.ghc865Binary // { happy = super.haskell.packages.ghc865Binary.happy_1_19_12; }; + useLdGold = !(self.stdenv.targetPlatform.isAarch32) && self.stdenv.hostPlatform.useAndroidPrebuilt; + enableDocs = false; + enableHaddockProgram = false; }; ghcSplices-8_10 = (super.haskell.compiler.ghc8107.override { # New option for GHC 8.10. Explicitly enable profiling builds @@ -111,7 +114,7 @@ let iosSupport = system == "x86_64-darwin"; zlib = super.zlib.override (lib.optionalAttrs (self.stdenv.hostPlatform != self.stdenv.buildPlatform) { static = true; shared = false; }); - }; + }; mobileGhcOverlay = import ./nixpkgs-overlays/mobile-ghc { inherit lib; }; @@ -137,12 +140,6 @@ let iosSupport = system == "x86_64-darwin"; gtkSupport = false; }; - pkg-config-unwrapped = super.pkg-config-unwrapped.overrideAttrs (old: lib.optionalAttrs (self.stdenv.targetPlatform.isAarch32 or false) { - configureFlags = (old.configureFlags or []) ++ [ - "CFLAGS=-Wno-implicit-function-declaration" - ]; - }); - sqlite = super.sqlite.overrideAttrs (old: lib.optionalAttrs (self.stdenv.hostPlatform.useAndroidPrebuilt or false) { postBuild = '' mkdir -p $debug @@ -186,15 +183,16 @@ let iosSupport = system == "x86_64-darwin"; # NOTE(Dylan Green): # We don't want to use "isStatic" here as we still rely on shared-objects # adding "isStatic" completely disables generating most SOs, and we still need them - # for libffi (at the very least) + # for libffi (at the very least). Currently the big issues are caused by the linker attempting (and failing) + # to link against a dynamic crtbegin.o (crtbegin.c) bionic does provide a static crtbegin, although the linker + # defaults to a dynamic version # TODO(Dylan Green): # Look into making this a proper static build up into "reflex-todomvc" android = lib.mapAttrs (_: args: nixpkgsFunc (nixpkgsArgs // args)) rec { aarch64 = { - crossSystem = lib.systems.examples.aarch64-android-prebuilt // - { - #isStatic = true; + crossSystem = lib.systems.examples.aarch64-android-prebuilt // { + #isStatic = true; sdkVer = "30"; }; }; diff --git a/haskell-overlays/android/default.nix b/haskell-overlays/android/default.nix index 9be890d72..91b96f151 100644 --- a/haskell-overlays/android/default.nix +++ b/haskell-overlays/android/default.nix @@ -10,9 +10,10 @@ let in self: super: { _dep = super._dep or {} // thunkSet ./dep; + nonhspkgs = self.callPackage ({ pkgs }: pkgs) {}; android-activity = haskellLib.overrideCabal (self.callCabal2nix "android-activity" (self._dep.android-activity + "/") { - log = nixpkgs.pkgsCross.aarch64-android-prebuilt.buildPackages.androidndkPkgs_24.libraries; + log = self.nonhspkgs.androidndkPkgs_24.libraries; }) (drv: let jdk-fixed = (nixpkgs.buildPackages.jdk17.override { headless = true; @@ -27,7 +28,7 @@ self: super: { enableSharedExecutables = true; enableSharedLibraries = true; enableStaticLibraries = false; - buildTools = (drv.buildTools or []) ++ [ nixpkgs.pkg-config ]; + buildTools = (drv.buildTools or []) ++ [ ]; configureFlags = (drv.configureFlags or []) ++ [ "--enable-shared" #"-v3" @@ -41,9 +42,15 @@ self: super: { lifted-async = haskellLib.doJailbreak super.lifted-async; safe-exceptions = haskellLib.doJailbreak super.safe-exceptions; + blaze-textual = haskellLib.enableCabalFlag super.blaze-textual "integer-simple"; cryptonite = haskellLib.disableCabalFlag super.cryptonite "integer-gmp"; - + + OneTuple = haskellLib.overrideCabal super.OneTuple (drv: { + libraryHaskellDepends = (drv.libraryHaskellDepends or []) ++ [ + self.hashable + ]; + }); hashable = enableFPic super.hashable; primitive = enableFPic super.primitive; diff --git a/haskell-overlays/any-8.6.nix b/haskell-overlays/any-8.6.nix index 4bf32413e..89323f29f 100644 --- a/haskell-overlays/any-8.6.nix +++ b/haskell-overlays/any-8.6.nix @@ -1,27 +1,64 @@ { pkgs, haskellLib, fetchFromGitHub }: with haskellLib; +let + nixpkgs = (import ../nixpkgs/thunk.nix); +in self: super: { + inherit nixpkgs; cabal-macosx = dontCheck super.cabal-macosx; + basement = self.callHackage "basement" "0.0.11" { }; + foundation = self.callHackage "foundation" "0.0.25" { }; + Cabal-syntax = super.Cabal-syntax.override { + Cabal = super.Cabal_3_2_1_0; + }; + mono-traversable = self.callHackage "mono-traversable" "1.0.15.1" { }; + colour = haskellLib.overrideCabal (self.callHackage "colour" "2.3.5" { }) (drv: { + doCheck = false; + testHaskellDepends = [ ]; + }); + c2hs = self.callHackage "c2hs" "0.28.7" {}; haddock-library-ghcjs = dontCheck super.haddock-library-ghcjs; haddock-api-ghcjs = dontCheck super.haddock-api-ghcjs; - ghc-lib-parser = self.callHackage "ghc-lib-parser" "8.10.2.20200808" {}; - ghc-lib-parser-ex = self.callHackage "ghc-lib-parser-ex" "8.10.0.16" {}; - hlint = self.callHackage "hlint" "3.1.6" {}; + ghc-lib-parser = self.callHackage "ghc-lib-parser" "8.10.7.20220219" { }; + ghc-lib-parser-ex = self.callHackage "ghc-lib-parser-ex" "8.10.0.24" { }; + hlint = self.callHackage "hlint" "3.2.8" { }; + gtk2hs-buildtools = overrideCabal (self.callHackage "gtk2hs-buildtools" "0.13.8.3" { }) (drv: { + preConfigure = '' + sed -i 's|cabal-version: 3.0|cabal-version: 2.0|g' *.cabal + ''; + }); + webkit2gtk3-javascriptcore = overrideCabal + (self.callHackageDirect + { + pkg = "webkit2gtk3-javascriptcore"; + ver = "0.14.4.4"; + sha256 = "sha256-ZiM2pMigNJZPOxV6zAAjVdCAjg31k2T3oDyZsudkMfg="; + } + { }) + (drv: { + preConfigure = '' + sed -i 's/if os(darwin) || os(freebsd)/if os(linux)/g' *.cabal + ''; + configureFlags = (drv.configureFlags or [ ]) ++ [ + #"-v3" + ]; + libraryPkgconfigDepends = [ pkgs.webkitgtk ]; + }); resolv = haskellLib.doJailbreak (super.resolv.override { base16-bytestring = super.base16-bytestring_0_1_1_7; }); - cabal2nix = super.cabal2nix.override { + cabal2nix = super.cabal2nix.override { distribution-nixpkgs = self.distribution-nixpkgs-8_6; }; distribution-nixpkgs-8_6 = super.distribution-nixpkgs_1_6_0.override { - Cabal = super.Cabal_3_2_1_0; + Cabal = super.Cabal_3_2_1_0; }; reflex-dom-core = haskellLib.dontCheck (super.reflex-dom-core); - cabal-install = (self.callHackage "cabal-install" "2.4.1.0" {}).override { + cabal-install = (self.callHackage "cabal-install" "2.4.1.0" { }).override { Cabal = self.Cabal_2_4_1_0; base16-bytestring = self.base16-bytestring_0_1_1_7; hackage-security = haskellLib.dontCheck (haskellLib.doJailbreak - ((self.callHackage "hackage-security" "0.5.3.0" {}).override { + ((self.callHackage "hackage-security" "0.5.3.0" { }).override { base16-bytestring = self.base16-bytestring_0_1_1_7; Cabal = self.Cabal_2_4_1_0; })); diff --git a/haskell-overlays/ghcjs-8.6/default.nix b/haskell-overlays/ghcjs-8.6/default.nix index 6ad9fe969..f256b3ad7 100644 --- a/haskell-overlays/ghcjs-8.6/default.nix +++ b/haskell-overlays/ghcjs-8.6/default.nix @@ -16,8 +16,8 @@ self: super: { }); ghcWithPackages = selectFrom: nixpkgs.buildPackages.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules/with-packages-wrapper.nix") { - inherit (self) ghc llvmPackages; - packages = selectFrom self; + haskellPackages = selectFrom self; + hoogleWithPackages = self.hoogleWithPackages; } // nixpkgs.lib.optionalAttrs useReflexOptimizer { ghcLibdir = "${self.ghc.bootPackages.ghcWithPackages (p: [ p.reflex ])}/lib/${self.ghc.bootPackages.ghc.name}"; }; diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index 5aa8c2bdf..3568b6b3c 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -104,11 +104,11 @@ in sed -i 's|aeson >=1.4 && <1.6|aeson -any|g' *.cabal ''; libraryHaskellDepends = [ - self.reflex self.reflex-dom-core + self.reflex + self.reflex-dom-core self.jsaddle-webkit2gtk - super.aeson - self.android-activity - ]; + self.aeson + ] ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity; })); chrome-test-utils = self.callCabal2nix "chrome-test-utils" (reflexDomRepo + "/chrome-test-utils") {}; diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 38f0439d1..cde64595c 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "e416307ad262cbd5851bdf5cca3dc5993bebeb04", - "sha256": "sha256:0cakclkyglvvjqss3b8iqa1830lygrzlbzp0zmgh8hxpvw0xwrz2" + "rev": "107ddce0d2c40cdec0b0f8394f4b5659b8183a21", + "sha256": "sha256:0imb70khl5fvlsbwkfnsj0jxgmqhyqyc6lvcp168hmyr0fs8k9bd" } From b6e4d4506bdb3b56f2f47bbc93ec1a107615b9c9 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Tue, 11 Oct 2022 12:27:32 -0500 Subject: [PATCH 07/52] Add distribution_nixpkgs again --- haskell-overlays/any-8.6.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/haskell-overlays/any-8.6.nix b/haskell-overlays/any-8.6.nix index 89323f29f..5d4167127 100644 --- a/haskell-overlays/any-8.6.nix +++ b/haskell-overlays/any-8.6.nix @@ -50,7 +50,8 @@ self: super: { cabal2nix = super.cabal2nix.override { distribution-nixpkgs = self.distribution-nixpkgs-8_6; }; - distribution-nixpkgs-8_6 = super.distribution-nixpkgs_1_6_0.override { + distribution-nixpkgs_1_6_0 = self.callHackage "distribution-nixpkgs" "1.6.0" {}; + distribution-nixpkgs-8_6 = self.distribution-nixpkgs_1_6_0.override { Cabal = super.Cabal_3_2_1_0; }; reflex-dom-core = haskellLib.dontCheck (super.reflex-dom-core); From 6089898ab36be7805d5c6f3fd39f88bbb95ca1ba Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Tue, 11 Oct 2022 12:28:07 -0500 Subject: [PATCH 08/52] Fix ghcjs8_6 ghcWithPackages --- haskell-overlays/ghcjs-8.6/default.nix | 7 ++----- project/default.nix | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/haskell-overlays/ghcjs-8.6/default.nix b/haskell-overlays/ghcjs-8.6/default.nix index f256b3ad7..136f9903d 100644 --- a/haskell-overlays/ghcjs-8.6/default.nix +++ b/haskell-overlays/ghcjs-8.6/default.nix @@ -15,11 +15,8 @@ self: super: { broken = drv.broken or false || enableLibraryProfiling; }); - ghcWithPackages = selectFrom: nixpkgs.buildPackages.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules/with-packages-wrapper.nix") { - haskellPackages = selectFrom self; - hoogleWithPackages = self.hoogleWithPackages; - } // nixpkgs.lib.optionalAttrs useReflexOptimizer { - ghcLibdir = "${self.ghc.bootPackages.ghcWithPackages (p: [ p.reflex ])}/lib/${self.ghc.bootPackages.ghc.name}"; + ghcWithPackages = super.ghcWithPackages.override { + ghcLibdir = lib.optionalString useReflexOptimizer "${self.ghc.bootPackages.ghcWithPackages (p: [ p.reflex ])}/lib/${self.ghc.bootPackages.ghc.name}"; }; ghc = if !(lib.versionAtLeast super.ghc.ghcVersion "8.2") then super.ghc else super.ghc.overrideAttrs (_: { diff --git a/project/default.nix b/project/default.nix index 0d3f24d64..b20df47bb 100644 --- a/project/default.nix +++ b/project/default.nix @@ -169,7 +169,7 @@ let shells = mapAttrs (name: pnames: workOnMulti { envFunc = _: prj.${name}.override { overrides = self: super: nixpkgs.lib.optionalAttrs withHoogle { - ghcWithPackages = self.ghcWithHoogle; + ghcWithPackages = (super.ghcWithPackages.override { withHoogle = true; }); }; }; packageNames = pnames; inherit tools shellToolOverrides; From 779b5ef1161d5a18b87ab6c8bc1b7d870ed94c8d Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Tue, 11 Oct 2022 12:29:12 -0500 Subject: [PATCH 09/52] Get release.nix to eval --- haskell-overlays/reflex-packages/default.nix | 2 +- nixpkgs/github.json | 4 ++-- tests/skeleton.nix | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index 3568b6b3c..c4909b65e 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -182,7 +182,7 @@ in commutative-semigroups = self.callCabal2nix "commutative-semigroups" self._dep.commutative-semigroups {}; witherable = self.callHackage "witherable" "0.4.2" {}; - webdriver = self.callHackage "webdriver" "0.9.0.1" {}; + webdriver = markUnbroken (self.callHackage "webdriver" "0.9.0.1" {}); # Not on Hackage yet # Version 1.2.1 not on Hackage yet diff --git a/nixpkgs/github.json b/nixpkgs/github.json index cde64595c..3b56a1f44 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "107ddce0d2c40cdec0b0f8394f4b5659b8183a21", - "sha256": "sha256:0imb70khl5fvlsbwkfnsj0jxgmqhyqyc6lvcp168hmyr0fs8k9bd" + "rev": "70eaa9ccf6b7e9b97b89aab1106154662c44b54d", + "sha256": "sha256:19f85lh4hn7x97mi50yzbw678kv5pgcpladxhlh8hwh5p8gsb4ps" } diff --git a/tests/skeleton.nix b/tests/skeleton.nix index 54b4f81b4..efde6f121 100644 --- a/tests/skeleton.nix +++ b/tests/skeleton.nix @@ -9,8 +9,7 @@ let name = "reflex-project-skeleton-${projectFile}"; phases = [ "unpackPhase" "buildPhase" "installPhase" ]; src = skeletonSrc; - CABAL_CONFIG = builtins.toFile "cabal.config" '' - ''; + CABAL_CONFIG = builtins.toFile "cabal.config" ''''; buildPhase = '' HOME=$NIX_BUILD_TOP cabal new-build all --project-file=${projectFile} ${if reflex-platform.nixpkgs.stdenv.isDarwin then "--ghc-option=-dynamic" else ""} From 101e1972331ebd3a1e649240945e50c57dbcc78b Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Fri, 14 Oct 2022 15:43:05 -0500 Subject: [PATCH 10/52] Even more fixes --- default.nix | 9 ++++++--- haskell-overlays/android/default.nix | 3 +-- haskell-overlays/ghcjs-8.6/default.nix | 9 ++++++--- nixpkgs/github.json | 4 ++-- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/default.nix b/default.nix index be0f81854..0f2983622 100644 --- a/default.nix +++ b/default.nix @@ -130,6 +130,10 @@ let iosSupport = system == "x86_64-darwin"; mobileGhcOverlay allCabalHashesOverlay (self: super: { + + #NOTE(Dylan): If you ever hit this "null" you've done something terribly wrong :^) + runtimeShellPackage = if self.stdenv.hostPlatform.isGhcjs then null else super.runtimeShellPackage; + polkit = super.polkit.override { gobject-introspection = super.gobject-introspection-unwrapped; }; @@ -150,7 +154,7 @@ let iosSupport = system == "x86_64-darwin"; configureFlags = [ "--disable-shared" "--enable-static" ]; }); - libffi = if self.stdenv.hostPlatform.useAndroidPrebuilt or false then super.libffi_3_3 else super.libffi; + libffi = if (self.stdenv.hostPlatform.useAndroidPrebuilt or false) then super.libffi_3_3 else super.libffi; }) (import ./nixpkgs-overlays/ghc.nix { inherit lib; }) ] ++ nixpkgsOverlays; @@ -291,8 +295,7 @@ let iosSupport = system == "x86_64-darwin"; ghcjs = if __useNewerCompiler then ghcjs8_10 else ghcjs8_6; ghcjs8_6 = (makeRecursivelyOverridable (nixpkgsCross.ghcjs.haskell.packages.ghcjs86.override (old: { ghc = old.ghc.override { - bootPkgs = with nixpkgsCross.ghcjs.buildPackages.haskell.packages; - ghc865 // { happy = ghc865.callHackage "happy" "1.19.9" {}; }; + bootPkgs = old.ghc.bootPkgs // { happy = old.ghc.bootPkgs.happy_1_19_9; }; cabal-install = import ./haskell-overlays/ghcjs-8.6/cabal-install.nix { inherit nixpkgs; }; ghcjsSrc = import ./haskell-overlays/ghcjs-8.6/src.nix { inherit (nixpkgs.stdenvNoCC) mkDerivation; diff --git a/haskell-overlays/android/default.nix b/haskell-overlays/android/default.nix index 91b96f151..e99b37901 100644 --- a/haskell-overlays/android/default.nix +++ b/haskell-overlays/android/default.nix @@ -10,10 +10,9 @@ let in self: super: { _dep = super._dep or {} // thunkSet ./dep; - nonhspkgs = self.callPackage ({ pkgs }: pkgs) {}; android-activity = haskellLib.overrideCabal (self.callCabal2nix "android-activity" (self._dep.android-activity + "/") { - log = self.nonhspkgs.androidndkPkgs_24.libraries; + log = nixpkgs.androidndkPkgs_24.libraries; }) (drv: let jdk-fixed = (nixpkgs.buildPackages.jdk17.override { headless = true; diff --git a/haskell-overlays/ghcjs-8.6/default.nix b/haskell-overlays/ghcjs-8.6/default.nix index 136f9903d..3b83d26d4 100644 --- a/haskell-overlays/ghcjs-8.6/default.nix +++ b/haskell-overlays/ghcjs-8.6/default.nix @@ -6,7 +6,7 @@ with haskellLib; -self: super: { +self: super: rec { # Profiling failures seee https://github.com/ghcjs/ghcjs/issues/759 optparse-applicative = haskellLib.overrideCabal super.optparse-applicative (drv: { broken = drv.broken or false || enableLibraryProfiling; @@ -15,8 +15,11 @@ self: super: { broken = drv.broken or false || enableLibraryProfiling; }); - ghcWithPackages = super.ghcWithPackages.override { - ghcLibdir = lib.optionalString useReflexOptimizer "${self.ghc.bootPackages.ghcWithPackages (p: [ p.reflex ])}/lib/${self.ghc.bootPackages.ghc.name}"; + ghcWithPackages = nixpkgs.buildPackages.callPackage (nixpkgs.path + "/pkgs/development/haskell-modules/with-packages-wrapper.nix") { + haskellPackages = self; + hoogleWithPackages = super.hoogleWithPackages; + } // lib.optionalAttrs (useReflexOptimizer) { + ghcLibdir = lib.optionalString useReflexOptimizer "${self.ghc.bootPkgs.ghcWithPackages (p: [ p.reflex ])}/lib/${self.ghc.bootPkgs.ghc.name}"; }; ghc = if !(lib.versionAtLeast super.ghc.ghcVersion "8.2") then super.ghc else super.ghc.overrideAttrs (_: { diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 3b56a1f44..bd5a50d45 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "70eaa9ccf6b7e9b97b89aab1106154662c44b54d", - "sha256": "sha256:19f85lh4hn7x97mi50yzbw678kv5pgcpladxhlh8hwh5p8gsb4ps" + "rev": "43c79e446700498eba4d9373d1aedb6494517e7f", + "sha256": "sha256:01z9a8ddvllcisayd7iydr7y4nx4macvhc1c76v1pq0xzh2rni5i" } From dcfc0a30a7e2ddf49a59c99ac6bd6a68c439fec2 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Mon, 17 Oct 2022 11:37:09 -0500 Subject: [PATCH 11/52] ghcjs8_10: Fix builds --- default.nix | 2 +- haskell-overlays/default.nix | 11 +++++++++++ haskell-overlays/reflex-packages/default.nix | 2 +- nixpkgs/github.json | 4 ++-- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/default.nix b/default.nix index 0f2983622..bf0972063 100644 --- a/default.nix +++ b/default.nix @@ -295,7 +295,7 @@ let iosSupport = system == "x86_64-darwin"; ghcjs = if __useNewerCompiler then ghcjs8_10 else ghcjs8_6; ghcjs8_6 = (makeRecursivelyOverridable (nixpkgsCross.ghcjs.haskell.packages.ghcjs86.override (old: { ghc = old.ghc.override { - bootPkgs = old.ghc.bootPkgs // { happy = old.ghc.bootPkgs.happy_1_19_9; }; + bootPkgs = old.ghc.bootPkgs // { happy = old.ghc.bootPkgs.happy_1_19_12; }; cabal-install = import ./haskell-overlays/ghcjs-8.6/cabal-install.nix { inherit nixpkgs; }; ghcjsSrc = import ./haskell-overlays/ghcjs-8.6/src.nix { inherit (nixpkgs.stdenvNoCC) mkDerivation; diff --git a/haskell-overlays/default.nix b/haskell-overlays/default.nix index e78be5be8..7c159f473 100644 --- a/haskell-overlays/default.nix +++ b/haskell-overlays/default.nix @@ -140,6 +140,17 @@ rec { (optionalExtension useTextJSString textJSString-8_10) (optionalExtension useTextJSString ghcjs-textJSString-8_10) (optionalExtension useFastWeak ghcjs-fast-weak_8_10) + (self: super: rec { + mkDerivation = drv: super.mkDerivation (drv // { + setupHaskellDepends = (drv.setupHaskellDepends or []) ++ [ + nixpkgs.buildPackages.stdenv.cc + ]; + # This is ugly + preConfigure = (drv.preConfigure or "") + '' + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${nixpkgs.buildPackages.gmp}/lib:${nixpkgs.buildPackages.libffi}/lib + ''; + }); + }) ] self super; diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index c4909b65e..7ac355a00 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -100,7 +100,7 @@ in reflexOptimizerFlag useTemplateHaskellFlag ])) { }) (drv: { - preConfigure = '' + preConfigure = (drv.preConfigure or "") + '' sed -i 's|aeson >=1.4 && <1.6|aeson -any|g' *.cabal ''; libraryHaskellDepends = [ diff --git a/nixpkgs/github.json b/nixpkgs/github.json index bd5a50d45..6c2076f6e 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "43c79e446700498eba4d9373d1aedb6494517e7f", - "sha256": "sha256:01z9a8ddvllcisayd7iydr7y4nx4macvhc1c76v1pq0xzh2rni5i" + "rev": "d40a59cca18f6522d72d36499e78c3cacd850790", + "sha256": "sha256:0zbhf3yglki8qgbj1zk09mbysl37n2rx93rdw20dwc3klnf8f976" } From 016ef0878b909147f340c42148e2387c97add50e Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Tue, 18 Oct 2022 03:43:17 -0500 Subject: [PATCH 12/52] release.nix: make it work ------ HOOGLE IS NOT ENABLED ON GHC 8.6.5 ATM ------ --- default.nix | 2 +- haskell-overlays/any-8.6.nix | 21 +++++++------------- haskell-overlays/ghcjs-8.6/cabal-install.nix | 1 + haskell-overlays/ghcjs-8.6/default.nix | 7 +++++++ haskell-overlays/reflex-packages/default.nix | 2 +- haskell-overlays/text-jsstring/default.nix | 2 +- nixpkgs/github.json | 4 ++-- project/default.nix | 2 +- 8 files changed, 21 insertions(+), 20 deletions(-) diff --git a/default.nix b/default.nix index bf0972063..005bfd736 100644 --- a/default.nix +++ b/default.nix @@ -586,7 +586,7 @@ in let this = rec { reflexEnv = platform: let haskellPackages = builtins.getAttr platform this; ghcWithStuff = if platform == "ghc" - then haskellPackages.ghcWithHoogle + then haskellPackages.ghcWithPackages else haskellPackages.ghcWithPackages; in ghcWithStuff (p: import ./packages.nix { haskellPackages = p; diff --git a/haskell-overlays/any-8.6.nix b/haskell-overlays/any-8.6.nix index 5d4167127..226848bd4 100644 --- a/haskell-overlays/any-8.6.nix +++ b/haskell-overlays/any-8.6.nix @@ -6,22 +6,14 @@ in self: super: { inherit nixpkgs; cabal-macosx = dontCheck super.cabal-macosx; - basement = self.callHackage "basement" "0.0.11" { }; - foundation = self.callHackage "foundation" "0.0.25" { }; Cabal-syntax = super.Cabal-syntax.override { Cabal = super.Cabal_3_2_1_0; }; - mono-traversable = self.callHackage "mono-traversable" "1.0.15.1" { }; colour = haskellLib.overrideCabal (self.callHackage "colour" "2.3.5" { }) (drv: { doCheck = false; testHaskellDepends = [ ]; }); - c2hs = self.callHackage "c2hs" "0.28.7" {}; - haddock-library-ghcjs = dontCheck super.haddock-library-ghcjs; - haddock-api-ghcjs = dontCheck super.haddock-api-ghcjs; - ghc-lib-parser = self.callHackage "ghc-lib-parser" "8.10.7.20220219" { }; - ghc-lib-parser-ex = self.callHackage "ghc-lib-parser-ex" "8.10.0.24" { }; - hlint = self.callHackage "hlint" "3.2.8" { }; + c2hs = self.callHackage "c2hs" "0.28.7" { }; gtk2hs-buildtools = overrideCabal (self.callHackage "gtk2hs-buildtools" "0.13.8.3" { }) (drv: { preConfigure = '' sed -i 's|cabal-version: 3.0|cabal-version: 2.0|g' *.cabal @@ -35,7 +27,7 @@ self: super: { sha256 = "sha256-ZiM2pMigNJZPOxV6zAAjVdCAjg31k2T3oDyZsudkMfg="; } { }) - (drv: { + (drv: { preConfigure = '' sed -i 's/if os(darwin) || os(freebsd)/if os(linux)/g' *.cabal ''; @@ -48,20 +40,21 @@ self: super: { base16-bytestring = super.base16-bytestring_0_1_1_7; }); cabal2nix = super.cabal2nix.override { - distribution-nixpkgs = self.distribution-nixpkgs-8_6; + #distribution-nixpkgs = self.distribution-nixpkgs-8_6; }; - distribution-nixpkgs_1_6_0 = self.callHackage "distribution-nixpkgs" "1.6.0" {}; + distribution-nixpkgs_1_6_0 = self.callHackage "distribution-nixpkgs" "1.6.0" { }; distribution-nixpkgs-8_6 = self.distribution-nixpkgs_1_6_0.override { Cabal = super.Cabal_3_2_1_0; }; reflex-dom-core = haskellLib.dontCheck (super.reflex-dom-core); - cabal-install = (self.callHackage "cabal-install" "2.4.1.0" { }).override { + cabal-install = haskellLib.doJailbreak ((self.callHackage "cabal-install" "2.4.1.0" { }).override { Cabal = self.Cabal_2_4_1_0; base16-bytestring = self.base16-bytestring_0_1_1_7; + #random = self.callHackage "random" "1.1" {}; hackage-security = haskellLib.dontCheck (haskellLib.doJailbreak ((self.callHackage "hackage-security" "0.5.3.0" { }).override { base16-bytestring = self.base16-bytestring_0_1_1_7; Cabal = self.Cabal_2_4_1_0; })); - }; + }); } diff --git a/haskell-overlays/ghcjs-8.6/cabal-install.nix b/haskell-overlays/ghcjs-8.6/cabal-install.nix index 7bc7869dd..4e21d8467 100644 --- a/haskell-overlays/ghcjs-8.6/cabal-install.nix +++ b/haskell-overlays/ghcjs-8.6/cabal-install.nix @@ -4,6 +4,7 @@ (self: super: { Cabal = self.Cabal_2_4_1_0; base16-bytestring = self.base16-bytestring_0_1_1_7; + random = self.callHackage "random" "1.1" {}; hackage-security = nixpkgs.haskell.lib.dontCheck (nixpkgs.haskell.lib.doJailbreak (self.callHackage "hackage-security" "0.5.3.0" {})); diff --git a/haskell-overlays/ghcjs-8.6/default.nix b/haskell-overlays/ghcjs-8.6/default.nix index 3b83d26d4..5bb190b3d 100644 --- a/haskell-overlays/ghcjs-8.6/default.nix +++ b/haskell-overlays/ghcjs-8.6/default.nix @@ -38,6 +38,8 @@ self: super: rec { patches = (drv.patches or []) ++ [ ./ghcjs-network.patch ]; }); + attoparsec = self.callHackage "attoparsec" "0.13.2.2" {}; + # These packages require doctest comonad = dontCheck super.comonad; http-types = dontCheck super.http-types; @@ -47,6 +49,11 @@ self: super: rec { semigroupoids = disableCabalFlag super.semigroupoids "doctests"; these = dontCheck super.these; email-validate = dontCheck super.email-validate; + OneTuple = overrideCabal super.OneTuple (drv: { + libraryHaskellDepends = (drv.libraryHaskellDepends or []) ++ [ + self.hashable + ]; + }); # These tests are not expected to support ghcjs QuickCheck = dontCheck super.QuickCheck; diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index 7ac355a00..1fc013723 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -117,7 +117,7 @@ in ## Terminal / Conventional OS ## - reflex-vty = self.callCabal2nix "reflex-vty" self._dep.reflex-vty {}; + reflex-vty = haskellLib.doJailbreak (self.callCabal2nix "reflex-vty" self._dep.reflex-vty {}); reflex-process = self.callCabal2nix "reflex-process" self._dep.reflex-process {}; reflex-fsnotify = self.callHackage "reflex-fsnotify" "0.2.1.2" {}; diff --git a/haskell-overlays/text-jsstring/default.nix b/haskell-overlays/text-jsstring/default.nix index b17cddc69..747b40829 100644 --- a/haskell-overlays/text-jsstring/default.nix +++ b/haskell-overlays/text-jsstring/default.nix @@ -15,7 +15,7 @@ self: super: { }); aeson = dontCheck (self.callCabal2nix "aeson" self._dep.aeson {}); - # attoparsec = dontCheck (self.callCabal2nix "attoparsec" self._dep.attoparsec {}); + attoparsec = dontCheck (self.callCabal2nix "attoparsec" self._dep.attoparsec {}); hashable = overrideCabal (self.callCabal2nix "hashable" self._dep.hashable {}) (drv: { revision = null; editedCabalFile = null; diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 6c2076f6e..e152d9a75 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "d40a59cca18f6522d72d36499e78c3cacd850790", - "sha256": "sha256:0zbhf3yglki8qgbj1zk09mbysl37n2rx93rdw20dwc3klnf8f976" + "rev": "05f0fcf5e04693f083a1af1c9939bfbada797d46", + "sha256": "sha256:19niipv6p4q8xw6zh90jw92dv7z9jf01qwyy5x5h6f55gmx0121q" } diff --git a/project/default.nix b/project/default.nix index b20df47bb..26568a801 100644 --- a/project/default.nix +++ b/project/default.nix @@ -113,7 +113,7 @@ in # # tools = ghc: with ghc; [ hpack pkgs.chromium ]; -, withHoogle ? true +, withHoogle ? false # Set to false to disable building the hoogle database when entering # the nix-shell. From 0a9386c296a975c6422d793f78b031661d54e99a Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Wed, 19 Oct 2022 13:32:07 -0500 Subject: [PATCH 13/52] Cleanup --- haskell-overlays/any-8.6.nix | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/haskell-overlays/any-8.6.nix b/haskell-overlays/any-8.6.nix index 226848bd4..c8cf92824 100644 --- a/haskell-overlays/any-8.6.nix +++ b/haskell-overlays/any-8.6.nix @@ -28,20 +28,12 @@ self: super: { } { }) (drv: { - preConfigure = '' - sed -i 's/if os(darwin) || os(freebsd)/if os(linux)/g' *.cabal - ''; - configureFlags = (drv.configureFlags or [ ]) ++ [ - #"-v3" - ]; libraryPkgconfigDepends = [ pkgs.webkitgtk ]; }); resolv = haskellLib.doJailbreak (super.resolv.override { base16-bytestring = super.base16-bytestring_0_1_1_7; }); - cabal2nix = super.cabal2nix.override { - #distribution-nixpkgs = self.distribution-nixpkgs-8_6; - }; + cabal2nix = super.cabal2nix.override { }; distribution-nixpkgs_1_6_0 = self.callHackage "distribution-nixpkgs" "1.6.0" { }; distribution-nixpkgs-8_6 = self.distribution-nixpkgs_1_6_0.override { Cabal = super.Cabal_3_2_1_0; From 813214a13f9911ff300db6d60dee64ca0a4b586f Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Thu, 7 Sep 2023 12:28:06 -0700 Subject: [PATCH 14/52] ghc810: add support for aarch64 --- nixpkgs-overlays/ghc.nix | 17 +++++++++++++++++ nixpkgs/github.json | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/nixpkgs-overlays/ghc.nix b/nixpkgs-overlays/ghc.nix index 6816255ab..d09ab17d6 100644 --- a/nixpkgs-overlays/ghc.nix +++ b/nixpkgs-overlays/ghc.nix @@ -1,7 +1,24 @@ { lib }: self: super: { + cabal2nix-unwrapped = super.haskell.packages.ghc8107.cabal2nix; # Apply custom patches to Haskell compilers haskell = super.haskell // { + compiler = super.haskell.compiler // { + ghc8107 = super.haskell.compiler.ghc8107.overrideAttrs (drv: { + patches = (drv.patches or []) ++ (super.lib.optionals (super.stdenv.targetPlatform.isDarwin && super.stdenv.targetPlatform.isAarch64) [ + (super.fetchurl { + url = "https://raw.githubusercontent.com/reflex-frp/reflex-platform/mars/modules/patches/aarch64-darwin/fix_dead_strip.patch"; + sha256 = "sha256-1VcftxpaMmLzMnB8X4M6Xg9o+OmgpaNOeF7Yrn1x0EI="; + }) + ]); + }); + }; + packages = super.haskell.packages // { + ghc8107 = super.haskell.packages.ghc8107.override { + buildHaskellPackages = self.buildPackages.haskell.packages.ghc8107; + ghc = self.buildPackages.haskell.compiler.ghc8107; + }; + }; }; } diff --git a/nixpkgs/github.json b/nixpkgs/github.json index e152d9a75..1b764795d 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "05f0fcf5e04693f083a1af1c9939bfbada797d46", - "sha256": "sha256:19niipv6p4q8xw6zh90jw92dv7z9jf01qwyy5x5h6f55gmx0121q" + "rev": "a6937a0fea44b40dca6daa7d77bf1f4978a3b0d1", + "sha256": "01gncnnvfsl6p7jjl4v0djh0zy2shs6ldjza0gqy5nv9f1c0fyd5" } From 7da6287c6bf3762311021459ac7135b01f3d7cb1 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Thu, 7 Sep 2023 22:08:20 -0400 Subject: [PATCH 15/52] nixpkgs: Update clang for aarch64 --- nixpkgs/github.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 1b764795d..b260f60b5 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "a6937a0fea44b40dca6daa7d77bf1f4978a3b0d1", - "sha256": "01gncnnvfsl6p7jjl4v0djh0zy2shs6ldjza0gqy5nv9f1c0fyd5" + "rev": "fd5bed52888ef4460e4617eb52c4e24d3bb1d1e2", + "sha256": "17g9rb1m7vdadc9y3w1lvzmnvsbibfbfk6yyx7549fl94rsgaxw9" } From a84c9a01d47a894d8aaf9b117309edea95a2175b Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 09:30:11 -0400 Subject: [PATCH 16/52] ghcjs86: remove obsolete attoparsec override --- haskell-overlays/ghcjs-8.6/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/haskell-overlays/ghcjs-8.6/default.nix b/haskell-overlays/ghcjs-8.6/default.nix index a0005944f..a6f27197e 100644 --- a/haskell-overlays/ghcjs-8.6/default.nix +++ b/haskell-overlays/ghcjs-8.6/default.nix @@ -38,8 +38,6 @@ self: super: rec { patches = (drv.patches or []) ++ [ ./ghcjs-network.patch ]; }); - attoparsec = self.callHackage "attoparsec" "0.13.2.2" {}; - # These packages require doctest comonad = dontCheck super.comonad; http-types = dontCheck super.http-types; From e13acdfc48441f26301be51fb48c3765b337ae56 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 09:49:42 -0400 Subject: [PATCH 17/52] Bump nixpkgs for iOS support --- nixpkgs/github.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixpkgs/github.json b/nixpkgs/github.json index b260f60b5..925c5ab5d 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "fd5bed52888ef4460e4617eb52c4e24d3bb1d1e2", - "sha256": "17g9rb1m7vdadc9y3w1lvzmnvsbibfbfk6yyx7549fl94rsgaxw9" + "rev": "f38a3be7e4ccdbbb1c140a5afc56acfe2fb92256", + "sha256": "10lf11l6x8rpfh3lcscyb9dcs0l86fsmpm5y227aivaxqx32k5vi" } From 9f1070b96087d33db472abc1f87ab18d71d2c195 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 07:09:03 -0700 Subject: [PATCH 18/52] aarch64: make webkit2gtk conditional --- haskell-overlays/reflex-packages/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index aa8d89abc..013711b15 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -106,9 +106,10 @@ in libraryHaskellDepends = [ self.reflex self.reflex-dom-core - self.jsaddle-webkit2gtk self.aeson - ] ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity; + ] ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity + # webkit2gtk does not support darwin or aarch64 + ++ lib.optional (!(nixpkgs.stdenv.hostPlatform.isDarwin || nixpkgs.stdenv.hostPlatform.isAarch64)) self.jsaddle-webkit2gtk; })); chrome-test-utils = self.callCabal2nix "chrome-test-utils" (reflexDomRepo + "/chrome-test-utils") {}; From 8f2f6040418a295525b9bfba2f6d44d2352c3684 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Fri, 8 Sep 2023 09:18:26 -0500 Subject: [PATCH 19/52] Webkit changes --- default.nix | 9 +++++---- haskell-overlays/reflex-packages/default.nix | 12 ++++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/default.nix b/default.nix index 8ca59c027..cc8bd861d 100644 --- a/default.nix +++ b/default.nix @@ -58,9 +58,10 @@ let iosSupport = system == "x86_64-darwin"; enableProfiledLibs = true; #enableShared = self.stdenv.hostPlatform == self.stdenv.targetPlatform; #enableShared = false; - bootPkgs = super.haskell.packages.ghc865Binary // { - happy = super.haskell.packages.ghc865Binary.happy_1_19_12; - }; + bootPkgs = if (super.stdenv.hostPlatform.isAarch64 && super.stdenv.hostPlatform.isLinux) then (super.haskell.packages.ghc8107Binary // { + happy = super.haskell.packages.ghc8107Binary.happy_1_19_12; + }) else + (super.haskell.packages.ghc865Binary // { happy = super.haskell.packages.ghc865Binary.happy_1_19_12; }); }).overrideAttrs (drv: { src = nixpkgs.hackGet ./haskell-overlays/splices-load-save/dep/ghc-8.10; # When building from the ghc git repo, ./boot must be run before configuring, whereas @@ -166,7 +167,7 @@ let iosSupport = system == "x86_64-darwin"; mkdir -p $debug ''; }); - + libiconv = super.libiconv.overrideAttrs (old: lib.optionalAttrs (self.stdenv.hostPlatform.useAndroidPrebuilt or false) { configureFlags = [ "--disable-shared" "--enable-static" ]; }); diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index 013711b15..80a3628ab 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -17,6 +17,7 @@ let reflexOptimizerFlag = lib.optional (useReflexOptimizer && (self.ghc.cross or null) == null) "-fuse-reflex-optimizer"; useTemplateHaskellFlag = lib.optional (!__useTemplateHaskell) "-f-use-template-haskell"; + useWebkit2GtkFlag = lib.optional (self.ghc.stdenv.hostPlatform.isAarch64) "-f-webkit2gtk"; inherit (nixpkgs) stdenv; # Older chromium for reflex-dom-core test suite @@ -99,17 +100,20 @@ in reflex-dom = haskellLib.doJailbreak (haskellLib.overrideCabal (self.callCabal2nixWithOptions "reflex-dom" (reflexDomRepo + "/reflex-dom") (lib.concatStringsSep " " (lib.concatLists [ reflexOptimizerFlag useTemplateHaskellFlag + useWebkit2GtkFlag ])) { }) (drv: { preConfigure = (drv.preConfigure or "") + '' sed -i 's|aeson >=1.4 && <1.6|aeson -any|g' *.cabal ''; - libraryHaskellDepends = [ - self.reflex - self.reflex-dom-core + + libraryHaskellDepends = [ + self.reflex + self.reflex-dom-core self.aeson ] ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity # webkit2gtk does not support darwin or aarch64 - ++ lib.optional (!(nixpkgs.stdenv.hostPlatform.isDarwin || nixpkgs.stdenv.hostPlatform.isAarch64)) self.jsaddle-webkit2gtk; + ++ lib.optional (!(nixpkgs.stdenv.hostPlatform.isDarwin || nixpkgs.stdenv.hostPlatform.isAarch64)) self.jsaddle-webkit2gtk + ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity; })); chrome-test-utils = self.callCabal2nix "chrome-test-utils" (reflexDomRepo + "/chrome-test-utils") {}; From e1dd5f219e3f8da7075425f8283f6930db8658bb Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 10:26:13 -0400 Subject: [PATCH 20/52] haskell-overlays: reflex-dom -> 0.6.3.1 --- ChangeLog.md | 5 +++++ haskell-overlays/reflex-packages/dep/reflex-dom/github.json | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 8acc16db2..35973ca05 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -2,6 +2,11 @@ This project's release branch is `master`. This log is written from the perspective of the release branch: when changes hit `master`, they are considered released. +## v1.2.0.0 + +* Haskell Libraries Updates + * reflex-dom 0.6.3.1 + ## v1.1.2.0 - 2023-09-07 * Haskell Libraries Updated diff --git a/haskell-overlays/reflex-packages/dep/reflex-dom/github.json b/haskell-overlays/reflex-packages/dep/reflex-dom/github.json index 355b6027c..277057b0d 100644 --- a/haskell-overlays/reflex-packages/dep/reflex-dom/github.json +++ b/haskell-overlays/reflex-packages/dep/reflex-dom/github.json @@ -1,8 +1,8 @@ { "owner": "reflex-frp", "repo": "reflex-dom", - "branch": "release/reflex-dom/0.6.3.0", + "branch": "release/reflex-dom/0.6.3.1", "private": false, - "rev": "39195afb34cf7d4f02df9d891ccadad9eebceb6c", - "sha256": "06yp8h94p9fqr4gkhj46vs56rvr446cdwmixi9pijyqzlnvp132j" + "rev": "5d1dbde4471d7f9be60977b972ab0219026ff5dc", + "sha256": "1kccc4cx6bxyr77m4dzqwrqb69ypwg3mbfiw728nykjrfkh8w72b" } From 7624b5e24bf4878fddf55200db470a07ef56eff5 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 11:00:50 -0400 Subject: [PATCH 21/52] Bump nixpkgs --- nixpkgs/github.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 925c5ab5d..1574441cf 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "f38a3be7e4ccdbbb1c140a5afc56acfe2fb92256", - "sha256": "10lf11l6x8rpfh3lcscyb9dcs0l86fsmpm5y227aivaxqx32k5vi" + "rev": "04139dd20f0d3402065a39e25556894e0df92ada", + "sha256": "1k1icd9jnvssh37iip2r9ssdv32xi8prhhdpzxvyqvc1vvbjym5h" } From b0460491bb0aa49c5f61ca68ba1fa313fdada37f Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 11:27:31 -0400 Subject: [PATCH 22/52] haskell-overlays: reflex-dom: disable webkit2gtk --- haskell-overlays/reflex-packages/default.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index 80a3628ab..0a0908075 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -17,7 +17,6 @@ let reflexOptimizerFlag = lib.optional (useReflexOptimizer && (self.ghc.cross or null) == null) "-fuse-reflex-optimizer"; useTemplateHaskellFlag = lib.optional (!__useTemplateHaskell) "-f-use-template-haskell"; - useWebkit2GtkFlag = lib.optional (self.ghc.stdenv.hostPlatform.isAarch64) "-f-webkit2gtk"; inherit (nixpkgs) stdenv; # Older chromium for reflex-dom-core test suite @@ -100,7 +99,7 @@ in reflex-dom = haskellLib.doJailbreak (haskellLib.overrideCabal (self.callCabal2nixWithOptions "reflex-dom" (reflexDomRepo + "/reflex-dom") (lib.concatStringsSep " " (lib.concatLists [ reflexOptimizerFlag useTemplateHaskellFlag - useWebkit2GtkFlag + [ "-f-webkit2gtk" ] ])) { }) (drv: { preConfigure = (drv.preConfigure or "") + '' sed -i 's|aeson >=1.4 && <1.6|aeson -any|g' *.cabal @@ -111,8 +110,6 @@ in self.reflex-dom-core self.aeson ] ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity - # webkit2gtk does not support darwin or aarch64 - ++ lib.optional (!(nixpkgs.stdenv.hostPlatform.isDarwin || nixpkgs.stdenv.hostPlatform.isAarch64)) self.jsaddle-webkit2gtk ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity; })); From cfdecef1d8b2f12042d65e12d97ffe4cdf8de3b8 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 11:33:35 -0400 Subject: [PATCH 23/52] Disable webkit2gtk by default Can be re-enabled by setting a flag in default.nix --- default.nix | 4 +++- haskell-overlays/default.nix | 2 ++ haskell-overlays/reflex-packages/default.nix | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index cc8bd861d..9cebe4f19 100644 --- a/default.nix +++ b/default.nix @@ -7,6 +7,7 @@ , useFastWeak ? true , useReflexOptimizer ? false , useTextJSString ? true # Use an implementation of "Data.Text" that uses the more performant "Data.JSString" from ghcjs-base under the hood. +, useWebkit2Gtk ? false # Enable webkit2gtk to build reflex-dom desktop apps , __useTemplateHaskell ? true # Deprecated, just here until we remove feature from reflex and stop CIing it , __useNewerCompiler ? true , iosSdkVersion ? "16.1" @@ -100,7 +101,8 @@ let iosSupport = system == "x86_64-darwin"; useFastWeak useReflexOptimizer enableLibraryProfiling enableTraceReflexEvents useTextJSString enableExposeAllUnfoldings __useTemplateHaskell haskellOverlaysPre - haskellOverlaysPost; + haskellOverlaysPost + useWebkit2Gtk; inherit ghcSavedSplices-8_6 ghcSavedSplices-8_10; }; }; diff --git a/haskell-overlays/default.nix b/haskell-overlays/default.nix index 8b5ed873a..223c238ec 100644 --- a/haskell-overlays/default.nix +++ b/haskell-overlays/default.nix @@ -6,6 +6,7 @@ , enableLibraryProfiling , enableTraceReflexEvents , useTextJSString +, useWebkit2Gtk , enableExposeAllUnfoldings , __useTemplateHaskell , ghcSavedSplices-8_6 @@ -162,6 +163,7 @@ rec { inherit haskellLib lib nixpkgs thunkSet fetchFromGitHub fetchFromBitbucket hackGet useFastWeak useReflexOptimizer enableTraceReflexEvents enableLibraryProfiling __useTemplateHaskell + useWebkit2Gtk ; }; exposeAllUnfoldings = import ./expose-all-unfoldings.nix { }; diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index 0a0908075..d6d4982f1 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -2,6 +2,7 @@ , lib, nixpkgs , thunkSet, fetchFromGitHub, fetchFromBitbucket, hackGet , useFastWeak, useReflexOptimizer, enableTraceReflexEvents, enableLibraryProfiling, __useTemplateHaskell +, useWebkit2Gtk }: with haskellLib; @@ -17,6 +18,9 @@ let reflexOptimizerFlag = lib.optional (useReflexOptimizer && (self.ghc.cross or null) == null) "-fuse-reflex-optimizer"; useTemplateHaskellFlag = lib.optional (!__useTemplateHaskell) "-f-use-template-haskell"; + useWebkit2GtkFlag = if useWebkit2Gtk + then ["-fwebkit2gtk"] + else ["-f-webkit2gtk"]; inherit (nixpkgs) stdenv; # Older chromium for reflex-dom-core test suite @@ -99,7 +103,7 @@ in reflex-dom = haskellLib.doJailbreak (haskellLib.overrideCabal (self.callCabal2nixWithOptions "reflex-dom" (reflexDomRepo + "/reflex-dom") (lib.concatStringsSep " " (lib.concatLists [ reflexOptimizerFlag useTemplateHaskellFlag - [ "-f-webkit2gtk" ] + useWebkit2GtkFlag ])) { }) (drv: { preConfigure = (drv.preConfigure or "") + '' sed -i 's|aeson >=1.4 && <1.6|aeson -any|g' *.cabal From e2212c46ab54e36a5cc8dbeeb8ab67137b56e4b0 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 08:47:32 -0700 Subject: [PATCH 24/52] haskell-overlays: darwin: add jsaddle-wkwebview to reflex-dom deps --- haskell-overlays/reflex-packages/default.nix | 2 +- haskell-overlays/untriaged.nix | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index 80a3628ab..84e16939b 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -113,7 +113,7 @@ in ] ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity # webkit2gtk does not support darwin or aarch64 ++ lib.optional (!(nixpkgs.stdenv.hostPlatform.isDarwin || nixpkgs.stdenv.hostPlatform.isAarch64)) self.jsaddle-webkit2gtk - ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity; + ++ lib.optional (nixpkgs.stdenv.hostPlatform.isDarwin or false) self.jsaddle-wkwebview; })); chrome-test-utils = self.callCabal2nix "chrome-test-utils" (reflexDomRepo + "/chrome-test-utils") {}; diff --git a/haskell-overlays/untriaged.nix b/haskell-overlays/untriaged.nix index a6c10290a..f8118198b 100644 --- a/haskell-overlays/untriaged.nix +++ b/haskell-overlays/untriaged.nix @@ -86,8 +86,10 @@ self: super: { http2 = self.callHackage "http2" "3.0.3" {}; HsYAML-aeson = self.callHackage "HsYAML-aeson" "0.2.0.1" {}; fsnotify = self.callHackage "fsnotify" "0.4.1.0" {}; - unliftio = self.callHackage "unliftio" "0.2.24.0" {}; + unliftio = dontCheck (self.callHackage "unliftio" "0.2.24.0" {}); sandwich = self.callHackage "sandwich" "0.1.0.6" {}; ghcid = self.callHackage "ghcid" "0.8.8" {}; postgresql-simple = self.callHackage "postgresql-simple" "0.6.5" {}; + ghc-lib-parser = super.ghc-lib-parser_8_10_7_20220219; + ghc-lib-parser-ex = super.ghc-lib-parser-ex_8_10_0_24; } From 97563cd79e52e24b7afd206029afdba4b924337a Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 08:51:54 -0700 Subject: [PATCH 25/52] ghcSavedSplices: fix for aarch64 --- default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default.nix b/default.nix index 9cebe4f19..d2808e4f7 100644 --- a/default.nix +++ b/default.nix @@ -59,7 +59,7 @@ let iosSupport = system == "x86_64-darwin"; enableProfiledLibs = true; #enableShared = self.stdenv.hostPlatform == self.stdenv.targetPlatform; #enableShared = false; - bootPkgs = if (super.stdenv.hostPlatform.isAarch64 && super.stdenv.hostPlatform.isLinux) then (super.haskell.packages.ghc8107Binary // { + bootPkgs = if (super.stdenv.hostPlatform.isAarch64) then (super.haskell.packages.ghc8107Binary // { happy = super.haskell.packages.ghc8107Binary.happy_1_19_12; }) else (super.haskell.packages.ghc865Binary // { happy = super.haskell.packages.ghc865Binary.happy_1_19_12; }); From de4a1b01dc4ec049f1dbe43b4090bf9b4568f120 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 11:54:32 -0400 Subject: [PATCH 26/52] Bump nixpkgs for ios --- nixpkgs/github.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 1574441cf..3ed679287 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "04139dd20f0d3402065a39e25556894e0df92ada", - "sha256": "1k1icd9jnvssh37iip2r9ssdv32xi8prhhdpzxvyqvc1vvbjym5h" + "rev": "3a020b57b87c60c847852b9732bec5cee443366f", + "sha256": "0wyjqazb0ig7vakss2h8zrrqgqd3lnq5v873xdmin2gzmjr45pj0" } From 93cb8ec441ebac3d68a9f982a1aa3ca55eb509e1 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 12:25:10 -0400 Subject: [PATCH 27/52] haskell-overlays: enable jsaddle-warp on linux if webkit2gtk is disabled --- haskell-overlays/reflex-packages/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index 4928cd6d8..b7e3a5789 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -20,7 +20,7 @@ let useTemplateHaskellFlag = lib.optional (!__useTemplateHaskell) "-f-use-template-haskell"; useWebkit2GtkFlag = if useWebkit2Gtk then ["-fwebkit2gtk"] - else ["-f-webkit2gtk"]; + else ["-f-webkit2gtk"] ++ lib.optional (nixpkgs.stdenv.hostPlatform.isLinux or false) "-fuse-warp"; # Enable warp on linux if webkit2gtk is disabled. Other platforms have other default runners inherit (nixpkgs) stdenv; # Older chromium for reflex-dom-core test suite @@ -114,7 +114,8 @@ in self.reflex-dom-core self.aeson ] ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity - ++ lib.optional (nixpkgs.stdenv.hostPlatform.isDarwin or false) self.jsaddle-wkwebview; + ++ lib.optional (nixpkgs.stdenv.hostPlatform.isDarwin or false) self.jsaddle-wkwebview + ++ lib.optional (nixpkgs.stdenv.hostPlatform.isLinux or false) self.jsaddle-warp; })); chrome-test-utils = self.callCabal2nix "chrome-test-utils" (reflexDomRepo + "/chrome-test-utils") {}; From c88c7baa72b2e075f483505bbf8ba5c95f17b635 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 14:54:18 -0400 Subject: [PATCH 28/52] darwin: enable shared and static libs --- default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/default.nix b/default.nix index d2808e4f7..77ea63cf4 100644 --- a/default.nix +++ b/default.nix @@ -113,12 +113,12 @@ let iosSupport = system == "x86_64-darwin"; libiconv = super.darwin.libiconv.overrideAttrs (_: lib.optionalAttrs (self.stdenv.hostPlatform != self.stdenv.buildPlatform) { postInstall = "rm $out/include/libcharset.h $out/include/localcharset.h"; - configureFlags = ["--disable-shared" "--enable-static"]; + configureFlags = ["--enable-shared" "--enable-static"]; }); }; zlib = super.zlib.override (lib.optionalAttrs (self.stdenv.hostPlatform != self.stdenv.buildPlatform) - { static = true; shared = false; }); + { static = true; shared = true; }); }; mobileGhcOverlay = import ./nixpkgs-overlays/mobile-ghc { inherit lib; }; @@ -230,7 +230,6 @@ let iosSupport = system == "x86_64-darwin"; ios = lib.mapAttrs (_: args: nixpkgsFunc (nixpkgsArgs // args)) rec { simulator64 = { crossSystem = lib.systems.examples.iphone64-simulator // { - #isStatic = true; sdkVer = iosSdkVersion; inherit xcodeVer; }; From a34e1870a87a222809b88b76b42e67f3edc4b811 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 21:17:48 -0400 Subject: [PATCH 29/52] try-reflex: fix runtime shell for ghcjs --- default.nix | 5 +++-- docs/project-development.rst | 11 ++++++----- haskell-overlays/reflex-packages/default.nix | 13 ++++++++++++- .../reflex-packages/dep/reflex-todomvc/github.json | 3 ++- .../reflex-packages/dep/reflex-todomvc/thunk.nix | 5 ++++- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/default.nix b/default.nix index 77ea63cf4..146132862 100644 --- a/default.nix +++ b/default.nix @@ -136,8 +136,9 @@ let iosSupport = system == "x86_64-darwin"; allCabalHashesOverlay (self: super: { - #NOTE(Dylan): If you ever hit this "null" you've done something terribly wrong :^) - runtimeShellPackage = if self.stdenv.hostPlatform.isGhcjs then null else super.runtimeShellPackage; + runtimeShellPackage = if self.stdenv.hostPlatform.isGhcjs + then super.buildPackages.runtimeShellPackage + else super.runtimeShellPackage; polkit = super.polkit.override { gobject-introspection = super.gobject-introspection-unwrapped; diff --git a/docs/project-development.rst b/docs/project-development.rst index b89051686..569cb80a2 100644 --- a/docs/project-development.rst +++ b/docs/project-development.rst @@ -212,11 +212,12 @@ Building the frontend with GHC can drastically speed up build times, and enables you to test from GHCi for even faster reloads. JSaddle is a set of libraries that allows Reflex-DOM to swap out its -JavaScript backend easily. By default, Reflex-DOM’s ``mainWidget`` will -work on GHC out of the box, using the ``jsaddle-webkit2gtk`` backend. So -simply building your ``frontend`` package using GHC will produce a -working native program that renders DOM using WebKit. This is -recommended for native desktop releases. +JavaScript backend easily. By default, Reflex-DOM’s ``mainWidget`` will work on +GHC out of the box, using the default backend for your platform (e.g., +jsaddle-warp on linux, wkwebview on macOS). So simply building your +``frontend`` package using GHC will produce a working program that renders DOM. +To select the webkit2gtk backend for reflex-dom on linux, set the useWebkit2Gtk +flag to true in default.nix. Note that webkit2gtk only works on x86_64-linux. To build this with ``nix-build``: diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index b7e3a5789..35afa0109 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -50,7 +50,18 @@ in (lib.optional useFastWeak "-ffast-weak") ])) {}; - reflex-todomvc = haskellLib.doJailbreak (self.callPackage self._dep.reflex-todomvc {}); + reflex-todomvc = + let + flags = + if useWebkit2Gtk && nixpkgs.stdenv.hostPlatform.isLinux + then [ "-f-warp" "-f-webkitgtk" "-f-wkwebview" ] + else if nixpkgs.stdenv.hostPlatform.isLinux + then [ "-fwarp" "-f-webkitgtk" "-f-wkwebview" "-f-webkit2gtk" ] + else if nixpkgs.stdenv.hostPlatform.isDarwin + then [ "-fwkwebview" "-f-webkit2gtk" "-f-webkitgtk" ] + else []; + in + (haskellLib.doJailbreak (self.callCabal2nixWithOptions "reflex-todomvc" self._dep.reflex-todomvc (lib.concatStringsSep " " flags) {})); reflex-aeson-orphans = self.callCabal2nix "reflex-aeson-orphans" self._dep.reflex-aeson-orphans {}; # The tests for reflex-dom-core are not deterministic, disable them, and run them manually diff --git a/haskell-overlays/reflex-packages/dep/reflex-todomvc/github.json b/haskell-overlays/reflex-packages/dep/reflex-todomvc/github.json index e67ebb899..0b76f03e5 100644 --- a/haskell-overlays/reflex-packages/dep/reflex-todomvc/github.json +++ b/haskell-overlays/reflex-packages/dep/reflex-todomvc/github.json @@ -2,6 +2,7 @@ "owner": "reflex-frp", "repo": "reflex-todomvc", "branch": "nostdenvlib", + "private": false, "rev": "c1611b866b860976b33fccb3a5206b0e0866adb8", - "sha256": "sha256-k3mL7HTy22K1wPQhHkjlwxa/YgAzLf6vN03YSC0q06E=" + "sha256": "18fk58nlin2d6ypzwb9k01iby5n3wm41w8glq2sn5nzjfkn8nyck" } diff --git a/haskell-overlays/reflex-packages/dep/reflex-todomvc/thunk.nix b/haskell-overlays/reflex-packages/dep/reflex-todomvc/thunk.nix index bbf2dc18f..20f2d28c2 100644 --- a/haskell-overlays/reflex-packages/dep/reflex-todomvc/thunk.nix +++ b/haskell-overlays/reflex-packages/dep/reflex-todomvc/thunk.nix @@ -2,7 +2,10 @@ let fetch = { private ? false, fetchSubmodules ? false, owner, repo, rev, sha256, ... }: if !fetchSubmodules && !private then builtins.fetchTarball { url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz"; inherit sha256; - } else (import {}).fetchFromGitHub { + } else (import (builtins.fetchTarball { + url = "https://github.com/NixOS/nixpkgs/archive/3aad50c30c826430b0270fcf8264c8c41b005403.tar.gz"; + sha256 = "0xwqsf08sywd23x0xvw4c4ghq0l28w2ki22h0bdn766i16z9q2gr"; +}) {}).fetchFromGitHub { inherit owner repo rev sha256 fetchSubmodules private; }; json = builtins.fromJSON (builtins.readFile ./github.json); From 3c988e0bd2ff6b81571770512643fdee11898e3b Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 8 Sep 2023 18:45:17 -0700 Subject: [PATCH 30/52] ci: add aarch64-darwin --- default.nix | 3 ++- nixpkgs-overlays/ghc.nix | 2 +- release.nix | 16 ++++++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/default.nix b/default.nix index 146132862..1501671a5 100644 --- a/default.nix +++ b/default.nix @@ -20,6 +20,7 @@ let iosSupport = system == "x86_64-darwin"; androidSupport = lib.elem system [ "x86_64-linux" ]; + ghc86Support = lib.elem system ["x86_64-linux" "x86_64-darwin"]; xcodeVer = { "16.1" = "14.1"; @@ -635,7 +636,7 @@ in let this = rec { iosReflexTodomvc iosSimulatorReflexTodomvc ]; - inherit cabal2nixResult system androidSupport iosSupport; + inherit cabal2nixResult system androidSupport iosSupport ghc86Support; project = args: import ./project this (args ({ pkgs = nixpkgs; } // this)); tryReflexShell = pinBuildInputs ("shell-" + system) tryReflexPackages; ghcjsExternsJs = ./ghcjs.externs.js; diff --git a/nixpkgs-overlays/ghc.nix b/nixpkgs-overlays/ghc.nix index d09ab17d6..cdc0fc701 100644 --- a/nixpkgs-overlays/ghc.nix +++ b/nixpkgs-overlays/ghc.nix @@ -6,7 +6,7 @@ self: super: { haskell = super.haskell // { compiler = super.haskell.compiler // { ghc8107 = super.haskell.compiler.ghc8107.overrideAttrs (drv: { - patches = (drv.patches or []) ++ (super.lib.optionals (super.stdenv.targetPlatform.isDarwin && super.stdenv.targetPlatform.isAarch64) [ + patches = (drv.patches or []) ++ (super.lib.optionals (super.stdenv.targetPlatform.isDarwin && super.stdenv.targetPlatform.isAarch64 && !super.stdenv.targetPlatform.isGhcjs) [ (super.fetchurl { url = "https://raw.githubusercontent.com/reflex-frp/reflex-platform/mars/modules/patches/aarch64-darwin/fix_dead_strip.patch"; sha256 = "sha256-1VcftxpaMmLzMnB8X4M6Xg9o+OmgpaNOeF7Yrn1x0EI="; diff --git a/release.nix b/release.nix index 670ae7172..04fe3b666 100644 --- a/release.nix +++ b/release.nix @@ -7,6 +7,7 @@ "x86_64-linux" # "i686-linux" "x86_64-darwin" + "aarch64-darwin" ] }: @@ -51,7 +52,7 @@ let dep = {} // (lib.optionalAttrs reflex-platform.androidSupport reflex-platform.ghcAndroidAarch64._dep) - // reflex-platform.ghcjs8_6._dep + // (lib.optionalAttrs reflex-platform.ghc86Support reflex-platform.ghcjs8_6._dep) // benchmark.dep ; @@ -75,12 +76,13 @@ let # TODO uncomment this once GHCJS profiling builds are fixed # tryReflexShell = reflex-platform.tryReflexShell; ghc.ReflexTodomvc = reflex-platform.ghc.reflex-todomvc; - ghc8_6.reflexTodomvc = reflex-platform.ghc8_6.reflex-todomvc; ghc8_10.reflexTodomvc = reflex-platform.ghc8_10.reflex-todomvc; ghc.reflex-vty = reflex-platform.ghc.reflex-vty; ghc.reflex-process = reflex-platform.ghc.reflex-process; ghc.reflex-fsnotify = reflex-platform.ghc.reflex-fsnotify; skeleton-test-ghc = skeleton-test.ghc; + } // lib.optionalAttrs (reflex-platform.ghc86Support) { + ghc8_6.reflexTodomvc = reflex-platform.ghc8_6.reflex-todomvc; } // lib.optionalAttrs (reflex-platform.androidSupport) { inherit (reflex-platform) androidReflexTodomvc; inherit (reflex-platform) androidReflexTodomvc-8_6; @@ -113,15 +115,17 @@ let tryReflexShell = reflex-platform.tryReflexShell; ghcjs.reflexTodomvc = jsexeHydra reflex-platform.ghcjs.reflex-todomvc; # TODO Doesn't currently build. Removing from CI until fixed. - ghcjs8_6.reflexTodomvc = jsexeHydra reflex-platform.ghcjs8_6.reflex-todomvc; ghcjs8_10.reflexTodomvc = jsexeHydra reflex-platform.ghcjs8_10.reflex-todomvc; # TODO move back to `perOptDebugVariant` skeleton-test-ghcjs = skeleton-test.ghcjs; - nojsstring = { + nojsstring = ({ ghcjs.reflexTodomvc = reflex-platform-nojsstring.ghcjs.reflex-todomvc; - ghcjs8_6.reflexTodomvc = reflex-platform-nojsstring.ghcjs8_6.reflex-todomvc; ghcjs8_10.reflexTodomvc = reflex-platform-nojsstring.ghcjs8_10.reflex-todomvc; - }; + } // lib.optionalAttrs reflex-platform.ghc86Support { + ghcjs8_6.reflexTodomvc = reflex-platform-nojsstring.ghcjs8_6.reflex-todomvc; + }); + } // lib.optionalAttrs reflex-platform.ghc86Support { + ghcjs8_6.reflexTodomvc = jsexeHydra reflex-platform.ghcjs8_6.reflex-todomvc; } // lib.optionalAttrs (system == "x86_64-linux") { inherit #benchmark From 9ff3c8dbe36a093517e796b9d06baf02134480f8 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Sat, 9 Sep 2023 18:13:35 -0400 Subject: [PATCH 31/52] haskell-overlays: don't enable jsaddle-warp on android --- haskell-overlays/reflex-packages/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index 35afa0109..96ea5b97f 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -20,7 +20,7 @@ let useTemplateHaskellFlag = lib.optional (!__useTemplateHaskell) "-f-use-template-haskell"; useWebkit2GtkFlag = if useWebkit2Gtk then ["-fwebkit2gtk"] - else ["-f-webkit2gtk"] ++ lib.optional (nixpkgs.stdenv.hostPlatform.isLinux or false) "-fuse-warp"; # Enable warp on linux if webkit2gtk is disabled. Other platforms have other default runners + else ["-f-webkit2gtk"] ++ lib.optional ((nixpkgs.stdenv.hostPlatform.isLinux or false) && !nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt) "-fuse-warp"; # Enable warp on linux if webkit2gtk is disabled. Other platforms have other default runners inherit (nixpkgs) stdenv; # Older chromium for reflex-dom-core test suite @@ -126,7 +126,7 @@ in self.aeson ] ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity ++ lib.optional (nixpkgs.stdenv.hostPlatform.isDarwin or false) self.jsaddle-wkwebview - ++ lib.optional (nixpkgs.stdenv.hostPlatform.isLinux or false) self.jsaddle-warp; + ++ lib.optional ((nixpkgs.stdenv.hostPlatform.isLinux or false) && !nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt) self.jsaddle-warp; })); chrome-test-utils = self.callCabal2nix "chrome-test-utils" (reflexDomRepo + "/chrome-test-utils") {}; From 74d625174d9b02566e4be5dd798e610892effc14 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Sun, 10 Sep 2023 17:20:25 -0400 Subject: [PATCH 32/52] Bump nixpkgs (ghcjs src) --- nixpkgs/github.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 3ed679287..8c51ef090 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "3a020b57b87c60c847852b9732bec5cee443366f", - "sha256": "0wyjqazb0ig7vakss2h8zrrqgqd3lnq5v873xdmin2gzmjr45pj0" + "rev": "a823e02d4815c2f195480fac8bee6f721a01220e", + "sha256": "0mf4b2ld972gby29navfikib44c8yg7yra91m4zs2zbi7mb3fpbm" } From 53857e1c6b1f1e65fba10beb82a99c0be72e2cde Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Sun, 10 Sep 2023 16:30:30 -0700 Subject: [PATCH 33/52] nixpkgs-overlays: check buildPlatform when applying aarch64-darwin patch --- nixpkgs-overlays/ghc.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixpkgs-overlays/ghc.nix b/nixpkgs-overlays/ghc.nix index cdc0fc701..51e148316 100644 --- a/nixpkgs-overlays/ghc.nix +++ b/nixpkgs-overlays/ghc.nix @@ -6,7 +6,7 @@ self: super: { haskell = super.haskell // { compiler = super.haskell.compiler // { ghc8107 = super.haskell.compiler.ghc8107.overrideAttrs (drv: { - patches = (drv.patches or []) ++ (super.lib.optionals (super.stdenv.targetPlatform.isDarwin && super.stdenv.targetPlatform.isAarch64 && !super.stdenv.targetPlatform.isGhcjs) [ + patches = (drv.patches or []) ++ (super.lib.optionals (super.stdenv.buildPlatform.isDarwin && super.stdenv.buildPlatform.isAarch64) [ (super.fetchurl { url = "https://raw.githubusercontent.com/reflex-frp/reflex-platform/mars/modules/patches/aarch64-darwin/fix_dead_strip.patch"; sha256 = "sha256-1VcftxpaMmLzMnB8X4M6Xg9o+OmgpaNOeF7Yrn1x0EI="; From 055623c3d11bc3bc810dc2fa2823a3cf715f24e6 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Sun, 10 Sep 2023 20:33:59 -0400 Subject: [PATCH 34/52] docs: Add platform support info --- ChangeLog.md | 3 +++ docs/platform-support.md | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 docs/platform-support.md diff --git a/ChangeLog.md b/ChangeLog.md index 35973ca05..62f1f3523 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -4,6 +4,9 @@ This project's release branch is `master`. This log is written from the perspect ## v1.2.0.0 +* Add support for aarch64-darwin (apple silicon macs) and aarch64-linux. See [docs/platform-support.md](./docs/platform-support.md) for more information about what's supported and what isn't on each platform. +* nixpkgs updated to 22.11 +* *Breaking change*: Disable webkit2gtk backend for reflex-dom by default. To enable it, use the useWebkit2Gtk flag in `default.nix`. * Haskell Libraries Updates * reflex-dom 0.6.3.1 diff --git a/docs/platform-support.md b/docs/platform-support.md new file mode 100644 index 000000000..090250aea --- /dev/null +++ b/docs/platform-support.md @@ -0,0 +1,19 @@ +# Supported Platforms + +reflex-platform supports building *on* x86_64 and aarch64 linux and macOS systems. It supports building *for* Android, iOS, Javascript, Linux, and macOS targets. + +Depending on the build system you are using, you can build for the following targets: + +| | Javascript | Android | iOS | Linux x86_64 | Linux aarch64 | macOS (intel) | macOS (m1/m2) | +|---------------|------------|---------|-----|--------------|---------------|---------------|---------------| +| Linux x86_64 | ✅ | ✅ | | ✅ | | | | +| Linux aarch64 | ✅ | ✅ | | | ✅ | | | +| macOS (intel) | ✅ | | ✅ | | | ✅ | | +| macOS (m1/m2) | ✅ | | ✅ | | | | ✅ | + +* From Linux, you can't build for iOS or macOS because the apple toolchain is restricted to macOS. +* Android builds aren't yet supported from macOS. +* When building a desktop app on x86_64-linux you can use webkitgtk, but that isn't yet supported on aarch64-linux. You can, however, build your backend executable and warp-based frontend executables on either architecture. +* When building a desktop app on macOS you can use wkwebview or warp. + + From 02c37b1aa8d0ab3eeeb7c476f4548cba2efd8d4b Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Sun, 10 Sep 2023 20:36:32 -0400 Subject: [PATCH 35/52] docs: add more platform notes --- docs/platform-support.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/platform-support.md b/docs/platform-support.md index 090250aea..a10a43fe0 100644 --- a/docs/platform-support.md +++ b/docs/platform-support.md @@ -11,9 +11,9 @@ Depending on the build system you are using, you can build for the following tar | macOS (intel) | ✅ | | ✅ | | | ✅ | | | macOS (m1/m2) | ✅ | | ✅ | | | | ✅ | +* On aarch64 platforms (aarch64-linux and aarch64-darwin), we do not support ghc-8.6.5 or ghcjs-8.6.5. * From Linux, you can't build for iOS or macOS because the apple toolchain is restricted to macOS. * Android builds aren't yet supported from macOS. * When building a desktop app on x86_64-linux you can use webkitgtk, but that isn't yet supported on aarch64-linux. You can, however, build your backend executable and warp-based frontend executables on either architecture. * When building a desktop app on macOS you can use wkwebview or warp. - - +* 32-bit android builds are only supported via ghc-8.6.5 because later versions of ghc don't support that platform. From 98426123664d68f786743e298518708a5e650b80 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Sun, 10 Sep 2023 20:40:42 -0400 Subject: [PATCH 36/52] docs: add note on which caches are provided --- docs/platform-support.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/platform-support.md b/docs/platform-support.md index a10a43fe0..8f4fc71e0 100644 --- a/docs/platform-support.md +++ b/docs/platform-support.md @@ -17,3 +17,7 @@ Depending on the build system you are using, you can build for the following tar * When building a desktop app on x86_64-linux you can use webkitgtk, but that isn't yet supported on aarch64-linux. You can, however, build your backend executable and warp-based frontend executables on either architecture. * When building a desktop app on macOS you can use wkwebview or warp. * 32-bit android builds are only supported via ghc-8.6.5 because later versions of ghc don't support that platform. + +## Binary Caches + +Binary caches are provided for x86_64-linux, x86_64-darwin, and aarch64-darwin. We will be adding an aarch64-linux cache in the future. From ac56bb6c999f5be5135e8f300f27301f97dd4e94 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Sun, 10 Sep 2023 22:53:26 -0400 Subject: [PATCH 37/52] haskell-overlays: pin stylish haskell; bump nixpkgs --- haskell-overlays/untriaged.nix | 1 + nixpkgs-overlays/ghc.nix | 2 +- nixpkgs/github.json | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/haskell-overlays/untriaged.nix b/haskell-overlays/untriaged.nix index f8118198b..212967497 100644 --- a/haskell-overlays/untriaged.nix +++ b/haskell-overlays/untriaged.nix @@ -92,4 +92,5 @@ self: super: { postgresql-simple = self.callHackage "postgresql-simple" "0.6.5" {}; ghc-lib-parser = super.ghc-lib-parser_8_10_7_20220219; ghc-lib-parser-ex = super.ghc-lib-parser-ex_8_10_0_24; + stylish-haskell = doJailbreak (self.callHackage "stylish-haskell" "0.13.0.0" {}); # jailbreak to allow newer aeson } diff --git a/nixpkgs-overlays/ghc.nix b/nixpkgs-overlays/ghc.nix index 51e148316..60cead60f 100644 --- a/nixpkgs-overlays/ghc.nix +++ b/nixpkgs-overlays/ghc.nix @@ -1,7 +1,7 @@ { lib }: self: super: { - cabal2nix-unwrapped = super.haskell.packages.ghc8107.cabal2nix; + cabal2nix-unwrapped = self.haskell.packages.ghc8107.cabal2nix; # Apply custom patches to Haskell compilers haskell = super.haskell // { compiler = super.haskell.compiler // { diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 8c51ef090..bff8b90dd 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "a823e02d4815c2f195480fac8bee6f721a01220e", - "sha256": "0mf4b2ld972gby29navfikib44c8yg7yra91m4zs2zbi7mb3fpbm" + "rev": "591dfa091d3ac4706b8444541bc8ee9c42556f6f", + "sha256": "1fgd89ly6x3nh25s4xv32ffayky95w81igzlnfvhy6mkxwxhm7rg" } From 026722bb74ce2f605b5cf8507be2ba7715611633 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Mon, 11 Sep 2023 03:04:07 -0400 Subject: [PATCH 38/52] try-reflex: re-enable hoogle --- default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default.nix b/default.nix index 1501671a5..8e997d1b1 100644 --- a/default.nix +++ b/default.nix @@ -609,7 +609,7 @@ in let this = rec { reflexEnv = platform: let haskellPackages = builtins.getAttr platform this; ghcWithStuff = if platform == "ghc" - then haskellPackages.ghcWithPackages + then haskellPackages.ghcWithHoogle else haskellPackages.ghcWithPackages; in ghcWithStuff (p: import ./packages.nix { haskellPackages = p; From 7e67760f94476fb7d8d49b8a42499c32798f7728 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Mon, 11 Sep 2023 06:09:22 -0700 Subject: [PATCH 39/52] Remove deprecated cabal2nixResult --- ChangeLog.md | 1 + default.nix | 10 ++-------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 62f1f3523..7cb0374a9 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -7,6 +7,7 @@ This project's release branch is `master`. This log is written from the perspect * Add support for aarch64-darwin (apple silicon macs) and aarch64-linux. See [docs/platform-support.md](./docs/platform-support.md) for more information about what's supported and what isn't on each platform. * nixpkgs updated to 22.11 * *Breaking change*: Disable webkit2gtk backend for reflex-dom by default. To enable it, use the useWebkit2Gtk flag in `default.nix`. +* *Breaking change*: Remove deprecated cabal2nixResult * Haskell Libraries Updates * reflex-dom 0.6.3.1 diff --git a/default.nix b/default.nix index 1501671a5..2883d39a1 100644 --- a/default.nix +++ b/default.nix @@ -129,6 +129,7 @@ let iosSupport = system == "x86_64-darwin"; nixpkgsArgs = { inherit system; overlays = [ + (import ./nixpkgs-overlays/ghc.nix { inherit lib; }) hackGetOverlay bindHaskellOverlays forceStaticLibs @@ -178,7 +179,6 @@ let iosSupport = system == "x86_64-darwin"; libffi = if (self.stdenv.hostPlatform.useAndroidPrebuilt or false) then super.libffi_3_3 else super.libffi; }) - (import ./nixpkgs-overlays/ghc.nix { inherit lib; }) ] ++ nixpkgsOverlays; config = config // { permittedInsecurePackages = (config.permittedInsecurePackages or []) ++ [ @@ -277,12 +277,6 @@ let iosSupport = system == "x86_64-darwin"; override = new: makeRecursivelyOverridable (x.override (old: (combineOverrides old new))); }; - cabal2nixResult = src: builtins.trace "cabal2nixResult is deprecated; use ghc.haskellSrc2nix or ghc.callCabal2nix instead" (ghc.haskellSrc2nix { - name = "for-unknown-package"; - src = "file://${src}"; - sha256 = null; - }); - ghcSavedSplices = if __useNewerCompiler then ghcSavedSplices-8_10 else ghcSavedSplices-8_6; ghcSavedSplices-8_6 = (makeRecursivelyOverridable nixpkgs.haskell.packages.integer-simple.ghcSplices-8_6).override { overrides = lib.foldr lib.composeExtensions (_: _: {}) (let @@ -636,7 +630,7 @@ in let this = rec { iosReflexTodomvc iosSimulatorReflexTodomvc ]; - inherit cabal2nixResult system androidSupport iosSupport ghc86Support; + inherit system androidSupport iosSupport ghc86Support; project = args: import ./project this (args ({ pkgs = nixpkgs; } // this)); tryReflexShell = pinBuildInputs ("shell-" + system) tryReflexPackages; ghcjsExternsJs = ./ghcjs.externs.js; From 8c4619c9196bbce1a4169d495b0d03c89a93df62 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Mon, 11 Sep 2023 09:21:34 -0400 Subject: [PATCH 40/52] reflex-packages: don't use warp for todomvc on android --- haskell-overlays/reflex-packages/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index 96ea5b97f..fe3b01055 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -55,7 +55,7 @@ in flags = if useWebkit2Gtk && nixpkgs.stdenv.hostPlatform.isLinux then [ "-f-warp" "-f-webkitgtk" "-f-wkwebview" ] - else if nixpkgs.stdenv.hostPlatform.isLinux + else if (nixpkgs.stdenv.hostPlatform.isLinux && !nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt) then [ "-fwarp" "-f-webkitgtk" "-f-wkwebview" "-f-webkit2gtk" ] else if nixpkgs.stdenv.hostPlatform.isDarwin then [ "-fwkwebview" "-f-webkit2gtk" "-f-webkitgtk" ] From fbfaa5ea9469f473fdc13a30351b9d0361b815d3 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Mon, 11 Sep 2023 10:13:34 -0400 Subject: [PATCH 41/52] shell: use shell from buildpackages when target is ios --- default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default.nix b/default.nix index 092d0df53..8d3e215dd 100644 --- a/default.nix +++ b/default.nix @@ -138,7 +138,7 @@ let iosSupport = system == "x86_64-darwin"; allCabalHashesOverlay (self: super: { - runtimeShellPackage = if self.stdenv.hostPlatform.isGhcjs + runtimeShellPackage = if (self.stdenv.hostPlatform.isGhcjs || self.stdenv.targetPlatform.isiOS) then super.buildPackages.runtimeShellPackage else super.runtimeShellPackage; From 7f213ace4c5c8ece350816285fe1afff19453df7 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Mon, 11 Sep 2023 19:07:32 -0500 Subject: [PATCH 42/52] Fix shell, Use GHC 8.10.7 for cabal-install --- default.nix | 1 - nixpkgs-overlays/ghc.nix | 1 + packages.nix | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/default.nix b/default.nix index 8d3e215dd..8ecd670e6 100644 --- a/default.nix +++ b/default.nix @@ -555,7 +555,6 @@ in let this = rec { cabal-install ghcid hasktags - hlint stylish-haskell # Recent stylish-haskell only builds with AMP in place reflex-ghci ; diff --git a/nixpkgs-overlays/ghc.nix b/nixpkgs-overlays/ghc.nix index 60cead60f..55c6173d9 100644 --- a/nixpkgs-overlays/ghc.nix +++ b/nixpkgs-overlays/ghc.nix @@ -2,6 +2,7 @@ self: super: { cabal2nix-unwrapped = self.haskell.packages.ghc8107.cabal2nix; + cabal-install = self.haskell.packages.ghc8107.cabal-install; # Apply custom patches to Haskell compilers haskell = super.haskell // { compiler = super.haskell.compiler // { diff --git a/packages.nix b/packages.nix index f2e19ae0e..8461e5db3 100644 --- a/packages.nix +++ b/packages.nix @@ -20,5 +20,6 @@ with haskellPackages; # Add ghc-only packages here # ############################################################################## reflex-todomvc + hlint ] else []) ++ builtins.concatLists (map (x: (x.override { mkDerivation = drv: { out = (drv.buildDepends or []) ++ (drv.libraryHaskellDepends or []) ++ (drv.executableHaskellDepends or []); }; }).out) [ reflex reflex-dom reflex-todomvc ]) From b489ad28c906fea8d197114a8563484ea4a3fc0c Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 15 Sep 2023 10:00:21 -0400 Subject: [PATCH 43/52] Update platform-support.md --- docs/platform-support.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/platform-support.md b/docs/platform-support.md index 8f4fc71e0..fd5f483c2 100644 --- a/docs/platform-support.md +++ b/docs/platform-support.md @@ -7,9 +7,9 @@ Depending on the build system you are using, you can build for the following tar | | Javascript | Android | iOS | Linux x86_64 | Linux aarch64 | macOS (intel) | macOS (m1/m2) | |---------------|------------|---------|-----|--------------|---------------|---------------|---------------| | Linux x86_64 | ✅ | ✅ | | ✅ | | | | -| Linux aarch64 | ✅ | ✅ | | | ✅ | | | +| Linux aarch64 | ✅ | | | | ✅ | | | | macOS (intel) | ✅ | | ✅ | | | ✅ | | -| macOS (m1/m2) | ✅ | | ✅ | | | | ✅ | +| macOS (m1/m2) | ✅ | | | | | | ✅ | * On aarch64 platforms (aarch64-linux and aarch64-darwin), we do not support ghc-8.6.5 or ghcjs-8.6.5. * From Linux, you can't build for iOS or macOS because the apple toolchain is restricted to macOS. From 4b43344da106cc54bd2311b229a7a17e72a4bfad Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 15 Sep 2023 16:14:26 -0400 Subject: [PATCH 44/52] ios: ios-deploy -> 1.12.2 --- ChangeLog.md | 1 + default.nix | 15 ++++++--------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 7cb0374a9..94023d51c 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -10,6 +10,7 @@ This project's release branch is `master`. This log is written from the perspect * *Breaking change*: Remove deprecated cabal2nixResult * Haskell Libraries Updates * reflex-dom 0.6.3.1 +* ios: Update ios-deploy to v1.12.2 ## v1.1.2.0 - 2023-09-07 diff --git a/default.nix b/default.nix index 8ecd670e6..6e2617f01 100644 --- a/default.nix +++ b/default.nix @@ -146,20 +146,17 @@ let iosSupport = system == "x86_64-darwin"; gobject-introspection = super.gobject-introspection-unwrapped; }; - # Bump ios-deploy - # - for faster deployments - # - fixes debug deploy with iOS 16/macos 12.3/ xcode 13.4.1 - darwin = super.darwin // { - ios-deploy = super.darwin.ios-deploy.overrideAttrs (_: { - version = "HEAD"; + darwin = super.darwin.overrideScope (dself: dsuper: { + ios-deploy = dsuper.ios-deploy.overrideAttrs (_: { + version = "1.12.2"; src = self.fetchFromGitHub { owner = "ios-control"; repo = "ios-deploy"; - rev = "b3254438719b6bc82ceab1f630e7d642a9acfac5"; # unreleased - sha256 = "W45Qjr3xqvDWieLBgt4//nthxxcc3hgrJNrpSk7vWj8="; + rev = "ed7de7792d28a5110242748649047a95c95ea917"; + sha256 = "082w7j490khfpbv1diwrjixjbg9g93wdr2khyzdhv8xmzzwq4lad"; }; }); - }; + }); openjdk16-bootstrap = super.openjdk16-bootstrap.override { gtkSupport = false; }; From b5e2b4b8538dc6cac418f6df9841a6e0f340d3b3 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Fri, 22 Sep 2023 16:38:09 -0400 Subject: [PATCH 45/52] ios: bump nixpkgs to fix simulator --- nixpkgs/github.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixpkgs/github.json b/nixpkgs/github.json index bff8b90dd..d3efb33c0 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "591dfa091d3ac4706b8444541bc8ee9c42556f6f", - "sha256": "1fgd89ly6x3nh25s4xv32ffayky95w81igzlnfvhy6mkxwxhm7rg" + "rev": "29999d41d581db3385d3a23e8a339e8f1ea77894", + "sha256": "0j44la12kw0jbn4ipjp3ax2p6q6vcaimjsx7y4yxhwi8525xxsqx" } From 86a66b420d277244c6c086f84709641629e42027 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Wed, 11 Oct 2023 08:30:52 -0500 Subject: [PATCH 46/52] Bump nixpkgs to fix iosSim on x86 --- nixpkgs/github.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixpkgs/github.json b/nixpkgs/github.json index d3efb33c0..9fd1665ac 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "29999d41d581db3385d3a23e8a339e8f1ea77894", - "sha256": "0j44la12kw0jbn4ipjp3ax2p6q6vcaimjsx7y4yxhwi8525xxsqx" + "rev": "6a9f2166e27f8d3834e368e5a20288cfd30f7bfa", + "sha256": "17d227nixbsnydln1ij3ag4kx7r5dzky1gifmawcb9j9dyny9zhy" } From af0a9320af2811de963d5b6a20ad5f53b70d472e Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Wed, 11 Oct 2023 11:56:10 -0500 Subject: [PATCH 47/52] iOS simulator pt 2 --- default.nix | 1 + nixpkgs/github.json | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index 6e2617f01..075e77245 100644 --- a/default.nix +++ b/default.nix @@ -229,6 +229,7 @@ let iosSupport = system == "x86_64-darwin"; ios = lib.mapAttrs (_: args: nixpkgsFunc (nixpkgsArgs // args)) rec { simulator64 = { crossSystem = lib.systems.examples.iphone64-simulator // { + isStatic = true; sdkVer = iosSdkVersion; inherit xcodeVer; }; diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 9fd1665ac..3a5419336 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -3,6 +3,6 @@ "repo": "nixpkgs", "branch": "reflex-platform-unstable", "private": false, - "rev": "6a9f2166e27f8d3834e368e5a20288cfd30f7bfa", - "sha256": "17d227nixbsnydln1ij3ag4kx7r5dzky1gifmawcb9j9dyny9zhy" + "rev": "22cf53eb29f52af963398de744c422d6fe15a3d4", + "sha256": "1hz0jhf40byn5v44sznx27msy5mx3a8i25pbqyh5dd42rripdd8z" } From b29c58f521a46cec78752416de7d36c2b375f0b4 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Fri, 13 Oct 2023 10:52:08 -0500 Subject: [PATCH 48/52] Make simulator work again, and fix regular iOS --- haskell-overlays/default.nix | 9 +++++++++ haskell-overlays/reflex-packages/default.nix | 3 +++ nixpkgs-overlays/ghc.nix | 4 ++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/haskell-overlays/default.nix b/haskell-overlays/default.nix index 223c238ec..5d4ac6baf 100644 --- a/haskell-overlays/default.nix +++ b/haskell-overlays/default.nix @@ -76,6 +76,15 @@ rec { }); })) + # TODO(Dylan): Add this casing to the compiler patch + (optionalExtension (super.ghc.stdenv.targetPlatform.isiOS && super.ghc.stdenv.targetPlatform.isx86_64) (self: super: { + mkDerivation = drv: super.mkDerivation (drv // { + buildFlags = [ + "--ghc-option=-fwhole-archive-hs-libs" + ]; + }); + })) + combined-any (optionalExtension (!(super.ghc.isGhcjs or false)) combined-ghc) (optionalExtension (super.ghc.isGhcjs or false) combined-ghcjs) diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index fe3b01055..565c27470 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -57,6 +57,8 @@ in then [ "-f-warp" "-f-webkitgtk" "-f-wkwebview" ] else if (nixpkgs.stdenv.hostPlatform.isLinux && !nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt) then [ "-fwarp" "-f-webkitgtk" "-f-wkwebview" "-f-webkit2gtk" ] + else if self.ghc.stdenv.targetPlatform.isiOS + then [ "-f-webkit2gtk" "-f-warp" "-f-webkitgtk" ] else if nixpkgs.stdenv.hostPlatform.isDarwin then [ "-fwkwebview" "-f-webkit2gtk" "-f-webkitgtk" ] else []; @@ -69,6 +71,7 @@ in inherit (self) ghc; noGcTest = stdenv.hostPlatform.system != "x86_64-linux" || stdenv.hostPlatform != stdenv.buildPlatform + || stdenv.targetPlatform.isiOS || (ghc.isGhcjs or false); in haskellLib.overrideCabal (self.callCabal2nixWithOptions "reflex-dom-core" (reflexDomRepo + "/reflex-dom-core") (lib.concatStringsSep " " (lib.concatLists [ diff --git a/nixpkgs-overlays/ghc.nix b/nixpkgs-overlays/ghc.nix index 55c6173d9..3d4aaaa21 100644 --- a/nixpkgs-overlays/ghc.nix +++ b/nixpkgs-overlays/ghc.nix @@ -7,12 +7,12 @@ self: super: { haskell = super.haskell // { compiler = super.haskell.compiler // { ghc8107 = super.haskell.compiler.ghc8107.overrideAttrs (drv: { - patches = (drv.patches or []) ++ (super.lib.optionals (super.stdenv.buildPlatform.isDarwin && super.stdenv.buildPlatform.isAarch64) [ + patches = (drv.patches or []) ++ lib.optionals (self.stdenv.targetPlatform.isiOS || self.stdenv.targetPlatform.isAarch64 && self.stdenv.targetPlatform.isDarwin) [ (super.fetchurl { url = "https://raw.githubusercontent.com/reflex-frp/reflex-platform/mars/modules/patches/aarch64-darwin/fix_dead_strip.patch"; sha256 = "sha256-1VcftxpaMmLzMnB8X4M6Xg9o+OmgpaNOeF7Yrn1x0EI="; }) - ]); + ]; }); }; packages = super.haskell.packages // { From bb4b0adba1558d1c99a644521851ac6964674923 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Mon, 20 Nov 2023 14:28:10 -0600 Subject: [PATCH 49/52] Prevent profiling on iOS --- haskell-overlays/profiling.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/haskell-overlays/profiling.nix b/haskell-overlays/profiling.nix index 8a555edf3..28a84631c 100644 --- a/haskell-overlays/profiling.nix +++ b/haskell-overlays/profiling.nix @@ -4,10 +4,14 @@ with haskellLib; +let + preventMobileProfiling = (!self.ghc.stdenv.targetPlatform.isiOS) && enableLibraryProfiling; +in + self: super: { # Override mkDerivation to inherit global settings mkDerivation = expr: super.mkDerivation (expr // { - inherit enableLibraryProfiling; + enableLibraryProfiling = preventMobileProfiling; }); } From 05ae47e91cf1bcfa7843a8cbe5540c4dbdc2a3f6 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Mon, 20 Nov 2023 14:29:01 -0600 Subject: [PATCH 50/52] Quick fix --- haskell-overlays/profiling.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/haskell-overlays/profiling.nix b/haskell-overlays/profiling.nix index 28a84631c..3422176cb 100644 --- a/haskell-overlays/profiling.nix +++ b/haskell-overlays/profiling.nix @@ -5,13 +5,13 @@ with haskellLib; let - preventMobileProfiling = (!self.ghc.stdenv.targetPlatform.isiOS) && enableLibraryProfiling; + preventMobileProfiling = self: (!self.ghc.stdenv.targetPlatform.isiOS) && enableLibraryProfiling; in self: super: { # Override mkDerivation to inherit global settings mkDerivation = expr: super.mkDerivation (expr // { - enableLibraryProfiling = preventMobileProfiling; + enableLibraryProfiling = preventMobileProfiling self; }); } From 06111390c0e2ad4b7707417ec5251e5ed5fe858c Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Tue, 5 Dec 2023 14:29:38 -0600 Subject: [PATCH 51/52] Attempt to fix iOS builds again --- haskell-overlays/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haskell-overlays/default.nix b/haskell-overlays/default.nix index 5d4ac6baf..8f2e82dde 100644 --- a/haskell-overlays/default.nix +++ b/haskell-overlays/default.nix @@ -77,7 +77,7 @@ rec { })) # TODO(Dylan): Add this casing to the compiler patch - (optionalExtension (super.ghc.stdenv.targetPlatform.isiOS && super.ghc.stdenv.targetPlatform.isx86_64) (self: super: { + (optionalExtension (super.ghc.stdenv.targetPlatform.isiOS && (super.ghc.stdenv.targetPlatform.isx86_64 || super.ghc.version == "8.6.5")) (self: super: { mkDerivation = drv: super.mkDerivation (drv // { buildFlags = [ "--ghc-option=-fwhole-archive-hs-libs" From d8d4baf7d68ccd38d4c4c2a6066fe96e26d69b3a Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Tue, 5 Dec 2023 14:38:25 -0600 Subject: [PATCH 52/52] Try again to fix build --- haskell-overlays/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/haskell-overlays/default.nix b/haskell-overlays/default.nix index 8f2e82dde..087c50fd5 100644 --- a/haskell-overlays/default.nix +++ b/haskell-overlays/default.nix @@ -79,7 +79,7 @@ rec { # TODO(Dylan): Add this casing to the compiler patch (optionalExtension (super.ghc.stdenv.targetPlatform.isiOS && (super.ghc.stdenv.targetPlatform.isx86_64 || super.ghc.version == "8.6.5")) (self: super: { mkDerivation = drv: super.mkDerivation (drv // { - buildFlags = [ + buildFlags = (drv.buildFlags or []) ++ [ "--ghc-option=-fwhole-archive-hs-libs" ]; });