The nixpkgs-unstable channel's programs.sqlite was used to identify
packages producing exactly one binary, and these automatically added
to their package definitions wherever possible.
THe build fails against `zlib-1.3` in `master` as
https://hydra.nixos.org/build/249158742:
3rdparty/zlib.h:1468:32: error: expected initializer before 'Z_ARG'
1468 | ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
| ^~~~~
The upstream repository did not see updates for past 5 years and is
archived. Let's schedule it for removal.
Without the change build fails on `master as
https://hydra.nixos.org/build/248985028:
In file included from /build/source/vowpalwabbit/core/src/named_labels.cc:5:
/build/source/vowpalwabbit/core/include/vw/core/named_labels.h:28:3: error: 'uint32_t' does not name a type
28 | uint32_t getK() const;
| ^~~~~~~~
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.