| def genlicenses( | |
| name, | |
| out, | |
| opts = [], | |
| java_deps = [], | |
| non_java_deps = [], | |
| visibility = []): | |
| cmd = ['$(exe :gen_licenses)'] | |
| cmd.extend(opts) | |
| cmd.append('>$OUT') | |
| cmd.extend(java_deps) | |
| cmd.extend(non_java_deps) | |
| # Must use $(classpath) for Java deps, since transitive dependencies are not | |
| # first-order dependencies of the output jar, so changes would not cause | |
| # invalidation of the build cache key for the genrule. | |
| cmd.extend('; true $(classpath %s)' % d for d in java_deps) | |
| # Must use $(location) for non-Java deps, since $(classpath) will fail with an | |
| # error. This is ok, because transitive dependencies are included in the | |
| # output artifacts for everything _except_ Java libraries. | |
| cmd.extend('; true $(location %s)' % d for d in non_java_deps) | |
| genrule( | |
| name = name, | |
| out = out, | |
| cmd = ' '.join(cmd), | |
| visibility = visibility, | |
| ) |