Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | set -e |
| 3 | |
Jeff Gaston | eb3691e | 2022-04-21 12:34:52 -0400 | [diff] [blame] | 4 | function runGradle() { |
Fred Sladkey | bd43981 | 2022-05-25 10:59:27 -0400 | [diff] [blame] | 5 | kmpArgs="-Pandroidx.compose.multiplatformEnabled=true -Pandroidx.enabled.kmp.target.platforms=+native" |
Jeff Gaston | 29e70d9 | 2022-05-10 13:12:55 -0400 | [diff] [blame] | 6 | echo running ./gradlew $kmpArgs "$@" |
| 7 | if ./gradlew $kmpArgs "$@"; then |
| 8 | echo succeeded: ./gradlew $kmpArgs "$@" |
| 9 | else |
| 10 | echo failed: ./gradlew $kmpArgs "$@" |
| 11 | return 1 |
| 12 | fi |
Jeff Gaston | eb3691e | 2022-04-21 12:34:52 -0400 | [diff] [blame] | 13 | } |
| 14 | |
Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 15 | # This script regenerates signature-related information (dependency-verification-metadata and keyring) |
Jeff Gaston | b038ffa | 2022-10-06 15:05:19 -0400 | [diff] [blame] | 16 | function regenerateVerificationMetadata() { |
| 17 | echo "regenerating verification metadata and keyring" |
Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 18 | # regenerate metadata |
| 19 | # Need to run a clean build, https://github.com/gradle/gradle/issues/19228 |
Jeff Gaston | b038ffa | 2022-10-06 15:05:19 -0400 | [diff] [blame] | 20 | runGradle --write-verification-metadata pgp,sha256 --export-keys --dry-run --clean bOS |
Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 21 | # extract and keep only the <trusted-keys> section |
| 22 | WORK_DIR=gradle/update-keys-temp |
| 23 | rm -rf "$WORK_DIR" |
| 24 | mkdir -p "$WORK_DIR" |
| 25 | |
| 26 | # extract the middle of the new file, https://github.com/gradle/gradle/issues/18569 |
| 27 | grep -B 10000 "<trusted-keys>" gradle/verification-metadata.dryrun.xml > "$WORK_DIR/new.head" |
| 28 | grep -A 10000 "</trusted-keys>" gradle/verification-metadata.dryrun.xml > "$WORK_DIR/new.tail" |
| 29 | numTopLines="$(cat "$WORK_DIR/new.head" | wc -l)" |
| 30 | numTopLinesPlus1="$(($numTopLines + 1))" |
| 31 | numBottomLines="$(cat "$WORK_DIR/new.tail" | wc -l)" |
| 32 | numLines="$(cat gradle/verification-metadata.dryrun.xml | wc -l)" |
| 33 | numMiddleLines="$(($numLines - $numTopLines - $numBottomLines))" |
| 34 | # also remove 'version=' lines, https://github.com/gradle/gradle/issues/20192 |
| 35 | cat gradle/verification-metadata.dryrun.xml | tail -n "+$numTopLinesPlus1" | head -n "$numMiddleLines" | sed 's/ version="[^"]*"//' > "$WORK_DIR/new.middle" |
| 36 | |
| 37 | # extract the top and bottom of the old file |
| 38 | grep -B 10000 "<trusted-keys>" gradle/verification-metadata.xml > "$WORK_DIR/old.head" |
| 39 | grep -A 10000 "</trusted-keys>" gradle/verification-metadata.xml > "$WORK_DIR/old.tail" |
| 40 | |
Jeff Gaston | b038ffa | 2022-10-06 15:05:19 -0400 | [diff] [blame] | 41 | # update verification metadata file |
Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 42 | cat "$WORK_DIR/old.head" "$WORK_DIR/new.middle" "$WORK_DIR/old.tail" > gradle/verification-metadata.xml |
| 43 | |
Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 44 | echo "sorting keyring and removing duplicates" |
| 45 | # sort and unique the keyring |
| 46 | # https://github.com/gradle/gradle/issues/20140 |
| 47 | # `sed 's/$/NEWLINE/g'` adds the word NEWLINE at the end of each line |
| 48 | # `tr -d '\n'` deletes the actual newlines |
| 49 | # `sed` again adds a newline at the end of each key, so each key is one line |
| 50 | # `sort` orders the keys deterministically |
| 51 | # `uniq` removes identical keys |
| 52 | # `sed 's/NEWLINE/\n/g'` puts the newlines back |
| 53 | cat gradle/verification-keyring-dryrun.keys \ |
| 54 | | sed 's/$/NEWLINE/g' \ |
| 55 | | tr -d '\n' \ |
| 56 | | sed 's/\(-----END PGP PUBLIC KEY BLOCK-----\)/\1\n/g' \ |
| 57 | | grep "END PGP PUBLIC KEY BLOCK" \ |
| 58 | | sort \ |
| 59 | | uniq \ |
| 60 | | sed 's/NEWLINE/\n/g' \ |
| 61 | > gradle/verification-keyring.keys |
| 62 | |
Jeff Gaston | b038ffa | 2022-10-06 15:05:19 -0400 | [diff] [blame] | 63 | # remove temporary files |
| 64 | rm -rf "$WORK_DIR" |
Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 65 | rm -f gradle/verification-keyring-dryrun.gpg |
| 66 | rm -f gradle/verification-keyring-dryrun.keys |
| 67 | rm -f gradle/verification-metadata.dryrun.xml |
| 68 | } |
Jeff Gaston | b038ffa | 2022-10-06 15:05:19 -0400 | [diff] [blame] | 69 | regenerateVerificationMetadata |
Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 70 | |
| 71 | echo |
| 72 | echo "Done. Please check that these changes look correct ('git diff')" |