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