diff options
author | Damien Martin-Guillerez <dmarting@google.com> | 2016-02-19 11:13:20 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-02-19 11:44:01 +0000 |
commit | c0a9fb61212bd18547802f03cb62d9d4184d776d (patch) | |
tree | 6e6abf1dd76bc79bdf3824b877d996f7aac249cf /tools/build_rules | |
parent | 9fce58390cf09193e0f11f22e05d2839cd6dd867 (diff) |
Rollback of commit 8ec3866d9e5d28f6c09546269ec82731c45c28ad.
*** Reason for rollback ***
Break Jenkins build.
See https://github.com/bazelbuild/bazel/issues/938
*** Original change description ***
Split out Java proto compilation logic to a helper script.
This is just for clarity and should be a no-op. Maintaining long shell
command lines embedded in genrules is not pretty.
--
MOS_MIGRATED_REVID=115048759
Diffstat (limited to 'tools/build_rules')
-rw-r--r-- | tools/build_rules/BUILD | 6 | ||||
-rw-r--r-- | tools/build_rules/genproto.bzl | 32 | ||||
-rwxr-xr-x | tools/build_rules/gensrcjar.sh | 64 |
3 files changed, 17 insertions, 85 deletions
diff --git a/tools/build_rules/BUILD b/tools/build_rules/BUILD index a00791e4eb..1184bb1895 100644 --- a/tools/build_rules/BUILD +++ b/tools/build_rules/BUILD @@ -1,11 +1,5 @@ licenses(["notice"]) # Apache 2.0 -sh_binary( - name = "gensrcjar", - srcs = ["gensrcjar.sh"], - visibility = ["//visibility:public"], -) - filegroup( name = "srcs", srcs = glob(["**"]), diff --git a/tools/build_rules/genproto.bzl b/tools/build_rules/genproto.bzl index 2a59791a2a..6363f407d9 100644 --- a/tools/build_rules/genproto.bzl +++ b/tools/build_rules/genproto.bzl @@ -19,20 +19,23 @@ proto_filetype = FileType([".proto"]) def gensrcjar_impl(ctx): out = ctx.outputs.srcjar + proto_output = out.path + ".proto_output" + proto_compiler = ctx.file._proto_compiler + sub_commands = [ + "rm -rf " + proto_output, + "mkdir " + proto_output, + ' '.join([proto_compiler.path, "--java_out=" + proto_output, + ctx.file.src.path]), + "touch -t 198001010000 $(find " + proto_output + ")", + ctx.file._jar.path + " cMf " + out.path + " -C " + proto_output + " .", + ] ctx.action( - command=' '.join([ - "JAR='%s'" % ctx.executable._jar.path, - "OUTPUT='%s'" % out.path, - "PROTO_COMPILER='%s'" % ctx.executable._proto_compiler.path, - "SOURCE='%s'" % ctx.file.src.path, - ctx.executable._gensrcjar.path, - ]), - inputs=([ctx.file.src] + ctx.files._gensrcjar + ctx.files._jar + - ctx.files._proto_compiler), + command=" && ".join(sub_commands), + inputs=[ctx.file.src, proto_compiler, ctx.file._jar] + ctx.files._jdk, outputs=[out], mnemonic="GenProtoSrcJar", - use_default_shell_env=True) + use_default_shell_env = True) gensrcjar = rule( gensrcjar_impl, @@ -41,11 +44,6 @@ gensrcjar = rule( allow_files = proto_filetype, single_file = True, ), - "_gensrcjar": attr.label( - default = Label("@bazel_tools//tools/build_rules:gensrcjar"), - allow_files = True, - executable = True, - ), # TODO(bazel-team): this should be a hidden attribute with a default # value, but Skylark needs to support select first. "_proto_compiler": attr.label( @@ -60,6 +58,10 @@ gensrcjar = rule( executable = True, single_file = True, ), + "_jdk": attr.label( + default = Label("@bazel_tools//tools/jdk:jdk"), + allow_files = True, + ), }, outputs = {"srcjar": "lib%{name}.srcjar"}, ) diff --git a/tools/build_rules/gensrcjar.sh b/tools/build_rules/gensrcjar.sh deleted file mode 100755 index 365aaa86e3..0000000000 --- a/tools/build_rules/gensrcjar.sh +++ /dev/null @@ -1,64 +0,0 @@ -#! /bin/sh -# Copyright 2016 The Bazel Authors. All rights reserved. -# -# 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. - -# List of environment variables that must be defined as input. -# -# We use environment variables instead of positional arguments or flags for -# clarity in the caller .bzl file and for simplicity of processing. There is no -# need to implement a full-blown argument parser for this simple script. -INPUT_VARS="JAR OUTPUT PROTO_COMPILER SOURCE" - -# Basename of the script for error reporting purposes. -PROGRAM_NAME="${0##*/}" - -# A timestamp to mark all generated files with to get deterministic JAR outputs. -TIMESTAMP=198001010000 - -# Prints an error and exits. -# -# Args: -# ...: list(str). Parts of the message to print; all of them are joined -# with a single space in between. -err() { - echo "${PROGRAM_NAME}: ${*}" 1>&2 - exit 1 -} - -# Entry point. -main() { - [ ${#} -eq 0 ] || err "No arguments allowed; set the following environment" \ - "variables for configuration instead: ${INPUT_VARS}" - for var in ${INPUT_VARS}; do - local value - eval "value=\"\$${var}\"" - [ -n "${value}" ] || err "Input environment variable ${var} is not set" - done - - rm -f "${OUTPUT}" - - local proto_output="${OUTPUT}.proto_output" - rm -rf "${proto_output}" - mkdir -p "${proto_output}" - - "${PROTO_COMPILER}" --java_out="${proto_output}" "${SOURCE}" \ - || err "proto_compiler failed" - find "${proto_output}" -exec touch -t "${TIMESTAMP}" '{}' \; \ - || err "Failed to reset timestamps" - "${JAR}" cMf "${OUTPUT}.tmp" -C "${proto_output}" . \ - || err "jar failed" - mv "${OUTPUT}.tmp" "${OUTPUT}" -} - -main "${@}" |