##// END OF EJS Templates
http-proto: in case incoming requests come in as chunked stream the data to VCSServer....
http-proto: in case incoming requests come in as chunked stream the data to VCSServer. This should solve a problem of uploading large files to rhodecode. In case of git with small postBuffers GIT client streams data to the server. In such case we want to stream the data back again to vcsserver without reading it fully inside RhodeCode.

File last commit:

r1133:69363678 default
r1434:59cf3775 stable
Show More
shell.nix
83 lines | 3.0 KiB | text/x-nix | NixLexer
{ pkgs ? (import <nixpkgs> {})
, pythonPackages ? "python27Packages"
, doCheck ? true
, sourcesOverrides ? {}
, doDevelopInstall ? true
}:
let
# Get sources from config and update them with overrides.
sources = (pkgs.config.rc.sources or {}) // sourcesOverrides;
enterprise-ce = import ./default.nix {
inherit pkgs pythonPackages doCheck;
};
ce-pythonPackages = enterprise-ce.pythonPackages;
# This method looks up a path from `pkgs.config.rc.sources` and returns a
# shell script which does a `python setup.py develop` installation of it. If
# no path is found it will return an empty string.
optionalDevelopInstall = attributeName:
let
path = pkgs.lib.attrByPath [attributeName] null sources;
doIt = doDevelopInstall && path != null;
in
pkgs.lib.optionalString doIt (
builtins.trace "Develop install of ${attributeName} from ${path}" ''
echo "Develop install of '${attributeName}' from '${path}' [BEGIN]"
pushd ${path}
python setup.py develop --prefix $tmp_path --allow-hosts ""
popd
echo "Develop install of '${attributeName}' from '${path}' [DONE]"
'');
# This method looks up a path from `pkgs.config.rc.sources` and imports the
# default.nix file if it exists. It returns the list of build inputs. If no
# path is found it will return an empty list.
optionalDevelopInstallBuildInputs = attributeName:
let
path = pkgs.lib.attrByPath [attributeName] null sources;
nixFile = "${path}/default.nix";
doIt = doDevelopInstall && path != null && pkgs.lib.pathExists "${nixFile}";
derivate = import "${nixFile}" {
inherit doCheck pkgs pythonPackages;
};
in
pkgs.lib.lists.optionals doIt derivate.propagatedNativeBuildInputs;
developInstalls = [ "rhodecode-vcsserver" ];
in enterprise-ce.override (attrs: {
# Avoid that we dump any sources into the store when entering the shell and
# make development a little bit more convenient.
src = null;
buildInputs =
attrs.buildInputs ++
pkgs.lib.lists.concatMap optionalDevelopInstallBuildInputs developInstalls ++
(with ce-pythonPackages; [
bumpversion
invoke
ipdb
]);
# Somewhat snappier setup of the development environment
# TODO: think of supporting a stable path again, so that multiple shells
# can share it.
preShellHook = enterprise-ce.linkNodeAndBowerPackages + ''
# Custom prompt to distinguish from other dev envs.
export PS1="\n\[\033[1;32m\][CE-shell:\w]$\[\033[0m\] "
# Setup a temporary directory.
tmp_path=$(mktemp -d)
export PATH="$tmp_path/bin:$PATH"
export PYTHONPATH="$tmp_path/${ce-pythonPackages.python.sitePackages}:$PYTHONPATH"
mkdir -p $tmp_path/${ce-pythonPackages.python.sitePackages}
# Develop installations
python setup.py develop --prefix $tmp_path --allow-hosts ""
echo "Additional develop installs"
'' + pkgs.lib.strings.concatMapStrings optionalDevelopInstall developInstalls;
})