blob: 67dad4ea76ddc29df3bd7f44b308795cbdea76d7 [file] [log] [blame]
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -07001# Copyright (C) 2013 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
Shawn Pearce1b89f852013-05-13 20:26:34 -070015GERRIT = 'GERRIT:'
David Ostrovskya2707972014-01-17 09:04:35 +010016GERRIT_API = 'GERRIT_API:'
David Pursehouse71a869f2013-10-23 14:16:21 +090017ECLIPSE = 'ECLIPSE:'
Shawn Pearce1b89f852013-05-13 20:26:34 -070018MAVEN_CENTRAL = 'MAVEN_CENTRAL:'
Shawn Pearcee585fc02013-08-14 15:40:35 -070019MAVEN_LOCAL = 'MAVEN_LOCAL:'
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070020
21def define_license(name):
22 n = 'LICENSE-' + name
23 genrule(
24 name = n,
25 cmd = 'ln -s $SRCS $OUT',
26 srcs = [n],
27 out = n,
28 visibility = ['PUBLIC'],
29 )
30
31def maven_jar(
32 name,
33 id,
34 license,
35 exclude = [],
36 exclude_java_sources = False,
David Ostrovsky6e0a3e52013-10-26 09:55:15 +020037 unsign = False,
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070038 deps = [],
Shawn Pearce4e1a8bc2013-11-28 18:38:30 -080039 exported_deps = [],
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070040 sha1 = '', bin_sha1 = '', src_sha1 = '',
41 repository = MAVEN_CENTRAL,
42 attach_source = True,
43 visibility = ['PUBLIC']):
44 from os import path
45
46 parts = id.split(':')
47 if len(parts) != 3:
48 raise NameError('expected id="groupId:artifactId:version"')
49 group, artifact, version = parts
50
David Ostrovsky4a3f51a2014-04-30 00:48:28 +020051 if 'SNAPSHOT' in version and repository.startswith(GERRIT):
David Pursehouse3b226742014-03-22 07:44:34 -070052 file_version = version.replace('-SNAPSHOT', '')
53 version = version.split('-SNAPSHOT')[0] + '-SNAPSHOT'
54 else:
55 file_version = version
56
57 jar = path.join(name, artifact.lower() + '-' + file_version)
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070058 url = '/'.join([
59 repository,
60 group.replace('.', '/'), artifact, version,
David Pursehouse3b226742014-03-22 07:44:34 -070061 artifact + '-' + file_version])
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070062
63 binjar = jar + '.jar'
64 binurl = url + '.jar'
65
66 srcjar = jar + '-src.jar'
67 srcurl = url + '-sources.jar'
68
Shawn Pearce11d27c82013-07-24 08:09:31 -070069 cmd = ['$(exe //tools:download_file)', '-o', '$OUT', '-u', binurl]
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070070 if sha1:
71 cmd.extend(['-v', sha1])
72 elif bin_sha1:
73 cmd.extend(['-v', bin_sha1])
74 for x in exclude:
75 cmd.extend(['-x', x])
76 if exclude_java_sources:
77 cmd.append('--exclude_java_sources')
David Ostrovsky6e0a3e52013-10-26 09:55:15 +020078 if unsign:
79 cmd.append('--unsign')
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070080
81 genrule(
David Ostrovskyd8af0922014-05-30 12:42:32 +020082 name = '%s__download_bin' % name,
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070083 cmd = ' '.join(cmd),
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070084 out = binjar,
85 )
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070086 license = ['//lib:LICENSE-' + license]
87
88 if src_sha1 or attach_source:
Shawn Pearce11d27c82013-07-24 08:09:31 -070089 cmd = ['$(exe //tools:download_file)', '-o', '$OUT', '-u', srcurl]
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070090 if src_sha1:
91 cmd.extend(['-v', src_sha1])
92 genrule(
David Ostrovskyd8af0922014-05-30 12:42:32 +020093 name = '%s__download_src' % name,
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070094 cmd = ' '.join(cmd),
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -070095 out = srcjar,
96 )
David Ostrovsky56fe1f82013-08-16 18:18:03 +020097 prebuilt_jar(
David Ostrovskyd8af0922014-05-30 12:42:32 +020098 name = '%s_src' % name,
99 binary_jar = ':%s__download_src' % name,
David Ostrovsky5dacc8b2014-06-10 03:01:28 +0200100 deps = license,
David Ostrovsky56fe1f82013-08-16 18:18:03 +0200101 visibility = visibility,
102 )
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -0700103 else:
104 srcjar = None
Shawn Pearce7b553262013-05-13 21:25:13 -0700105 genrule(
David Ostrovskyd8af0922014-05-30 12:42:32 +0200106 name = '%s__download_src' % name,
Shawn Pearce7b553262013-05-13 21:25:13 -0700107 cmd = ':>$OUT',
David Ostrovskyd8af0922014-05-30 12:42:32 +0200108 out = '__%s__no_src' % name,
Shawn Pearce7b553262013-05-13 21:25:13 -0700109 )
Shawn Pearcefd6bb9f2013-05-08 14:14:24 -0700110
Shawn Pearce4e1a8bc2013-11-28 18:38:30 -0800111 if exported_deps:
Shawn Pearcebd562972013-05-15 14:36:29 -0700112 prebuilt_jar(
David Ostrovskyd8af0922014-05-30 12:42:32 +0200113 name = '%s__jar' % name,
114 deps = deps,
115 binary_jar = ':%s__download_bin' % name,
116 source_jar = ':%s__download_src' % name if srcjar else None,
Shawn Pearcebd562972013-05-15 14:36:29 -0700117 )
118 java_library(
119 name = name,
Shawn Pearce4e1a8bc2013-11-28 18:38:30 -0800120 exported_deps = exported_deps + [':' + name + '__jar'],
Shawn Pearcebd562972013-05-15 14:36:29 -0700121 visibility = visibility,
122 )
123 else:
124 prebuilt_jar(
125 name = name,
David Ostrovskyd8af0922014-05-30 12:42:32 +0200126 deps = deps,
127 binary_jar = ':%s__download_bin' % name,
128 source_jar = ':%s__download_src' % name if srcjar else None,
Shawn Pearcebd562972013-05-15 14:36:29 -0700129 visibility = visibility,
130 )
David Ostrovsky07df9592014-02-01 23:47:22 +0100131
132def local_jar(
133 name,
134 jar,
135 src = None,
136 deps = [],
137 visibility = ['PUBLIC']):
138 binjar = name + '.jar'
139 srcjar = name + '-src.jar'
140 genrule(
David Ostrovskyd8af0922014-05-30 12:42:32 +0200141 name = '%s__local_bin' % name,
David Ostrovsky07df9592014-02-01 23:47:22 +0100142 cmd = 'ln -s %s $OUT' % jar,
143 out = binjar)
144 if src:
145 genrule(
David Ostrovskyd8af0922014-05-30 12:42:32 +0200146 name = '%s__local_src' % name,
David Ostrovsky07df9592014-02-01 23:47:22 +0100147 cmd = 'ln -s %s $OUT' % src,
148 out = srcjar)
149 prebuilt_jar(
David Ostrovskyd8af0922014-05-30 12:42:32 +0200150 name = '%s_src' % name,
151 binary_jar = ':%s__local_src' % name,
David Ostrovsky07df9592014-02-01 23:47:22 +0100152 visibility = visibility,
153 )
154 else:
155 srcjar = None
156
157 prebuilt_jar(
158 name = name,
David Ostrovskyd8af0922014-05-30 12:42:32 +0200159 deps = deps,
160 binary_jar = ':%s__local_bin' % name,
161 source_jar = ':%s__local_src' % name if srcjar else None,
David Ostrovsky07df9592014-02-01 23:47:22 +0100162 visibility = visibility,
163 )