#!/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. setglobal OUTPUT = ""$(PWD)/$1"" shift setglobal TMP_DIR = $(TMPDIR:-/tmp) setglobal PACKAGE_DIR = $[mktemp -d $(TMP_DIR%%/)/bazel.XXXXXXXX] trap "rm -fr \"$(PACKAGE_DIR)\"" EXIT mkdir -p $(PACKAGE_DIR) for i in [$ifsjoin(Argv)] { setglobal ARCHIVE = ""$(PWD)/$i"" match $i { with *.zip setglobal UNPACK = '"unzip -q'" with *.tar setglobal UNPACK = '"tar xf'" } shell {cd $(PACKAGE_DIR) && $(UNPACK) $(ARCHIVE)} } shell {cd $(PACKAGE_DIR) && find . -type f | sort | zip -qDX@ $(OUTPUT)}