From fc3a714053df8f47a82e53b723528417da306d2e Mon Sep 17 00:00:00 2001 From: Sven Keidel Date: Fri, 27 Mar 2015 16:59:46 +0100 Subject: [PATCH] gnu-smalltalk: new package --- .../compilers/gnu-smalltalk/default.nix | 50 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 52 insertions(+) create mode 100644 pkgs/development/compilers/gnu-smalltalk/default.nix diff --git a/pkgs/development/compilers/gnu-smalltalk/default.nix b/pkgs/development/compilers/gnu-smalltalk/default.nix new file mode 100644 index 00000000000..f001de2700d --- /dev/null +++ b/pkgs/development/compilers/gnu-smalltalk/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchurl, pkgconfig, libtool, zip, libffi, libsigsegv, readline, gmp, +gnutls, gnome, cairo, SDL, sqlite }: + +let # The gnu-smalltalk project has a dependency to the libsigsegv library. + # The project ships with sources for this library, but deprecated this option. + # Using the vanilla libsigsegv library results in error: "cannot relocate [...]" + # Adding --enable-static=libsigsegv to the gnu-smalltalk configuration flags + # does not help, the error still occurs. The only solution is to build a + # shared version of libsigsegv. + libsigsegv-shared = stdenv.lib.overrideDerivation libsigsegv (oldAttrs: { + configureFlags = [ "--enable-shared" ]; + }); + +in stdenv.mkDerivation rec { + + version = "3.2.5"; + name = "gnu-smalltalk-${version}"; + + src = fetchurl { + url = "mirror://gnu/smalltalk/smalltalk-${version}.tar.xz"; + sha256 = "1k2ssrapfzhngc7bg1zrnd9n2vyxp9c9m70byvsma6wapbvib6l1"; + }; + + # The dependencies and their justification are explained at + # http://smalltalk.gnu.org/download + buildInputs = [ + pkgconfig libtool zip libffi libsigsegv-shared readline gmp gnutls gnome.gtk + cairo SDL sqlite + ]; + + configureFlags = [ "--without-emacs" ]; + + # For some reason the tests fail if executated with nix-build, but pass if + # executed within nix-shell --pure. + doCheck = false; + + meta = with stdenv.lib; { + description = "A free implementation of the Smalltalk-80 language"; + longDescription = '' + GNU Smalltalk is a free implementation of the Smalltalk-80 language. It + runs on most POSIX compatible operating systems (including GNU/Linux, of + course), as well as under Windows. Smalltalk is a dynamic object-oriented + language, well-versed to scripting tasks. + ''; + homepage = http://smalltalk.gnu.org/; + license = with licenses; [ gpl2 lgpl2 ]; + platforms = platforms.linux; + maintainers = with maintainers; [ skeidel ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6331aa8cadd..8fb9dc89865 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3556,6 +3556,8 @@ let inherit fetchurl stdenv; }); + gnu-smalltalk = callPackage ../development/compilers/gnu-smalltalk { }; + gccgo = gccgo48; gccgo48 = wrapCC (gcc48.cc.override {