diff options
author | Alyssa Ross <hi@alyssa.is> | 2022-02-22 10:43:06 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2022-03-11 16:17:56 +0000 |
commit | ca1aada113c0ebda1ab8667199f6453f8e01c4fc (patch) | |
tree | 55e402280096f62eb0bc8bcad5ce6050c5a0aec7 /nixpkgs/pkgs/development/compilers/idris2/default.nix | |
parent | e4df5a52a6a6531f32626f57205356a773ac2975 (diff) | |
parent | 93883402a445ad467320925a0a5dbe43a949f25b (diff) | |
download | nixlib-ca1aada113c0ebda1ab8667199f6453f8e01c4fc.tar nixlib-ca1aada113c0ebda1ab8667199f6453f8e01c4fc.tar.gz nixlib-ca1aada113c0ebda1ab8667199f6453f8e01c4fc.tar.bz2 nixlib-ca1aada113c0ebda1ab8667199f6453f8e01c4fc.tar.lz nixlib-ca1aada113c0ebda1ab8667199f6453f8e01c4fc.tar.xz nixlib-ca1aada113c0ebda1ab8667199f6453f8e01c4fc.tar.zst nixlib-ca1aada113c0ebda1ab8667199f6453f8e01c4fc.zip |
Merge commit '93883402a445ad467320925a0a5dbe43a949f25b'
Conflicts: nixpkgs/nixos/modules/programs/ssh.nix nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix nixpkgs/pkgs/data/fonts/noto-fonts/default.nix nixpkgs/pkgs/development/go-modules/generic/default.nix nixpkgs/pkgs/development/interpreters/ruby/default.nix nixpkgs/pkgs/development/libraries/mesa/default.nix
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/idris2/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/compilers/idris2/default.nix | 67 |
1 files changed, 34 insertions, 33 deletions
diff --git a/nixpkgs/pkgs/development/compilers/idris2/default.nix b/nixpkgs/pkgs/development/compilers/idris2/default.nix index 4bf8f7e4af6c..9c7a9e53a2e6 100644 --- a/nixpkgs/pkgs/development/compilers/idris2/default.nix +++ b/nixpkgs/pkgs/development/compilers/idris2/default.nix @@ -1,18 +1,27 @@ -{ lib -, stdenv -, fetchFromGitHub -, makeWrapper -, clang +# Almost 1:1 copy of idris2's nix/platform.nix. Some work done in their flake.nix +# we do here instead. +{ stdenv +, lib , chez +, chez-racket +, clang , gmp +, fetchFromGitHub +, makeWrapper +, gambit +, nodejs , zsh , callPackage }: # NOTICE: An `idris2WithPackages` is available at: https://github.com/claymager/idris2-pkgs +let + # Taken from Idris2/idris2/flake.nix. Check if the idris2 project does it this + # way, still, every now and then. + platformChez = if stdenv.system == "x86_64-linux" then chez else chez-racket; # Uses scheme to bootstrap the build of idris2 -stdenv.mkDerivation rec { +in stdenv.mkDerivation rec { pname = "idris2"; version = "0.5.1"; @@ -23,14 +32,10 @@ stdenv.mkDerivation rec { sha256 = "sha256-6CTn8o5geWSesXO7vTrrV/2EOQ3f+nPQ2M5cem13ZSY="; }; - # We do not add any propagatedNativeBuildInputs because we do not want the - # executables idris2 produces to depend on the nix-store. As such, it is left - # to the user to guarantee chez (or any other codgen dependency) is available - # in the path during compilation of programs with idris2. strictDeps = true; - nativeBuildInputs = [ makeWrapper clang chez ] + nativeBuildInputs = [ makeWrapper clang platformChez ] ++ lib.optional stdenv.isDarwin [ zsh ]; - buildInputs = [ gmp ]; + buildInputs = [ platformChez gmp ]; prePatch = '' patchShebangs --build tests @@ -43,44 +48,40 @@ stdenv.mkDerivation rec { buildFlags = [ "bootstrap" "SCHEME=scheme" ]; checkTarget = "test"; + checkInputs = [ gambit nodejs ]; # racket ]; + checkFlags = [ "INTERACTIVE=" ]; # TODO: Move this into its own derivation, such that this can be changed # without having to recompile idris2 every time. postInstall = let - includedLibs = [ "base" "contrib" "network" "prelude" ]; name = "${pname}-${version}"; - packagePaths = - builtins.map (l: "$out/${name}/${l}-${version}") includedLibs; - additionalIdris2Paths = builtins.concatStringsSep ":" packagePaths; + globalLibraries = [ + "\\$HOME/.nix-profile/lib/${name}" + "/run/current-system/sw/lib/${name}" + "$out/${name}" + ]; + globalLibrariesPath = builtins.concatStringsSep ":" globalLibraries; in '' # Remove existing idris2 wrapper that sets incorrect LD_LIBRARY_PATH rm $out/bin/idris2 - # Move actual idris2 binary + # The only thing we need from idris2_app is the actual binary mv $out/bin/idris2_app/idris2.so $out/bin/idris2 - - # After moving the binary, there is nothing left in idris2_app that isn't - # either contained in lib/ or is useless to us. rm $out/bin/idris2_app/* rmdir $out/bin/idris2_app - # idris2 needs to find scheme at runtime to compile - # idris2 installs packages with --install into the path given by PREFIX. - # Since PREFIX is in nix-store, it is immutable so --install does not work. - # If the user redefines PREFIX to be able to install packages, idris2 will - # not find the libraries and packages since all paths are relative to - # PREFIX by default. - # We explicitly make all paths to point to nix-store, such that they are - # independent of what IDRIS2_PREFIX is. This allows the user to redefine - # IDRIS2_PREFIX and use --install as expected. + # idris2 installs packages with --install into the path given by + # IDRIS2_PREFIX. We set that to a default of ~/.idris2, to mirror the + # behaviour of the standard Makefile install. # TODO: Make support libraries their own derivation such that # overriding LD_LIBRARY_PATH is unnecessary - # TODO: Maybe set IDRIS2_PREFIX to the users home directory wrapProgram "$out/bin/idris2" \ - --set-default CHEZ "${chez}/bin/scheme" \ + --set-default CHEZ "${platformChez}/bin/scheme" \ + --run 'export IDRIS2_PREFIX=''${IDRIS2_PREFIX-"$HOME/.idris2"}' \ --suffix IDRIS2_LIBS ':' "$out/${name}/lib" \ --suffix IDRIS2_DATA ':' "$out/${name}/support" \ - --suffix IDRIS2_PATH ':' "${additionalIdris2Paths}" \ - --suffix ${if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH"} ':' "$out/${name}/lib" + --suffix IDRIS2_PACKAGE_PATH ':' "${globalLibrariesPath}" \ + --suffix DYLD_LIBRARY_PATH ':' "$out/${name}/lib" \ + --suffix LD_LIBRARY_PATH ':' "$out/${name}/lib" ''; # Run package tests |