Merge branch 'stable-2.14' into stable-2.15
* stable-2.14:
Fix indentation
Add Prolog skylark rule
Set gerrit maven local api to version 2.14.7-SNAPSHOT
Update API to 2.14.6
Upgrade Gerrit API to 2.14.5.1
Change-Id: I731065b7bb97485fd929e340674af9ca92645548
diff --git a/gerrit_api.bzl b/gerrit_api.bzl
index 26358e7..cfe72c5 100644
--- a/gerrit_api.bzl
+++ b/gerrit_api.bzl
@@ -11,9 +11,9 @@
bouncycastle_repos()
maven_jar(
- name = 'gerrit_plugin_api',
- artifact = 'com.google.gerrit:gerrit-plugin-api:' + VER,
- sha1 = 'a448355a7fdfbace0e6e4f449c9a37aaa3a889f9',
+ name = 'gerrit_plugin_api',
+ artifact = 'com.google.gerrit:gerrit-plugin-api:' + VER,
+ sha1 = 'a448355a7fdfbace0e6e4f449c9a37aaa3a889f9',
)
maven_jar(
name = 'gerrit_plugin_gwtui',
diff --git a/lib/prolog/BUILD b/lib/prolog/BUILD
new file mode 100644
index 0000000..bbbc0de
--- /dev/null
+++ b/lib/prolog/BUILD
@@ -0,0 +1,17 @@
+java_binary(
+ name = "compiler_bin",
+ main_class = "PrologCompiler",
+ visibility = ["//visibility:public"],
+ runtime_deps = [":compiler_lib"],
+)
+
+java_library(
+ name = "compiler_lib",
+ srcs = ["java/PrologCompiler.java"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "@prolog_compiler//jar",
+ "@prolog_runtime//jar",
+ "@prolog_io//jar",
+ ],
+)
diff --git a/lib/prolog/java/PrologCompiler.java b/lib/prolog/java/PrologCompiler.java
new file mode 100644
index 0000000..f1506c1
--- /dev/null
+++ b/lib/prolog/java/PrologCompiler.java
@@ -0,0 +1,86 @@
+// Copyright (C) 2017 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.
+
+import com.googlecode.prolog_cafe.compiler.Compiler;
+import com.googlecode.prolog_cafe.exceptions.CompileException;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
+
+public class PrologCompiler {
+ private static File tmpdir;
+
+ public static void main(String[] argv) throws IOException, CompileException {
+ int i = 0;
+ tmpdir = new File(argv[i++]);
+ File out = new File(argv[i++]);
+ File java = tmpdir("java");
+ for (; i < argv.length; i++) {
+ new Compiler().prologToJavaSource(argv[i], java.getPath());
+ }
+ jar(out, java);
+ }
+
+ private static File tmpdir(String name) throws IOException {
+ File d = File.createTempFile(name + "_", "", tmpdir);
+ if (!d.delete() || !d.mkdir()) {
+ throw new IOException("Cannot mkdir " + d);
+ }
+ return d;
+ }
+
+ private static void jar(File jar, File classes) throws IOException {
+ File tmp = File.createTempFile("prolog", ".jar", tmpdir);
+ try {
+ try (JarOutputStream out = new JarOutputStream(Files.newOutputStream(tmp.toPath()))) {
+ add(out, classes, "");
+ }
+ if (!tmp.renameTo(jar)) {
+ throw new IOException("Cannot create " + jar);
+ }
+ } finally {
+ tmp.delete();
+ }
+ }
+
+ private static void add(JarOutputStream out, File classes, String prefix) throws IOException {
+ String[] list = classes.list();
+ if (list == null) {
+ return;
+ }
+ for (String name : list) {
+ File f = new File(classes, name);
+ if (f.isDirectory()) {
+ add(out, f, prefix + name + "/");
+ continue;
+ }
+
+ JarEntry e = new JarEntry(prefix + name);
+ try (InputStream in = Files.newInputStream(f.toPath())) {
+ e.setTime(f.lastModified());
+ out.putNextEntry(e);
+ byte[] buf = new byte[16 << 10];
+ int n;
+ while (0 < (n = in.read(buf))) {
+ out.write(buf, 0, n);
+ }
+ } finally {
+ out.closeEntry();
+ }
+ }
+ }
+}
diff --git a/lib/prolog/prolog.bzl b/lib/prolog/prolog.bzl
new file mode 100644
index 0000000..dad82b4
--- /dev/null
+++ b/lib/prolog/prolog.bzl
@@ -0,0 +1,34 @@
+# Copyright (C) 2017 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.
+
+def prolog_cafe_library(
+ name,
+ srcs,
+ deps = [],
+ **kwargs):
+ native.genrule(
+ name = name + '__pl2j',
+ cmd = '$(location @com_googlesource_gerrit_bazlets//lib/prolog:compiler_bin) ' +
+ '$$(dirname $@) $@ ' +
+ '$(SRCS)',
+ srcs = srcs,
+ tools = ['@com_googlesource_gerrit_bazlets//lib/prolog:compiler_bin'],
+ outs = [ name + '.srcjar' ],
+ )
+ native.java_library(
+ name = name,
+ srcs = [':' + name + '__pl2j'],
+ deps = ['@prolog_runtime//jar:neverlink'] + deps,
+ **kwargs
+ )