From efbee054fd2dca2b14c729cf73aca7246c56d9f2 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Fri, 27 Nov 2015 09:35:59 -0500 Subject: Add builtin idris packages to idrisPackages --- .../idris-modules/build-builtin-package.nix | 12 ++++++++ .../idris-modules/build-idris-package.nix | 34 ++++++++++++++++++++++ pkgs/development/idris-modules/default.nix | 24 +++++++++++++-- .../idris-modules/with-packages-wrapper.nix | 22 +++++++++----- 4 files changed, 82 insertions(+), 10 deletions(-) create mode 100644 pkgs/development/idris-modules/build-builtin-package.nix create mode 100644 pkgs/development/idris-modules/build-idris-package.nix (limited to 'pkgs') diff --git a/pkgs/development/idris-modules/build-builtin-package.nix b/pkgs/development/idris-modules/build-builtin-package.nix new file mode 100644 index 000000000000..9a6b99d15230 --- /dev/null +++ b/pkgs/development/idris-modules/build-builtin-package.nix @@ -0,0 +1,12 @@ +{ idris, buildIdrisPackage }: name: deps: buildIdrisPackage (args: { + inherit name; + + propagatedBuildInputs = deps; + + inherit (idris) src; + + postUnpack = '' + mv $sourceRoot/libs/${name} $IDRIS_LIBRARY_PATH + sourceRoot=$IDRIS_LIBRARY_PATH/${name} + ''; +}) diff --git a/pkgs/development/idris-modules/build-idris-package.nix b/pkgs/development/idris-modules/build-idris-package.nix new file mode 100644 index 000000000000..eecd7d585cf4 --- /dev/null +++ b/pkgs/development/idris-modules/build-idris-package.nix @@ -0,0 +1,34 @@ +{ stdenv, idris }: argf: let args = { + preHook = '' + mkdir idris-libs + export IDRIS_LIBRARY_PATH=$PWD/idris-libs + + addIdrisLibs () { + if [ -d $1/lib/${idris.name} ]; then + ln -sv $1/lib/${idris.name}/* $IDRIS_LIBRARY_PATH + fi + } + + envHooks+=(addIdrisLibs) + ''; + + configurePhase = '' + export TARGET=$out/lib/${idris.name} + ''; + + buildPhase = '' + ${idris}/bin/idris --build *.ipkg + ''; + + doCheck = true; + + checkPhase = '' + if grep -q test *.ipkg; then + ${idris}/bin/idris --testpkg *.ipkg + fi + ''; + + installPhase = '' + ${idris}/bin/idris --install *.ipkg + ''; +}; in stdenv.mkDerivation (args // (argf args)) diff --git a/pkgs/development/idris-modules/default.nix b/pkgs/development/idris-modules/default.nix index d07619724fe1..96e8b5b8ad9d 100644 --- a/pkgs/development/idris-modules/default.nix +++ b/pkgs/development/idris-modules/default.nix @@ -12,7 +12,27 @@ defaultScope = mkScope self; callPackage = callPackageWithScope defaultScope; + + buildBuiltinPackage = callPackage ./build-builtin-package.nix {}; + + builtins = pkgs.lib.mapAttrs buildBuiltinPackage { + prelude = []; + + base = [ self.prelude ]; + + contrib = [ self.prelude self.base ]; + + effects = [ self.prelude self.base ]; + + pruviloj = [ self.prelude self.base ]; + }; in { - withPackages = packages: callPackage ./with-packages-wrapper.nix { inherit packages idris; }; - }; + inherit idris; + + withPackages = callPackage ./with-packages-wrapper.nix {}; + + buildIdrisPackage = callPackage ./build-idris-package.nix {}; + + builtins = pkgs.lib.mapAttrsToList (name: value: value) builtins; + } // builtins; in fix' (extends overrides idrisPackages) diff --git a/pkgs/development/idris-modules/with-packages-wrapper.nix b/pkgs/development/idris-modules/with-packages-wrapper.nix index e55fd2c3324c..f8abe09fe877 100644 --- a/pkgs/development/idris-modules/with-packages-wrapper.nix +++ b/pkgs/development/idris-modules/with-packages-wrapper.nix @@ -1,7 +1,19 @@ -{ stdenv, idris, packages }: stdenv.mkDerivation { +{ stdenv, idris }: buildInputs: stdenv.mkDerivation { inherit (idris) name; - inherit packages; + inherit buildInputs; + + preHook = '' + mkdir -p $out/lib/${idris.name} + + installIdrisLib () { + if [ -d $1/lib/${idris.name} ]; then + ln -sv $1/lib/${idris.name}/* $out/lib/${idris.name} + fi + } + + envHooks+=(installIdrisLib) + ''; unpackPhase = '' cat >idris.c <