##// END OF EJS Templates
default.nix:updated format to be consistent with CE package
marcink -
r226:6895402c default
parent child Browse files
Show More
@@ -1,154 +1,157 b''
1 1 # Nix environment for the community edition
2 2 #
3 3 # This shall be as lean as possible, just producing the rhodecode-vcsserver
4 4 # derivation. For advanced tweaks to pimp up the development environment we use
5 5 # "shell.nix" so that it does not have to clutter this file.
6 6
7 7 { pkgs ? (import <nixpkgs> {})
8 8 , pythonPackages ? "python27Packages"
9 9 , pythonExternalOverrides ? self: super: {}
10 10 , doCheck ? true
11 11 }:
12 12
13 13 let pkgs_ = pkgs; in
14 14
15 15 let
16 16 pkgs = pkgs_.overridePackages (self: super: {
17 17 # bump GIT version
18 18 git = pkgs.lib.overrideDerivation pkgs_.git (oldAttrs: {
19 19 name = "git-2.9.3";
20 20 src = pkgs.fetchurl {
21 21 url = "https://www.kernel.org/pub/software/scm/git/git-2.9.3.tar.xz";
22 22 sha256 = "0qzs681a64k3shh5p0rg41l1z16fbk5sj0xga45k34hp1hsp654z";
23 23 };
24 24
25 25 });
26 26
27 27 # Override subversion derivation to
28 28 # - activate python bindings
29 29 subversion = let
30 30 subversionWithPython = super.subversion.override {
31 31 httpSupport = true;
32 32 pythonBindings = true;
33 33 python = self.python27Packages.python;
34 34 };
35 35
36 36 in
37 37
38 38 pkgs.lib.overrideDerivation subversionWithPython (oldAttrs: {
39 39 patches = (oldAttrs.patches or []) ++
40 40 pkgs.lib.optionals pkgs.stdenv.isDarwin [
41 41 # johbo: "import svn.client" fails on darwin currently.
42 42 ./pkgs/subversion-1.9.4-darwin.patch
43 43 ];
44 44 });
45 45
46 46 });
47 47
48 48 inherit (pkgs.lib) fix extends;
49 49 basePythonPackages = with builtins; if isAttrs pythonPackages
50 50 then pythonPackages
51 51 else getAttr pythonPackages pkgs;
52 52
53 53 elem = builtins.elem;
54 54 basename = path: with pkgs.lib; last (splitString "/" path);
55 55 startsWith = prefix: full: let
56 56 actualPrefix = builtins.substring 0 (builtins.stringLength prefix) full;
57 57 in actualPrefix == prefix;
58 58
59 59 src-filter = path: type: with pkgs.lib;
60 60 let
61 61 ext = last (splitString "." path);
62 62 in
63 63 !elem (basename path) [".hg" ".git" "__pycache__" ".eggs"
64 64 "node_modules" "build" "data" "tmp"] &&
65 65 !elem ext ["egg-info" "pyc"] &&
66 66 !startsWith "result" path;
67 67
68 68 rhodecode-vcsserver-src = builtins.filterSource src-filter ./.;
69 69
70 70 pythonGeneratedPackages = self: basePythonPackages.override (a: {
71 71 inherit self;
72 72 }) // (scopedImport {
73 73 self = self;
74 74 super = basePythonPackages;
75 75 inherit pkgs;
76 76 inherit (pkgs) fetchurl fetchgit;
77 77 } ./pkgs/python-packages.nix);
78 78
79 79 pythonOverrides = import ./pkgs/python-packages-overrides.nix {
80 80 inherit basePythonPackages pkgs;
81 81 };
82 82
83 83 version = builtins.readFile ./vcsserver/VERSION;
84 84
85 85 pythonLocalOverrides = self: super: {
86 86 rhodecode-vcsserver = super.rhodecode-vcsserver.override (attrs: {
87 87 inherit doCheck version;
88 88
89 89 name = "rhodecode-vcsserver-${version}";
90 90 releaseName = "RhodeCodeVCSServer-${version}";
91 91 src = rhodecode-vcsserver-src;
92 92 dontStrip = true; # prevent strip, we don't need it.
93 93
94 94 propagatedBuildInputs = attrs.propagatedBuildInputs ++ ([
95 95 pkgs.git
96 96 pkgs.subversion
97 97 ]);
98 98
99 99 # TODO: johbo: Make a nicer way to expose the parts. Maybe
100 100 # pkgs/default.nix?
101 101 passthru = {
102 102 pythonPackages = self;
103 103 };
104 104
105 105 # Add VCSServer bin directory to path so that tests can find 'vcsserver'.
106 106 preCheck = ''
107 107 export PATH="$out/bin:$PATH"
108 108 '';
109 109
110 110 # put custom attrs here
111 111 checkPhase = ''
112 112 runHook preCheck
113 113 PYTHONHASHSEED=random py.test -p no:sugar -vv --cov-config=.coveragerc --cov=vcsserver --cov-report=term-missing vcsserver
114 114 runHook postCheck
115 115 '';
116 116
117 117 postInstall = ''
118 118 echo "Writing meta information for rccontrol to nix-support/rccontrol"
119 119 mkdir -p $out/nix-support/rccontrol
120 120 cp -v vcsserver/VERSION $out/nix-support/rccontrol/version
121 121 echo "DONE: Meta information for rccontrol written"
122 122
123 # python based programs need to be wrapped
123 124 ln -s ${self.pyramid}/bin/* $out/bin/
124 125 ln -s ${self.gunicorn}/bin/gunicorn $out/bin/
125 126
126 127 # Symlink version control utilities
127 128 #
128 129 # We ensure that always the correct version is available as a symlink.
129 130 # So that users calling them via the profile path will always use the
130 131 # correct version.
131 132 ln -s ${pkgs.git}/bin/git $out/bin
132 133 ln -s ${self.mercurial}/bin/hg $out/bin
133 134 ln -s ${pkgs.subversion}/bin/svn* $out/bin
134 135
135 for file in $out/bin/*; do
136 for file in $out/bin/*;
137 do
136 138 wrapProgram $file \
137 139 --set PATH $PATH \
138 140 --set PYTHONPATH $PYTHONPATH \
139 141 --set PYTHONHASHSEED random
140 142 done
143
141 144 '';
142 145
143 146 });
144 147 };
145 148
146 149 # Apply all overrides and fix the final package set
147 150 myPythonPackages =
148 151 (fix
149 152 (extends pythonExternalOverrides
150 153 (extends pythonLocalOverrides
151 154 (extends pythonOverrides
152 155 pythonGeneratedPackages))));
153 156
154 157 in myPythonPackages.rhodecode-vcsserver
General Comments 0
You need to be logged in to leave comments. Login now