dlib: 19.9 -> 19.13 (#41953)

This fixes the latest `dlib` build for `nixpkgs` compliancy:

* Patched `setup.py` to use number of jobs defined in `$NIX_BUILD_CORES`
  rather than using all available cores.

* Bumped `dlib` to latest version (v19.13 ATM).

* Dropped `openblas` build input, `cblas` which actually works lives in
  `dlib/external`. Otherwise the test suite runs into segfaults (see
  https://github.com/NixOS/nixpkgs/pull/39255#issuecomment-384535129 for
  further reference).

* Added myself as maintainer in case of any further breakage in the
  future.

Closes #39255

/cc @dotlambda @ryantm
This commit is contained in:
Maximilian Bosch 2018-06-17 19:33:14 +02:00 committed by xeji
parent 56a7ea6fbe
commit ccdd229d21
3 changed files with 34 additions and 8 deletions

View File

@ -1,16 +1,16 @@
{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig, openblas, libpng, libjpeg
{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig, libpng, libjpeg
, guiSupport ? false, libX11
}:
stdenv.mkDerivation rec {
version = "19.9";
version = "19.13";
name = "dlib-${version}";
src = fetchFromGitHub {
owner = "davisking";
repo = "dlib";
rev ="v${version}";
sha256 = "0lc54r928j9dg7f2wn25m887z24d31wrc14v2hn6aknp1z084lrc";
sha256 = "11ia4pd2lm2s9hzwrdvimj3r2qcnvjdp3g4fry2j1a6z9f99zvz3";
};
postPatch = ''
@ -19,14 +19,13 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
nativeBuildInputs = [ cmake pkgconfig ];
buildInputs = [ openblas libpng libjpeg ] ++ lib.optional guiSupport libX11;
buildInputs = [ libpng libjpeg ] ++ lib.optional guiSupport libX11;
meta = with stdenv.lib; {
description = "A general purpose cross-platform C++ machine learning library";
homepage = http://www.dlib.net;
license = licenses.boost;
maintainers = with maintainers; [ christopherpoole ];
maintainers = with maintainers; [ christopherpoole ma27 ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,27 @@
diff --git a/setup.py b/setup.py
index 0c8d8f16..565ef8ef 100644
--- a/setup.py
+++ b/setup.py
@@ -172,21 +172,7 @@ class CMakeBuild(build_ext):
subprocess.check_call(cmake_build, cwd=build_folder)
def num_available_cpu_cores(ram_per_build_process_in_gb):
- if 'TRAVIS' in os.environ and os.environ['TRAVIS']=='true':
- # When building on travis-ci, just use 2 cores since travis-ci limits
- # you to that regardless of what the hardware might suggest.
- return 2
- try:
- mem_bytes = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES')
- mem_gib = mem_bytes/(1024.**3)
- num_cores = multiprocessing.cpu_count()
- # make sure we have enough ram for each build process.
- mem_cores = int(floor(mem_gib/float(ram_per_build_process_in_gb)+0.5));
- # We are limited either by RAM or CPU cores. So pick the limiting amount
- # and return that.
- return max(min(num_cores, mem_cores), 1)
- except ValueError:
- return 2 # just assume 2 if we can't get the os to tell us the right answer.
+ return os.getenv("NIX_BUILD_CORES", 1)
from setuptools.command.test import test as TestCommand

View File

@ -1239,9 +1239,9 @@ in {
cypari2 = callPackage ../development/python-modules/cypari2 { };
dlib = buildPythonPackage rec {
inherit (pkgs.dlib) name src nativeBuildInputs meta;
inherit (pkgs.dlib) name src nativeBuildInputs meta buildInputs;
buildInputs = pkgs.dlib.buildInputs ++ [ self.boost ];
patches = [ ../development/python-modules/dlib/build-cores.patch ];
checkInputs = with self; [ pytest ];
};