nixpkgs/pkgs/development/interpreters/racket/default.nix

124 lines
3.4 KiB
Nix
Raw Normal View History

{ lib, stdenv, fetchurl, makeFontsConf
, cacert
2015-01-24 16:02:23 +00:00
, cairo, coreutils, fontconfig, freefont_ttf
, glib, gmp
, gtk3
, libedit, libffi
, libiconv
, libGL
, libGLU
, libjpeg
2021-09-21 07:14:13 +00:00
, xorg
2021-02-14 16:40:00 +00:00
, ncurses
2017-03-07 20:08:02 +00:00
, libpng, libtool, mpfr, openssl, pango, poppler
2015-01-24 16:02:23 +00:00
, readline, sqlite
2017-11-12 09:12:29 +00:00
, disableDocs ? false
, CoreFoundation
, gsettings-desktop-schemas
, wrapGAppsHook
2015-01-24 16:02:23 +00:00
}:
let
fontsConf = makeFontsConf {
fontDirectories = [ freefont_ttf ];
};
libPath = lib.makeLibraryPath [
2015-01-24 16:02:23 +00:00
cairo
fontconfig
glib
gmp
gtk3
gsettings-desktop-schemas
2017-03-07 20:08:02 +00:00
libedit
libGL
libGLU
2015-01-24 16:02:23 +00:00
libjpeg
libpng
mpfr
openssl
pango
poppler
readline
sqlite
];
in
stdenv.mkDerivation rec {
pname = "racket";
2021-11-07 01:05:10 +00:00
version = "8.3"; # always change at once with ./minimal.nix
src = (lib.makeOverridable ({ name, sha256 }:
2019-08-13 21:52:01 +00:00
fetchurl {
url = "https://mirror.racket-lang.org/installers/${version}/${name}-src.tgz";
inherit sha256;
}
)) {
name = "${pname}-${version}";
2021-11-07 01:05:10 +00:00
sha256 = "sha256-M90MIIRsfF/fhK8twlD3ZRBO0ztQkb4VKp9o8eJUFFc=";
};
2015-01-24 16:02:23 +00:00
FONTCONFIG_FILE = fontsConf;
LD_LIBRARY_PATH = libPath;
NIX_LDFLAGS = lib.concatStringsSep " " [
(lib.optionalString (stdenv.cc.isGNU && ! stdenv.isDarwin) "-lgcc_s")
(lib.optionalString stdenv.isDarwin "-framework CoreFoundation")
];
nativeBuildInputs = [ cacert wrapGAppsHook ];
buildInputs = [ fontconfig libffi libtool sqlite gsettings-desktop-schemas gtk3 ]
2021-02-14 16:40:00 +00:00
++ lib.optionals stdenv.isDarwin [ libiconv CoreFoundation ncurses ];
patches = [
# Hardcode variant detection because we wrap the Racket binary making it
# fail to detect its variant at runtime.
# See: https://github.com/NixOS/nixpkgs/issues/114993#issuecomment-812951247
./force-cs-variant.patch
];
preConfigure = ''
2017-08-26 19:12:07 +00:00
unset AR
2021-02-14 16:37:25 +00:00
for f in src/lt/configure src/cs/c/configure src/bc/src/string.c src/ChezScheme/workarea; do
substituteInPlace "$f" \
--replace /usr/bin/uname ${coreutils}/bin/uname \
--replace /bin/cp ${coreutils}/bin/cp \
--replace /bin/ln ${coreutils}/bin/ln \
--replace /bin/rm ${coreutils}/bin/rm \
--replace /bin/true ${coreutils}/bin/true
done
2015-01-24 16:02:23 +00:00
mkdir src/build
cd src/build
gappsWrapperArgs+=("--prefix" "LD_LIBRARY_PATH" ":" ${LD_LIBRARY_PATH})
'';
2017-08-26 19:12:07 +00:00
shared = if stdenv.isDarwin then "dylib" else "shared";
2020-05-03 09:20:00 +00:00
configureFlags = [ "--enable-${shared}" "--enable-lt=${libtool}/bin/libtool" ]
++ lib.optional disableDocs [ "--disable-docs" ]
++ lib.optional stdenv.isDarwin [ "--enable-xonx" ];
2015-01-24 16:02:23 +00:00
configureScript = "../configure";
enableParallelBuilding = false;
2013-12-10 21:37:35 +00:00
meta = with lib; {
2014-11-13 19:29:44 +00:00
description = "A programmable programming language";
longDescription = ''
2014-11-13 19:29:44 +00:00
Racket is a full-spectrum programming language. It goes beyond
Lisp and Scheme with dialects that support objects, types,
laziness, and more. Racket enables programmers to link
components written in different dialects, and it empowers
programmers to create new, project-specific dialects. Racket's
libraries support applications from web servers and databases to
GUIs and charts.
'';
homepage = "https://racket-lang.org/";
license = with licenses; [ asl20 /* or */ mit ];
2016-07-25 04:03:35 +00:00
maintainers = with maintainers; [ kkallio henrytill vrthra ];
2020-03-16 14:23:31 +00:00
platforms = [ "x86_64-darwin" "x86_64-linux" "aarch64-linux" ];
};
}