about summary refs log tree commit diff
path: root/pkgs/by-name/bi/bigloo/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/bi/bigloo/package.nix')
-rw-r--r--pkgs/by-name/bi/bigloo/package.nix77
1 files changed, 77 insertions, 0 deletions
diff --git a/pkgs/by-name/bi/bigloo/package.nix b/pkgs/by-name/bi/bigloo/package.nix
new file mode 100644
index 000000000000..c3ff5334cadb
--- /dev/null
+++ b/pkgs/by-name/bi/bigloo/package.nix
@@ -0,0 +1,77 @@
+{ fetchurl, lib, stdenv, autoconf, automake, libtool, gmp
+, darwin, libunistring
+}:
+
+stdenv.mkDerivation rec {
+  pname = "bigloo";
+  version = "4.4b";
+
+  src = fetchurl {
+    url = "ftp://ftp-sop.inria.fr/indes/fp/Bigloo/bigloo-${version}.tar.gz";
+    sha256 = "sha256-oxOSJwKWmwo7PYAwmeoFrKaYdYvmvQquWXyutolc488=";
+  };
+
+  nativeBuildInputs = [ autoconf automake libtool ];
+
+  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
+    darwin.apple_sdk.frameworks.ApplicationServices
+    libunistring
+  ];
+
+  propagatedBuildInputs = [ gmp ];
+
+  preConfigure =
+    # For libuv on darwin
+    lib.optionalString stdenv.hostPlatform.isDarwin ''
+      export LIBTOOLIZE=libtoolize
+    '' + ''
+      # Help libgc's configure.
+      export CXXCPP="$CXX -E"
+    '';
+
+  patchPhase = ''
+    # Fix absolute paths.
+    sed -e 's=/bin/mv=mv=g' -e 's=/bin/rm=rm=g'			\
+        -e 's=/tmp=$TMPDIR=g' -i autoconf/*		\
+        [Mm]akefile*   */[Mm]akefile*   */*/[Mm]akefile*	\
+        */*/*/[Mm]akefile*   */*/*/*/[Mm]akefile*		\
+        comptime/Cc/cc.scm gc/install-*
+
+    # Make sure we don't change string lengths in the generated
+    # C files.
+    sed -e 's=/bin/rm=     rm=g' -e 's=/bin/mv=     mv=g'	\
+        -i comptime/Cc/cc.c
+  '';
+
+  checkTarget = "test";
+
+  # remove forbidden references to $TMPDIR
+  preFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
+    for f in "$out"/bin/*; do
+      if isELF "$f"; then
+        patchelf --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" "$f"
+      fi
+    done
+  '';
+
+  meta = {
+    description = "Efficient Scheme compiler";
+    homepage    = "http://www-sop.inria.fr/indes/fp/Bigloo/";
+    license     = lib.licenses.gpl2Plus;
+    platforms   = lib.platforms.unix;
+    maintainers = with lib.maintainers; [ thoughtpolice ];
+    broken      = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64; # segfault during build
+
+    longDescription = ''
+      Bigloo is a Scheme implementation devoted to one goal: enabling
+      Scheme based programming style where C(++) is usually
+      required.  Bigloo attempts to make Scheme practical by offering
+      features usually presented by traditional programming languages
+      but not offered by Scheme and functional programming.  Bigloo
+      compiles Scheme modules.  It delivers small and fast stand alone
+      binary executables.  Bigloo enables full connections between
+      Scheme and C programs, between Scheme and Java programs, and
+      between Scheme and C# programs.
+    '';
+  };
+}