about summary refs log tree commit diff
path: root/pkgs/development/compilers/pakcs
diff options
context:
space:
mode:
authorgnidorah <gnidorah@users.noreply.github.com>2018-07-22 18:07:29 +0300
committergnidorah <gnidorah@users.noreply.github.com>2018-07-22 18:49:29 +0300
commit0186ec73291fd009c05294126cc097fb757ec509 (patch)
tree5cb56c36f390a8a338596d6522a20cf2a7d1c3c9 /pkgs/development/compilers/pakcs
parent27af1633a497c49308bd008d510b0388b723656d (diff)
downloadnixlib-0186ec73291fd009c05294126cc097fb757ec509.tar
nixlib-0186ec73291fd009c05294126cc097fb757ec509.tar.gz
nixlib-0186ec73291fd009c05294126cc097fb757ec509.tar.bz2
nixlib-0186ec73291fd009c05294126cc097fb757ec509.tar.lz
nixlib-0186ec73291fd009c05294126cc097fb757ec509.tar.xz
nixlib-0186ec73291fd009c05294126cc097fb757ec509.tar.zst
nixlib-0186ec73291fd009c05294126cc097fb757ec509.zip
pakcs: 1.14.0 -> 2.0.2
Diffstat (limited to 'pkgs/development/compilers/pakcs')
-rw-r--r--pkgs/development/compilers/pakcs/adjust-buildsystem.patch21
-rw-r--r--pkgs/development/compilers/pakcs/case-insensitive.patch19
-rw-r--r--pkgs/development/compilers/pakcs/curry-base.nix16
-rw-r--r--pkgs/development/compilers/pakcs/curry-frontend.nix24
-rw-r--r--pkgs/development/compilers/pakcs/default.nix167
5 files changed, 90 insertions, 157 deletions
diff --git a/pkgs/development/compilers/pakcs/adjust-buildsystem.patch b/pkgs/development/compilers/pakcs/adjust-buildsystem.patch
deleted file mode 100644
index 2d1f92af81df..000000000000
--- a/pkgs/development/compilers/pakcs/adjust-buildsystem.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -Naur pakcs-1.11.4-upstream/scripts/pakcs.sh pakcs-1.11.4/scripts/pakcs.sh
---- pakcs-1.11.4-upstream/scripts/pakcs.sh	2014-10-24 05:06:07.000000000 -0430
-+++ pakcs-1.11.4/scripts/pakcs.sh	2015-01-05 16:26:15.697982791 -0430
-@@ -16,7 +16,7 @@
- # use readline wrapper rlwrap if it is installed and we have tty as stdin:
- USERLWRAP=no
- if tty -s ; then
--  RLWRAP=`which rlwrap`
-+  RLWRAP=`type -P rlwrap`
-   if [ -x "$RLWRAP" ] ; then
-     USERLWRAP=yes
-   fi
-@@ -29,7 +29,7 @@
- done
- 
- if [ $USERLWRAP = yes ] ; then
--  exec rlwrap -c -f "$PAKCSHOME/tools/rlwrap" "$REPL" ${1+"$@"}
-+  exec rlwrap -a -c -f "$PAKCSHOME/tools/rlwrap" "$REPL" ${1+"$@"}
- else
-   exec "$REPL" ${1+"$@"}
- fi
diff --git a/pkgs/development/compilers/pakcs/case-insensitive.patch b/pkgs/development/compilers/pakcs/case-insensitive.patch
deleted file mode 100644
index e46558c25208..000000000000
--- a/pkgs/development/compilers/pakcs/case-insensitive.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- www/Makefile.orig	2016-10-10 21:04:36.000000000 +0300
-+++ pakcs-1.14.0/www/Makefile	2016-10-10 21:07:56.000000000 +0300
-@@ -6,7 +6,7 @@ all: submitform Registry
- submitform: SubmitForm.curry $(LIBDIR)/HtmlCgi.curry \
- 	    $(LIBDIR)/NamedSocket.curry $(LIBDIR)/CPNS.curry
- 	$(REPL) $(REPL_OPTS) :load SubmitForm :save :q
--	mv SubmitForm submitform
-+	mv SubmitForm submitform.orig && mv submitform.orig submitform
- 
- Registry: Registry.curry $(LIBDIR)/HtmlCgi.curry
- 	$(REPL) $(REPL_OPTS) :load Registry :save :q
---- currytools/erd2curry/Makefile.orig	2016-10-10 21:13:49.000000000 +0300
-+++ pakcs-1.14.0/currytools/erd2curry/Makefile	2016-10-10 21:21:14.000000000 +0300
-@@ -32,4 +32,4 @@ uninstall: clean
- erd2curry: $(DEPS)
- 	# create saved state for top-level function "main":
- 	$(REPL) $(REPL_OPTS) :load ERD2Curry :save "main \"$(CURDIR)\"" :q
--	mv ERD2Curry $@
-+	mv ERD2Curry $@.orig && mv $@.orig $@
diff --git a/pkgs/development/compilers/pakcs/curry-base.nix b/pkgs/development/compilers/pakcs/curry-base.nix
new file mode 100644
index 000000000000..2d98699d2836
--- /dev/null
+++ b/pkgs/development/compilers/pakcs/curry-base.nix
@@ -0,0 +1,16 @@
+{ mkDerivation, base, Cabal, containers, directory, extra, filepath
+, mtl, parsec, pretty, stdenv, time, transformers
+}:
+mkDerivation {
+  pname = "curry-base";
+  version = "1.0.0";
+  src = ./.;
+  libraryHaskellDepends = [
+    base containers directory extra filepath mtl parsec pretty time
+    transformers
+  ];
+  testHaskellDepends = [ base Cabal filepath mtl ];
+  homepage = "http://curry-language.org";
+  description = "Functions for manipulating Curry programs";
+  license = stdenv.lib.licenses.bsd3;
+}
diff --git a/pkgs/development/compilers/pakcs/curry-frontend.nix b/pkgs/development/compilers/pakcs/curry-frontend.nix
new file mode 100644
index 000000000000..d94bef9ec7f5
--- /dev/null
+++ b/pkgs/development/compilers/pakcs/curry-frontend.nix
@@ -0,0 +1,24 @@
+{ mkDerivation, base, Cabal, containers, curry-base, directory
+, extra, filepath, mtl, network-uri, pretty, process, set-extra
+, stdenv, transformers
+}:
+mkDerivation {
+  pname = "curry-frontend";
+  version = "1.0.2";
+  src = ./.;
+  isLibrary = true;
+  isExecutable = true;
+  enableSeparateDataOutput = true;
+  libraryHaskellDepends = [
+    base containers curry-base directory extra filepath mtl network-uri
+    pretty process set-extra transformers
+  ];
+  executableHaskellDepends = [
+    base containers curry-base directory extra filepath mtl network-uri
+    pretty process set-extra transformers
+  ];
+  testHaskellDepends = [ base Cabal curry-base filepath ];
+  homepage = "http://curry-language.org";
+  description = "Compile the functional logic language Curry to several intermediate formats";
+  license = stdenv.lib.licenses.bsd3;
+}
diff --git a/pkgs/development/compilers/pakcs/default.nix b/pkgs/development/compilers/pakcs/default.nix
index 603882653480..52639667745a 100644
--- a/pkgs/development/compilers/pakcs/default.nix
+++ b/pkgs/development/compilers/pakcs/default.nix
@@ -1,139 +1,72 @@
-{ stdenv, fetchurl, swiProlog, haskellPackages
-, glibcLocales, makeWrapper, rlwrap, tk, which }:
+{ stdenv, fetchurl, makeWrapper
+, haskellPackages, haskell
+, which, swiProlog, rlwrap, tk
+, curl, git, unzip, gnutar, coreutils, sqlite }:
 
 let
