104 lines
2.7 KiB
Nix
104 lines
2.7 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchurl,
|
|
...
|
|
}:
|
|
let
|
|
inherit (stdenv.hostPlatform) system;
|
|
in
|
|
stdenv.mkDerivation rec {
|
|
pname = "libtensorflow-photoprism";
|
|
version = "1.15.2";
|
|
|
|
srcs = [
|
|
# Photoprism-packaged libtensorflow tarball (with pre-built libs for both arm64 and amd64)
|
|
# We need this specific version because of https://github.com/photoprism/photoprism/issues/222
|
|
(fetchurl {
|
|
sha256 =
|
|
{
|
|
x86_64-linux = "sha256-bZAC3PJxqcjuGM4RcNtzYtkg3FD3SrO5beDsPoKenzc=";
|
|
aarch64-linux = "sha256-qnj4vhSWgrk8SIjzIH1/4waMxMsxMUvqdYZPaSaUJRk=";
|
|
}
|
|
.${system};
|
|
|
|
url =
|
|
let
|
|
systemName =
|
|
{
|
|
x86_64-linux = "amd64";
|
|
aarch64-linux = "arm64";
|
|
}
|
|
.${system};
|
|
in
|
|
"https://dl.photoprism.app/tensorflow/${systemName}/libtensorflow-${systemName}-${version}.tar.gz";
|
|
})
|
|
# Upstream tensorflow tarball (with .h's photoprism's tarball is missing)
|
|
(fetchurl {
|
|
url = "https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-linux-x86_64-1.15.0.tar.gz";
|
|
sha256 = "sha256-3sv9WnCeztNSP1XM+iOTN6h+GrPgAO/aNhfbeeEDTe0=";
|
|
})
|
|
];
|
|
|
|
sourceRoot = ".";
|
|
|
|
unpackPhase = ''
|
|
sources=($srcs)
|
|
|
|
mkdir downstream upstream
|
|
tar xf ''${sources[0]} --directory downstream
|
|
tar xf ''${sources[1]} --directory upstream
|
|
|
|
mv downstream/lib .
|
|
mv upstream/{include,LICENSE,THIRD_PARTY_TF_C_LICENSES} .
|
|
rm -r downstream upstream
|
|
|
|
cd lib
|
|
ln -sT libtensorflow.so{,.1}
|
|
ln -sT libtensorflow_framework.so{,.1}
|
|
cd ..
|
|
'';
|
|
|
|
# Patch library to use our libc, libstdc++ and others
|
|
patchPhase =
|
|
let
|
|
rpath = lib.makeLibraryPath [
|
|
stdenv.cc.libc
|
|
stdenv.cc.cc
|
|
];
|
|
in
|
|
''
|
|
chmod -R +w lib
|
|
patchelf --set-rpath "${rpath}:$out/lib" lib/libtensorflow.so
|
|
patchelf --set-rpath "${rpath}" lib/libtensorflow_framework.so
|
|
'';
|
|
|
|
buildPhase = ''
|
|
# Write pkg-config file.
|
|
mkdir lib/pkgconfig
|
|
cat > lib/pkgconfig/tensorflow.pc << EOF
|
|
Name: TensorFlow
|
|
Version: ${version}
|
|
Description: Library for computation using data flow graphs for scalable machine learning
|
|
Requires:
|
|
Libs: -L$out/lib -ltensorflow
|
|
Cflags: -I$out/include/tensorflow
|
|
EOF
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -r LICENSE THIRD_PARTY_TF_C_LICENSES lib include $out
|
|
'';
|
|
|
|
meta = with lib; {
|
|
homepage = "https://dl.photoprism.app/tensorflow/";
|
|
description = "Libtensorflow version for usage with photoprism backend";
|
|
platforms = [
|
|
"x86_64-linux"
|
|
"aarch64-linux"
|
|
];
|
|
license = licenses.asl20;
|
|
maintainers = with maintainers; [ benesim ];
|
|
};
|
|
}
|