diff options
author | Shea Levy <shea@shealevy.com> | 2018-02-15 10:11:45 -0500 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2018-02-15 10:11:45 -0500 |
commit | 017154391b4a2a4e418640d3a7677274fe981dc9 (patch) | |
tree | 4b9c8082bc2cd0167f7544b86d15fb7aa5155f79 /pkgs | |
parent | 8d7b069ea68464e3e0c5469f84a015967b100f51 (diff) | |
parent | 947e7d80b41d9dea1739c23bf512f26d1c30703b (diff) | |
download | nixlib-017154391b4a2a4e418640d3a7677274fe981dc9.tar nixlib-017154391b4a2a4e418640d3a7677274fe981dc9.tar.gz nixlib-017154391b4a2a4e418640d3a7677274fe981dc9.tar.bz2 nixlib-017154391b4a2a4e418640d3a7677274fe981dc9.tar.lz nixlib-017154391b4a2a4e418640d3a7677274fe981dc9.tar.xz nixlib-017154391b4a2a4e418640d3a7677274fe981dc9.tar.zst nixlib-017154391b4a2a4e418640d3a7677274fe981dc9.zip |
Merge branch 'idris-packaging' of git://github.com/mpickering/nixpkgs
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 | 45 | ||||
-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/idris-wrapper.nix | 3 | ||||
-rw-r--r-- | pkgs/development/idris-modules/lightyear.nix | 9 | ||||
-rw-r--r-- | pkgs/development/idris-modules/setup-hook.sh | 16 | ||||
-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 |
10 files changed, 95 insertions, 108 deletions
diff --git a/pkgs/development/idris-modules/build-builtin-package.nix b/pkgs/development/idris-modules/build-builtin-package.nix index 6de3f8b16669..44efa97a5319 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 0048634f5b45..0416e76afa9e 100644 --- a/pkgs/development/idris-modules/build-idris-package.nix +++ b/pkgs/development/idris-modules/build-idris-package.nix @@ -1,23 +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 ({ - buildPhase = '' - idris --build *.ipkg +{ 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" ''; - doCheck = true; + buildPhase = '' + ${idris-with-packages}/bin/idris --build *.ipkg + ''; checkPhase = '' if grep -q test *.ipkg; then - idris --testpkg *.ipkg + ${idris-with-packages}/bin/idris --testpkg *.ipkg fi ''; installPhase = '' - idris --install *.ipkg --ibcsubdir $IBCSUBDIR + ${idris-with-packages}/bin/idris --install *.ipkg --ibcsubdir $out/libs ''; - buildInputs = [ gmp idris ]; -} // args) + buildInputs = [ gmp ] ++ extraBuildInputs; + + propagatedBuildInputs = idrisDeps; +}) diff --git a/pkgs/development/idris-modules/default.nix b/pkgs/development/idris-modules/default.nix index 16f6c65b094a..35ee20e96224 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 ec41956b9634..13c33d04da51 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/idris-wrapper.nix b/pkgs/development/idris-modules/idris-wrapper.nix index 155098a46252..fcd02c4da246 100644 --- a/pkgs/development/idris-modules/idris-wrapper.nix +++ b/pkgs/development/idris-modules/idris-wrapper.nix @@ -10,8 +10,5 @@ symlinkJoin { wrapProgram $out/bin/idris \ --suffix PATH : ${ stdenv.lib.makeBinPath path } \ --suffix LIBRARY_PATH : ${stdenv.lib.makeLibraryPath lib} - - mkdir -p $out/nix-support - substituteAll ${./setup-hook.sh} $out/nix-support/setup-hook ''; } diff --git a/pkgs/development/idris-modules/lightyear.nix b/pkgs/development/idris-modules/lightyear.nix index 27828e6f41f6..e217e76e2a78 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/setup-hook.sh b/pkgs/development/idris-modules/setup-hook.sh deleted file mode 100644 index 30a487ea80d4..000000000000 --- a/pkgs/development/idris-modules/setup-hook.sh +++ /dev/null @@ -1,16 +0,0 @@ -# Library import path -export IDRIS_LIBRARY_PATH=$PWD/idris-libs -mkdir -p $IDRIS_LIBRARY_PATH - -# Library install path -export IBCSUBDIR=$out/lib/@name@ -mkdir -p $IBCSUBDIR - -addIdrisLibs () { - if [ -d $1/lib/@name@ ]; then - ln -sv $1/lib/@name@/* $IDRIS_LIBRARY_PATH - fi -} - -# All run-time deps -addEnvHooks 1 addIdrisLibs diff --git a/pkgs/development/idris-modules/specdris.nix b/pkgs/development/idris-modules/specdris.nix index e6ca49aa489a..e20af3752371 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 d4638670f699..1631555eee4a 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 12e9b28d81c0..7e6d77a19a21 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"; |