-
-
Save cleverca22/82febba9de3900901586e65e2de421ff to your computer and use it in GitHub Desktop.
nix gluster python scripts packaging
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
with import <nixpkgs> { config = {}; }; | |
callPackage ./glusterfs.nix {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{stdenv, fetchurl, fuse, bison, flex_2_5_35, openssl, python2, ncurses, readline, | |
autoconf, automake, libtool, pkgconfig, zlib, libaio, libxml2, acl, sqlite | |
, liburcu, attr, makeWrapper, coreutils, gnused, gnugrep, which, python2Packages | |
}: | |
let | |
s = | |
rec { | |
baseName="glusterfs"; | |
version = "3.10.1"; | |
name="${baseName}-${version}"; | |
url="https://github.com/nh2/glusterfs/archive/v3.10.1-runner-log.tar.gz"; | |
sha256 = "0d0n981vhyrxxwbfkdkbhyswiipa8pipz8j80mbvwb8aiqsk6kqs"; | |
}; | |
buildInputs = [ | |
fuse bison flex_2_5_35 openssl ncurses readline | |
autoconf automake libtool pkgconfig zlib libaio libxml2 | |
acl sqlite liburcu attr makeWrapper | |
(python2.withPackages (pkgs: [ pkgs.flask pkgs.requests pkgs.prettytable ])) | |
python2 | |
]; | |
# Some of the headers reference acl | |
propagatedBuildInputs = [ | |
acl | |
]; | |
in | |
stdenv.mkDerivation | |
rec { | |
inherit (s) name version; | |
inherit buildInputs propagatedBuildInputs; | |
# nativeBuildInputs = [ | |
# (python2.withPackages (pkgs: [pkgs.flask])) # works | |
# ]; | |
preConfigure = '' | |
./autogen.sh | |
''; | |
configureFlags = [ | |
''--localstatedir=/var'' | |
]; | |
makeFlags = "DESTDIR=$(out)"; | |
enableParallelBuilding = true; | |
postInstall = '' | |
cp -r $out/$out/* $out | |
rm -r $out/nix | |
wrapProgram $out/sbin/mount.glusterfs --set PATH "${stdenv.lib.makeBinPath [ coreutils gnused attr gnugrep which]}" | |
''; | |
postFixup = '' | |
# Set Python environment for the Python based utilities. | |
# (@nh2) I'm not sure if there's a better way to do this, automatically for all of them. | |
# Also, this is brittle: If we forget a dependency or gluster adds a new one, things will break deep inside gluster. | |
# We should better try to get an explicit list of Python dependencies from gluster and ensure all of them are in the PYTHONPATH of all these python scripts. | |
wrapProgram $out/bin/gluster-eventsapi --set PYTHONPATH "$(toPythonPath $out)" | |
wrapProgram $out/bin/gluster-mountbroker --set PYTHONPATH "$(toPythonPath $out)" | |
wrapProgram $out/bin/gluster-georep-sshkey --set PYTHONPATH "$(toPythonPath $out)" | |
wrapProgram $out/bin/glusterfind --set PYTHONPATH "$(toPythonPath $out)" | |
wrapProgram $out/libexec/glusterfs/peer_eventsapi.py --set PYTHONPATH "$(toPythonPath $out)" | |
wrapProgram $out/libexec/glusterfs/peer_georep-sshkey.py --set PYTHONPATH "$(toPythonPath $out)" | |
wrapProgram $out/libexec/glusterfs/peer_mountbroker.py --set PYTHONPATH "$(toPythonPath $out)" | |
wrapProgram $out/libexec/glusterfs/glusterfind/changelog.py --set PYTHONPATH "$(toPythonPath $out):$(toPythonPath ${python2Packages.xattr}):$(toPythonPath ${python2Packages.cffi}):$(toPythonPath ${python2Packages.pycparser})" | |
wrapProgram $out/libexec/glusterfs/gfind_missing_files/gfid_to_path.py --set PYTHONPATH "$(toPythonPath $out):$(toPythonPath ${python2Packages.xattr}):$(toPythonPath ${python2Packages.cffi}):$(toPythonPath ${python2Packages.pycparser})" | |
wrapProgram $out/share/glusterfs/scripts/eventsdash.py --set PYTHONPATH "$(toPythonPath $out)" | |
mkdir a | |
touch b | |
echo b | $out/libexec/glusterfs/gfind_missing_files/gfid_to_path.py a | |
''; | |
src = fetchurl { | |
inherit (s) url sha256; | |
}; | |
meta = { | |
inherit (s) version; | |
description = "Distributed storage system"; | |
maintainers = [ | |
stdenv.lib.maintainers.raskin | |
]; | |
platforms = with stdenv.lib.platforms; | |
linux ++ freebsd; | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment