From b669a45868eaf31ad3fffe5389c5dec8827a564c Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Mon, 8 Oct 2018 12:04:10 +0300 Subject: [PATCH] boehmgc: reinstate 7.6.6, use for asymptote A quickfix after #45708 --- pkgs/development/libraries/boehm-gc/7.6.6.nix | 74 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 76 insertions(+) create mode 100644 pkgs/development/libraries/boehm-gc/7.6.6.nix 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; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bf1f1caa27c..780239f291c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -569,6 +569,7 @@ with pkgs; asymptote = callPackage ../tools/graphics/asymptote { texLive = texlive.combine { inherit (texlive) scheme-small epsf cm-super; }; gsl = gsl_1; + boehmgc = boehmgc_766; }; atomicparsley = callPackage ../tools/video/atomicparsley { }; @@ -9074,6 +9075,7 @@ with pkgs; bobcat = callPackage ../development/libraries/bobcat { }; boehmgc = callPackage ../development/libraries/boehm-gc { }; + boehmgc_766 = callPackage ../development/libraries/boehm-gc/7.6.6.nix { }; boolstuff = callPackage ../development/libraries/boolstuff { };