1{ stdenv, fetchurl }:
2
3let
4
5 verbs = rec {
6 version = "1.1.8";
7 name = "libibverbs-${version}";
8 url = "http://downloads.openfabrics.org/verbs/${name}.tar.gz";
9 sha256 = "13w2j5lrrqxxxvhpxbqb70x7wy0h8g329inzgfrvqv8ykrknwxkw";
10 };
11
12 drivers = {
13 libmlx4 = rec {
14 version = "1.0.6";
15 name = "libmlx4-${version}";
16 url = "http://downloads.openfabrics.org/mlx4/${name}.tar.gz";
17 sha256 = "f680ecbb60b01ad893490c158b4ce8028a3014bb8194c2754df508d53aa848a8";
18 };
19 libmthca = rec {
20 version = "1.0.6";
21 name = "libmthca-${version}";
22 url = "http://downloads.openfabrics.org/mthca/${name}.tar.gz";
23 sha256 = "cc8ea3091135d68233d53004e82b5b510009c821820494a3624e89e0bdfc855c";
24 };
25 };
26
27in stdenv.mkDerivation rec {
28
29 inherit (verbs) name version ;
30
31 srcs = [
32 ( fetchurl { inherit (verbs) url sha256 ; } )
33 ( fetchurl { inherit (drivers.libmlx4) url sha256 ; } )
34 ( fetchurl { inherit (drivers.libmthca) url sha256 ; } )
35 ];
36
37 sourceRoot = name;
38
39 # Install userspace drivers
40 postInstall = ''
41 for dir in ${drivers.libmlx4.name} ${drivers.libmthca.name} ; do
42 cd ../$dir
43 export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$out/include"
44 export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS -L$out/lib"
45 ./configure $configureFlags
46 make -j$NIX_BUILD_CORES
47 make install
48 done
49
50 mkdir -p $out/lib/pkgconfig
51 cat >$out/lib/pkgconfig/ibverbs.pc <<EOF
52 prefix=$out
53 exec_prefix=\''${prefix}
54 libdir=\''${exec_prefix}/lib
55 includedir=\''${prefix}/include
56
57 Name: IB verbs
58 Version: ${version}
59 Description: Library for direct userspace use of RDMA (InfiniBand/iWARP)
60 Libs: -L\''${libdir} -libverbs
61 Cflags: -I\''${includedir}
62 EOF
63 '';
64
65 # Re-add the libibverbs path into runpath of the library
66 # to enable plugins to be found by dlopen
67 postFixup = ''
68 RPATH=$(patchelf --print-rpath $out/lib/libibverbs.so)
69 patchelf --set-rpath $RPATH:$out/lib $out/lib/libibverbs.so.1.0.0
70 '';
71
72 meta = with stdenv.lib; {
73 homepage = https://www.openfabrics.org/;
74 license = licenses.bsd2;
75 platforms = with platforms; linux ++ freebsd;
76 maintainers = with maintainers; [ wkennington bzizou ];
77 };
78}
79