Shogun has been broken for a while [0].
Looks like the latest update to openblas, by f07a0615ea (openblas:
0.3.20 -> 0.3.21, 2022-08-10), broke the `libshogun-mathematics_lapack`
example. It calculates the eigenvectors for a matrix, but the assertions
now fail:
compute_eigenvectors
A=[
[ -0.500000000000000111, 0.707106781186547351, 0.5],
[ 0.707106781186547351, 1.04083408558608426e-16, 0.707106781186547129],
[ -0.499999999999999722, -0.707106781186547462, 0.5]
]
eigenvalues=[-1.41421356237309492,1.04083408558608426e-17,1.41421356237309492]
terminate called after throwing an instance of 'shogun::ShogunException'
The darwin build output shows a bit more detail:
assertion is_equal(A(0,0), 0.5, eps) failed in void test_ev()
file /tmp/nix-build-shogun-6.1.4.drv-0/source/examples/undocumented/libshogun/mathematics_lapack.cpp
line 49
Disable the test to fix the build, although the results seem "correct".
It appears that openblas now calculates values with slightly less
precision, thus the assertion fails due to the expected epsilon.
[0]: https://hydra.nixos.org/build/194671473
The checkPhase may take from 30 minutes up to 2 hours and 30 minutes on
Hydra due to these tests:
[...]
311/375 Test #311: libshogun-evaluation_cross_validation_classification ............ Passed 247.33 sec
312/375 Test #313: libshogun-evaluation_cross_validation_mkl_weight_storage ........ Passed 428.31 sec
315/375 Test #312: libshogun-evaluation_cross_validation_locked_comparison ......... Passed 880.44 sec
341/375 Test #316: libshogun-evaluation_cross_validation_regression ................ Passed 380.48 sec
342/375 Test #343: libshogun-modelselection_grid_search_kernel ..................... Passed 4866.85 sec
343/375 Test #344: libshogun-modelselection_grid_search_linear ..................... Passed 574.78 sec
345/375 Test #342: libshogun-modelselection_combined_kernel_sub_parameters ......... Passed 5929.90 sec
375/375 Test #346: libshogun-modelselection_grid_search_multiclass_svm ............. Passed 1826.27 sec
[...]
Total Test time (real) = 9046.65 sec
checkPhase completed in 2 hours 30 minutes 47 seconds
- flatbuffers removed as a dep as the upstream doesn't support installing with flatbuffer support currently and this is an experimental feature
- BUILD_TESTS workaround removed as upstream now properly understands BUILD_TESTING
- `eigen` is a new dependency in this release
- Removed `USE_LATEST_STD` as it was causing an ICE in clang when building on an m1 macbook and it is not strictly necessary for the package
CMake uses the directory of the configuration files to calculate
the path to the installed library and headers. But now that shogun uses
multiple outputs, this results in the $dev output being used for the
location of the shared library instead of $out.
Path the targets file to use the right location for the shared library.
Also default pythonSupport to false because it's broken for Python 3.
In any case the Python interface has been disabled for almost 2 years
now because the wrong CMake flag was being passed, so the build stays
the same.
But do use the proper flag now.
Main changes are:
- Build with default stdenv instead of forcing GCC 8, by applying upstream
patches that fix building with newer compilers.
Together with #134390 and #134393 (and the blas library fixes on #135493
and #136535), this enables building the derivation on darwin.
- Use multiple outputs.
- Move build-only inputs to nativeBuildInputs.
- Generate the meta examples but do not compile them (they are compiled as
part of the tests), to not make the build take more time than already is.
Install the example source files into $doc (but do not install the
example binaries, only the sources).
- Enable testing by setting the CMake variable CMAKE_SKIP_BUILD_RPATH to
false (it should not be needed if #108496 is merged). This allows the
tests to locate the shogun library and run without problems.
Disable integration and meta tests to speed up the build.
With a few other minor changes:
- Use upstream URL for the json-c patch.
- Be explicit about which optional, commercial dependencies are not used,
to stop CMake searching for them.
- Do not set NIX_CFLAGS_COMPILE with '-faligned-new' because it causes a
warning when compiling C files. Set CXXFLAGS instead.
- Remove unnecessary ccache variables from the environment.
- Fix wrong Google Mock download location, which was forcing CMake to need
network access to download the tarball to the right location (which fails
within the sandbox).
SVMlight uses a non-standard license [0] that doesn't allow distribution
without the author's permission:
> The software must not be modified and distributed without prior permission of the author.
So remove all code related to it when building the binary package.
Use upstream's own script to do it (which they use to create and
distribute their own Debian package), with a few fixes.
There is still the option of building from source with SVMlight enabled
with an override that sets the withSvmLight parameter.
If SVMlight is enabled set the license to unfree. Also fix the
deprecated gpl3 license to gpl3Plus.
[0]: https://github.com/shogun-toolbox/shogun/blob/shogun_6.1.4/doc/license/LICENSE_SVMlight.md
I currently do not have much time to work on nixpkgs. Remove
myself as a maintainer from a bunch of packages to avoid that
people are waiting on me for a review.