summary refs log tree commit diff
path: root/pkgs/development/libraries/boehm-gc
diff options
context:
space:
mode:
authorMichael Raskin <7c6f434c@mail.ru>2018-10-08 12:04:10 +0300
committerMichael Raskin <7c6f434c@mail.ru>2018-10-08 12:04:53 +0300
commitb669a45868eaf31ad3fffe5389c5dec8827a564c (patch)
tree13b3bfa437534491c73ee7a9cda92e004bb89682 /pkgs/development/libraries/boehm-gc
parent77eec2044fc685e69525fd6edafd35975a9c129a (diff)
downloadnixpkgs-b669a45868eaf31ad3fffe5389c5dec8827a564c.tar
nixpkgs-b669a45868eaf31ad3fffe5389c5dec8827a564c.tar.gz
nixpkgs-b669a45868eaf31ad3fffe5389c5dec8827a564c.tar.bz2
nixpkgs-b669a45868eaf31ad3fffe5389c5dec8827a564c.tar.lz
nixpkgs-b669a45868eaf31ad3fffe5389c5dec8827a564c.tar.xz
nixpkgs-b669a45868eaf31ad3fffe5389c5dec8827a564c.tar.zst
nixpkgs-b669a45868eaf31ad3fffe5389c5dec8827a564c.zip
boehmgc: reinstate 7.6.6, use for asymptote
A quickfix after #45708
Diffstat (limited to 'pkgs/development/libraries/boehm-gc')
-rw-r--r--pkgs/development/libraries/boehm-gc/7.6.6.nix74
1 files changed, 74 insertions, 0 deletions
diff --git a/pkgs/development/libraries/boehm-gc/7.6.6.nix b/pkgs/development/libraries/boehm-gc/7.6.6.nix
new file mode 100644
index 00000000000..da71e40187f
--- /dev/null
+++ b/pkgs/development/libraries/boehm-gc/7.6.6.nix
@@ -0,0 +1,74 @@
+{ lib, stdenv, fetchurl, fetchpatch, pkgconfig, libatomic_ops
+, enableLargeConfig ? false # doc: https://github.com/ivmai/bdwgc/blob/v7.6.6/doc/README.macros#L179
+}:
+
+stdenv.mkDerivation rec {
+  name = "boehm-gc-${version}";
+  version = "7.6.6";
+
+  src = fetchurl {
+    urls = [
+      "http://www.hboehm.info/gc/gc_source/gc-${version}.tar.gz"
+      "https://github.com/ivmai/bdwgc/releases/download/v${version}/gc-${version}.tar.gz"
+    ];
+    sha256 = "1p1r015a7jbpvkkbgzv1y8nxrbbp6dg0mq3ksi6ji0qdz3wfss79";
+  };
+
+  buildInputs = [ libatomic_ops ];
+  nativeBuildInputs = [ pkgconfig ];
+
+  outputs = [ "out" "dev" "doc" ];
+  separateDebugInfo = stdenv.isLinux;
+
+  preConfigure = stdenv.lib.optionalString (stdenv.hostPlatform.libc == "musl") ''
+    export NIX_CFLAGS_COMPILE+="-D_GNU_SOURCE -DUSE_MMAP -DHAVE_DL_ITERATE_PHDR"
+  '';
+
+  patches = [ (fetchpatch {
+    url = "https://gitweb.gentoo.org/proj/musl.git/plain/dev-libs/boehm-gc/files/boehm-gc-7.6.0-sys_select.patch";
+    sha256 = "1gydwlklvci30f5dpp5ccw2p2qpph5y41r55wx9idamjlq66fbb3";
+  }) ] ++
+    # https://github.com/ivmai/bdwgc/pull/208
+    lib.optional stdenv.hostPlatform.isRiscV ./riscv.patch;
+
+  configureFlags =
+    [ "--enable-cplusplus" ]
+    ++ lib.optional enableLargeConfig "--enable-large-config"
+    ++ lib.optional (stdenv.hostPlatform.libc == "musl") "--disable-static";
+
+  doCheck = true; # not cross;
+
+  # Don't run the native `strip' when cross-compiling.
+  dontStrip = stdenv.hostPlatform != stdenv.buildPlatform;
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "The Boehm-Demers-Weiser conservative garbage collector for C and C++";
+
+    longDescription = ''
+      The Boehm-Demers-Weiser conservative garbage collector can be used as a
+      garbage collecting replacement for C malloc or C++ new.  It allows you
+      to allocate memory basically as you normally would, without explicitly
+      deallocating memory that is no longer useful.  The collector
+      automatically recycles memory when it determines that it can no longer
+      be otherwise accessed.
+
+      The collector is also used by a number of programming language
+      implementations that either use C as intermediate code, want to
+      facilitate easier interoperation with C libraries, or just prefer the
+      simple collector interface.
+
+      Alternatively, the garbage collector may be used as a leak detector for
+      C or C++ programs, though that is not its primary goal.
+    '';
+
+    homepage = http://hboehm.info/gc/;
+
+    # non-copyleft, X11-style license
+    license = http://hboehm.info/gc/license.txt;
+
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}