#!/bin/bash # # 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. # # momcwrapper runs momc and zips up the output. # This script only runs on darwin and you must have Xcode installed. # # $1 OUTZIP - the path to place the output zip file. # $2 NAME - output file name set -eu global MY_LOCATION := $(MY_LOCATION:-"$0.runfiles/bazel_tools/tools/objc") global REALPATH := ""$(MY_LOCATION)/realpath"" global WRAPPER := ""$(MY_LOCATION)/xcrunwrapper.sh"" global OUTZIP := $[$(REALPATH) $1] global NAME := $2 shift 2 global TEMPDIR := $[mktemp -d "$(TMPDIR:-/tmp)/momcZippingOutput.XXXXXX] trap "rm -rf \"$TEMPDIR\"" EXIT $WRAPPER momc @Argv "$TEMPDIR/$NAME" # Need to push/pop tempdir so it isn't the current working directory # when we remove it via the EXIT trap. pushd $TEMPDIR > /dev/null # Reset all dates to Zip Epoch so that two identical zips created at different # times appear the exact same for comparison purposes. find . -exec touch -h -t 198001010000 {} '+' # Added include "*" to fix case where we may want an empty zip file because # there is no data. zip --compression-method store --symlinks --recurse-paths --quiet $OUTZIP . --include "*" popd > /dev/null (CommandList children: [ (C {(set)} {(-eu)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MY_LOCATION) op: Equal rhs: { (BracedVarSub token: suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(DQ ($ VSub_Number "$0") (.runfiles/bazel_tools/tools/objc))} ) spids: [70 77] ) } spids: [69] ) ] spids: [69] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REALPATH) op: Equal rhs: {(DQ (${ VSub_Name MY_LOCATION) (/realpath))} spids: [79] ) ] spids: [79] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WRAPPER) op: Equal rhs: {(DQ (${ VSub_Name MY_LOCATION) (/xcrunwrapper.sh))} spids: [87] ) ] spids: [87] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTZIP) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(DQ (${ VSub_Name REALPATH))} {(DQ ($ VSub_Number "$1"))})] ) left_token: spids: [97 107] ) } spids: [96] ) ] spids: [96] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NAME) op: Equal rhs: {(DQ ($ VSub_Number "$2"))} spids: [109] ) ] spids: [109] ) (C {(shift)} {(2)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TEMPDIR) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(mktemp)} {(-d)} { (DQ (BracedVarSub token: suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(Lit_Slash /) (tmp)} ) spids: [125 130] ) (/momcZippingOutput.XXXXXX) ) } ) ] ) left_token: spids: [119 133] ) } spids: [118] ) ] spids: [118] ) (C {(trap)} { (DQ ("rm -rf ") (EscapedLiteralPart token:) ($ VSub_Name "$TEMPDIR") (EscapedLiteralPart token:) ) } {(EXIT)} ) (C {($ VSub_Name "$WRAPPER")} {(momc)} {(DQ ($ VSub_At "$@"))} {(DQ ($ VSub_Name "$TEMPDIR") (/) ($ VSub_Name "$NAME"))} ) (SimpleCommand words: [{(pushd)} {(DQ ($ VSub_Name "$TEMPDIR"))}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[174])] ) (C {(find)} {(.)} {(-exec)} {(touch)} {(-h)} {(-t)} {(198001010000)} {(Lit_LBrace "{") (Lit_RBrace "}")} {(EscapedLiteralPart token:)} ) (C {(zip)} {(--compression-method)} {(store)} {(--symlinks)} {(--recurse-paths)} {(--quiet)} {(DQ ($ VSub_Name "$OUTZIP"))} {(.)} {(--include)} {(DQ ("*"))} ) (SimpleCommand words: [{(popd)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[236])] ) ] )