biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / misc / mstflint / default.nix
blob5ab999792f56013402720fc32911716edf588dad
1 { lib
2 , stdenv
3 , fetchurl
4 , rdma-core
5 , openssl
6 , zlib
7 , xz
8 , expat
9 , boost
10 , curl
11 , pkg-config
12 , libxml2
13 , pciutils
14 , busybox
15 , python3
16 , automake
17 , autoconf
18 , libtool
19 , git
20 # use this to shrink the package's footprint if necessary (e.g. for hardened appliances)
21 , onlyFirmwareUpdater ? false
22 # contains binary-only libraries
23 , enableDPA ? true
26 stdenv.mkDerivation rec {
27   pname = "mstflint";
29   # if you update the version of this package, also update the input hash in mstflint_access!
30   version = "4.29.0-1";
32   src = fetchurl {
33     url = "https://github.com/Mellanox/mstflint/releases/download/v${version}/mstflint-${version}.tar.gz";
34     hash = "sha256-G9BIFG8f4Ek9R3CyRLAuMpgbScrtBo/ZaiJwAQMiBlQ=";
35   };
37   nativeBuildInputs = [
38     autoconf
39     automake
40     libtool
41     pkg-config
42     libxml2
43     git
44   ];
46   buildInputs = [
47     rdma-core
48     zlib
49     libxml2
50     openssl
51   ] ++ lib.optionals (!onlyFirmwareUpdater) [
52     boost
53     curl
54     expat
55     xz
56     python3
57   ];
59   preConfigure = ''
60     export CPPFLAGS="-I$(pwd)/tools_layouts -isystem ${libxml2.dev}/include/libxml2"
61     export INSTALL_BASEDIR=$out
62     ./autogen.sh
63   '';
65   # Cannot use wrapProgram since the python script's logic depends on the
66   # filename and will get messed up if the executable is named ".xyz-wrapped".
67   # That is why the python executable and runtime dependencies are injected
68   # this way.
69   #
70   # Remove host_cpu replacement again (see https://github.com/Mellanox/mstflint/pull/865),
71   # needs to hit master or a release. master_devel may be rebased.
72   #
73   # Remove patch for regex check, after https://github.com/Mellanox/mstflint/pull/871
74   # got merged.
75   prePatch = [
76   ''
77     patchShebangs eval_git_sha.sh
78     substituteInPlace configure.ac \
79         --replace "build_cpu" "host_cpu"
80     substituteInPlace common/compatibility.h \
81         --replace "#define ROOT_PATH \"/\"" "#define ROOT_PATH \"$out/\""
82     substituteInPlace configure.ac \
83         --replace 'Whether to use GNU C regex])' 'Whether to use GNU C regex])],[AC_MSG_RESULT([yes])'
84   ''
85   (lib.optionals (!onlyFirmwareUpdater) ''
86     substituteInPlace common/python_wrapper.sh \
87       --replace \
88       'exec $PYTHON_EXEC $SCRIPT_PATH "$@"' \
89       'export PATH=$PATH:${lib.makeBinPath [ (placeholder "out") pciutils busybox]}; exec ${python3}/bin/python3 $SCRIPT_PATH "$@"'
90   '')
91   ];
93   configureFlags = [
94     "--enable-xml2"
95     "--datarootdir=${placeholder "out"}/share"
96   ] ++ lib.optionals (!onlyFirmwareUpdater) [
97     "--enable-adb-generic-tools"
98     "--enable-cs"
99     "--enable-dc"
100     "--enable-fw-mgr"
101     "--enable-inband"
102     "--enable-rdmem"
103   ] ++ lib.optionals enableDPA [
104     "--enable-dpa"
105   ];
107   enableParallelBuilding = true;
109   hardeningDisable = [ "format" ];
111   dontDisableStatic = true;  # the build fails without this. should probably be reported upstream
113   meta = with lib; {
114     description = "Open source version of Mellanox Firmware Tools (MFT)";
115     homepage = "https://github.com/Mellanox/mstflint";
116     license = with licenses; [ gpl2Only bsd2 ];
117     maintainers = with maintainers; [ thillux ];
118     platforms = platforms.linux;
119   };