We are migrating packages that meet below requirements:
1. using `callPackage`
2. called path is a directory
3. overriding set is empty (`{ }`)
4. not containing path expressions other than relative path (to
makenixpkgs-vet happy)
5. not referenced by nix files outside of the directory, other
than`pkgs/top-level/all-packages.nix`
6. not referencing nix files outside of the directory
7. not referencing `default.nix` (since it's changed to `package.nix`)
8. `outPath` doesn't change after migration
The tool is here: https://github.com/Aleksanaa/by-name-migrate.
In preparation for the deprecation of `stdenv.isX`.
These shorthands are not conducive to cross-compilation because they
hide the platforms.
Darwin might get cross-compilation for which the continued usage of `stdenv.isDarwin` will get in the way
One example of why this is bad and especially affects compiler packages
https://www.github.com/NixOS/nixpkgs/pull/343059
There are too many files to go through manually but a treewide should
get users thinking when they see a `hostPlatform.isX` in a place where it
doesn't make sense.
```
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv.is" "stdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenv'.is" "stdenv'.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "clangStdenv.is" "clangStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "gccStdenv.is" "gccStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "stdenvNoCC.is" "stdenvNoCC.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "inherit (stdenv) is" "inherit (stdenv.hostPlatform) is"
fd --type f "\.nix" | xargs sd --fixed-strings "buildStdenv.is" "buildStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "effectiveStdenv.is" "effectiveStdenv.hostPlatform.is"
fd --type f "\.nix" | xargs sd --fixed-strings "originalStdenv.is" "originalStdenv.hostPlatform.is"
```
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