-  fname = "pakcs-1.14.0";
+  name = "pakcs-2.0.2";
 
-  fsrc = fetchurl {
-    url = "https://www.informatik.uni-kiel.de/~pakcs/download/${fname}-src.tar.gz";
-    sha256 = "1651ssh4ql79x8asd7kp4yis2n5rhn3lml4s26y03b0cgbfhs78s";
+  src = fetchurl {
+    url = "https://www.informatik.uni-kiel.de/~pakcs/download/${name}-src.tar.gz";
+    sha256 = "0fdzw2zz5vs6z20jn6a8jfvpr6dp7fs1rr01cy0xjnzg2mgmn42a";
   };
 
-  swiPrologLocked = stdenv.lib.overrideDerivation swiProlog (oldAttrs: rec {
-    version = "6.6.6";
-    name = "swi-prolog-${version}";
-    src = fetchurl {
-      url = "http://www.swi-prolog.org/download/stable/src/pl-${version}.tar.gz";
-      sha256 = "0vcrfskm2hyhv30lxr6v261myb815jc3bgmcn1lgsc9g9qkvp04z";
+  curry-frontend = (haskellPackages.override {
+    overrides = self: super: {
+      curry-base = haskell.lib.overrideCabal (super.callPackage ./curry-base.nix {}) (drv: {
+        inherit src;
+        postUnpack = "sourceRoot+=/frontend/curry-base";
+      });
+      curry-frontend = haskell.lib.overrideCabal (super.callPackage ./curry-frontend.nix {}) (drv: {
+        inherit src;
+        postUnpack = "sourceRoot+=/frontend/curry-frontend";
+      });
     };
-  });
-
-in
-stdenv.mkDerivation rec {
-
-  name = fname;
-
-  curryBase = haskellPackages.callPackage (
-    { mkDerivation, base, Cabal, containers, directory, either
-    , filepath, mtl, pretty, syb, time
-    }:
-    mkDerivation {
-      pname = "curry-base";
-      version = "0.4.1";
-      src = fsrc;
-      libraryHaskellDepends = [
-        base containers directory either filepath mtl pretty syb time
-      ];
-      testHaskellDepends = [ base Cabal filepath mtl ];
-      homepage = http://curry-language.org;
-      description = "Functions for manipulating Curry programs";
-      license = "unknown";
-
-      postUnpack = ''
-        mv ${name} ${name}.orig
-        ln -s ${name}.orig/frontend/curry-base ${name}
-      '';
-      doCheck = false;
-    }
-  ) {};
-
-  curryFront = haskellPackages.callPackage (
-    { mkDerivation, base, Cabal, containers, directory
-    , filepath, mtl, network-uri, process, syb, transformers
-    }:
-    mkDerivation {
-      pname = "curry-frontend";
-      version = "0.4.1";
-      src = fsrc;
-      isLibrary = true;
-      isExecutable = true;
-      libraryHaskellDepends = [
-        base containers curryBase directory filepath mtl network-uri
-        process syb transformers
-      ];
-      executableHaskellDepends = [
-        base containers curryBase directory filepath mtl network-uri
-        process syb transformers
-      ];
-      testHaskellDepends = [ base Cabal curryBase filepath ];
-      homepage = http://curry-language.org;
-      description = "Compile the functional logic language Curry to several intermediate formats";
-      license = "unknown";
-
-      postUnpack = ''
-        mv ${name} ${name}.orig
-        ln -s ${name}.orig/frontend/curry-frontend ${name}
-      '';
-      doCheck = false;
-    }
-  ) {};
-
-  src = fsrc;
-
-  buildInputs = [ swiPrologLocked makeWrapper glibcLocales rlwrap tk which ];
-
-  patches = [
-    ./adjust-buildsystem.patch
-    ./case-insensitive.patch
+  }).curry-frontend;
+in stdenv.mkDerivation {
+  inherit name src;
+
+  buildInputs = [ swiProlog ];
+  nativeBuildInputs = [ which makeWrapper ];
+
+  makeFlags = [
+    "CURRYFRONTEND=${curry-frontend}/bin/curry-frontend"
+    "DISTPKGINSTALL=yes"
+    # Not needed, just to make script pass
+    "CURRYTOOLSDIR=0"
+    "CURRYLIBSDIR=0"
   ];
 
-  configurePhase = ''
-    # Phony HOME.
-    mkdir phony-home
-    export HOME=$(pwd)/phony-home
+  preConfigure = ''
+    # Since we can't expand $out in `makeFlags`
+    #makeFlags="$makeFlags PAKCSINSTALLDIR=$out/pakcs"
 
-    # SWI Prolog
-    sed -i 's@SWIPROLOG=@SWIPROLOG='${swiPrologLocked}/bin/swipl'@' scripts/pakcsinitrc.sh
+    substituteInPlace currytools/cpm/src/CPM/Repository.curry \
+      --replace "/bin/rm" "rm"
   '';
 
+  # cypm new: EXISTENCE ERROR: source_sink
+  # "/tmp/nix-build-pakcs-2.0.2.drv-0/pakcs-2.0.2/currytools/cpm/templates/LICENSE"
+  # does not exist
   buildPhase = ''
-    # Some comments in files are in UTF-8, so include the locale needed by GHC runtime.
-    export LC_ALL=en_US.UTF-8
-
-    # PAKCS must be build in place due to embedded filesystem references placed by swi.
-
-    # Prepare PAKCSHOME directory.
-    mkdir -p $out/pakcs/bin
-
-    # Set up link to cymake, which has been built already.
-    ln -s ${curryFront}/bin/cymake $out/pakcs/bin/
-    rm -r frontend
-
-    # Prevent embedding the derivation build directory as temp.
-    export TEMP=/tmp
-
-    # Copy to in place build location and run the build.
+    mkdir -p $out/pakcs
     cp -r * $out/pakcs
-    (cd $out/pakcs ; make)
+    (cd $out/pakcs ; make -j$NIX_BUILD_CORES $makeFlags)
   '';
 
   installPhase = ''
-    # Install bin.
-    mkdir -p $out/bin
-    for b in $(ls $out/pakcs/bin) ; do
-      ln -s $out/pakcs/bin/$b $out/bin/ ;
-    done
+    ln -s $out/pakcs/bin $out
 
-    # Place emacs lisp files in expected locations.
-    mkdir -p $out/share/emacs/site-lisp/curry-pakcs
-    for e in "$out/pakcs/tools/emacs/"*.el ; do
-      cp $e $out/share/emacs/site-lisp/curry-pakcs/ ;
-    done
+    mkdir -p $out/share/emacs/site-lisp
+    ln -s $out/pakcs/tools/emacs $out/share/emacs/site-lisp/curry-pakcs
 
-    # Wrap for rlwrap and tk support.
     wrapProgram $out/pakcs/bin/pakcs \
       --prefix PATH ":" "${rlwrap}/bin" \
-      --prefix PATH ":" "${tk}/bin" \
+      --prefix PATH ":" "${tk}/bin"
+
+    # List of dependencies from currytools/cpm/src/CPM/Main.curry
+    wrapProgram $out/pakcs/bin/cypm \
+      --prefix PATH ":" "${stdenv.lib.makeBinPath [ curl git unzip gnutar coreutils sqlite ]}"
   '';
 
   meta = with stdenv.lib; {
@@ -154,6 +87,6 @@ stdenv.mkDerivation rec {
     '';
 
     maintainers = with maintainers; [ kkallio gnidorah ];
-    platforms = platforms.unix;
+    platforms = platforms.linux;
   };
 }