nixpkgs/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
Guillaume Girol 33afbf39f6 treewide: switch to nativeCheckInputs
checkInputs used to be added to nativeBuildInputs. Now we have
nativeCheckInputs to do that instead. Doing this treewide change allows
to keep hashes identical to before the introduction of
nativeCheckInputs.
2023-01-21 12:00:00 +00:00

103 lines
3.2 KiB
Nix

{ lib, nettools, python3Packages, texinfo, fetchFromGitHub }:
# FAILURES: The "running build_ext" phase fails to compile Twisted
# plugins, because it tries to write them into Twisted's (immutable)
# store path. The problem appears to be non-fatal, but there's probably
# some loss of functionality because of it.
python3Packages.buildPythonApplication rec {
pname = "tahoe-lafs";
version = "unstable-2021-07-09";
src = fetchFromGitHub {
owner = "tahoe-lafs";
repo = "tahoe-lafs";
rev = "8e28a9d0e02fde2388aca549da2b5c452ac4337f";
sha256 = "sha256-MuD/ZY+die7RCsuVdcePSD0DdwatXRi7CxW2iFt22L0=";
};
outputs = [ "out" "doc" "info" ];
postPatch = ''
sed -i "src/allmydata/util/iputil.py" \
-es"|_linux_path = '/sbin/ifconfig'|_linux_path = '${nettools}/bin/ifconfig'|g"
# Chroots don't have /etc/hosts and /etc/resolv.conf, so work around
# that.
for i in $(find src/allmydata/test -type f)
do
sed -i "$i" -e"s/localhost/127.0.0.1/g"
done
sed -i 's/"zope.interface.*"/"zope.interface"/' src/allmydata/_auto_deps.py
sed -i 's/"pycrypto.*"/"pycrypto"/' src/allmydata/_auto_deps.py
# incompatible with latest autobahn
rm src/allmydata/test/web/test_logs.py
'';
# Remove broken and expensive tests.
preConfigure = ''
(
cd src/allmydata/test
# Buggy?
rm cli/test_create.py test_client.py
# These require Tor and I2P.
rm test_connections.py test_iputil.py test_hung_server.py test_i2p_provider.py test_tor_provider.py
# Fails due to the above tests missing
rm test_python3.py
# Expensive
rm test_system.py
)
'';
nativeBuildInputs = with python3Packages; [ sphinx texinfo ];
# The `backup' command requires `sqlite3'.
propagatedBuildInputs = with python3Packages; [
appdirs beautifulsoup4 characteristic distro eliot fixtures foolscap future
html5lib magic-wormhole netifaces pyasn1 pycrypto pyutil pyyaml recommonmark
service-identity simplejson sphinx-rtd-theme testtools treq twisted zfec
zope_interface
] ++ twisted.optional-dependencies.tls
++ twisted.optional-dependencies.conch;
nativeCheckInputs = with python3Packages; [ mock hypothesis twisted ];
# Install the documentation.
postInstall = ''
(
cd docs
make singlehtml
mkdir -p "$doc/share/doc/${pname}-${version}"
cp -rv _build/singlehtml/* "$doc/share/doc/${pname}-${version}"
make info
mkdir -p "$info/share/info"
cp -rv _build/texinfo/*.info "$info/share/info"
)
'';
checkPhase = ''
trial --rterrors allmydata
'';
meta = with lib; {
description = "Tahoe-LAFS, a decentralized, fault-tolerant, distributed storage system";
longDescription = ''
Tahoe-LAFS is a secure, decentralized, fault-tolerant filesystem.
This filesystem is encrypted and spread over multiple peers in
such a way that it remains available even when some of the peers
are unavailable, malfunctioning, or malicious.
'';
homepage = "https://tahoe-lafs.org/";
license = [ licenses.gpl2Plus /* or */ "TGPPLv1+" ];
maintainers = with lib.maintainers; [ MostAwesomeDude ];
platforms = platforms.linux;
};
}