Dave Borowitz | 51b0562 | 2015-11-12 14:57:36 -0500 | [diff] [blame] | 1 | def genlicenses( |
| 2 | name, |
| 3 | out, |
| 4 | opts = [], |
| 5 | java_deps = [], |
| 6 | non_java_deps = [], |
| 7 | visibility = []): |
| 8 | cmd = ['$(exe :gen_licenses)'] |
| 9 | cmd.extend(opts) |
| 10 | cmd.append('>$OUT') |
| 11 | cmd.extend(java_deps) |
| 12 | cmd.extend(non_java_deps) |
| 13 | |
| 14 | # Must use $(classpath) for Java deps, since transitive dependencies are not |
| 15 | # first-order dependencies of the output jar, so changes would not cause |
| 16 | # invalidation of the build cache key for the genrule. |
| 17 | cmd.extend('; true $(classpath %s)' % d for d in java_deps) |
| 18 | |
| 19 | # Must use $(location) for non-Java deps, since $(classpath) will fail with an |
| 20 | # error. This is ok, because transitive dependencies are included in the |
| 21 | # output artifacts for everything _except_ Java libraries. |
| 22 | cmd.extend('; true $(location %s)' % d for d in non_java_deps) |
| 23 | |
| 24 | genrule( |
| 25 | name = name, |
| 26 | out = out, |
| 27 | cmd = ' '.join(cmd), |
| 28 | visibility = visibility, |
| 29 | ) |