forked from mirrors/nixpkgs
commit
f7294c8df6
21
pkgs/development/compilers/pakcs/adjust-buildsystem.patch
Normal file
21
pkgs/development/compilers/pakcs/adjust-buildsystem.patch
Normal file
|
@ -0,0 +1,21 @@
|
|||
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
|
156
pkgs/development/compilers/pakcs/default.nix
Normal file
156
pkgs/development/compilers/pakcs/default.nix
Normal file
|
@ -0,0 +1,156 @@
|
|||
{ stdenv, fetchurl, swiProlog, haskellPackages
|
||||
, glibcLocales, makeWrapper, rlwrap, tk, which }:
|
||||
|
||||
let
|
||||
fname = "pakcs-1.14.0";
|
||||
|
||||
fsrc = fetchurl {
|
||||
url = "http://www.informatik.uni-kiel.de/~pakcs/download/${fname}-src.tar.gz";
|
||||
sha256 = "1651ssh4ql79x8asd7kp4yis2n5rhn3lml4s26y03b0cgbfhs78s";
|
||||
};
|
||||
|
||||
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";
|
||||
};
|
||||
});
|
||||
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
name = fname;
|
||||
|
||||
curryBase = haskellPackages.callPackage (
|
||||
{ mkDerivation, base, Cabal, containers, directory, either
|
||||
, filepath, mtl, pretty, stdenv, 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, stdenv, 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 ];
|
||||
|
||||
configurePhase = ''
|
||||
# Phony HOME.
|
||||
mkdir phony-home
|
||||
export HOME=$(pwd)/phony-home
|
||||
|
||||
# SWI Prolog
|
||||
sed -i 's@SWIPROLOG=@SWIPROLOG='${swiPrologLocked}/bin/swipl'@' scripts/pakcsinitrc.sh
|
||||
'';
|
||||
|
||||
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.
|
||||
cp -r * $out/pakcs
|
||||
(cd $out/pakcs ; make)
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
# Install bin.
|
||||
mkdir -p $out/bin
|
||||
for b in $(ls $out/pakcs/bin) ; do
|
||||
ln -s $out/pakcs/bin/$b $out/bin/ ;
|
||||
done
|
||||
|
||||
# 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
|
||||
|
||||
# Wrap for rlwrap and tk support.
|
||||
wrapProgram $out/pakcs/bin/pakcs \
|
||||
--prefix PATH ":" "${rlwrap}/bin" \
|
||||
--prefix PATH ":" "${tk}/bin" \
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = "http://www.informatik.uni-kiel.de/~pakcs/";
|
||||
description = "An implementation of the multi-paradigm declarative language Curry";
|
||||
license = stdenv.lib.licenses.bsd3;
|
||||
|
||||
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).
|
||||
'';
|
||||
|
||||
maintainers = [ stdenv.lib.maintainers.gnidorah ];
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
};
|
||||
}
|
|
@ -3038,6 +3038,8 @@ in
|
|||
nix = nixUnstable;
|
||||
};
|
||||
|
||||
pakcs = callPackage ../development/compilers/pakcs {};
|
||||
|
||||
pal = callPackage ../tools/misc/pal { };
|
||||
|
||||
pandoc = haskell.lib.overrideCabal haskellPackages.pandoc (drv: {
|
||||
|
|
Loading…
Reference in a new issue