 c31a38172a
			
		
	
	c31a38172a
	
	
	
		
			
			Links in the license boxes were not rendered, e.g. for the CC-BY3.0 license it was literally showing link:http://creativecommons.org/licenses/by/3.0/us/[CC-BY 3.0] instead of rendering this as a 'CC-BY 3.0' link that links to http://creativecommons.org/licenses/by/3.0/us/. Change-Id: I4bb60b1a01cc38c4a906bed63d1f30780cac63c2 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
		
			
				
	
	
		
			149 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python
 | |
| # Copyright (C) 2013 The Android Open Source Project
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| # http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| #
 | |
| # TODO(sop): Be more detailed: version, link to Maven Central
 | |
| 
 | |
| from __future__ import print_function
 | |
| 
 | |
| from collections import defaultdict, deque
 | |
| from os import chdir, path
 | |
| import re
 | |
| from shutil import copyfileobj
 | |
| from subprocess import Popen, PIPE
 | |
| from sys import stdout, stderr
 | |
| 
 | |
| MAIN = ['//gerrit-pgm:pgm', '//gerrit-gwtui:ui_module']
 | |
| KNOWN_PROVIDED_DEPS = [
 | |
|   '//lib/bouncycastle:bcpg',
 | |
|   '//lib/bouncycastle:bcpkix',
 | |
|   '//lib/bouncycastle:bcprov',
 | |
| ]
 | |
| 
 | |
| def parse_graph():
 | |
|   graph = defaultdict(list)
 | |
|   while not path.isfile('.buckconfig'):
 | |
|     chdir('..')
 | |
|   p = Popen(
 | |
|     ['buck', 'audit', 'classpath', '--dot'] + MAIN,
 | |
|     stdout = PIPE)
 | |
|   for line in p.stdout:
 | |
|     m = re.search(r'"(//.*?)" -> "(//.*?)";', line)
 | |
|     if not m:
 | |
|       continue
 | |
|     target, dep = m.group(1), m.group(2)
 | |
|     # Dependencies included in provided_deps set are contained in audit
 | |
|     # classpath and must be sorted out. That's safe thing to do because
 | |
|     # they are not included in the final artifact.
 | |
|     if "DO_NOT_DISTRIBUTE" in dep:
 | |
|       if not target in KNOWN_PROVIDED_DEPS:
 | |
|         print('DO_NOT_DISTRIBUTE license for target: %s' % target, file=stderr)
 | |
|         exit(1)
 | |
|     else:
 | |
|       graph[target].append(dep)
 | |
|   r = p.wait()
 | |
|   if r != 0:
 | |
|     exit(r)
 | |
|   return graph
 | |
| 
 | |
| graph = parse_graph()
 | |
| licenses = defaultdict(set)
 | |
| 
 | |
| queue = deque(MAIN)
 | |
| while queue:
 | |
|   target = queue.popleft()
 | |
|   for dep in graph[target]:
 | |
|     if not dep.startswith('//lib:LICENSE-'):
 | |
|       continue
 | |
|     licenses[dep].add(target)
 | |
|   queue.extend(graph[target])
 | |
| used = sorted(licenses.keys())
 | |
| 
 | |
| print("""\
 | |
| Gerrit Code Review - Licenses
 | |
| =============================
 | |
| 
 | |
| Gerrit open source software is licensed under the <<Apache2_0,Apache
 | |
| License 2.0>>.  Executable distributions also include other software
 | |
| components that are provided under additional licenses.
 | |
| 
 | |
| [[cryptography]]
 | |
| Cryptography Notice
 | |
| -------------------
 | |
| 
 | |
| This distribution includes cryptographic software.  The country
 | |
| in which you currently reside may have restrictions on the import,
 | |
| possession, use, and/or re-export to another country, of encryption
 | |
| software.  BEFORE using any encryption software, please check
 | |
| your country's laws, regulations and policies concerning the
 | |
| import, possession, or use, and re-export of encryption software,
 | |
| to see if this is permitted.  See the
 | |
| link:http://www.wassenaar.org/[Wassenaar Arrangement]
 | |
| for more information.
 | |
| 
 | |
| The U.S. Government Department of Commerce, Bureau of Industry
 | |
| and Security (BIS), has classified this software as Export
 | |
| Commodity Control Number (ECCN) 5D002.C.1, which includes
 | |
| information security software using or performing cryptographic
 | |
| functions with asymmetric algorithms.  The form and manner of
 | |
| this distribution makes it eligible for export under the License
 | |
| Exception ENC Technology Software Unrestricted (TSU) exception
 | |
| (see the BIS Export Administration Regulations, Section 740.13)
 | |
| for both object code and source code.
 | |
| 
 | |
| Gerrit includes an SSH daemon (Apache SSHD), to support authenticated
 | |
| uploads of changes directly from `git push` command line clients.
 | |
| 
 | |
| Gerrit includes an SSH client (JSch), to support authenticated
 | |
| replication of changes to remote systems, such as for automatic
 | |
| updates of mirror servers, or realtime backups.
 | |
| 
 | |
| For either feature to function, Gerrit requires the
 | |
| link:http://java.sun.com/javase/technologies/security/[Java Cryptography extensions]
 | |
| and/or the
 | |
| link:http://www.bouncycastle.org/java.html[Bouncy Castle Crypto API]
 | |
| to be installed by the end-user.
 | |
| 
 | |
| Licenses
 | |
| --------
 | |
| """)
 | |
| 
 | |
| for n in used:
 | |
|   libs = sorted(licenses[n])
 | |
|   name = n[len('//lib:LICENSE-'):]
 | |
|   print()
 | |
|   print('[[%s]]' % name.replace('.', '_'))
 | |
|   print(name)
 | |
|   print('~' * len(name))
 | |
|   print()
 | |
|   for d in libs:
 | |
|     if d.startswith('//lib:') or d.startswith('//lib/'):
 | |
|       p = d[len('//lib:'):]
 | |
|     else:
 | |
|       p = d[d.index(':')+1:].lower()
 | |
|     print('* ' + p)
 | |
|   print()
 | |
|   print('[[license]]')
 | |
|   print('[verse]')
 | |
|   print('--')
 | |
|   with open(n[2:].replace(':', '/')) as fd:
 | |
|     copyfileobj(fd, stdout)
 | |
|   print('--')
 | |
| 
 | |
| print("""
 | |
| GERRIT
 | |
| ------
 | |
| Part of link:index.html[Gerrit Code Review]
 | |
| """)
 |