3 # Copyright 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
7 """Pushes native libraries to a device.
15 BUILD_ANDROID_DIR
= os
.path
.join(os
.path
.dirname(__file__
), os
.pardir
)
16 sys
.path
.append(BUILD_ANDROID_DIR
)
18 from pylib
import constants
20 from util
import build_device
21 from util
import build_utils
22 from util
import md5_check
25 libraries
= build_utils
.ParseGypList(options
.libraries
)
27 device
= build_device
.GetBuildDeviceFromPath(
28 options
.build_device_configuration
)
32 serial_number
= device
.GetSerialNumber()
33 # A list so that it is modifiable in Push below.
34 needs_directory
= [True]
36 device_path
= os
.path
.join(options
.device_dir
, lib
)
37 host_path
= os
.path
.join(options
.libraries_dir
, lib
)
41 device
.RunShellCommand('mkdir -p ' + options
.device_dir
)
42 needs_directory
[:] = [] # = False
43 device
.PushChangedFiles([(host_path
, device_path
)])
45 record_path
= '%s.%s.push.md5.stamp' % (host_path
, serial_number
)
46 md5_check
.CallAndRecordIfStale(
48 record_path
=record_path
,
49 input_paths
=[host_path
],
50 input_strings
=[device_path
])
54 args
= build_utils
.ExpandFileArgs(args
)
55 parser
= optparse
.OptionParser()
56 parser
.add_option('--libraries-dir',
57 help='Directory that contains stripped libraries.')
58 parser
.add_option('--device-dir',
59 help='Device directory to push the libraries to.')
60 parser
.add_option('--libraries',
61 help='List of native libraries.')
62 parser
.add_option('--stamp', help='Path to touch on success.')
63 parser
.add_option('--build-device-configuration',
64 help='Path to build device configuration.')
65 parser
.add_option('--configuration-name',
66 help='The build CONFIGURATION_NAME')
67 options
, _
= parser
.parse_args(args
)
69 required_options
= ['libraries', 'device_dir', 'libraries']
70 build_utils
.CheckOptions(options
, parser
, required
=required_options
)
71 constants
.SetBuildType(options
.configuration_name
)
76 build_utils
.Touch(options
.stamp
)
79 if __name__
== '__main__':
80 sys
.exit(main(sys
.argv
[1:]))