nixpkgs/pkgs/development/compilers/chicken/default.nix

77 lines
2.3 KiB
Nix
Raw Normal View History

2014-10-17 15:26:36 +00:00
{ stdenv, fetchurl, makeWrapper, bootstrap-chicken ? null }:
2013-03-26 14:52:54 +00:00
let
2014-06-19 10:04:20 +00:00
version = "4.9.0.1";
platform = with stdenv;
if isDarwin then "macosx"
else if isCygwin then "cygwin"
else if isBSD then "bsd"
else if isSunOS then "solaris"
else "linux"; # Should be a sane default
2014-10-09 18:49:15 +00:00
lib = stdenv.lib;
in
stdenv.mkDerivation {
name = "chicken-${version}";
2014-10-09 18:49:15 +00:00
binaryVersion = 7;
2014-06-02 16:15:44 +00:00
src = fetchurl {
url = "http://code.call-cc.org/releases/4.9.0/chicken-${version}.tar.gz";
2014-06-19 10:04:20 +00:00
sha256 = "0598mar1qswfd8hva9nqs88zjn02lzkqd8fzdd21dz1nki1prpq4";
2014-06-02 16:15:44 +00:00
};
2013-03-26 14:52:54 +00:00
2014-10-09 18:49:15 +00:00
setupHook = lib.ifEnable (bootstrap-chicken != null) ./setup-hook.sh;
buildFlags = "PLATFORM=${platform} PREFIX=$(out) VARDIR=$(out)/var/lib";
installFlags = "PLATFORM=${platform} PREFIX=$(out) VARDIR=$(out)/var/lib";
# We need a bootstrap-chicken to regenerate the c-files after
# applying a patch to add support for CHICKEN_REPOSITORY_EXTRA
2014-10-09 18:49:15 +00:00
patches = lib.ifEnable (bootstrap-chicken != null) [
./0001-Introduce-CHICKEN_REPOSITORY_EXTRA.patch
];
2014-10-17 15:26:36 +00:00
buildInputs = [
makeWrapper
] ++ (lib.ifEnable (bootstrap-chicken != null) [
bootstrap-chicken
2014-10-17 15:26:36 +00:00
]);
2014-10-09 18:49:15 +00:00
preBuild = lib.ifEnable (bootstrap-chicken != null) ''
# Backup the build* files - those are generated from hostname,
# git-tag, etc. and we don't need/want that
mkdir -p build-backup
mv buildid buildbranch buildtag.h build-backup
# Regenerate eval.c after the patch
make spotless $buildFlags
mv build-backup/* .
'';
2014-10-17 15:26:36 +00:00
postInstall = ''
for f in $out/bin/*
do
wrapProgram $f \
--prefix PATH : ${stdenv.gcc}/bin
done
'';
2014-10-09 18:49:15 +00:00
# TODO: Assert csi -R files -p '(pathname-file (repository-path))' == binaryVersion
meta = {
homepage = http://www.call-cc.org/;
license = stdenv.lib.licenses.bsd3;
maintainers = with stdenv.lib.maintainers; [ the-kenny ];
platforms = with stdenv.lib.platforms; allBut darwin;
description = "A portable compiler for the Scheme programming language";
longDescription = ''
CHICKEN is a compiler for the Scheme programming language.
CHICKEN produces portable and efficient C, supports almost all
of the R5RS Scheme language standard, and includes many
enhancements and extensions. CHICKEN runs on Linux, MacOS X,
Windows, and many Unix flavours.
'';
};
2013-03-26 14:52:54 +00:00
}