Files
nixpkgs/pkgs/tools/filesystems/xtreemfs/default.nix
Rick van Schijndel 9833d56c24 treewide: mark packages broken that never built on PLATFORM
Done with the help of https://github.com/Mindavi/nixpkgs-mark-broken
Tool is still WIP but this is one of the first results.

I manually audited the results and removed some results that were not valid.

Note that some of these packages maybe should have more constrained platforms set
instead of broken set, but I think not being perfectly correct is better than
just keep trying to build all these things and never succeeding.

Some observations:

- Some darwin builds require XCode tools
- aarch64-linux builds sometimes suffer from using gcc9
  - gcc9 is getting older and misses some new libraries/features
- Sometimes tools try to do system detection or expect some explicit settings for
  platforms that are not x86_64-linux
2022-12-13 21:40:12 +01:00

97 lines
2.5 KiB
Nix

{ stdenv
, lib
, fetchFromGitHub
, fetchpatch
, makeWrapper
, ant
, attr
, boost
, cmake
, file
, fuse
, jdk
, openssl
, python3
, valgrind
, which
}:
stdenv.mkDerivation {
src = fetchFromGitHub {
# using unstable release because stable (v1.5.1) has broken repl java plugin
rev = "7ddcb081aa125b0cfb008dc98addd260b8353ab3";
owner = "xtreemfs";
repo = "xtreemfs";
sha256 = "1hjmd32pla27zf98ghzz6r5ml8ry86m9dsryv1z01kxv5l95b3m0";
};
pname = "XtreemFS";
version = "1.5.1.81";
nativeBuildInputs = [ makeWrapper python3 ];
buildInputs = [ which attr ];
patches = [
(fetchpatch {
url = "https://github.com/xtreemfs/xtreemfs/commit/ebfdc2fff56c09f310159d92026883941e42a953.patch";
sha256 = "075w00ad88qm6xpm5679m0gfzkrc53w17sk7ycybf4hzxjs29ygy";
name = "xtreemfs-fix-for-openssl_1_1";
})
];
preConfigure = ''
export JAVA_HOME=${jdk}
export ANT_HOME=${ant}
export BOOST_INCLUDEDIR=${boost.dev}/include
export BOOST_LIBRARYDIR=${boost.out}/lib
export CMAKE_INCLUDE_PATH=${openssl.dev}/include
export CMAKE_LIBRARY_PATH=${lib.getLib openssl}/lib
substituteInPlace cpp/cmake/FindValgrind.cmake \
--replace "/usr/local" "${valgrind}"
substituteInPlace cpp/CMakeLists.txt \
--replace '"/lib64" "/usr/lib64"' '"${attr.out}/lib" "${fuse}/lib"'
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${fuse}/include"
export NIX_CFLAGS_LINK="$NIX_CFLAGS_LINK -L${fuse}/lib"
export DESTDIR=$out
substituteInPlace Makefile \
--replace "/usr/share/" "/share/" \
--replace 'BIN_DIR=$(DESTDIR)/usr/bin' "BIN_DIR=$out/bin"
substituteInPlace etc/init.d/generate_initd_scripts.sh \
--replace "/bin/bash" "${stdenv.shell}"
substituteInPlace cpp/thirdparty/gtest-1.7.0/configure \
--replace "/usr/bin/file" "${file}/bin/file"
substituteInPlace cpp/thirdparty/protobuf-2.5.0/configure \
--replace "/usr/bin/file" "${file}/bin/file"
substituteInPlace cpp/thirdparty/protobuf-2.5.0/gtest/configure \
--replace "/usr/bin/file" "${file}/bin/file"
# do not put cmake into buildInputs
export PATH="$PATH:${cmake}/bin"
'';
doCheck = false;
postInstall = ''
rm -r $out/sbin
'';
meta = {
description = "A distributed filesystem";
maintainers = with lib.maintainers; [ raskin matejc ];
platforms = lib.platforms.linux;
license = lib.licenses.bsd3;
# never built on aarch64-linux since first introduction in nixpkgs
broken = stdenv.isLinux && stdenv.isAarch64;
};
}