Winter a19cd4ffb1 Revert "treewide: replace rev with tag"
This reverts commit 65a333600d5c88a98d674f637d092807cfc12253.

This wasn't tested for correctness with something like fodwatch [0],
and should not have been (self-)merged so quickly, especially without
further review.

It also resulted in the breakage of at least one package [1] (and that's
the one we know of and was caught).

A few packages that were updated in between this commit and this revert
were not reverted back to using `rev`, but other than that, this is a
1:1 revert.

[0]: https://codeberg.org/raphaelr/fodwatch
[1]: https://github.com/NixOS/nixpkgs/pull/396904 / 758551e4587d75882aebc21a04bee960418f8ce9
2025-04-08 02:57:25 -04:00

113 lines
2.5 KiB
Nix

{
lib,
stdenv,
blas,
lapack,
openfst,
icu,
pkg-config,
fetchFromGitHub,
python,
openblas,
zlib,
gfortran,
}:
let
old-openfst = openfst.overrideAttrs (prev: {
version = "kag-unstable-2022-05-06";
src = fetchFromGitHub {
owner = "kkm000";
repo = "openfst";
# required by https://github.com/daanzu/kaldi-fork-active-grammar/blob/e9c7d0ffca401cf312779d25f2c05a34b41ff696/cmake/third_party/openfst.cmake#L7
rev = "0bca6e76d24647427356dc242b0adbf3b5f1a8d9";
sha256 = "1802rr14a03zl1wa5a0x1fa412kcvbgprgkadfj5s6s3agnn11rx";
};
buildInputs = [ zlib ];
});
in
assert blas.implementation == "openblas" && lapack.implementation == "openblas";
stdenv.mkDerivation rec {
pname = "kaldi";
version = "kag-v2.1.0";
src = fetchFromGitHub {
owner = "daanzu";
repo = "kaldi-fork-active-grammar";
rev = version;
sha256 = "+kT2xJRwDj/ECv/v/J1FpsINWOK8XkP9ZvZ9moFRl70=";
};
patches = [
./0004-fork-cmake.patch
./0006-fork-configure.patch
];
enableParallelBuilding = true;
buildInputs = [
openblas
old-openfst
icu
];
nativeBuildInputs = [
pkg-config
python
gfortran
];
buildFlags = [
"dragonfly"
"dragonflybin"
"bin"
"fstbin"
"lmbin"
];
postPatch = ''
# Replace the shebangs for the various build scripts
patchShebangs src
# Compatability with OpenBLAS 0.3.21
substituteInPlace src/matrix/cblas-wrappers.h \
--replace stptri_ LAPACK_stptri \
--replace dtptri_ LAPACK_dtptri \
--replace sgetrf_ LAPACK_sgetrf \
--replace dgetrf_ LAPACK_dgetrf \
--replace sgetri_ LAPACK_sgetri \
--replace dgetri_ LAPACK_dgetri \
--replace sgesvd_ LAPACK_sgesvd \
--replace dgesvd_ LAPACK_dgesvd \
--replace ssptri_ LAPACK_ssptri \
--replace dsptri_ LAPACK_dsptri \
--replace ssptrf_ LAPACK_ssptrf \
--replace dsptrf_ LAPACK_dsptrf
'';
configurePhase = ''
cd src
./configure --shared --fst-root="${old-openfst}" --use-cuda=no --openblas-root="${openblas}" --mathlib=OPENBLAS
'';
installPhase = ''
# Fixes "patchelf: wrong ELF type"
find . -type f -name "*.o" -print0 | xargs -0 rm -f
mkdir -p $out/{bin,lib}
cp lib/* $out/lib/
patchelf \
--set-rpath "${lib.makeLibraryPath buildInputs}:$out/lib" \
$out/lib/*
'';
meta = with lib; {
description = "Speech Recognition Toolkit";
homepage = "https://kaldi-asr.org";
license = licenses.mit;
maintainers = [ ];
platforms = platforms.linux;
};
}