I would like to package Intel’s mkl in NixPkg, which is heavily used in machine
learning and linear algebra packages, often in place of OpenBLAS. This is a
proprietary package, with a “free to redistribute” license, provided that we
don’t modify the binary [1][2][3].
In 2018 Intel has relaxed some of their license restrictions, and the library
has been packaged for redistribution in both Debian and Anaconda. [4][5]
Intel distributes it as a large tarball download from their website, within
which there are many RPMs containing pre-built binaries for individual
platforms, and one RPM with the noarch headers.
I have a couple questions:
Does the above sound reasonable in terms of licensing?
Do we have any helpers around rpm2nix conversion? I currently have it working
by extracting the rpm | cpio and moving the files where I want them to be,
but if there’s a cleaner utility I’m all for it.
Should I package all architectures? I only really need x86_86-linux and
suspect that’s true for most users who would want this, but there are other
RPMs available. It’d add a lot to the nix expression so I’m not sure if it’s
worth maintaining vs. just putting a platforms = [ “x86_64-linux” ] in the meta?
After a good bit of work and debugging, I’ve managed to get at least one package
working with this [6], so I know it’s not completely busted! That said if someone
could help test it’d be appreciated.
I myself would love to help. I know that this has been done multiple times by people (most of the way) but not in the official nixpkgs branch (3 times that I can recall). Please please let’s make icc a compiler.
❯ pacman -Qo /opt/intel/oneapi/compiler/2023.1.0/linux/bin/icx
/opt/intel/oneapi/compiler/2023.1.0/linux/bin/icx is owned by intel-oneapi-dpcpp-cpp 2023.1.0-1