mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-24 06:33:42 +00:00
571c71e6f7
We are migrating packages that meet below requirements: 1. using `callPackage` 2. called path is a directory 3. overriding set is empty (`{ }`) 4. not containing path expressions other than relative path (to makenixpkgs-vet happy) 5. not referenced by nix files outside of the directory, other than`pkgs/top-level/all-packages.nix` 6. not referencing nix files outside of the directory 7. not referencing `default.nix` (since it's changed to `package.nix`) 8. `outPath` doesn't change after migration The tool is here: https://github.com/Aleksanaa/by-name-migrate.
103 lines
2.7 KiB
Nix
103 lines
2.7 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchurl,
|
|
pkg-config,
|
|
expat,
|
|
ncurses,
|
|
pciutils,
|
|
numactl,
|
|
x11Support ? false,
|
|
libX11,
|
|
cairo,
|
|
config,
|
|
enableCuda ? config.cudaSupport,
|
|
cudaPackages,
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "hwloc";
|
|
version = "2.11.2";
|
|
|
|
src = fetchurl {
|
|
url = "https://www.open-mpi.org/software/hwloc/v${lib.versions.majorMinor version}/downloads/hwloc-${version}.tar.bz2";
|
|
hash = "sha256-9/iP7K4GcQDxoakVtlit0PT3FWEllIKRCmm66iL+hAk=";
|
|
};
|
|
|
|
configureFlags = [
|
|
"--localstatedir=/var"
|
|
"--enable-netloc"
|
|
];
|
|
|
|
# XXX: libX11 is not directly needed, but needed as a propagated dep of Cairo.
|
|
nativeBuildInputs = [ pkg-config ] ++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];
|
|
|
|
buildInputs =
|
|
[
|
|
expat
|
|
ncurses
|
|
]
|
|
++ lib.optionals x11Support [
|
|
cairo
|
|
libX11
|
|
]
|
|
++ lib.optionals stdenv.hostPlatform.isLinux [ numactl ]
|
|
++ lib.optionals enableCuda [ cudaPackages.cuda_cudart ];
|
|
|
|
# Since `libpci' appears in `hwloc.pc', it must be propagated.
|
|
propagatedBuildInputs = lib.optional stdenv.hostPlatform.isLinux pciutils;
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
|
|
if [ -d "${numactl}/lib64" ]; then
|
|
numalibdir="${numactl}/lib64"
|
|
else
|
|
numalibdir="${numactl}/lib"
|
|
test -d "$numalibdir"
|
|
fi
|
|
|
|
sed -i "$lib/lib/libhwloc.la" \
|
|
-e "s|-lnuma|-L$numalibdir -lnuma|g"
|
|
'';
|
|
|
|
# Checks disabled because they're impure (hardware dependent) and
|
|
# fail on some build machines.
|
|
doCheck = false;
|
|
|
|
outputs = [
|
|
"out"
|
|
"lib"
|
|
"dev"
|
|
"doc"
|
|
"man"
|
|
];
|
|
|
|
meta = {
|
|
description = "Portable abstraction of hierarchical architectures for high-performance computing";
|
|
longDescription = ''
|
|
hwloc provides a portable abstraction (across OS,
|
|
versions, architectures, ...) of the hierarchical topology of
|
|
modern architectures, including NUMA memory nodes, sockets,
|
|
shared caches, cores and simultaneous multithreading. It also
|
|
gathers various attributes such as cache and memory
|
|
information. It primarily aims at helping high-performance
|
|
computing applications with gathering information about the
|
|
hardware so as to exploit it accordingly and efficiently.
|
|
|
|
hwloc may display the topology in multiple convenient
|
|
formats. It also offers a powerful programming interface to
|
|
gather information about the hardware, bind processes, and much
|
|
more.
|
|
'';
|
|
# https://www.open-mpi.org/projects/hwloc/license.php
|
|
license = lib.licenses.bsd3;
|
|
homepage = "https://www.open-mpi.org/projects/hwloc/";
|
|
maintainers = with lib.maintainers; [
|
|
fpletz
|
|
markuskowa
|
|
];
|
|
platforms = lib.platforms.all;
|
|
};
|
|
}
|