From 7df7521dd1d138261d0d0e052697edef23949ea9 Mon Sep 17 00:00:00 2001 From: Karn Kallio Date: Thu, 24 Mar 2011 19:22:30 +0000 Subject: [PATCH] Add the PAKCS (Portland Aachen Kiel Curry System) Curry compiler to Nixpkgs. svn path=/nixpkgs/trunk/; revision=26497 --- pkgs/development/compilers/pakcs/default.nix | 81 ++++++++++++++++++++ pkgs/top-level/haskell-packages.nix | 4 + 2 files changed, 85 insertions(+) create mode 100644 pkgs/development/compilers/pakcs/default.nix diff --git a/pkgs/development/compilers/pakcs/default.nix b/pkgs/development/compilers/pakcs/default.nix new file mode 100644 index 000000000000..8d1665844511 --- /dev/null +++ b/pkgs/development/compilers/pakcs/default.nix @@ -0,0 +1,81 @@ +{ stdenv, fetchurl, ghc, swiProlog, syb, mtl, makeWrapper, rlwrap, tk }: + +stdenv.mkDerivation rec { + pname = "pakcs"; + version = "1.9.2"; + name = "${pname}-${version}"; + + src = fetchurl { + url = "http://www.informatik.uni-kiel.de/~pakcs/download/pakcs_src.tar.gz"; + sha256 = "1sa6k4s5avn3qvica3a5zvb6q9vnawpp00zviqjwncwwd4a9bcwm"; + }; + + buildInputs = [ ghc swiProlog syb mtl makeWrapper rlwrap tk ]; + + prePatch = '' + # Remove copying pakcsrc into $HOME. + sed -i '/update-pakcsrc/d' Makefile + + # Remove copying pakcsinitrc into $HOME + sed -i '68d' configure-pakcs + ''; + + preConfigure = '' + # Path to GHC and SWI Prolog + sed -i 's@GHC=@GHC=${ghc}/bin/ghc@' bin/.pakcs_variables + sed -i 's@SWIPROLOG=@SWIPROLOG=${swiProlog}/bin/swipl@' bin/.pakcs_variables + ''; + + postInstall = '' + cp pakcsrc $out/ + cp update-pakcsrc $out/ + cp -r bin/ $out/ + cp -r cpns/ $out/ + cp -r curry2prolog/ $out/ + cp -r docs/ $out/ + cp -r examples/ $out/ + cp -r include/ $out/ + cp -r lib/ $out/ + cp -r mccparser/ $out/ + cp -r tools/ $out/ + cp -r www/ $out/ + + # The Prolog sources must be built in their final directory. + (cd $out/curry2prolog/ ; make) + + ensureDir $out/share/emacs/site-lisp/curry-pakcs + for e in $out/tools/emacs/*.el ; do + ln -s $out/tools/emacs/$e $out/share/emacs/site-lisp/curry-pakcs/; + done + + sed -i 's@which@type -P@' $out/bin/.pakcs_wrapper + + # Get the program name from the environment instead of the calling wrapper (for rlwrap). + sed -i 's@progname=`basename "$0"`@progname=$PAKCS_PROGNAME@' $out/bin/.pakcs_wrapper + + wrapProgram $out/bin/.pakcs_wrapper \ + --prefix PATH ":" "${rlwrap}/bin" \ + --prefix PATH ":" "${tk}/bin" \ + --run 'export PAKCS_PROGNAME=`basename "$0"`' + ''; + + meta = { + description = "PAKCS is an implementation of the multi-paradigm declarative language Curry."; + longDescription = '' + PAKCS is an implementation of the multi-paradigm declarative language + Curry jointly developed by the Portland State University, the Aachen + University of Technology, and the University of Kiel. Although this is + not a highly optimized implementation but based on a high-level + compilation of Curry programs into Prolog programs, it is not a toy + implementation but has been used for a variety of applications (e.g., + graphical programming environments, an object-oriented front-end for + Curry, partial evaluators, database applications, HTML programming + with dynamic web pages, prototyping embedded systems). + ''; + + homepage = http://www.informatik.uni-kiel.de/~pakcs/; + license = stdenv.lib.licenses.bsd3; + maintainers = [ stdenv.lib.maintainers.kkallio ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix index 402afe435d26..b4025e1c18d4 100644 --- a/pkgs/top-level/haskell-packages.nix +++ b/pkgs/top-level/haskell-packages.nix @@ -951,6 +951,10 @@ let result = let callPackage = x : y : modifyPrio (newScope result.final x y); idris = callPackage ../development/compilers/idris {}; + pakcs = callPackage ../development/compilers/pakcs { + syb = self.syb02; + }; + # Development tools. alex_2_3_1 = callPackage ../development/tools/parsing/alex/2.3.1.nix {};