| Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | set -e |
| 3 | |
| Jeff Gaston | 1d93a52 | 2023-08-29 14:24:51 -0400 | [diff] [blame] | 4 | # This script updates trust entries in gradle/verification-metadata.xml |
| 5 | |
| 6 | # Usage: $0 [--no-dry-run] [<task>] |
| 7 | |
| 8 | # --no-dry-run |
| 9 | # Don't pass --dry-run to Gradle, so Gradle executes the corresponding tasks. |
| 10 | # This is not normally necessary but in some cases can be a useful workaround. |
| 11 | # When https://github.com/gradle/gradle/issues/26289 is resolved, we should reevaluate this behavior |
| 12 | # |
| 13 | # <task> |
| 14 | # The task to ask Gradle to run. By default this is 'bOS' |
| 15 | # When --no-dry-run is removed, we should reevaluate this behavior |
| 16 | |
| 17 | dryrun=true |
| 18 | task="bOS" |
| 19 | |
| 20 | while [ "$1" != "" ]; do |
| 21 | arg="$1" |
| 22 | shift |
| 23 | if [ "$arg" == "--no-dry-run" ]; then |
| 24 | dryrun=false |
| 25 | continue |
| 26 | fi |
| 27 | task="$arg" |
| 28 | done |
| 29 | |
| Jeff Gaston | eb3691e | 2022-04-21 12:34:52 -0400 | [diff] [blame] | 30 | function runGradle() { |
| Jeff Gaston | 1d93a52 | 2023-08-29 14:24:51 -0400 | [diff] [blame] | 31 | echo running ./gradlew "$@" |
| 32 | if ./gradlew "$@"; then |
| 33 | echo succeeded: ./gradlew "$@" |
| Jeff Gaston | 29e70d9 | 2022-05-10 13:12:55 -0400 | [diff] [blame] | 34 | else |
| Jeff Gaston | 1d93a52 | 2023-08-29 14:24:51 -0400 | [diff] [blame] | 35 | echo failed: ./gradlew "$@" |
| Jeff Gaston | 29e70d9 | 2022-05-10 13:12:55 -0400 | [diff] [blame] | 36 | return 1 |
| 37 | fi |
| Jeff Gaston | eb3691e | 2022-04-21 12:34:52 -0400 | [diff] [blame] | 38 | } |
| 39 | |
| Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 40 | # This script regenerates signature-related information (dependency-verification-metadata and keyring) |
| Jeff Gaston | b038ffa | 2022-10-06 15:05:19 -0400 | [diff] [blame] | 41 | function regenerateVerificationMetadata() { |
| 42 | echo "regenerating verification metadata and keyring" |
| Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 43 | # regenerate metadata |
| 44 | # Need to run a clean build, https://github.com/gradle/gradle/issues/19228 |
| Jeff Gaston | d0fb910 | 2023-08-24 15:44:58 -0400 | [diff] [blame] | 45 | # Resolving Configurations before task execution is expected. b/297394547 |
| Jeff Gaston | 1d93a52 | 2023-08-29 14:24:51 -0400 | [diff] [blame] | 46 | dryrunArg="" |
| 47 | if [ "$dryrun" == "true" ]; then |
| 48 | dryrunArg="--dry-run" |
| 49 | fi |
| 50 | runGradle --stacktrace --write-verification-metadata pgp,sha256 --export-keys $dryrunArg --clean -Pandroidx.update.signatures=true -Pandroid.dependencyResolutionAtConfigurationTime.disallow=false -Pandroidx.enabled.kmp.target.platforms=+native $task |
| Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 51 | |
| Jeff Gaston | b038ffa | 2022-10-06 15:05:19 -0400 | [diff] [blame] | 52 | # update verification metadata file |
| Jeff Gaston | 1d93a52 | 2023-08-29 14:24:51 -0400 | [diff] [blame] | 53 | |
| 54 | # first, make sure the resulting file is named "verification-metadata.xml" |
| 55 | if [ "$dryrun" == "true" ]; then |
| 56 | mv gradle/verification-metadata.dryrun.xml gradle/verification-metadata.xml |
| 57 | fi |
| 58 | |
| 59 | # next, remove 'version=' lines https://github.com/gradle/gradle/issues/20192 |
| Jeff Gaston | bee8116 | 2023-09-07 11:26:17 -0400 | [diff] [blame^] | 60 | sed -i 's/\(trusted-key.*\)version="[^"]*"/\1/' gradle/verification-metadata.xml |
| Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 61 | |
| Jeff Gaston | cb1093f | 2023-04-18 12:02:19 -0400 | [diff] [blame] | 62 | # rename keyring |
| Jeff Gaston | 1d93a52 | 2023-08-29 14:24:51 -0400 | [diff] [blame] | 63 | mv gradle/verification-keyring-dryrun.keys gradle/verification-keyring.keys 2>/dev/null || true |
| Jeff Gaston | cb1093f | 2023-04-18 12:02:19 -0400 | [diff] [blame] | 64 | |
| Jeff Gaston | b038ffa | 2022-10-06 15:05:19 -0400 | [diff] [blame] | 65 | # remove temporary files |
| Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 66 | rm -f gradle/verification-keyring-dryrun.gpg |
| Jeff Gaston | 1d93a52 | 2023-08-29 14:24:51 -0400 | [diff] [blame] | 67 | rm -f gradle/verification-keyring.gpg |
| Jeff Gaston | a423cbc | 2022-03-09 18:50:05 -0500 | [diff] [blame] | 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 |
| Jeff Gaston | eaac29c | 2023-02-07 15:11:00 -0500 | [diff] [blame] | 72 | echo 'Done. Please check that these changes look correct (`git diff`)' |
| Jeff Gaston | 1d93a52 | 2023-08-29 14:24:51 -0400 | [diff] [blame] | 73 | echo "If Gradle did not make all expected updates to verification-metadata.xml, you can try '--no-dry-run'. This is slow so you may also want to specify a task. Example: $0 --dry-run exportSboms" |