ripasso-cursive: cosmetic changes (#361736)
[NixPkgs.git] / pkgs / by-name / hw / hwloc / package.nix
blobd820dc3dcee5ddfa2213d874725b6079ed889e13
2   lib,
3   stdenv,
4   fetchurl,
5   pkg-config,
6   expat,
7   ncurses,
8   pciutils,
9   numactl,
10   x11Support ? false,
11   libX11,
12   cairo,
13   config,
14   enableCuda ? config.cudaSupport,
15   cudaPackages,
18 stdenv.mkDerivation rec {
19   pname = "hwloc";
20   version = "2.11.2";
22   src = fetchurl {
23     url = "https://www.open-mpi.org/software/hwloc/v${lib.versions.majorMinor version}/downloads/hwloc-${version}.tar.bz2";
24     hash = "sha256-9/iP7K4GcQDxoakVtlit0PT3FWEllIKRCmm66iL+hAk=";
25   };
27   configureFlags = [
28     "--localstatedir=/var"
29     "--enable-netloc"
30   ];
32   # XXX: libX11 is not directly needed, but needed as a propagated dep of Cairo.
33   nativeBuildInputs = [ pkg-config ] ++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];
35   buildInputs =
36     [
37       expat
38       ncurses
39     ]
40     ++ lib.optionals x11Support [
41       cairo
42       libX11
43     ]
44     ++ lib.optionals stdenv.hostPlatform.isLinux [ numactl ]
45     ++ lib.optionals enableCuda [ cudaPackages.cuda_cudart ];
47   # Since `libpci' appears in `hwloc.pc', it must be propagated.
48   propagatedBuildInputs = lib.optional stdenv.hostPlatform.isLinux pciutils;
50   enableParallelBuilding = true;
52   postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
53     if [ -d "${numactl}/lib64" ]; then
54       numalibdir="${numactl}/lib64"
55     else
56       numalibdir="${numactl}/lib"
57       test -d "$numalibdir"
58     fi
60     sed -i "$lib/lib/libhwloc.la" \
61       -e "s|-lnuma|-L$numalibdir -lnuma|g"
62   '';
64   # Checks disabled because they're impure (hardware dependent) and
65   # fail on some build machines.
66   doCheck = false;
68   outputs = [
69     "out"
70     "lib"
71     "dev"
72     "doc"
73     "man"
74   ];
76   meta = {
77     description = "Portable abstraction of hierarchical architectures for high-performance computing";
78     longDescription = ''
79       hwloc provides a portable abstraction (across OS,
80       versions, architectures, ...) of the hierarchical topology of
81       modern architectures, including NUMA memory nodes, sockets,
82       shared caches, cores and simultaneous multithreading.  It also
83       gathers various attributes such as cache and memory
84       information.  It primarily aims at helping high-performance
85       computing applications with gathering information about the
86       hardware so as to exploit it accordingly and efficiently.
88       hwloc may display the topology in multiple convenient
89       formats.  It also offers a powerful programming interface to
90       gather information about the hardware, bind processes, and much
91       more.
92     '';
93     # https://www.open-mpi.org/projects/hwloc/license.php
94     license = lib.licenses.bsd3;
95     homepage = "https://www.open-mpi.org/projects/hwloc/";
96     maintainers = with lib.maintainers; [
97       fpletz
98       markuskowa
99     ];
100     platforms = lib.platforms.all;
101   };