#!/bin/sh # Copyright 2015 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 # This script is used to create the directory tree embedded into the Bazel # binary that is used as the default source for the @bazel_tools repository. # It shuffles around files compiled in other rules, then zips them up. setglobal OUTPUT = ""$(PWD)/$1"" shift setglobal TMP_DIR = $(TMPDIR:-/tmp) setglobal PACKAGE_DIR = $[mktemp -d $(TMP_DIR%%/)/bazel.XXXXXXXX] mkdir -p $(PACKAGE_DIR) trap "rm -fr \"$(PACKAGE_DIR)\"" EXIT for i in [$ifsjoin(Argv)] { # Xcode tools should come from src/tools/xcode/. Exclude scripts in # tools/objc to avoid conflict. if test $i = "tools/objc/xcrunwrapper.sh" \ || test $i = "tools/objc/libtool.sh" \ || test $i = "tools/objc/make_hashed_objlist.py" { continue } match $i { with *tools/jdk/BUILD* setglobal OUTPUT_PATH = 'tools/jdk/BUILD' with *JavaBuilder*_deploy.jar setglobal OUTPUT_PATH = 'tools/jdk/JavaBuilder_deploy.jar' with *turbine_deploy.jar setglobal OUTPUT_PATH = 'tools/jdk/turbine_deploy.jar' with *javac.jar setglobal OUTPUT_PATH = 'third_party/java/jdk/langtools/javac.jar' with *javac7.jar setglobal OUTPUT_PATH = 'third_party/java/jdk/langtools/javac7.jar' with *SingleJar_deploy.jar setglobal OUTPUT_PATH = 'tools/jdk/SingleJar_deploy.jar' with *GenClass_deploy.jar setglobal OUTPUT_PATH = 'tools/jdk/GenClass_deploy.jar' with *Runner_deploy.jar setglobal OUTPUT_PATH = 'tools/jdk/TestRunner_deploy.jar' with *ijar.exe setglobal OUTPUT_PATH = 'tools/jdk/ijar/ijar.exe' with *ijar setglobal OUTPUT_PATH = 'tools/jdk/ijar/ijar' with *zipper.exe setglobal OUTPUT_PATH = 'tools/zip/zipper/zipper.exe' with *zipper setglobal OUTPUT_PATH = 'tools/zip/zipper/zipper' with *src/objc_tools/* setglobal OUTPUT_PATH = "tools/objc/precomp_$(i##*/)" with *xcode*StdRedirect.dylib setglobal OUTPUT_PATH = 'tools/objc/StdRedirect.dylib' with *xcode*make_hashed_objlist.py setglobal OUTPUT_PATH = 'tools/objc/make_hashed_objlist.py' with *xcode*realpath setglobal OUTPUT_PATH = 'tools/objc/realpath' with *xcode*xcode-locator setglobal OUTPUT_PATH = 'tools/objc/xcode-locator' with *src/tools/xcode/*.sh setglobal OUTPUT_PATH = "tools/objc/$(i##*/)" with *src/tools/xcode/* setglobal OUTPUT_PATH = "tools/objc/$(i##*/).sh" with * setglobal OUTPUT_PATH = $[echo $i | sed 's_^.*bazel-out/[^/]*/bin/__] } mkdir -p "$(PACKAGE_DIR)/$[dirname $(OUTPUT_PATH)]" cp $i "$(PACKAGE_DIR)/$(OUTPUT_PATH)" } if test ! -f $(PACKAGE_DIR)/third_party/java/jdk/langtools/javac.jar { cp $(PACKAGE_DIR)/third_party/java/jdk/langtools/javac7.jar \ $(PACKAGE_DIR)/third_party/java/jdk/langtools/javac.jar } cat > "$(PACKAGE_DIR)/WORKSPACE" << """ workspace(name = "bazel_tools") """ mkdir -p "$(PACKAGE_DIR)/tools/defaults" touch "$(PACKAGE_DIR)/tools/defaults/BUILD" for i in [$[find $(PACKAGE_DIR) -name BUILD.tools]] { mv $i "$[dirname $i]/BUILD" } find $(PACKAGE_DIR) -exec touch -t 198001010000.00 '{}' '+' shell {cd $(PACKAGE_DIR) && find . -type f | sort | zip -qDX@ $(OUTPUT)}