1*8975f5c5SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*8975f5c5SAndroid Build Coastguard Worker# 3*8975f5c5SAndroid Build Coastguard Worker# Copyright 2018 The Chromium Authors 4*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 5*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file. 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Workerimport argparse 8*8975f5c5SAndroid Build Coastguard Workerimport os 9*8975f5c5SAndroid Build Coastguard Workerimport subprocess 10*8975f5c5SAndroid Build Coastguard Workerimport sys 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Workerfrom util import build_utils 13*8975f5c5SAndroid Build Coastguard Workerimport action_helpers # build_utils adds //build to sys.path. 14*8975f5c5SAndroid Build Coastguard Worker 15*8975f5c5SAndroid Build Coastguard Worker 16*8975f5c5SAndroid Build Coastguard Worker# python -c "import zipfile; zipfile.ZipFile('test.jar', 'w')" 17*8975f5c5SAndroid Build Coastguard Worker# du -b test.jar 18*8975f5c5SAndroid Build Coastguard Worker_EMPTY_JAR_SIZE = 22 19*8975f5c5SAndroid Build Coastguard Worker 20*8975f5c5SAndroid Build Coastguard Worker 21*8975f5c5SAndroid Build Coastguard Workerdef main(): 22*8975f5c5SAndroid Build Coastguard Worker # The point of this wrapper is to use AtomicOutput so that output timestamps 23*8975f5c5SAndroid Build Coastguard Worker # are not updated when outputs are unchanged. 24*8975f5c5SAndroid Build Coastguard Worker if len(sys.argv) != 4: 25*8975f5c5SAndroid Build Coastguard Worker raise ValueError('unexpected arguments were given. %s' % sys.argv) 26*8975f5c5SAndroid Build Coastguard Worker ijar_bin, in_jar, out_jar = sys.argv[1], sys.argv[2], sys.argv[3] 27*8975f5c5SAndroid Build Coastguard Worker with action_helpers.atomic_output(out_jar) as f: 28*8975f5c5SAndroid Build Coastguard Worker # ijar fails on empty jars: https://github.com/bazelbuild/bazel/issues/10162 29*8975f5c5SAndroid Build Coastguard Worker if os.path.getsize(in_jar) <= _EMPTY_JAR_SIZE: 30*8975f5c5SAndroid Build Coastguard Worker with open(in_jar, 'rb') as in_f: 31*8975f5c5SAndroid Build Coastguard Worker f.write(in_f.read()) 32*8975f5c5SAndroid Build Coastguard Worker else: 33*8975f5c5SAndroid Build Coastguard Worker build_utils.CheckOutput([ijar_bin, in_jar, f.name]) 34*8975f5c5SAndroid Build Coastguard Worker 35*8975f5c5SAndroid Build Coastguard Worker 36*8975f5c5SAndroid Build Coastguard Workerif __name__ == '__main__': 37*8975f5c5SAndroid Build Coastguard Worker main() 38