From 0186ec73291fd009c05294126cc097fb757ec509 Mon Sep 17 00:00:00 2001 From: gnidorah Date: Sun, 22 Jul 2018 18:07:29 +0300 Subject: pakcs: 1.14.0 -> 2.0.2 --- .../compilers/pakcs/adjust-buildsystem.patch | 21 --- .../compilers/pakcs/case-insensitive.patch | 19 --- pkgs/development/compilers/pakcs/curry-base.nix | 16 ++ .../development/compilers/pakcs/curry-frontend.nix | 24 +++ pkgs/development/compilers/pakcs/default.nix | 167 ++++++--------------- 5 files changed, 90 insertions(+), 157 deletions(-) delete mode 100644 pkgs/development/compilers/pakcs/adjust-buildsystem.patch delete mode 100644 pkgs/development/compilers/pakcs/case-insensitive.patch create mode 100644 pkgs/development/compilers/pakcs/curry-base.nix create mode 100644 pkgs/development/compilers/pakcs/curry-frontend.nix (limited to 'pkgs/development/compilers/pakcs') 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; }; } -- cgit 1.4.1