 29f95395d5
			
		
	
	29f95395d5
	
	
	
		
			
			If no manifest file is specified, Buck's java_binary() rule merges the content of manifest files from the dependant JARs into output META/MANIFEST.MF. Normally we wouldn't care that it ends up with a lot of mess, but unfortunately, it breaks the plugin-api.jar, with sealed package exception, so we do care. This happens because we provide the same package in multiple JARs, e.g. com.gerrit.server.project is shipped with plugin-api.jar, obviously, but it happens that one file Util.class, from the same package is shipped in the gerrit-acceptance-framework.jar artifact. Normally it doesn't matter, unless a JAR is defined as sealed in which case security violation exception is thrown during unit tests execution. To rectify this, we use the combination of custom manifest_file attribute of java_binary() rule and passing non documented option from this issue: [1] to ask Buck to not merge manifest files from the dependant JARs. With this fix, plugin unit tests executions in standalone build mode work again. * [1] https://github.com/facebook/buck/issues/86 Change-Id: I7b7571c20dcf6b54210b73760eccc8e699e6f1f6
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| SRCS = [
 | |
|   'gerrit-server/src/main/java/',
 | |
|   'gerrit-httpd/src/main/java/',
 | |
|   'gerrit-sshd/src/main/java/',
 | |
| ]
 | |
| 
 | |
| PLUGIN_API = [
 | |
|   '//gerrit-httpd:httpd',
 | |
|   '//gerrit-pgm:init-api',
 | |
|   '//gerrit-server:server',
 | |
|   '//gerrit-sshd:sshd',
 | |
| ]
 | |
| 
 | |
| java_binary(
 | |
|   name = 'plugin-api',
 | |
|   merge_manifests = False,
 | |
|   manifest_file = ':manifest',
 | |
|   deps = [':lib'],
 | |
|   visibility = ['PUBLIC'],
 | |
| )
 | |
| 
 | |
| genrule(
 | |
|   name = 'manifest',
 | |
|   cmd = 'echo "Manifest-Version: 1.0" >$OUT;' +
 | |
|     'echo "Implementation-Title: Gerrit Plugin API" >>$OUT;' +
 | |
|     'echo "Implementation-Vendor: Gerrit Code Review Project" >>$OUT',
 | |
|   out = 'manifest.txt',
 | |
| )
 | |
| 
 | |
| java_library(
 | |
|   name = 'lib',
 | |
|   exported_deps = PLUGIN_API + [
 | |
|     '//gerrit-antlr:query_exception',
 | |
|     '//gerrit-antlr:query_parser',
 | |
|     '//gerrit-common:annotations',
 | |
|     '//gerrit-common:server',
 | |
|     '//gerrit-extension-api:api',
 | |
|     '//gerrit-gwtexpui:server',
 | |
|     '//gerrit-reviewdb:server',
 | |
|     '//lib:args4j',
 | |
|     '//lib:blame-cache',
 | |
|     '//lib:gson',
 | |
|     '//lib:guava',
 | |
|     '//lib:gwtorm',
 | |
|     '//lib:jsch',
 | |
|     '//lib:mime-util',
 | |
|     '//lib:servlet-api-3_1',
 | |
|     '//lib:velocity',
 | |
|     '//lib/commons:lang',
 | |
|     '//lib/dropwizard:dropwizard-core',
 | |
|     '//lib/guice:guice',
 | |
|     '//lib/guice:guice-assistedinject',
 | |
|     '//lib/guice:guice-servlet',
 | |
|     '//lib/jgit/org.eclipse.jgit:jgit',
 | |
|     '//lib/jgit/org.eclipse.jgit.http.server:jgit-servlet',
 | |
|     '//lib/joda:joda-time',
 | |
|     '//lib/log:api',
 | |
|     '//lib/mina:sshd',
 | |
|     '//lib/prolog:compiler',
 | |
|   ],
 | |
|   visibility = ['PUBLIC'],
 | |
| )
 | |
| 
 | |
| java_binary(
 | |
|   name = 'plugin-api-src',
 | |
|   deps = [
 | |
|     '//gerrit-extension-api:extension-api-src',
 | |
|   ] + [d + '-src' for d in PLUGIN_API],
 | |
|   visibility = ['PUBLIC'],
 | |
| )
 | |
| 
 | |
| java_doc(
 | |
|   name = 'plugin-api-javadoc',
 | |
|   title = 'Gerrit Review Plugin API Documentation',
 | |
|   pkgs = ['com.google.gerrit'],
 | |
|   paths = [n for n in SRCS],
 | |
|   srcs = glob([n + '**/*.java' for n in SRCS]),
 | |
|   deps = [
 | |
|     ':plugin-api',
 | |
|     '//lib/bouncycastle:bcprov',
 | |
|     '//lib/bouncycastle:bcpg',
 | |
|     '//lib/bouncycastle:bcpkix',
 | |
|   ],
 | |
|   visibility = ['PUBLIC'],
 | |
|   do_it_wrong = True,
 | |
| )
 |