Add Concurrent Clean to NixPkgs.

svn path=/nixpkgs/trunk/; revision=25276
This commit is contained in:
Karn Kallio 2010-12-25 15:13:07 +00:00
parent 51d6c8df91
commit 801ce7d5fb
3 changed files with 69 additions and 0 deletions

View File

@ -0,0 +1,17 @@
The clean command line compiler clm checks modules for freshness by comparing timestamps.
However, in chroot builds all files installed have the same timestamp. This leads to clm
trying to rebuild the library modules distributed with the Clean install every time a user
compiles any file. This patch changes the freshness check to use less than instead of less
than or equal to in order to avoid this.
--- clean-upstream/src/tools/clm/clm.c 2010-12-10 06:12:17.000000000 -0430
+++ clean/src/tools/clm/clm.c 2010-12-25 10:29:09.840675925 -0430
@@ -250,7 +250,7 @@
|| (t1.dwHighDateTime==t2.dwHighDateTime && (unsigned)(t1.dwLowDateTime)<=(unsigned)(t2.dwLowDateTime)))
#else
typedef unsigned long FileTime;
-# define FILE_TIME_LE(t1,t2) (t1<=t2)
+# define FILE_TIME_LE(t1,t2) (t1<t2)
#endif
typedef struct project_node {

View File

@ -0,0 +1,50 @@
{ stdenv, fetchurl }:
stdenv.mkDerivation rec {
name = "clean-2.3";
src =
if stdenv.system == "i686-linux" then (fetchurl {
url = "http://clean.cs.ru.nl/download/Clean23/linux/clean2.3_boot.tar.gz";
sha256 = "0rrjpqdbqwbx7n8v35wi3wpm6lpv9zd1n5q50byb2h0ljqw31j9h";
})
else if stdenv.system == "x86_64-linux" then (fetchurl {
url = "http://clean.cs.ru.nl/download/Clean23/linux/clean2.3_64_boot.tar.gz";
sha256 = "0bvkaiwcaa1p6h1bl4bgnia1yd0j8nq6sb1yiwar74y2m1wwmjqj";
})
else throw "Architecture not supported";
# clm uses timestamps of dcl, icl, abc and o files to decide what must be rebuild
# and for chroot builds all of the library files will have equal timestamps. This
# makes clm try to rebuild the library modules (and fail due to absence of write permission
# on the Nix store) every time any file is compiled.
patches = [ ./chroot-build-support-do-not-rebuild-equal-timestamps.patch ];
preBuild = ''
substituteInPlace Makefile --replace 'INSTALL_DIR = $(CURRENTDIR)' 'INSTALL_DIR = '$out
substituteInPlace src/tools/clm/clm.c --replace '/usr/bin/gcc' $(type -p gcc)
substituteInPlace src/tools/clm/clm.c --replace '/usr/bin/as' $(type -p as)
cd src
'';
postBuild = ''
cd ..
'';
meta = {
description = "Clean is a general purpose, state-of-the-art, pure and lazy functional programming language.";
longDescription = ''
Clean is a general purpose, state-of-the-art, pure and lazy functional
programming language designed for making real-world applications. Some
of its most notable language features are uniqueness typing, dynamic typing,
and generic functions.
'';
homepage = http://wiki.clean.cs.ru.nl/Clean;
license = stdenv.lib.licenses.lgpl21;
maintainers = [ stdenv.lib.maintainers.kkallio ];
platforms = [ "i686-linux" "x86_64-linux" ];
};
}

View File

@ -1486,6 +1486,8 @@ let
buildClang = true;
};
clean = callPackage ../development/compilers/clean { };
cmucl_binary = callPackage ../development/compilers/cmucl/binary.nix { };
dylan = callPackage ../development/compilers/gwydion-dylan {