Jeffrey van Gogh | 0c62485 | 2016-08-01 16:10:07 -0700 | [diff] [blame] | 1 | #!/bin/bash -e |
| 2 | |
| 3 | # Bazel build target for running kythe extractor as an extra_action |
| 4 | # to create kythe index files as a side effect of running the build. |
| 5 | EAL=//prebuilts/tools/linux-x86_64/kythe/extractors:extract_kindex |
| 6 | |
| 7 | # Path to the kyth binaries. |
| 8 | KYTHE_ROOT="$(readlink -f prebuilts/tools/linux-x86_64/kythe)" |
| 9 | |
| 10 | # Get the output path for the kythe artifacts. |
| 11 | OUT="$1" |
| 12 | if [ -z "${OUT}" ]; then |
Jeffrey van Gogh | 16adda2 | 2016-08-23 15:22:36 -0700 | [diff] [blame] | 13 | echo Usage: $0 \<out_dir\> [gcs_bucket] |
Jeffrey van Gogh | 0c62485 | 2016-08-01 16:10:07 -0700 | [diff] [blame] | 14 | echo e.g. $0 $HOME/studio_kythe |
| 15 | echo |
| 16 | echo $0 must be launched from the root of the studio branch. |
| 17 | exit 1 |
| 18 | fi |
Jeffrey van Gogh | fb57b0f | 2016-08-23 18:00:33 -0700 | [diff] [blame] | 19 | |
| 20 | if [ -z "${JDK_18_x64}" ]; then |
| 21 | echo $0 requires the JDK_18_x64 env variable to be defined. |
| 22 | exit 1 |
| 23 | fi |
| 24 | |
Jeffrey van Gogh | 0c62485 | 2016-08-01 16:10:07 -0700 | [diff] [blame] | 25 | OUT_ENTRIES="${OUT}/entries" |
| 26 | mkdir -p "${OUT_ENTRIES}" |
| 27 | |
Jeffrey van Gogh | 16adda2 | 2016-08-23 15:22:36 -0700 | [diff] [blame] | 28 | TARGETS="$(cat tools/base/bazel/build_targets)" |
Jeffrey van Gogh | 0c62485 | 2016-08-01 16:10:07 -0700 | [diff] [blame] | 29 | |
| 30 | # Build all targets and run the kythe extractor via extra_actions. |
Jeffrey van Gogh | 115d73e | 2016-08-23 16:14:26 -0700 | [diff] [blame] | 31 | tools/base/bazel/bazel build \ |
Jeffrey van Gogh | 0c62485 | 2016-08-01 16:10:07 -0700 | [diff] [blame] | 32 | --experimental_action_listener=${EAL} -- ${TARGETS} |
| 33 | |
| 34 | # Find all generated kythe index files. |
| 35 | KINDEXES=$(find bazel-out/local-fastbuild/extra_actions/ \ |
| 36 | -name *.kindex -exec realpath {} \;) |
| 37 | |
| 38 | # For each kythe index file run the java index to generate kythe |
| 39 | # entries. |
| 40 | cd "${OUT_ENTRIES}" |
| 41 | for KINDEX in ${KINDEXES}; do |
| 42 | ENTRIES="$(basename "${KINDEX}").entries" |
| 43 | if [ ! -f "${ENTRIES}" ]; then |
Jeffrey van Gogh | fb57b0f | 2016-08-23 18:00:33 -0700 | [diff] [blame] | 44 | "${JDK_18_x64}/bin/java" -jar \ |
| 45 | "${KYTHE_ROOT}/indexers/java_indexer.jar" \ |
Jeffrey van Gogh | 0c62485 | 2016-08-01 16:10:07 -0700 | [diff] [blame] | 46 | "${KINDEX}" > "${ENTRIES}" |
| 47 | fi |
| 48 | done; |
Jeffrey van Gogh | 16adda2 | 2016-08-23 15:22:36 -0700 | [diff] [blame] | 49 | |
| 50 | GSBUCKET="$2" |
| 51 | if [ -n "${GSBUCKET}" ]; then |
| 52 | TIMESTAMP=$(date +'%s') |
| 53 | gsutil -m cp "${OUT_ENTRIES}/*" "${GSBUCKET}/${TIMESTAMP}/" |
| 54 | fi |