aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2016-10-22 07:59:41 +0000
committerGravatar John Cater <jcater@google.com>2016-10-24 19:28:00 +0000
commit4ca79d48cc8d514708dda7286fc83171bc81d4fc (patch)
tree2b49a79e6af01f1811eae10439751f348c244fd0
parentb8fbde3d8291c0bb2a60a714890d680e34754260 (diff)
Create a distribution artifact
...containing, besides the original sources, all generated machine-independent files needed for creating a bootstrap bazel without the need of having a protoc installed. -- Change-Id: Ib90e7896615b4067175a23fe2c942dbac4b71e4a Reviewed-on: https://bazel-review.googlesource.com/#/c/6730 MOS_MIGRATED_REVID=136910561
-rw-r--r--BUILD11
-rwxr-xr-xcombine_distfiles.sh43
-rw-r--r--src/BUILD12
-rwxr-xr-xsrc/combine_derived_java_srcs.sh37
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD5
-rw-r--r--src/main/protobuf/BUILD8
6 files changed, 116 insertions, 0 deletions
diff --git a/BUILD b/BUILD
index 3401a32a90..e6e2a2a000 100644
--- a/BUILD
+++ b/BUILD
@@ -58,3 +58,14 @@ pkg_tar(
# Public but bazel-only visibility.
visibility = ["//:__subpackages__"],
)
+
+genrule(
+ name = "bazel-distfile",
+ srcs = [
+ ":bazel-srcs",
+ "//src:derived_java_srcs",
+ ],
+ outs = ["bazel-distfile.zip"],
+ cmd = "$(location :combine_distfiles.sh) $@ $(SRCS)",
+ tools = ["combine_distfiles.sh"],
+)
diff --git a/combine_distfiles.sh b/combine_distfiles.sh
new file mode 100755
index 0000000000..41f002f2d5
--- /dev/null
+++ b/combine_distfiles.sh
@@ -0,0 +1,43 @@
+#!/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.
+
+set -eu
+
+# Combine the archives passed to a single archive.
+# NOTE: This assumes that the individual archives are already packed
+# in a way to contain canonical timestamps. This assumption must be
+# met in order to obtain reproducible output; the assumption is met
+# for the source tree and the archive of the generated java files.
+
+OUTPUT="${PWD}/$1"
+shift
+
+TMP_DIR=${TMPDIR:-/tmp}
+PACKAGE_DIR="$(mktemp -d ${TMP_DIR%%/}/bazel.XXXXXXXX)"
+trap "rm -fr \"${PACKAGE_DIR}\"" EXIT
+mkdir -p "${PACKAGE_DIR}"
+
+for i in $*
+do
+ ARCHIVE="${PWD}/$i"
+ case "$i" in
+ *.zip) UNPACK="unzip -q" ;;
+ *.tar) UNPACK="tar xf" ;;
+ esac
+ (cd "${PACKAGE_DIR}" && ${UNPACK} "${ARCHIVE}")
+done
+
+(cd "${PACKAGE_DIR}" && find . -type f | sort | zip -qDX@ "${OUTPUT}")
diff --git a/src/BUILD b/src/BUILD
index ccf8a9c22f..fe5c15cb59 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -333,3 +333,15 @@ filegroup(
],
visibility = ["//:__pkg__"],
)
+
+genrule(
+ name = "derived_java_srcs",
+ srcs = [
+ "//src/main/protobuf:dist_jars",
+ "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:dist_jars",
+ ],
+ outs = ["derived_java_srcs.zip"],
+ cmd = "$(location :combine_derived_java_srcs.sh) $@ $(SRCS)",
+ tools = ["combine_derived_java_srcs.sh"],
+ visibility = ["//:__pkg__"],
+)
diff --git a/src/combine_derived_java_srcs.sh b/src/combine_derived_java_srcs.sh
new file mode 100755
index 0000000000..7a306a69c3
--- /dev/null
+++ b/src/combine_derived_java_srcs.sh
@@ -0,0 +1,37 @@
+#!/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.
+
+set -eu
+
+# Combine src jars to a single archive containing all the source files.
+
+OUTPUT="${PWD}/$1"
+shift
+
+TMP_DIR=${TMPDIR:-/tmp}
+PACKAGE_DIR="$(mktemp -d ${TMP_DIR%%/}/bazel.XXXXXXXX)"
+trap "rm -fr \"${PACKAGE_DIR}\"" EXIT
+JAVA_SRC_DIR="${PACKAGE_DIR}/derived/src/java"
+mkdir -p "${JAVA_SRC_DIR}"
+
+for i in $*
+do
+ JARFILE="${PWD}/$i"
+ (cd "${JAVA_SRC_DIR}" && jar xf "${JARFILE}")
+done
+
+find "${PACKAGE_DIR}" -exec touch -t 198001010000.00 '{}' '+'
+(cd "${PACKAGE_DIR}" && find . -type f | sort | zip -qDX@ "${OUTPUT}")
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
index 91715044b9..09c10cb3c0 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
@@ -11,3 +11,8 @@ java_proto_library(
name = "build_event_stream_java_proto",
src = "build_event_stream.proto",
)
+
+filegroup(
+ name = "dist_jars",
+ srcs = ["build_event_stream_java_proto_srcjar"],
+)
diff --git a/src/main/protobuf/BUILD b/src/main/protobuf/BUILD
index 63e0f67579..7824030092 100644
--- a/src/main/protobuf/BUILD
+++ b/src/main/protobuf/BUILD
@@ -55,3 +55,11 @@ filegroup(
name = "srcs",
srcs = glob(["**"]),
)
+
+filegroup(
+ name = "dist_jars",
+ srcs = [
+ "command_server_java_proto_srcjar",
+ "remote_protocol_java_proto_srcjar",
+ ] + [s + "_java_proto_srcjar" for s in FILES],
+)