##// END OF EJS Templates
release: Merge default into stable for release preparation
marcink -
r3192:689a0c93 merge stable
parent child
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -0,0 +1,10
1 {
2 "presets": [
3 ["env", {
4 "targets": {
5 "browsers": ["last 2 versions"]
6 }
7 }]
8 ],
9 "plugins": ["transform-object-rest-spread"]
10 }
@@ -0,0 +1,44
1 .. _integrations-rcextensions:
2
3
4 rcextensions integrations
5 =========================
6
7
8 Since RhodeCode 4.14 release rcextensions aren't part of rhodecode-tools, and instead
9 they are shipped with the new or upgraded installations.
10
11 The rcextensions template `rcextensions.tmpl` is created in the `etc/` directory
12 of enterprise or community installation. It's always re-created and updated on upgrades.
13
14
15 Activating rcextensions
16 +++++++++++++++++++++++
17
18 To activate rcextensions simply copy or rename the created template rcextensions
19 into the path where the rhodecode.ini file is located::
20
21 pushd ~/rccontrol/enterprise-1/
22 or
23 pushd ~/rccontrol/community-1/
24
25 mv etc/rcextensions.tmpl rcextensions
26
27
28 rcextensions are loaded when |RCE| starts. So a restart is required after activation or
29 change of code in rcextensions.
30
31 Simply restart only the enterprise/community instance::
32
33 rccontrol restart enterprise-1
34 or
35 rccontrol restart community-1
36
37
38 Example usage
39 +++++++++++++
40
41
42 To see examples of usage please check the examples directory under:
43
44 https://code.rhodecode.com/rhodecode-enterprise-ce/files/stable/rhodecode/config/rcextensions/examples
@@ -0,0 +1,114
1 |RCE| 4.14.0 |RNS|
2 ------------------
3
4 Release Date
5 ^^^^^^^^^^^^
6
7 - 2018-11-02
8
9
10 New Features
11 ^^^^^^^^^^^^
12
13 - Diffs: expose range diff inside the PR view. It's now possible to show
14 commit-per-commit view of changes in pull request.
15 - Diffs: new sticky context bar.
16 When browsing diffs we show file path of the current diff so users are aware all the time
17 what file they are reviewing.
18 - Diffs: added quick file selector in diffs views. Now it's possible to select a file
19 in large diffs from the sticky header for quicker access to certain interesting files
20 in diffs.
21 - Diffs: introducing diff menu for whitespace toggle and context changes.
22 It's now possible to show/hide whitespace changes and toggle the file context in
23 all diff places including pull requests.
24 - Comments: allow commenting on empty files without content.
25 - Repositories: added option to archive repositories instead of deleting them.
26 Archived repositories are useful for future auditing, but they are read-only.
27 - rcextensions: new rcextensions. We're introducing new `rcextensions` that will be base
28 for future low-level integrations. It's now possible to expose nice messages back
29 to the users when using `rcextensions`.
30 - Summary page: slightly re-organize summary page for better user experience.
31
32
33 General
34 ^^^^^^^
35
36 - Mailing: switched from custom library to pyramid_mailer with python3 compatibility.
37 - Frontend: Switched to Polymer 3.0.
38 - Frontend: fixed problems with IE11 and brought back support for that browser.
39 - Git: use a fetch_sync based creation of remote repositories.
40 This fixes problems with importing from Bitbucket.
41 - Comments: update comments email templates.
42 - Packaging: only wrap external dependency scripts. This makes execution of scripts
43 roughly 5x faster due to much smaller PATH tree.
44 - HTTP: use application wide detection of invalid bytes sent via URL/GET/POST data.
45 - Fonts/UI: use consistent fonts across the whole application.
46 Few places had non-standard custom fonts.
47 - Google: updated google auth plugin with latest API changes.
48 - Core: handle edge case requesting matched routes but with hg/svn/git or api context.
49 - Dependencies: bumped rhodecode-tools to 1.0.0 release using Apache2 license.
50 - Dependencies: atomicwrites==1.2.1
51 - Dependencies: attrs==18.2.0
52 - Dependencies: dogpile.cache==0.6.7
53 - Dependencies: psutil==5.4.7
54 - Dependencies: pathlib2==2.3.2
55 - Dependencies: subprocess32==3.5.2
56 - Dependencies: gevent==1.3.6
57 - Dependencies: greenlet==0.4.15
58 - Dependencies: pytest==3.8.2
59 - Dependencies: py==1.6.0
60 - Dependencies: pytest-cov==2.6.0
61 - Dependencies: pytest-timeout==1.3.2
62 - Dependencies: coverage==4.5.1
63 - Dependencies: psycopg2==2.7.5
64
65
66 Security
67 ^^^^^^^^
68
69 - RST: improve Javascript RST sandbox.
70 - Jupyter: sanitize markdown cells similar as we do for our own markdown cleanup.
71
72
73 Performance
74 ^^^^^^^^^^^
75
76 - SSH: improved SSH wrapper execution speed by using optimized binary script wrapping.
77 - Core: reduced font and JavaScript load times.
78
79
80 Fixes
81 ^^^^^
82
83 - Comments: ensure we always display unmatched comments.
84 - Branch Permissions: fixed changing rule order for branch permissions.
85 - Users: ensure get_first_superadmin actually gets the 1st created super-admin.
86 - Users: when deleting users ensure we also clear personal flag.
87 This fixes some problems with multiple personal groups.
88 - Diffs: disable the error border on highlight errors.
89 - Integrations: implement retry to HTTP[S] calls for integrations.
90 Web parts will do a 3x retry call in case service is not reachable or
91 responds with 5XX codes.
92 - Git: fixed pull-request updates in case branch names are the same as the file names.
93 - Supervisor: add patch for older kernel support.
94 - Compare: fixed file after/before links in compare view for cross repo compare.
95 - Emails: improve fonts and rendering of email HTML.
96 - Permissions: flush members of user groups permissions to clear caches.
97 - Repository: add check preventing of removal of repo with attached pull requests. Users
98 should use the new archive repo function instead.
99
100
101 Upgrade notes
102 ^^^^^^^^^^^^^
103
104 - In this release, we're shipping a new `rcextensions`. The changes made are
105 backward incompatible. An update of `rcextensions` is required
106 prior to using them again. Please check the new `rcextensions.tmpl` directory
107 located in `etc/rcextensions.tmpl` in your instance installation path.
108 Old code should be 100% portable by just copy&paste to the right function.
109
110 - Mailing: We introduced a new mailing library. The older options should be compatible and
111 generally, old configuration doesn't need any changes in order to send emails.
112 We, however, encourage users to re-check mailing setup in case of some more
113 sophisticated email setups.
114 There's a possibility to send a test email from admin > settings > email section.
@@ -0,0 +1,3
1 self: super: {
2
3 }
@@ -0,0 +1,16
1 diff -rup supervisor-3.3.4-orig/supervisor/options.py supervisor-3.3.4/supervisor/options.py
2 --- supervisor-3.3.4-orig/supervisor/options.py 1970-01-01 01:00:01.000000000 +0100
3 +++ supervisor-3.3.4/supervisor-new/options.py 2018-10-24 10:53:19.368503735 +0200
4 @@ -1395,7 +1395,11 @@ class ServerOptions(Options):
5 name = limit['name']
6 name = name # name is used below by locals()
7
8 - soft, hard = resource.getrlimit(res)
9 + try:
10 + soft, hard = resource.getrlimit(res)
11 + except Exception:
12 + # handle old kernel problems, this is not critical to execute
13 + soft, hard = -1, -1
14
15 if (soft < min) and (soft != -1): # -1 means unlimited
16 if (hard < min) and (hard != -1):
@@ -0,0 +1,3
1 ## special libraries we could extend the requirements.txt file with to add some
2 ## custom libraries usefull for debug and memory tracing
3 objgraph==3.1.1
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
@@ -1,5 +1,5
1 [bumpversion]
1 [bumpversion]
2 current_version = 4.13.3
2 current_version = 4.14.0
3 message = release: Bump version {current_version} to {new_version}
3 message = release: Bump version {current_version} to {new_version}
4
4
5 [bumpversion:file:rhodecode/VERSION]
5 [bumpversion:file:rhodecode/VERSION]
@@ -24,7 +24,6 syntax: regexp
24 ^.dev
24 ^.dev
25 ^._dev
25 ^._dev
26 ^build/
26 ^build/
27 ^bower_components/
28 ^coverage\.xml$
27 ^coverage\.xml$
29 ^data$
28 ^data$
30 ^\.eggs/
29 ^\.eggs/
@@ -36,14 +35,15 syntax: regexp
36 ^htmlcov
35 ^htmlcov
37 ^junit\.xml$
36 ^junit\.xml$
38 ^node_modules/
37 ^node_modules/
38 ^node_binaries/
39 ^pylint.log$
39 ^pylint.log$
40 ^rcextensions/
40 ^rcextensions/
41 ^result$
41 ^result$
42 ^rhodecode/public/css/style.css$
42 ^rhodecode/public/css/style.css$
43 ^rhodecode/public/css/style-polymer.css$
43 ^rhodecode/public/css/style-polymer.css$
44 ^rhodecode/public/js/rhodecode-components.html$
44 ^rhodecode/public/js/rhodecode-components.html$
45 ^rhodecode/public/js/rhodecode-components.js$
45 ^rhodecode/public/js/scripts.js$
46 ^rhodecode/public/js/scripts.js$
46 ^rhodecode/public/js/rhodecode-components.js$
47 ^rhodecode/public/js/src/components/root-styles.gen.html$
47 ^rhodecode/public/js/src/components/root-styles.gen.html$
48 ^rhodecode/public/js/vendors/webcomponentsjs/
48 ^rhodecode/public/js/vendors/webcomponentsjs/
49 ^rhodecode\.db$
49 ^rhodecode\.db$
@@ -5,25 +5,20 done = false
5 done = true
5 done = true
6
6
7 [task:rc_tools_pinned]
7 [task:rc_tools_pinned]
8 done = true
9
8
10 [task:fixes_on_stable]
9 [task:fixes_on_stable]
11 done = true
12
10
13 [task:pip2nix_generated]
11 [task:pip2nix_generated]
14 done = true
15
12
16 [task:changelog_updated]
13 [task:changelog_updated]
17 done = true
18
14
19 [task:generate_api_docs]
15 [task:generate_api_docs]
20 done = true
16
17 [task:updated_translation]
21
18
22 [release]
19 [release]
23 state = prepared
20 state = in_progress
24 version = 4.13.3
21 version = 4.14.0
25
26 [task:updated_translation]
27
22
28 [task:generate_js_routes]
23 [task:generate_js_routes]
29
24
@@ -1,4 +1,12
1 var gruntConfig = require('./grunt_config.json');
1 var gruntConfig = require('./grunt_config.json');
2 var webpackConfig = require('./webpack.config');
3 gruntConfig["webpack"] = {
4 options: {
5 stats: !process.env.NODE_ENV || process.env.NODE_ENV === 'development'
6 },
7 prod: webpackConfig,
8 dev: Object.assign({ watch: false }, webpackConfig)
9 };
2
10
3 module.exports = function(grunt) {
11 module.exports = function(grunt) {
4 grunt.initConfig(gruntConfig);
12 grunt.initConfig(gruntConfig);
@@ -7,9 +15,7 module.exports = function(grunt) {
7 grunt.loadNpmTasks('grunt-contrib-concat');
15 grunt.loadNpmTasks('grunt-contrib-concat');
8 grunt.loadNpmTasks('grunt-contrib-watch');
16 grunt.loadNpmTasks('grunt-contrib-watch');
9 grunt.loadNpmTasks('grunt-contrib-jshint');
17 grunt.loadNpmTasks('grunt-contrib-jshint');
10 grunt.loadNpmTasks('grunt-vulcanize');
11 grunt.loadNpmTasks('grunt-crisper');
12 grunt.loadNpmTasks('grunt-contrib-copy');
18 grunt.loadNpmTasks('grunt-contrib-copy');
13
19 grunt.loadNpmTasks('grunt-webpack');
14 grunt.registerTask('default', ['less:production', 'less:components', 'concat:polymercss', 'copy', 'concat:dist', 'vulcanize', 'crisper']);
20 grunt.registerTask('default', ['less:production', 'less:components', 'copy', 'webpack', 'concat:dist']);
15 };
21 };
@@ -39,7 +39,6 include rhodecode/public/sounds/*.mp3
39 include rhodecode/public/sounds/*.wav
39 include rhodecode/public/sounds/*.wav
40
40
41 # fonts
41 # fonts
42 recursive-include rhodecode/public/fonts/ProximaNova *
43 recursive-include rhodecode/public/fonts/RCIcons *
42 recursive-include rhodecode/public/fonts/RCIcons *
44
43
45 # js
44 # js
@@ -1,9 +1,9
1
1
2 .PHONY: clean docs docs-clean docs-cleanup test test-clean test-only test-only-postgres test-only-mysql web-build
2 .PHONY: clean docs docs-clean docs-cleanup test test-clean test-only test-only-postgres test-only-mysql web-build
3
3
4 WEBPACK=./node_modules/webpack/bin/webpack.js
5 GRUNT=grunt
6 NODE_PATH=./node_modules
4 NODE_PATH=./node_modules
5 WEBPACK=./node_binaries/webpack
6 GRUNT=./node_binaries/grunt
7
7
8
8
9 clean:
9 clean:
@@ -26,8 +26,6 debug = true
26 #smtp_port =
26 #smtp_port =
27 #smtp_use_tls = false
27 #smtp_use_tls = false
28 #smtp_use_ssl = true
28 #smtp_use_ssl = true
29 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
30 #smtp_auth =
31
29
32 [server:main]
30 [server:main]
33 ## COMMON ##
31 ## COMMON ##
@@ -281,8 +279,10 supervisor.group_id = dev
281 ## Display extended labs settings
279 ## Display extended labs settings
282 labs_settings_active = true
280 labs_settings_active = true
283
281
284 ## custom exception store path, defaults to TMPDIR
282 ## Custom exception store path, defaults to TMPDIR
285 exception_tracker.store_path =
283 ## This is used to store exception from RhodeCode in shared directory
284 #exception_tracker.store_path =
285
286
286
287 ####################################
287 ####################################
288 ### CELERY CONFIG ####
288 ### CELERY CONFIG ####
@@ -506,7 +506,7 debug_style = true
506 ###########################################
506 ###########################################
507 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
507 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
508 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
508 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
509 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
509 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode?charset=utf8
510 # pymysql is an alternative driver for MySQL, use in case of problems with default one
510 # pymysql is an alternative driver for MySQL, use in case of problems with default one
511 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
511 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
512
512
@@ -26,8 +26,6 debug = true
26 #smtp_port =
26 #smtp_port =
27 #smtp_use_tls = false
27 #smtp_use_tls = false
28 #smtp_use_ssl = true
28 #smtp_use_ssl = true
29 ## Specify available auth parameters here (e.g. LOGIN PLAIN CRAM-MD5, etc.)
30 #smtp_auth =
31
29
32 [server:main]
30 [server:main]
33 ## COMMON ##
31 ## COMMON ##
@@ -256,8 +254,9 supervisor.group_id = prod
256 ## Display extended labs settings
254 ## Display extended labs settings
257 labs_settings_active = true
255 labs_settings_active = true
258
256
259 ## custom exception store path, defaults to TMPDIR
257 ## Custom exception store path, defaults to TMPDIR
260 exception_tracker.store_path =
258 ## This is used to store exception from RhodeCode in shared directory
259 #exception_tracker.store_path =
261
260
262
261
263 ####################################
262 ####################################
@@ -480,7 +479,7 set debug = false
480 ###########################################
479 ###########################################
481 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
480 #sqlalchemy.db1.url = sqlite:///%(here)s/rhodecode.db?timeout=30
482 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
481 #sqlalchemy.db1.url = postgresql://postgres:qweqwe@localhost/rhodecode
483 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode
482 #sqlalchemy.db1.url = mysql://root:qweqwe@localhost/rhodecode?charset=utf8
484 # pymysql is an alternative driver for MySQL, use in case of problems with default one
483 # pymysql is an alternative driver for MySQL, use in case of problems with default one
485 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
484 #sqlalchemy.db1.url = mysql+pymysql://root:qweqwe@localhost/rhodecode
486
485
@@ -9,7 +9,7
9 # {
9 # {
10 # # Thoughts on how to configure the dev environment
10 # # Thoughts on how to configure the dev environment
11 # rc = {
11 # rc = {
12 # codeInternalUrl = "https://usr:token@internal-code.rhodecode.com";
12 # codeInternalUrl = "https://usr:token@code.rhodecode.com/internal";
13 # sources = {
13 # sources = {
14 # rhodecode-vcsserver = "/home/user/work/rhodecode-vcsserver";
14 # rhodecode-vcsserver = "/home/user/work/rhodecode-vcsserver";
15 # rhodecode-enterprise-ce = "/home/user/work/rhodecode-enterprise-ce";
15 # rhodecode-enterprise-ce = "/home/user/work/rhodecode-enterprise-ce";
@@ -26,10 +26,18 args@
26 }:
26 }:
27
27
28 let
28 let
29 # Use nixpkgs from args or import them. We use this indirect approach
29 pkgs_ = (import <nixpkgs> {});
30 # through args to be able to use the name `pkgs` for our customized packages.
30 in
31 # Otherwise we will end up with an infinite recursion.
31
32 pkgs = args.pkgs or (import <nixpkgs> { });
32 let
33 pkgs = import <nixpkgs> {
34 overlays = [
35 (import ./pkgs/overlays.nix)
36 ];
37 inherit
38 (pkgs_)
39 system;
40 };
33
41
34 # Works with the new python-packages, still can fallback to the old
42 # Works with the new python-packages, still can fallback to the old
35 # variant.
43 # variant.
@@ -46,7 +54,7 let
46 in
54 in
47 !builtins.elem (basename path) [
55 !builtins.elem (basename path) [
48 ".git" ".hg" "__pycache__" ".eggs" ".idea" ".dev"
56 ".git" ".hg" "__pycache__" ".eggs" ".idea" ".dev"
49 "bower_components" "node_modules"
57 "node_modules" "node_binaries"
50 "build" "data" "result" "tmp"] &&
58 "build" "data" "result" "tmp"] &&
51 !builtins.elem ext ["egg-info" "pyc"] &&
59 !builtins.elem ext ["egg-info" "pyc"] &&
52 # TODO: johbo: This check is wrong, since "path" contains an absolute path,
60 # TODO: johbo: This check is wrong, since "path" contains an absolute path,
@@ -55,7 +63,11 let
55
63
56 sources =
64 sources =
57 let
65 let
58 inherit (pkgs.lib) all isString attrValues;
66 inherit
67 (pkgs.lib)
68 all
69 isString
70 attrValues;
59 sourcesConfig = pkgs.config.rc.sources or {};
71 sourcesConfig = pkgs.config.rc.sources or {};
60 in
72 in
61 # Ensure that sources are configured as strings. Using a path
73 # Ensure that sources are configured as strings. Using a path
@@ -66,18 +78,12 let
66 version = builtins.readFile "${rhodecode-enterprise-ce-src}/rhodecode/VERSION";
78 version = builtins.readFile "${rhodecode-enterprise-ce-src}/rhodecode/VERSION";
67 rhodecode-enterprise-ce-src = builtins.filterSource src-filter ./.;
79 rhodecode-enterprise-ce-src = builtins.filterSource src-filter ./.;
68
80
69 buildBowerComponents = pkgs.buildBowerComponents;
70 nodeEnv = import ./pkgs/node-default.nix {
81 nodeEnv = import ./pkgs/node-default.nix {
71 inherit pkgs;
82 inherit
83 pkgs;
72 };
84 };
73 nodeDependencies = nodeEnv.shell.nodeDependencies;
85 nodeDependencies = nodeEnv.shell.nodeDependencies;
74
86
75 bowerComponents = buildBowerComponents {
76 name = "enterprise-ce-${version}";
77 generated = ./pkgs/bower-packages.nix;
78 src = rhodecode-enterprise-ce-src;
79 };
80
81 rhodecode-testdata-src = sources.rhodecode-testdata or (
87 rhodecode-testdata-src = sources.rhodecode-testdata or (
82 pkgs.fetchhg {
88 pkgs.fetchhg {
83 url = "https://code.rhodecode.com/upstream/rc_testdata";
89 url = "https://code.rhodecode.com/upstream/rc_testdata";
@@ -95,23 +101,22 let
95 pythonLocalOverrides = self: super: {
101 pythonLocalOverrides = self: super: {
96 rhodecode-enterprise-ce =
102 rhodecode-enterprise-ce =
97 let
103 let
98 linkNodeAndBowerPackages = ''
104 linkNodePackages = ''
99 export RHODECODE_CE_PATH=${rhodecode-enterprise-ce-src}
105 export RHODECODE_CE_PATH=${rhodecode-enterprise-ce-src}
100
106
101 echo "[BEGIN]: Link node packages"
107 echo "[BEGIN]: Link node packages and binaries"
102 rm -fr node_modules
103 mkdir node_modules
104 # johbo: Linking individual packages allows us to run "npm install"
108 # johbo: Linking individual packages allows us to run "npm install"
105 # inside of a shell to try things out. Re-entering the shell will
109 # inside of a shell to try things out. Re-entering the shell will
106 # restore a clean environment.
110 # restore a clean environment.
111 rm -fr node_modules
112 mkdir node_modules
107 ln -s ${nodeDependencies}/lib/node_modules/* node_modules/
113 ln -s ${nodeDependencies}/lib/node_modules/* node_modules/
108 echo "[DONE]: Link node packages"
114 export NODE_PATH=./node_modules
109
115
110 echo "[BEGIN]: Link bower packages"
116 rm -fr node_binaries
111 rm -fr bower_components
117 mkdir node_binaries
112 mkdir bower_components
118 ln -s ${nodeDependencies}/bin/* node_binaries/
113 ln -s ${bowerComponents}/bower_components/* bower_components/
119 echo "[DONE ]: Link node packages and binaries"
114 echo "[DONE]: Link bower packages"
115 '';
120 '';
116
121
117 releaseName = "RhodeCodeEnterpriseCE-${version}";
122 releaseName = "RhodeCodeEnterpriseCE-${version}";
@@ -129,8 +134,7 let
129 passthru = {
134 passthru = {
130 inherit
135 inherit
131 rhodecode-testdata
136 rhodecode-testdata
132 bowerComponents
137 linkNodePackages
133 linkNodeAndBowerPackages
134 myPythonPackagesUnfix
138 myPythonPackagesUnfix
135 pythonLocalOverrides
139 pythonLocalOverrides
136 pythonCommunityOverrides;
140 pythonCommunityOverrides;
@@ -141,8 +145,6 let
141 buildInputs =
145 buildInputs =
142 attrs.buildInputs or [] ++ [
146 attrs.buildInputs or [] ++ [
143 rhodecode-testdata
147 rhodecode-testdata
144 pkgs.nodePackages.bower
145 pkgs.nodePackages.grunt-cli
146 ];
148 ];
147
149
148 #NOTE: option to inject additional propagatedBuildInputs
150 #NOTE: option to inject additional propagatedBuildInputs
@@ -175,14 +177,28 let
175 '';
177 '';
176
178
177 preBuild = ''
179 preBuild = ''
178
180 echo "[BEGIN]: Building frontend assets"
179 echo "Building frontend assets"
181 ${linkNodePackages}
180 ${linkNodeAndBowerPackages}
182 make web-build
181 grunt
182 rm -fr node_modules
183 rm -fr node_modules
184 rm -fr node_binaries
185 echo "[DONE ]: Building frontend assets"
183 '';
186 '';
184
187
185 postInstall = ''
188 postInstall = ''
189 # check required files
190 STATIC_CHECK="/robots.txt /502.html
191 /js/scripts.js /js/rhodecode-components.js
192 /css/style.css /css/style-polymer.css"
193
194 for file in $STATIC_CHECK;
195 do
196 if [ ! -f rhodecode/public/$file ]; then
197 echo "Missing $file"
198 exit 1
199 fi
200 done
201
186 echo "Writing enterprise-ce meta information for rccontrol to nix-support/rccontrol"
202 echo "Writing enterprise-ce meta information for rccontrol to nix-support/rccontrol"
187 mkdir -p $out/nix-support/rccontrol
203 mkdir -p $out/nix-support/rccontrol
188 cp -v rhodecode/VERSION $out/nix-support/rccontrol/version
204 cp -v rhodecode/VERSION $out/nix-support/rccontrol/version
@@ -192,22 +208,35 let
192 cp configs/production.ini $out/etc
208 cp configs/production.ini $out/etc
193 echo "[DONE]: saved enterprise-ce production.ini into $out/etc"
209 echo "[DONE ]: saved enterprise-ce production.ini into $out/etc"
194
210
211 cp -Rf rhodecode/config/rcextensions $out/etc/rcextensions.tmpl
212 echo "[DONE ]: saved enterprise-ce rcextensions into $out/etc/rcextensions.tmpl"
213
195 # python based programs need to be wrapped
214 # python based programs need to be wrapped
196 mkdir -p $out/bin
215 mkdir -p $out/bin
197 # rhodecode-tools
198 ln -s ${self.rhodecode-tools}/bin/rhodecode-* $out/bin/
199
216
200 # required binaries from dependencies
217 # required binaries from dependencies
201 #ln -s ${self.python}/bin/python $out/bin
218 ln -s ${self.supervisor}/bin/supervisorctl $out/bin/
202 ln -s ${self.pyramid}/bin/* $out/bin/
219 ln -s ${self.supervisor}/bin/supervisord $out/bin/
203 ln -s ${self.gunicorn}/bin/gunicorn $out/bin/
204 ln -s ${self.supervisor}/bin/supervisor* $out/bin/
205 ln -s ${self.pastescript}/bin/paster $out/bin/
220 ln -s ${self.pastescript}/bin/paster $out/bin/
206 ln -s ${self.channelstream}/bin/channelstream $out/bin/
221 ln -s ${self.channelstream}/bin/channelstream $out/bin/
207 ln -s ${self.celery}/bin/celery $out/bin/
222 ln -s ${self.celery}/bin/celery $out/bin/
208 echo "[DONE]: created symlinks into $out/bin"
223 ln -s ${self.gunicorn}/bin/gunicorn $out/bin/
224 ln -s ${self.pyramid}/bin/prequest $out/bin/
225 ln -s ${self.pyramid}/bin/pserve $out/bin/
209
226
210 for file in $out/bin/*;
227 echo "[DONE ]: created symlinks into $out/bin"
228 DEPS="$out/bin/supervisorctl \
229 $out/bin/supervisord \
230 $out/bin/paster \
231 $out/bin/channelstream \
232 $out/bin/celery \
233 $out/bin/gunicorn \
234 $out/bin/prequest \
235 $out/bin/pserve"
236
237 # wrap only dependency scripts, they require to have full PYTHONPATH set
238 # to be able to import all packages
239 for file in $DEPS;
211 do
240 do
212 wrapProgram $file \
241 wrapProgram $file \
213 --prefix PATH : $PATH \
242 --prefix PATH : $PATH \
@@ -217,14 +246,16 let
217
246
218 echo "[DONE]: enterprise-ce binary wrapping"
247 echo "[DONE ]: enterprise-ce binary wrapping"
219
248
220 if [ ! -f rhodecode/public/js/scripts.js ]; then
249 # rhodecode-tools don't need wrapping
221 echo "Missing scripts.js"
250 ln -s ${self.rhodecode-tools}/bin/rhodecode-* $out/bin/
222 exit 1
251
223 fi
252 # expose sources of CE
224 if [ ! -f rhodecode/public/css/style.css ]; then
253 ln -s $out $out/etc/rhodecode_enterprise_ce_source
225 echo "Missing style.css"
254
226 exit 1
255 # expose static files folder
227 fi
256 cp -Rf $out/lib/${self.python.libPrefix}/site-packages/rhodecode/public/ $out/etc/static
257 chmod 755 -R $out/etc/static
258
228 '';
259 '';
229 });
260 });
230
261
@@ -237,8 +268,13 let
237 getAttr pythonPackages pkgs;
268 getAttr pythonPackages pkgs;
238
269
239 pythonGeneratedPackages = import ./pkgs/python-packages.nix {
270 pythonGeneratedPackages = import ./pkgs/python-packages.nix {
240 inherit pkgs;
271 inherit
241 inherit (pkgs) fetchurl fetchgit fetchhg;
272 pkgs;
273 inherit
274 (pkgs)
275 fetchurl
276 fetchgit
277 fetchhg;
242 };
278 };
243
279
244 pythonCommunityOverrides = import ./pkgs/python-packages-overrides.nix {
280 pythonCommunityOverrides = import ./pkgs/python-packages-overrides.nix {
@@ -162,7 +162,8 To add custom hooks to your instance, us
162
162
163 1. Open :menuselection:`Admin --> Settings --> Hooks`
163 1. Open :menuselection:`Admin --> Settings --> Hooks`
164 2. Add your custom hook details, you can use a file path to specify custom
164 2. Add your custom hook details, you can use a file path to specify custom
165 hook scripts, for example: ``python:/path/to/custom_hook.py``
165 hook scripts, for example:
166 ``pretxnchangegroup.example`` with value ``python:/path/to/custom_hook.py:my_func_name``
166 3. Select :guilabel:`Save`
167 3. Select :guilabel:`Save`
167
168
168 Also, see the |RC| Extensions section of the :ref:`rc-tools` guide. |RC|
169 Also, see the |RC| Extensions section of the :ref:`rc-tools` guide. |RC|
@@ -18,8 +18,8 Prerequisites
18 .. tip::
18 .. tip::
19
19
20 We recommend using Wandisco repositories which provide latest SVN versions
20 We recommend using Wandisco repositories which provide latest SVN versions
21 for most platforms. Below is example how to add the wandisco repositories
21 for most platforms.
22 for Ubuntu.
22 Here is an example how to add the Wandisco repositories for Ubuntu.
23
23
24 .. code-block:: bash
24 .. code-block:: bash
25
25
@@ -27,15 +27,28 Prerequisites
27 $ sudo wget -q http://opensource.wandisco.com/wandisco-debian.gpg -O- | sudo apt-key add -
27 $ sudo wget -q http://opensource.wandisco.com/wandisco-debian.gpg -O- | sudo apt-key add -
28 $ sudo apt-get update
28 $ sudo apt-get update
29
29