Files
nixpkgs/pkgs/by-name/ms/mstflint/package.nix
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

143 lines
3.5 KiB
Nix

{
lib,
stdenv,
fetchurl,
fetchpatch,
rdma-core,
openssl,
zlib,
xz,
expat,
boost,
curl,
pkg-config,
libxml2,
pciutils,
busybox,
python3,
automake,
autoconf,
libtool,
git,
# use this to shrink the package's footprint if necessary (e.g. for hardened appliances)
onlyFirmwareUpdater ? false,
# contains binary-only libraries
enableDPA ? true,
}:
stdenv.mkDerivation rec {
pname = "mstflint";
# if you update the version of this package, also update the input hash in mstflint_access!
version = "4.31.0-1";
src = fetchurl {
url = "https://github.com/Mellanox/mstflint/releases/download/v${version}/mstflint-${version}.tar.gz";
hash = "sha256-wBUkFOdYChiSXHcH6+LLZZ06Hte4ABWjW+pNcjtk+Oc=";
};
patches = [
# fixes build errors due to missing declarations in headers
(fetchpatch {
url = "https://patch-diff.githubusercontent.com/raw/Mellanox/mstflint/pull/1131.patch";
sha256 = "sha256-tn8EO9HkDrMroV6byUPgjclBIK8tq4xGyi4Kx/rIj+w=";
})
];
nativeBuildInputs = [
autoconf
automake
libtool
pkg-config
libxml2
git
];
buildInputs = [
rdma-core
zlib
libxml2
openssl
]
++ lib.optionals (!onlyFirmwareUpdater) [
boost
curl
expat
xz
python3
];
preConfigure = ''
export CPPFLAGS="-I$(pwd)/tools_layouts -isystem ${libxml2.dev}/include/libxml2"
export INSTALL_BASEDIR=$out
./autogen.sh
'';
# Cannot use wrapProgram since the python script's logic depends on the
# filename and will get messed up if the executable is named ".xyz-wrapped".
# That is why the python executable and runtime dependencies are injected
# this way.
#
# Remove host_cpu replacement again (see https://github.com/Mellanox/mstflint/pull/865),
# needs to hit master or a release. master_devel may be rebased.
#
# Remove patch for regex check, after https://github.com/Mellanox/mstflint/pull/871
# got merged.
prePatch = [
''
patchShebangs eval_git_sha.sh
substituteInPlace configure.ac \
--replace "build_cpu" "host_cpu"
substituteInPlace common/compatibility.h \
--replace "#define ROOT_PATH \"/\"" "#define ROOT_PATH \"$out/\""
substituteInPlace configure.ac \
--replace 'Whether to use GNU C regex])' 'Whether to use GNU C regex])],[AC_MSG_RESULT([yes])'
''
(lib.optionals (!onlyFirmwareUpdater) ''
substituteInPlace common/python_wrapper.sh \
--replace \
'exec $PYTHON_EXEC $SCRIPT_PATH "$@"' \
'export PATH=$PATH:${
lib.makeBinPath [
(placeholder "out")
pciutils
busybox
]
}; exec ${python3}/bin/python3 $SCRIPT_PATH "$@"'
'')
];
configureFlags = [
"--enable-xml2"
"--datarootdir=${placeholder "out"}/share"
]
++ lib.optionals (!onlyFirmwareUpdater) [
"--enable-adb-generic-tools"
"--enable-cs"
"--enable-dc"
"--enable-fw-mgr"
"--enable-inband"
"--enable-rdmem"
]
++ lib.optionals enableDPA [
"--enable-dpa"
];
enableParallelBuilding = true;
hardeningDisable = [ "format" ];
dontDisableStatic = true; # the build fails without this. should probably be reported upstream
meta = with lib; {
description = "Open source version of Mellanox Firmware Tools (MFT)";
homepage = "https://github.com/Mellanox/mstflint";
license = with licenses; [
gpl2Only
bsd2
];
maintainers = with maintainers; [ thillux ];
platforms = platforms.linux;
};
}