forked from mirrors/nixpkgs
pakcs: reborn
This commit is contained in:
parent
98a750b4a8
commit
cb79662bf3
43
pkgs/development/compilers/pakcs/adjust-buildsystem.patch
Normal file
43
pkgs/development/compilers/pakcs/adjust-buildsystem.patch
Normal file
|
@ -0,0 +1,43 @@
|
|||
diff -Naur pakcs-1.11.4-upstream/Makefile pakcs-1.11.4/Makefile
|
||||
--- pakcs-1.11.4-upstream/Makefile 2014-10-24 05:12:37.000000000 -0430
|
||||
+++ pakcs-1.11.4/Makefile 2015-01-05 16:26:39.256709080 -0430
|
||||
@@ -94,7 +94,6 @@
|
||||
install: cleanoldinfos installscripts copylibs
|
||||
@echo "PAKCS installation configuration (file pakcsinitrc):"
|
||||
@cat pakcsinitrc
|
||||
- $(MAKE) frontend
|
||||
# pre-compile all libraries:
|
||||
@cd lib && $(MAKE) fcy
|
||||
# install the Curry2Prolog compiler as a saved system:
|
||||
@@ -145,10 +144,6 @@
|
||||
# compile the tools:
|
||||
.PHONY: tools
|
||||
tools:
|
||||
- # compile the Curry Port Name Server demon:
|
||||
- @if [ -r bin/pakcs ] ; then cd cpns && $(MAKE) ; fi
|
||||
- # compile the event handler demon for dynamic web pages:
|
||||
- @if [ -r bin/pakcs ] ; then cd www && $(MAKE) ; fi
|
||||
@if [ -r bin/pakcs ] ; then cd currytools && $(MAKE) ; fi
|
||||
@if [ -r bin/pakcs ] ; then cd tools && $(MAKE) ; fi
|
||||
|
||||
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
|
111
pkgs/development/compilers/pakcs/default.nix
Normal file
111
pkgs/development/compilers/pakcs/default.nix
Normal file
|
@ -0,0 +1,111 @@
|
|||
{ stdenv, fetchurl, cabal, swiProlog, either, mtl, syb
|
||||
, glibcLocales, makeWrapper, rlwrap, tk, which }:
|
||||
|
||||
let
|
||||
fname = "pakcs-1.11.4";
|
||||
|
||||
fsrc = fetchurl {
|
||||
url = "http://www.informatik.uni-kiel.de/~pakcs/download/${fname}-src.tar.gz";
|
||||
sha256 = "1xsn8h58pi1jp8wr4abyrqdps840j8limyv5i812z49npf91fy5c";
|
||||
};
|
||||
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
name = fname;
|
||||
|
||||
curryBase = cabal.mkDerivation(self: {
|
||||
pname = "curryBase";
|
||||
version = "local";
|
||||
src = fsrc;
|
||||
sourceRoot = "${name}/frontend/curry-base";
|
||||
isLibrary = true;
|
||||
buildDepends = [ mtl syb ];
|
||||
});
|
||||
|
||||
curryFront = cabal.mkDerivation(self: {
|
||||
pname = "curryFront";
|
||||
version = "local";
|
||||
src = fsrc;
|
||||
sourceRoot = "${name}/frontend/curry-frontend";
|
||||
isLibrary = true;
|
||||
isExecutable = true;
|
||||
buildDepends = [ either mtl syb curryBase ];
|
||||
});
|
||||
|
||||
src = fsrc;
|
||||
|
||||
buildInputs = [ swiProlog 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='${swiProlog}/bin/swipl'@' pakcsinitrc
|
||||
'';
|
||||
|
||||
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/
|
||||
|
||||
# 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/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.kkallio ];
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
hydraPlatforms = stdenv.lib.platforms.none;
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue