diff options
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/development/idris-modules/build-builtin-package.nix | 12 | ||||
-rw-r--r-- | pkgs/development/idris-modules/build-idris-package.nix | 60 | ||||
-rw-r--r-- | pkgs/development/idris-modules/default.nix | 31 | ||||
-rw-r--r-- | pkgs/development/idris-modules/httpclient.nix | 14 | ||||
-rw-r--r-- | pkgs/development/idris-modules/lightyear.nix | 9 | ||||
-rw-r--r-- | pkgs/development/idris-modules/specdris.nix | 20 | ||||
-rw-r--r-- | pkgs/development/idris-modules/with-packages.nix | 48 | ||||
-rw-r--r-- | pkgs/development/idris-modules/wl-pprint.nix | 5 |
8 files changed, 93 insertions, 106 deletions
diff --git a/pkgs/development/idris-modules/build-builtin-package.nix b/pkgs/development/idris-modules/build-builtin-package.nix index 6de3f8b1666..44efa97a531 100644 --- a/pkgs/development/idris-modules/build-builtin-package.nix +++ b/pkgs/development/idris-modules/build-builtin-package.nix @@ -1,4 +1,4 @@ -# Build one of the packages that come with idris +# Build one of the packages that comes with idris # name: The name of the package # deps: The dependencies of the package { idris, build-idris-package, lib }: name: deps: @@ -6,20 +6,16 @@ let inherit (builtins.parseDrvName idris.name) version; in build-idris-package { - name = "${name}-${version}"; - - propagatedBuildInputs = deps; + inherit name version; inherit (idris) src; + idrisDeps = deps; + postUnpack = '' sourceRoot=$sourceRoot/libs/${name} ''; - postPatch = '' - sed -i ${name}.ipkg -e "/^opts/ s|-i \\.\\./|-i $IDRIS_LIBRARY_PATH/|g" - ''; - meta = idris.meta // { description = "${name} builtin Idris library"; }; diff --git a/pkgs/development/idris-modules/build-idris-package.nix b/pkgs/development/idris-modules/build-idris-package.nix index 66eddd0e360..0416e76afa9 100644 --- a/pkgs/development/idris-modules/build-idris-package.nix +++ b/pkgs/development/idris-modules/build-idris-package.nix @@ -1,42 +1,46 @@ # Build an idris package -# -# args: Additional arguments to pass to mkDerivation. Generally should include at least -# name and src. -{ stdenv, idris, gmp }: args: stdenv.mkDerivation ({ - preHook = '' - # Library import path - export IDRIS_LIBRARY_PATH=$PWD/idris-libs - mkdir -p $IDRIS_LIBRARY_PATH - - # Library install path - export IBCSUBDIR=$out/lib/${idris.name} - mkdir -p $IBCSUBDIR - - addIdrisLibs () { - if [ -d $1/lib/${idris.name} ]; then - ln -sv $1/lib/${idris.name}/* $IDRIS_LIBRARY_PATH - fi - } - - # All run-time deps - addEnvHooks 0 addIdrisLibs +{ stdenv, idrisPackages, gmp }: + { idrisDeps ? [] + , name + , version + , src + , meta + , extraBuildInputs ? [] + , postUnpack ? "" + , doCheck ? true + }: +let + idris-with-packages = idrisPackages.with-packages idrisDeps; +in +stdenv.mkDerivation ({ + + name = "${name}-${version}"; + + inherit postUnpack src doCheck meta; + + + # Some packages use the style + # opts = -i ../../path/to/package + # rather than the declarative pkgs attribute so we have to rewrite the path. + postPatch = '' + sed -i *.ipkg -e "/^opts/ s|-i \\.\\./|-i ${idris-with-packages}/libs/|g" ''; buildPhase = '' - ${idris}/bin/idris --build *.ipkg + ${idris-with-packages}/bin/idris --build *.ipkg ''; - doCheck = true; - checkPhase = '' if grep -q test *.ipkg; then - ${idris}/bin/idris --testpkg *.ipkg + ${idris-with-packages}/bin/idris --testpkg *.ipkg fi ''; installPhase = '' - ${idris}/bin/idris --install *.ipkg --ibcsubdir $IBCSUBDIR + ${idris-with-packages}/bin/idris --install *.ipkg --ibcsubdir $out/libs ''; - buildInputs = [ gmp ]; -} // args) + buildInputs = [ gmp ] ++ extraBuildInputs; + + propagatedBuildInputs = idrisDeps; +}) diff --git a/pkgs/development/idris-modules/default.nix b/pkgs/development/idris-modules/default.nix index 16f6c65b094..35ee20e9622 100644 --- a/pkgs/development/idris-modules/default.nix +++ b/pkgs/development/idris-modules/default.nix @@ -25,14 +25,8 @@ pruviloj = [ self.prelude self.base ]; }; - files = builtins.filter (n: n != "default") (pkgs.lib.mapAttrsToList (name: type: let - m = builtins.match "(.*)\\.nix" name; - in if m == null then "default" else builtins.head m) (builtins.readDir ./.)); - in (builtins.listToAttrs (map (name: { - inherit name; - - value = callPackage (./. + "/${name}.nix") {}; - }) files)) // { + in + { inherit idris-no-deps callPackage; # See #10450 about why we have to wrap the executable idris = @@ -40,7 +34,28 @@ idris-no-deps { path = [ pkgs.gcc ]; lib = [pkgs.gmp]; }; + + with-packages = callPackage ./with-packages.nix {} ; + + build-builtin-package = callPackage ./build-builtin-package.nix {}; + + build-idris-package = callPackage ./build-idris-package.nix {}; + + # Libraries + # A list of all of the libraries that come with idris builtins = pkgs.lib.mapAttrsToList (name: value: value) builtins_; + + httpclient = callPackage ./httpclient.nix {}; + + lightyear = callPackage ./lightyear.nix {}; + + optparse = callPackage ./optparse.nix {}; + + wl-pprint = callPackage ./wl-pprint.nix {}; + + specdris = callPackage ./specdris.nix {}; + + } // builtins_; in fix' (extends overrides idrisPackages) diff --git a/pkgs/development/idris-modules/httpclient.nix b/pkgs/development/idris-modules/httpclient.nix index ec41956b963..13c33d04da5 100644 --- a/pkgs/development/idris-modules/httpclient.nix +++ b/pkgs/development/idris-modules/httpclient.nix @@ -1,17 +1,20 @@ -{ pkgs +{ curl , build-idris-package , fetchFromGitHub , lightyear , contrib +, effects +, prelude +, base , lib , idris }: let - date = "2016-12-20"; in build-idris-package { - name = "httpclient-${date}"; + name = "httpclient"; + version = "2016-12-20"; src = fetchFromGitHub { owner = "justjoheinz"; @@ -20,11 +23,14 @@ build-idris-package { sha256 = "0sy0q7gri9lwbqdmx9720pby3w1470w7wzn62bf2rir532219hhl"; }; - propagatedBuildInputs = [ pkgs.curl lightyear contrib ]; + idrisDeps = [ prelude base effects lightyear contrib ]; + + extraBuildInputs = [ curl ]; meta = { description = "HTTP Client for Idris"; homepage = https://github.com/justjoheinz/idris-httpclient; inherit (idris.meta) platforms; + broken = true; }; } diff --git a/pkgs/development/idris-modules/lightyear.nix b/pkgs/development/idris-modules/lightyear.nix index 27828e6f41f..e217e76e2a7 100644 --- a/pkgs/development/idris-modules/lightyear.nix +++ b/pkgs/development/idris-modules/lightyear.nix @@ -10,8 +10,11 @@ let date = "2017-09-10"; in -build-idris-package { - name = "lightyear-${date}"; +build-idris-package { + name = "lightyear"; + version = date; + + idrisDeps = [ prelude base effects ]; src = fetchFromGitHub { owner = "ziman"; @@ -20,8 +23,6 @@ build-idris-package { sha256 = "05x66abhpbdm6yr0afbwfk6w04ysdk78gylj5alhgwhy4jqakv29"; }; - propagatedBuildInputs = [ prelude base effects ]; - meta = { description = "Parser combinators for Idris"; homepage = https://github.com/ziman/lightyear; diff --git a/pkgs/development/idris-modules/specdris.nix b/pkgs/development/idris-modules/specdris.nix index e6ca49aa489..e20af375237 100644 --- a/pkgs/development/idris-modules/specdris.nix +++ b/pkgs/development/idris-modules/specdris.nix @@ -11,7 +11,8 @@ let date = "2017-11-11"; in build-idris-package { - name = "specdris-${date}"; + name = "specdris"; + version = date; src = fetchgit { url = "https://github.com/pheymann/specdris"; @@ -19,21 +20,10 @@ build-idris-package { sha256 = "4813c4be1d4c3dd1dad35964b085f83cf9fb44b16824257c72b468d4bafd0e4f"; }; - propagatedBuildInputs = [ prelude base effects ]; + idrisDeps = [ prelude base effects idris ]; - buildPhase = '' - ${idris}/bin/idris --build specdris.ipkg - ''; - - checkPhase = '' - cd test/ - ${idris}/bin/idris --testpkg test.ipkg - cd ../ - ''; - - installPhase = '' - ${idris}/bin/idris --install specdris.ipkg --ibcsubdir $IBCSUBDIR - ''; + # The tests attribute is very strange as the tests are a different ipkg + doCheck = false; meta = { description = "A testing library for Idris"; diff --git a/pkgs/development/idris-modules/with-packages.nix b/pkgs/development/idris-modules/with-packages.nix index d4638670f69..1631555eee4 100644 --- a/pkgs/development/idris-modules/with-packages.nix +++ b/pkgs/development/idris-modules/with-packages.nix @@ -1,46 +1,20 @@ # Build a version of idris with a set of packages visible # packages: The packages visible to idris -{ stdenv, idris }: packages: stdenv.mkDerivation { - inherit (idris) name; +{ stdenv, idris, symlinkJoin, makeWrapper }: packages: - buildInputs = packages; +let paths = stdenv.lib.closePropagation packages; +in +symlinkJoin { - preHook = '' - mkdir -p $out/lib/${idris.name} + name = idris.name + "-with-packages"; - installIdrisLib () { - if [ -d $1/lib/${idris.name} ]; then - ln -fsv $1/lib/${idris.name}/* $out/lib/${idris.name} - fi - } + paths = paths ++ [idris] ; - envHostTargetHooks+=(installIdrisLib) - ''; + buildInputs = [ makeWrapper ]; - unpackPhase = '' - cat >idris.c <<EOF - #include <stdlib.h> - #include <unistd.h> - #include <stdio.h> + postBuild = '' + wrapProgram $out/bin/idris \ + --set IDRIS_LIBRARY_PATH $out/libs + ''; - int main (int argc, char ** argv) { - /* idris currently only supports a single library path, so respect it if the user set it */ - setenv("IDRIS_LIBRARY_PATH", "$out/lib/${idris.name}", 0); - execv("${idris}/bin/idris", argv); - perror("executing ${idris}/bin/idris"); - return 127; - } - EOF - ''; - - buildPhase = '' - $CC -O3 -o idris idris.c - ''; - - installPhase = '' - mkdir -p $out/bin - mv idris $out/bin - ''; - - stripAllList = [ "bin" ]; } diff --git a/pkgs/development/idris-modules/wl-pprint.nix b/pkgs/development/idris-modules/wl-pprint.nix index 12e9b28d81c..7e6d77a19a2 100644 --- a/pkgs/development/idris-modules/wl-pprint.nix +++ b/pkgs/development/idris-modules/wl-pprint.nix @@ -6,7 +6,8 @@ , idris }: build-idris-package { - name = "wl-pprint-2016-09-28"; + pkName = "wl-pprint"; + version = "2016-09-28"; src = fetchFromGitHub { owner = "shayan-najd"; @@ -19,7 +20,7 @@ build-idris-package { # updating this package again. doCheck = false; - propagatedBuildInputs = [ prelude base ]; + idrisDeps = [ prelude base ]; meta = { description = "Wadler-Leijen pretty-printing library"; |