From f7822885f8adaffc3e2e700d51f02666d708d356 Mon Sep 17 00:00:00 2001 From: Alexander Tomokhov Date: Sat, 20 Nov 2021 00:16:45 +0300 Subject: [PATCH] racket_7_9: init at 7.9 --- .../interpreters/racket/racket_7_9.nix | 111 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 + 2 files changed, 115 insertions(+) create mode 100644 pkgs/development/interpreters/racket/racket_7_9.nix diff --git a/pkgs/development/interpreters/racket/racket_7_9.nix b/pkgs/development/interpreters/racket/racket_7_9.nix new file mode 100644 index 000000000000..8d33962f914c --- /dev/null +++ b/pkgs/development/interpreters/racket/racket_7_9.nix @@ -0,0 +1,111 @@ +{ lib, stdenv, fetchurl, makeFontsConf +, cacert +, cairo, coreutils, fontconfig, freefont_ttf +, glib, gmp +, gtk3 +, libedit, libffi +, libiconv +, libGL +, libGLU +, libjpeg +, libpng, libtool, mpfr, openssl, pango, poppler +, readline, sqlite +, disableDocs ? false +, CoreFoundation +, gsettings-desktop-schemas +, wrapGAppsHook +}: + +let + + fontsConf = makeFontsConf { + fontDirectories = [ freefont_ttf ]; + }; + + libPath = lib.makeLibraryPath [ + cairo + fontconfig + glib + gmp + gtk3 + gsettings-desktop-schemas + libedit + libGL + libGLU + libjpeg + libpng + mpfr + openssl + pango + poppler + readline + sqlite + ]; + +in + +stdenv.mkDerivation rec { + pname = "racket"; + version = "7.9"; # always change at once with ./minimal.nix + + src = (lib.makeOverridable ({ name, sha256 }: + fetchurl { + url = "https://mirror.racket-lang.org/installers/${version}/${name}-src.tgz"; + inherit sha256; + } + )) { + name = "${pname}-${version}"; + sha256 = "0gmp2ahmfd97nn9bwpfx9lznjmjkd042slnrrbdmyh59cqh98y2m"; + }; + + 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 ] + ++ lib.optionals stdenv.isDarwin [ libiconv CoreFoundation ]; + + preConfigure = '' + unset AR + for f in src/lt/configure src/cs/c/configure src/bc/src/string.c; do + substituteInPlace "$f" --replace /usr/bin/uname ${coreutils}/bin/uname + done + mkdir src/build + cd src/build + + gappsWrapperArgs+=("--prefix" "LD_LIBRARY_PATH" ":" ${LD_LIBRARY_PATH}) + ''; + + shared = if stdenv.isDarwin then "dylib" else "shared"; + configureFlags = [ "--enable-${shared}" "--enable-lt=${libtool}/bin/libtool" ] + ++ lib.optional disableDocs [ "--disable-docs" ] + ++ lib.optional stdenv.isDarwin [ "--enable-xonx" ]; + + configureScript = "../configure"; + + enableParallelBuilding = false; + + + meta = with lib; { + description = "A programmable programming language"; + longDescription = '' + 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 ]; + maintainers = with maintainers; [ kkallio henrytill vrthra ]; + platforms = [ "x86_64-darwin" "x86_64-linux" "aarch64-linux" ]; + broken = stdenv.isDarwin; # No support yet for setting FFI lookup path + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 50e7d82d6e8c..9f9a527a6ea8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13611,6 +13611,10 @@ with pkgs; stdenv = if stdenv.isDarwin then stdenv else gcc7Stdenv; inherit (darwin.apple_sdk.frameworks) CoreFoundation; }; + racket_7_9 = callPackage ../development/interpreters/racket/racket_7_9.nix { + stdenv = if stdenv.isDarwin then stdenv else gcc7Stdenv; + inherit (darwin.apple_sdk.frameworks) CoreFoundation; + }; racket-minimal = callPackage ../development/interpreters/racket/minimal.nix { }; rakudo = callPackage ../development/interpreters/rakudo {};