##// END OF EJS Templates
caches: use repo.lru based Dict cache. This LRUDict uses Timing Algo to not have to use locking...
caches: use repo.lru based Dict cache. This LRUDict uses Timing Algo to not have to use locking for the LRU implementation, this it's safer to use for dogpile. We used it before with beaker, so it's generally more stable.

File last commit:

r737:b3f2563a default
r2945:ec5716e4 default
Show More
dependencies.rst
60 lines | 1.3 KiB | text/x-rst | RstLexer

Dependency management

Overview

We use the Nix package manager to handle our dependencies. In general we use the packages out of the package collection nixpkgs. For frequently changing dependencies for Python and JavaScript we use the tools which are described in this section to generate the needed Nix derivations.

Python dependencies

We use the tool pip2nix to generate the Nix derivations for our Python dependencies.

Generating the dependencies should be done with the following command:

pip2nix generate --license

Note

License extraction support is still experimental, use the version from the following pull request: https://github.com/ktosiek/pip2nix/pull/30

Node dependencies

After adding new dependencies via npm install --save, use node2nix to update the corresponding Nix derivations:

cd pkgs
node2nix --input ../package.json \
         -o node-packages.nix \
         -e node-env.nix \
         -c node-default.nix \
         -d --flatten

Bower dependencies

Frontend dependencies are managed based on bower, with bower2nix a tool exists which can generate the needed Nix derivations:

bower2nix bower.json pkgs/bower-packages.nix