##// END OF EJS Templates
license: update license metadata and generation code
marcink -
r3073:73a2f607 default
parent child
Show More
@@ -47,6 +47,14 Bower dependencies
47 nix-shell pkgs/shell-generate.nix --command "bower2nix bower.json pkgs/bower-packages.nix"
47 nix-shell pkgs/shell-generate.nix --command "bower2nix bower.json pkgs/bower-packages.nix"
48
48
49
49
50 Generate license data
51 =====================
52
53 .. code:: shell
54
55 nix-build pkgs/license-generate.nix -o result-license && cat result-license/licenses.json | python -m json.tool > rhodecode/config/licenses.json
56
57
50 .. Links
58 .. Links
51
59
52 .. _RhodeCode Enterprise CE: https://code.rhodecode.com/rhodecode-enterprise-ce
60 .. _RhodeCode Enterprise CE: https://code.rhodecode.com/rhodecode-enterprise-ce
@@ -2,9 +2,9
2 #
2 #
3 # Usage:
3 # Usage:
4 #
4 #
5 # nix-build -I ~/dev license.nix -A result
5 # nix-build license.nix -o result-license
6 #
6 #
7 # Afterwards ./result will contain the license information as JSON files.
7 # Afterwards ./result-license will contain the license information as JSON files.
8 #
8 #
9 #
9 #
10 # Overview
10 # Overview
@@ -19,7 +19,7
19 # dependencies. The results from step 1 are then limited to the ones which
19 # dependencies. The results from step 1 are then limited to the ones which
20 # are in this list.
20 # are in this list.
21 #
21 #
22 # The result is then available in ./result/license.json.
22 # The result is then available in ./result-license/license.json.
23 #
23 #
24
24
25
25
@@ -32,20 +32,20 let
32 # Enterprise as simple as possible, goal here is just to identify the runtime
32 # Enterprise as simple as possible, goal here is just to identify the runtime
33 # dependencies. Ideally we could avoid building Enterprise at all and somehow
33 # dependencies. Ideally we could avoid building Enterprise at all and somehow
34 # figure it out without calling into nix-store.
34 # figure it out without calling into nix-store.
35 enterprise = import ./default.nix {
35 enterprise = import ../default.nix {
36 doCheck = false;
36 doCheck = false;
37 };
37 };
38
38
39 # For a given derivation, return the list of all dependencies
39 # For a given derivation, return the list of all dependencies
40 drvToDependencies = drv: nixpkgs.lib.flatten [
40 drvToDependencies = drv: nixpkgs.lib.flatten [
41 drv.nativeBuildInputs or []
41 drv.buildInputs or []
42 drv.propagatedNativeBuildInputs or []
42 drv.propagatedBuildInputs or []
43 ];
43 ];
44
44
45 # Transform the given derivation into the meta information which we need in
45 # Transform the given derivation into the meta information which we need in
46 # the resulting JSON files.
46 # the resulting JSON files.
47 drvToMeta = drv: {
47 drvToMeta = drv: {
48 name = drv.name or "UNNAMED";
48 name = drv.name or drv;
49 license = if drv ? meta.license then drv.meta.license else "UNKNOWN";
49 license = if drv ? meta.license then drv.meta.license else "UNKNOWN";
50 };
50 };
51
51
@@ -70,10 +70,8 let
70 rawStorePaths = nixpkgs.lib.removeSuffix "\n" (
70 rawStorePaths = nixpkgs.lib.removeSuffix "\n" (
71 builtins.readFile srcPath);
71 builtins.readFile srcPath);
72 storePaths = nixpkgs.lib.splitString "\n" rawStorePaths;
72 storePaths = nixpkgs.lib.splitString "\n" rawStorePaths;
73 # TODO: johbo: Would be nice to use some sort of utility here to convert
74 # the path to a derivation name.
75 storePathPrefix = (
73 storePathPrefix = (
76 builtins.stringLength "/nix/store/zwy7aavnif9ayw30rya1k6xiacafzzl6-");
74 builtins.stringLength "/nix/store/afafafafafafafafafafafafafafafaf-");
77 storePathToName = path:
75 storePathToName = path:
78 builtins.substring storePathPrefix (builtins.stringLength path) path;
76 builtins.substring storePathPrefix (builtins.stringLength path) path;
79 in (map storePathToName storePaths);
77 in (map storePathToName storePaths);
@@ -147,6 +145,7 in rec {
147 cat > build/licenses.json <<EOF
145 cat > build/licenses.json <<EOF
148 ${builtins.toJSON enterpriseRuntimeLicenses}
146 ${builtins.toJSON enterpriseRuntimeLicenses}
149 EOF
147 EOF
148
150 '';
149 '';
151
150
152 installPhase = ''
151 installPhase = ''
@@ -488,14 +488,30 class TestLabsSettings(object):
488 class TestOpenSourceLicenses(object):
488 class TestOpenSourceLicenses(object):
489
489
490 def test_records_are_displayed(self, autologin_user):
490 def test_records_are_displayed(self, autologin_user):
491 sample_licenses = {
491 sample_licenses = [
492 "python2.7-pytest-2.7.1": {
492 {
493 "UNKNOWN": None
493 "license": [
494 {
495 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
496 "shortName": "bsdOriginal",
497 "spdxId": "BSD-4-Clause",
498 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
499 }
500 ],
501 "name": "python2.7-coverage-3.7.1"
494 },
502 },
495 "python2.7-Markdown-2.6.2": {
503 {
496 "BSD-3-Clause": "http://spdx.org/licenses/BSD-3-Clause"
504 "license": [
497 }
505 {
498 }
506 "fullName": "MIT License",
507 "shortName": "mit",
508 "spdxId": "MIT",
509 "url": "http://spdx.org/licenses/MIT.html"
510 }
511 ],
512 "name": "python2.7-bootstrapped-pip-9.0.1"
513 },
514 ]
499 read_licenses_patch = mock.patch(
515 read_licenses_patch = mock.patch(
500 'rhodecode.apps.admin.views.open_source_licenses.read_opensource_licenses',
516 'rhodecode.apps.admin.views.open_source_licenses.read_opensource_licenses',
501 return_value=sample_licenses)
517 return_value=sample_licenses)
@@ -506,10 +522,9 class TestOpenSourceLicenses(object):
506 assert_response = AssertResponse(response)
522 assert_response = AssertResponse(response)
507 assert_response.element_contains(
523 assert_response.element_contains(
508 '.panel-heading', 'Licenses of Third Party Packages')
524 '.panel-heading', 'Licenses of Third Party Packages')
509 for name in sample_licenses:
525 for license_data in sample_licenses:
510 response.mustcontain(name)
526 response.mustcontain(license_data["license"][0]["spdxId"])
511 for license in sample_licenses[name]:
527 assert_response.element_contains('.panel-body', license_data["name"])
512 assert_response.element_contains('.panel-body', license)
513
528
514 def test_records_can_be_read(self, autologin_user):
529 def test_records_can_be_read(self, autologin_user):
515 response = self.app.get(
530 response = self.app.get(
@@ -35,7 +35,6 class OpenSourceLicensesAdminSettingsVie
35
35
36 def load_default_context(self):
36 def load_default_context(self):
37 c = self._get_local_tmpl_context()
37 c = self._get_local_tmpl_context()
38
39 return c
38 return c
40
39
41 @LoginRequired()
40 @LoginRequired()
@@ -47,7 +46,6 class OpenSourceLicensesAdminSettingsVie
47 c = self.load_default_context()
46 c = self.load_default_context()
48 c.active = 'open_source'
47 c.active = 'open_source'
49 c.navlist = navigation_list(self.request)
48 c.navlist = navigation_list(self.request)
50 items = sorted(read_opensource_licenses().items(), key=lambda t: t[0])
49 c.opensource_licenses = sorted(
51 c.opensource_licenses = collections.OrderedDict(items)
50 read_opensource_licenses(), key=lambda d: d["name"])
52
53 return self._get_template_context(c)
51 return self._get_template_context(c)
This diff has been collapsed as it changes many lines, (2281 lines changed) Show them Hide them
@@ -1,369 +1,1912
1 {
1 [
2 "libnghttp2-1.7.1": {
2 {
3 "MIT License": "http://spdx.org/licenses/MIT"
3 "license": [
4 },
4 {
5 "nodejs-4.3.1": {
5 "fullName": "Python Software Foundation License version 2",
6 "MIT License": "http://spdx.org/licenses/MIT"
6 "shortName": "psfl",
7 },
7 "spdxId": "Python-2.0",
8 "python-2.7.12": {
8 "url": "http://spdx.org/licenses/Python-2.0.html"
9 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
9 },
10 },
10 {
11 "python2.7-Babel-1.3": {
11 "fullName": "Zope Public License 2.0",
12 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
12 "shortName": "zpl20",
13 },
13 "spdxId": "ZPL-2.0",
14 "python2.7-Beaker-1.7.0": {
14 "url": "http://spdx.org/licenses/ZPL-2.0.html"
15 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
15 }
16 },
16 ],
17 "python2.7-Chameleon-2.24": {
17 "name": "python2.7-setuptools-38.4.0"
18 "BSD-like": "http://repoze.org/license.html"
18 },
19 },
19 {
20 "python2.7-FormEncode-1.2.4": {
20 "license": {
21 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
21 "fullName": "Python Software Foundation License version 2",
22 },
22 "shortName": "psfl",
23 "python2.7-Jinja2-2.7.3": {
23 "spdxId": "Python-2.0",
24 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
24 "url": "http://spdx.org/licenses/Python-2.0.html"
25 },
25 },
26 "python2.7-Mako-1.0.6": {
26 "name": "python-2.7.15"
27 "MIT License": "http://spdx.org/licenses/MIT"
27 },
28 },
28 {
29 "python2.7-Markdown-2.6.7": {
29 "license": [
30 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
30 {
31 },
31 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
32 "python2.7-MarkupSafe-0.23": {
32 "shortName": "bsdOriginal",
33 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
33 "spdxId": "BSD-4-Clause",
34 },
34 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
35 "python2.7-Paste-2.0.3": {
35 }
36 "MIT License": "http://spdx.org/licenses/MIT"
36 ],
37 },
37 "name": "python2.7-coverage-3.7.1"
38 "python2.7-PasteDeploy-1.5.2": {
38 },
39 "MIT License": "http://spdx.org/licenses/MIT"
39 {
40 },
40 "license": [
41 "python2.7-PasteScript-1.7.5": {
41 {
42 "MIT License": "http://spdx.org/licenses/MIT"
42 "fullName": "MIT License",
43 },
43 "shortName": "mit",
44 "python2.7-Pygments-2.2.0": {
44 "spdxId": "MIT",
45 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
45 "url": "http://spdx.org/licenses/MIT.html"
46 },
46 }
47 "python2.7-Routes-1.13": {
47 ],
48 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
48 "name": "python2.7-bootstrapped-pip-9.0.1"
49 },
49 },
50 "python2.7-SQLAlchemy-0.9.9": {
50 {
51 "MIT License": "http://spdx.org/licenses/MIT"
51 "license": [
52 },
52 {
53 "python2.7-Tempita-0.5.2": {
53 "fullName": "MIT License",
54 "MIT License": "http://spdx.org/licenses/MIT"
54 "shortName": "mit",
55 },
55 "spdxId": "MIT",
56 "python2.7-URLObject-2.4.0": {
56 "url": "http://spdx.org/licenses/MIT.html"
57 "The Unlicense": "http://unlicense.org/"
57 }
58 },
58 ],
59 "python2.7-WebError-0.10.3": {
59 "name": "python2.7-cov-core-1.15.0"
60 "MIT License": "http://spdx.org/licenses/MIT"
60 },
61 },
61 {
62 "python2.7-WebHelpers-1.3": {
62 "license": [
63 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
63 {
64 },
64 "fullName": "MIT License",
65 "python2.7-WebHelpers2-2.0": {
65 "shortName": "mit",
66 "MIT License": "http://spdx.org/licenses/MIT"
66 "spdxId": "MIT",
67 },
67 "url": "http://spdx.org/licenses/MIT.html"
68 "python2.7-WebOb-1.3.1": {
68 }
69 "MIT License": "http://spdx.org/licenses/MIT"
69 ],
70 },
70 "name": "python2.7-webtest-2.0.29"
71 "python2.7-Whoosh-2.7.4": {
71 },
72 "BSD 2-clause \"Simplified\" License": "http://spdx.org/licenses/BSD-2-Clause",
72 {
73 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
73 "license": [
74 },
74 {
75 "python2.7-alembic-0.8.4": {
75 "fullName": "MIT License",
76 "MIT License": "http://spdx.org/licenses/MIT"
76 "shortName": "mit",
77 },
77 "spdxId": "MIT",
78 "python2.7-appenlight-client-0.6.14": {
78 "url": "http://spdx.org/licenses/MIT.html"
79 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
79 }
80 },
80 ],
81 "python2.7-authomatic-0.1.0.post1": {
81 "name": "python2.7-beautifulsoup4-4.6.3"
82 "MIT License": "http://spdx.org/licenses/MIT"
82 },
83 },
83 {
84 "python2.7-backports.shutil-get-terminal-size-1.0.0": {
84 "license": [
85 "MIT License": "http://spdx.org/licenses/MIT"
85 {
86 },
86 "fullName": "Zope Public License 2.1",
87 "python2.7-bleach-1.5.0": {
87 "shortName": "zpl21",
88 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
88 "spdxId": "ZPL-2.1",
89 },
89 "url": "http://spdx.org/licenses/ZPL-2.1.html"
90 "python2.7-celery-2.2.10": {
90 }
91 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
91 ],
92 },
92 "name": "python2.7-waitress-1.1.0"
93 "python2.7-channelstream-0.5.2": {
93 },
94 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
94 {
95 },
95 "license": [
96 "python2.7-click-5.1": {
96 {
97 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
97 "fullName": "MIT License",
98 },
98 "shortName": "mit",
99 "python2.7-colander-1.2": {
99 "spdxId": "MIT",
100 "Repoze License": "http://www.repoze.org/LICENSE.txt"
100 "url": "http://spdx.org/licenses/MIT.html"
101 },
101 }
102 "python2.7-configobj-5.0.6": {
102 ],
103 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
103 "name": "python2.7-webob-1.7.4"
104 },
104 },
105 "python2.7-configparser-3.5.0": {
105 {
106 "MIT License": "http://spdx.org/licenses/MIT"
106 "license": [
107 },
107 {
108 "python2.7-cssselect-1.0.1": {
108 "fullName": "MIT License",
109 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
109 "shortName": "mit",
110 },
110 "spdxId": "MIT",
111 "python2.7-decorator-4.0.11": {
111 "url": "http://spdx.org/licenses/MIT.html"
112 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
112 }
113 },
113 ],
114 "python2.7-deform-2.0a2": {
114 "name": "python2.7-six-1.11.0"
115 "BSD-derived": "http://www.repoze.org/LICENSE.txt"
115 },
116 },
116 {
117 "python2.7-docutils-0.12": {
117 "license": [
118 "BSD 2-clause \"Simplified\" License": "http://spdx.org/licenses/BSD-2-Clause"
118 {
119 },
119 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
120 "python2.7-dogpile.cache-0.6.1": {
120 "shortName": "bsdOriginal",
121 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
121 "spdxId": "BSD-4-Clause",
122 },
122 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
123 "python2.7-dogpile.core-0.4.1": {
123 }
124 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
124 ],
125 },
125 "name": "python2.7-mock-1.0.1"
126 "python2.7-elasticsearch-2.3.0": {
126 },
127 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
127 {
128 },
128 "license": [
129 "python2.7-elasticsearch-dsl-2.2.0": {
129 {
130 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
130 "fullName": "MIT License",
131 },
131 "shortName": "mit",
132 "python2.7-entrypoints-0.2.2": {
132 "spdxId": "MIT",
133 "MIT License": "http://spdx.org/licenses/MIT"
133 "url": "http://spdx.org/licenses/MIT.html"
134 },
134 },
135 "python2.7-enum34-1.1.6": {
135 {
136 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
136 "fullName": "DFSG approved"
137 },
137 }
138 "python2.7-functools32-3.2.3.post2": {
138 ],
139 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
139 "name": "python2.7-pytest-timeout-1.2.1"
140 },
140 },
141 "python2.7-future-0.14.3": {
141 {
142 "MIT License": "http://spdx.org/licenses/MIT"
142 "license": [
143 },
143 {
144 "python2.7-futures-3.0.2": {
144 "fullName": "MIT License",
145 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
145 "shortName": "mit",
146 },
146 "spdxId": "MIT",
147 "python2.7-gevent-1.1.2": {
147 "url": "http://spdx.org/licenses/MIT.html"
148 "MIT License": "http://spdx.org/licenses/MIT"
148 }
149 },
149 ],
150 "python2.7-gnureadline-6.3.3": {
150 "name": "python2.7-pytest-3.6.0"
151 "GNU General Public License v1.0 only": "http://spdx.org/licenses/GPL-1.0"
151 },
152 },
152 {
153 "python2.7-gprof2dot-2016.10.13": {
153 "license": [
154 "GNU Lesser General Public License v3.0 or later": "http://spdx.org/licenses/LGPL-3.0+"
154 {
155 },
155 "fullName": "ASL"
156 "python2.7-greenlet-0.4.10": {
156 },
157 "MIT License": "http://spdx.org/licenses/MIT"
157 {
158 },
158 "fullName": "Apache License 2.0",
159 "python2.7-gunicorn-19.6.0": {
159 "shortName": "asl20",
160 "MIT License": "http://spdx.org/licenses/MIT"
160 "spdxId": "Apache-2.0",
161 },
161 "url": "http://spdx.org/licenses/Apache-2.0.html"
162 "python2.7-html5lib-0.9999999": {
162 }
163 "MIT License": "http://spdx.org/licenses/MIT"
163 ],
164 },
164 "name": "python2.7-funcsigs-1.0.2"
165 "python2.7-infrae.cache-1.0.1": {
165 },
166 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
166 {
167 },
167 "license": [
168 "python2.7-ipython-5.1.0": {
168 {
169 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
169 "fullName": "MIT License",
170 },
170 "shortName": "mit",
171 "python2.7-ipython-genutils-0.2.0": {
171 "spdxId": "MIT",
172 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
172 "url": "http://spdx.org/licenses/MIT.html"
173 },
173 }
174 "python2.7-iso8601-0.1.11": {
174 ],
175 "MIT License": "http://spdx.org/licenses/MIT"
175 "name": "python2.7-pluggy-0.6.0"
176 },
176 },
177 "python2.7-itsdangerous-0.24": {
177 {
178 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
178 "license": [
179 },
179 {
180 "python2.7-jsonschema-2.6.0": {
180 "fullName": "MIT License",
181 "MIT License": "http://spdx.org/licenses/MIT"
181 "shortName": "mit",
182 },
182 "spdxId": "MIT",
183 "python2.7-jupyter-client-5.0.0": {
183 "url": "http://spdx.org/licenses/MIT.html"
184 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
184 }
185 },
185 ],
186 "python2.7-jupyter-core-4.3.0": {
186 "name": "python2.7-atomicwrites-1.1.5"
187 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
187 },
188 },
188 {
189 "python2.7-kombu-4.1.0": {
189 "license": [
190 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
190 {
191 },
191 "fullName": "MIT License",
192 "python2.7-mistune-0.7.4": {
192 "shortName": "mit",
193 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
193 "spdxId": "MIT",
194 },
194 "url": "http://spdx.org/licenses/MIT.html"
195 "python2.7-msgpack-python-0.4.8": {
195 }
196 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
196 ],
197 },
197 "name": "python2.7-more-itertools-4.3.0"
198 "python2.7-nbconvert-5.1.1": {
198 },
199 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
199 {
200 },
200 "license": [
201 "python2.7-nbformat-4.3.0": {
201 {
202 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
202 "fullName": "MIT License",
203 },
203 "shortName": "mit",
204 "python2.7-packaging-15.2": {
204 "spdxId": "MIT",
205 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
205 "url": "http://spdx.org/licenses/MIT.html"
206 },
206 }
207 "python2.7-pandocfilters-1.4.1": {
207 ],
208 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
208 "name": "python2.7-attrs-18.1.0"
209 },
209 },
210 "python2.7-pathlib2-2.1.0": {
210 {
211 "MIT License": "http://spdx.org/licenses/MIT"
211 "license": [
212 },
212 {
213 "python2.7-peppercorn-0.5": {
213 "fullName": "MIT License",
214 "BSD-derived": "http://www.repoze.org/LICENSE.txt"
214 "shortName": "mit",
215 },
215 "spdxId": "MIT",
216 "python2.7-pexpect-4.2.1": {
216 "url": "http://spdx.org/licenses/MIT.html"
217 "ISC License": "http://spdx.org/licenses/ISC"
217 }
218 },
218 ],
219 "python2.7-pickleshare-0.7.4": {
219 "name": "python2.7-py-1.5.3"
220 "MIT License": "http://spdx.org/licenses/MIT"
220 },
221 },
221 {
222 "python2.7-prompt-toolkit-1.0.14": {
222 "license": [
223 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
223 {
224 },
224 "fullName": "GNU Lesser General Public License v3 or later (LGPLv3+)"
225 "python2.7-psutil-4.3.1": {
225 },
226 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
226 {
227 },
227 "fullName": "LGPL"
228 "python2.7-psycopg2-2.6.1": {
228 }
229 "GNU Lesser General Public License v3.0 or later": "http://spdx.org/licenses/LGPL-3.0+"
229 ],
230 },
230 "name": "python2.7-gprof2dot-2017.9.19"
231 "python2.7-ptyprocess-0.5.1": {
231 },
232 "ISC License": "http://opensource.org/licenses/ISC"
232 {
233 },
233 "license": [
234 "python2.7-py-1.4.31": {
234 {
235 "MIT License": "http://spdx.org/licenses/MIT"
235 "fullName": "MIT License",
236 },
236 "shortName": "mit",
237 "python2.7-py-bcrypt-0.4": {
237 "spdxId": "MIT",
238 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
238 "url": "http://spdx.org/licenses/MIT.html"
239 },
239 }
240 "python2.7-py-gfm-0.1.3.rhodecode-upstream1": {
240 ],
241 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
241 "name": "python2.7-pytest-profiling-1.3.0"
242 },
242 },
243 "python2.7-pycrypto-2.6.1": {
243 {
244 "Public Domain": null
244 "license": [
245 },
245 {
246 "python2.7-pycurl-7.19.5": {
246 "fullName": "MIT License",
247 "MIT License": "http://spdx.org/licenses/MIT"
247 "shortName": "mit",
248 },
248 "spdxId": "MIT",
249 "python2.7-pygments-markdown-lexer-0.1.0.dev39": {
249 "url": "http://spdx.org/licenses/MIT.html"
250 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
250 }
251 },
251 ],
252 "python2.7-pyparsing-1.5.7": {
252 "name": "python2.7-pytest-runner-4.2"
253 "MIT License": "http://spdx.org/licenses/MIT"
253 },
254 },
254 {
255 "python2.7-pyramid-1.7.4": {
255 "license": [
256 "Repoze License": "http://www.repoze.org/LICENSE.txt"
256 {
257 },
257 "fullName": "MIT License",
258 "python2.7-pyramid-beaker-0.8": {
258 "shortName": "mit",
259 "Repoze License": "http://www.repoze.org/LICENSE.txt"
259 "spdxId": "MIT",
260 },
260 "url": "http://spdx.org/licenses/MIT.html"
261 "python2.7-pyramid-debugtoolbar-3.0.5": {
261 }
262 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause",
262 ],
263 "Repoze License": "http://www.repoze.org/LICENSE.txt"
263 "name": "python2.7-setuptools-scm-2.1.0"
264 },
264 },
265 "python2.7-pyramid-jinja2-2.5": {
265 {
266 "BSD-derived": "http://www.repoze.org/LICENSE.txt"
266 "license": [
267 },
267 {
268 "python2.7-pyramid-mako-1.0.2": {
268 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
269 "Repoze License": "http://www.repoze.org/LICENSE.txt"
269 "shortName": "bsdOriginal",
270 },
270 "spdxId": "BSD-4-Clause",
271 "python2.7-pysqlite-2.6.3": {
271 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
272 "libpng License": "http://spdx.org/licenses/Libpng",
272 }
273 "zlib License": "http://spdx.org/licenses/Zlib"
273 ],
274 },
274 "name": "python2.7-pytest-sugar-0.9.1"
275 "python2.7-pytest-3.0.5": {
275 },
276 "MIT License": "http://spdx.org/licenses/MIT"
276 {
277 },
277 "license": [
278 "python2.7-pytest-profiling-1.2.2": {
278 {
279 "MIT License": "http://spdx.org/licenses/MIT"
279 "fullName": "MIT License",
280 },
280 "shortName": "mit",
281 "python2.7-pytest-runner-2.9": {
281 "spdxId": "MIT",
282 "MIT License": "http://spdx.org/licenses/MIT"
282 "url": "http://spdx.org/licenses/MIT.html"
283 },
283 }
284 "python2.7-pytest-sugar-0.7.1": {
284 ],
285 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
285 "name": "python2.7-termcolor-1.1.0"
286 },
286 },
287 "python2.7-pytest-timeout-1.2.0": {
287 {
288 "MIT License": "http://spdx.org/licenses/MIT"
288 "license": [
289 },
289 {
290 "python2.7-python-dateutil-2.1": {
290 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
291 "Simplified BSD": null
291 "shortName": "bsdOriginal",
292 },
292 "spdxId": "BSD-4-Clause",
293 "python2.7-python-editor-1.0.3": {
293 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
294 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
294 },
295 },
295 {
296 "python2.7-python-ldap-2.4.19": {
296 "fullName": "MIT License",
297 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
297 "shortName": "mit",
298 },
298 "spdxId": "MIT",
299 "python2.7-python-memcached-1.57": {
299 "url": "http://spdx.org/licenses/MIT.html"
300 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
300 }
301 },
301 ],
302 "python2.7-pytz-2015.4": {
302 "name": "python2.7-pytest-cov-2.5.1"
303 "MIT License": "http://spdx.org/licenses/MIT"
303 },
304 },
304 {
305 "python2.7-pyzmq-14.6.0": {
305 "license": [
306 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
306 {
307 },
307 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
308 "python2.7-repoze.lru-0.6": {
308 "shortName": "bsdOriginal",
309 "Repoze License": "http://www.repoze.org/LICENSE.txt"
309 "spdxId": "BSD-4-Clause",
310 },
310 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
311 "python2.7-requests-2.9.1": {
311 }
312 "Apache License 2.0": "http://spdx.org/licenses/Apache-2.0"
312 ],
313 },
313 "name": "python2.7-appenlight-client-0.6.25"
314 "python2.7-setuptools-scm-1.15.6": {
314 },
315 "MIT License": "http://spdx.org/licenses/MIT"
315 {
316 },
316 "license": [
317 "python2.7-simplegeneric-0.8.1": {
317 {
318 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
318 "fullName": "Apache License 2.0",
319 },
319 "shortName": "asl20",
320 "python2.7-simplejson-3.7.2": {
320 "spdxId": "Apache-2.0",
321 "MIT License": "http://spdx.org/licenses/MIT"
321 "url": "http://spdx.org/licenses/Apache-2.0.html"
322 },
322 }
323 "python2.7-six-1.9.0": {
323 ],
324 "MIT License": "http://spdx.org/licenses/MIT"
324 "name": "python2.7-requests-2.9.1"
325 },
325 },
326 "python2.7-subprocess32-3.2.6": {
326 {
327 "Python Software Foundation License version 2": "http://spdx.org/licenses/Python-2.0"
327 "license": [
328 },
328 {
329 "python2.7-termcolor-1.1.0": {
329 "fullName": "AGPLv3 and Proprietary"
330 "MIT License": "http://spdx.org/licenses/MIT"
330 }
331 },
331 ],
332 "python2.7-testpath-0.1": {
332 "name": "python2.7-rhodecode-tools-0.16.0"
333 "MIT License": "http://spdx.org/licenses/MIT"
333 },
334 },
334 {
335 "python2.7-traitlets-4.3.2": {
335 "license": [
336 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
336 {
337 },
337 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
338 "python2.7-translationstring-1.3": {
338 "shortName": "bsdOriginal",
339 "Repoze License": "http://www.repoze.org/LICENSE.txt"
339 "spdxId": "BSD-4-Clause",
340 },
340 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
341 "python2.7-urllib3-1.16": {
341 },
342 "MIT License": "http://spdx.org/licenses/MIT"
342 {
343 },
343 "fullName": "BSD 2-clause \"Simplified\" License",
344 "python2.7-venusian-1.0": {
344 "shortName": "bsd2",
345 "Repoze License": "http://www.repoze.org/LICENSE.txt"
345 "spdxId": "BSD-2-Clause",
346 },
346 "url": "http://spdx.org/licenses/BSD-2-Clause.html"
347 "python2.7-waitress-1.0.1": {
347 }
348 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
348 ],
349 },
349 "name": "python2.7-whoosh-2.7.4"
350 "python2.7-wcwidth-0.1.7": {
350 },
351 "MIT License": "http://spdx.org/licenses/MIT"
351 {
352 },
352 "license": [
353 "python2.7-ws4py-0.3.5": {
353 {
354 "BSD 4-clause \"Original\" or \"Old\" License": "http://spdx.org/licenses/BSD-4-Clause"
354 "fullName": "MIT License",
355 },
355 "shortName": "mit",
356 "python2.7-zope.cachedescriptors-4.0.0": {
356 "spdxId": "MIT",
357 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
357 "url": "http://spdx.org/licenses/MIT.html"
358 },
358 }
359 "python2.7-zope.deprecation-4.1.2": {
359 ],
360 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
360 "name": "python2.7-urllib3-1.21"
361 },
361 },
362 "python2.7-zope.interface-4.1.3": {
362 {
363 "Zope Public License 2.1": "http://spdx.org/licenses/ZPL-2.1"
363 "license": [
364 },
364 {
365 "xz-5.2.2": {
365 "fullName": "Apache License 2.0",
366 "GNU General Public License v2.0 or later": "http://spdx.org/licenses/GPL-2.0+",
366 "shortName": "asl20",
367 "GNU Library General Public License v2.1 or later": "http://spdx.org/licenses/LGPL-2.1+"
367 "spdxId": "Apache-2.0",
368 }
368 "url": "http://spdx.org/licenses/Apache-2.0.html"
369 } No newline at end of file
369 }
370 ],
371 "name": "python2.7-elasticsearch-dsl-2.2.0"
372 },
373 {
374 "license": [
375 {
376 "fullName": "Apache License 2.0",
377 "shortName": "asl20",
378 "spdxId": "Apache-2.0",
379 "url": "http://spdx.org/licenses/Apache-2.0.html"
380 }
381 ],
382 "name": "python2.7-elasticsearch-2.3.0"
383 },
384 {
385 "license": [
386 {
387 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
388 "shortName": "bsdOriginal",
389 "spdxId": "BSD-4-Clause",
390 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
391 },
392 {
393 "fullName": "Apache License 2.0",
394 "shortName": "asl20",
395 "spdxId": "Apache-2.0",
396 "url": "http://spdx.org/licenses/Apache-2.0.html"
397 },
398 {
399 "fullName": "Dual License"
400 }
401 ],
402 "name": "python2.7-python-dateutil-2.7.3"
403 },
404 {
405 "license": [
406 {
407 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
408 "shortName": "bsdOriginal",
409 "spdxId": "BSD-4-Clause",
410 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
411 }
412 ],
413 "name": "python2.7-markupsafe-1.0"
414 },
415 {
416 "license": [
417 {
418 "fullName": "MIT License",
419 "shortName": "mit",
420 "spdxId": "MIT",
421 "url": "http://spdx.org/licenses/MIT.html"
422 }
423 ],
424 "name": "python2.7-mako-1.0.7"
425 },
426 {
427 "license": [
428 {
429 "fullName": "MIT License",
430 "shortName": "mit",
431 "spdxId": "MIT",
432 "url": "http://spdx.org/licenses/MIT.html"
433 }
434 ],
435 "name": "python2.7-future-0.14.3"
436 },
437 {
438 "license": [
439 {
440 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
441 "shortName": "bsdOriginal",
442 "spdxId": "BSD-4-Clause",
443 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
444 }
445 ],
446 "name": "python2.7-click-6.6"
447 },
448 {
449 "license": [
450 {
451 "fullName": "MIT License",
452 "shortName": "mit",
453 "spdxId": "MIT",
454 "url": "http://spdx.org/licenses/MIT.html"
455 }
456 ],
457 "name": "python2.7-bottle-0.12.13"
458 },
459 {
460 "license": [
461 {
462 "fullName": "MIT License",
463 "shortName": "mit",
464 "spdxId": "MIT",
465 "url": "http://spdx.org/licenses/MIT.html"
466 }
467 ],
468 "name": "python2.7-cprofilev-1.0.7"
469 },
470 {
471 "license": [
472 {
473 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
474 "shortName": "bsdOriginal",
475 "spdxId": "BSD-4-Clause",
476 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
477 }
478 ],
479 "name": "python2.7-ipython-5.1.0"
480 },
481 {
482 "license": [
483 {
484 "fullName": "GNU General Public License v3 (GPLv3)"
485 },
486 {
487 "fullName": "GNU General Public License v1.0 only",
488 "shortName": "gpl1",
489 "spdxId": "GPL-1.0",
490 "url": "http://spdx.org/licenses/GPL-1.0.html"
491 }
492 ],
493 "name": "python2.7-gnureadline-6.3.8"
494 },
495 {
496 "license": [
497 {
498 "fullName": "ISC License",
499 "shortName": "isc",
500 "spdxId": "ISC",
501 "url": "http://spdx.org/licenses/ISC.html"
502 },
503 {
504 "fullName": "ISC License (ISCL)"
505 }
506 ],
507 "name": "python2.7-pexpect-4.6.0"
508 },
509 {
510 "license": [],
511 "name": "python2.7-ptyprocess-0.6.0"
512 },
513 {
514 "license": [
515 {
516 "fullName": "MIT License",
517 "shortName": "mit",
518 "spdxId": "MIT",
519 "url": "http://spdx.org/licenses/MIT.html"
520 }
521 ],
522 "name": "python2.7-pathlib2-2.3.0"
523 },
524 {
525 "license": [
526 {
527 "fullName": "BSD 4-clause \"Original\" or \"Old\" License",
528 "shortName": "bsdOriginal",
529 "spdxId": "BSD-4-Clause",
530 "url": "http://spdx.org/licenses/BSD-4-Clause.html"
531 },
532 {
533 "fullName": "New BSD License"
534 }