[go: nahoru, domu]

blob: 13b9e3861a81730175eb74ae96c9d35dbb657043 [file] [log] [blame]
Xavier Ducrohet0f3d9032014-03-18 17:25:21 -07001#!/usr/bin/env bash
Jeff Gaston69713292020-06-04 12:53:39 -04002set -o pipefail
3set -e
Xavier Ducrohet0f3d9032014-03-18 17:25:21 -07004
5##############################################################################
6##
7## Gradle start up script for UN*X
8##
9##############################################################################
10
Aurimas Liutikas9979d072018-03-13 15:38:56 -070011# --------- androidx specific code needed for build server. ------------------
12
Jeff Gastondd8a6e92020-09-01 14:26:49 -040013SCRIPT_PATH="$(cd $(dirname $0) && pwd -P)"
Aurimas Liutikas9979d072018-03-13 15:38:56 -070014if [ -n "$OUT_DIR" ] ; then
Jeff Gaston8fd9fc82019-07-26 14:26:10 -040015 mkdir -p "$OUT_DIR"
Jeff Gastondd8a6e92020-09-01 14:26:49 -040016 OUT_DIR="$(cd $OUT_DIR && pwd -P)"
Aurimas Liutikas9979d072018-03-13 15:38:56 -070017 export GRADLE_USER_HOME="$OUT_DIR/.gradle"
Jeff Gaston38004a62019-12-11 15:43:10 -050018 export TMPDIR=$OUT_DIR
Jeff Gastoncc694ab2019-04-11 16:51:36 -040019else
Jeff Gastondd8a6e92020-09-01 14:26:49 -040020 CHECKOUT_ROOT="$(cd $SCRIPT_PATH/../.. && pwd -P)"
Jeff Gastoncc694ab2019-04-11 16:51:36 -040021 export OUT_DIR="$CHECKOUT_ROOT/out"
Aurimas Liutikas9979d072018-03-13 15:38:56 -070022fi
23
Jeff Gaston440e1ac2020-09-09 08:32:22 -040024ORG_GRADLE_JVMARGS="$(cd $SCRIPT_PATH && grep org.gradle.jvmargs gradle.properties | sed 's/^/-D/')"
Jeff Gaston0e3d19a2019-10-02 12:17:39 -040025if [ -n "$DIST_DIR" ]; then
26 mkdir -p "$DIST_DIR"
Jeff Gastondd8a6e92020-09-01 14:26:49 -040027 DIST_DIR="$(cd $DIST_DIR && pwd -P)"
Jeff Gaston0e3d19a2019-10-02 12:17:39 -040028 export LINT_PRINT_STACKTRACE=true
29
Jeff Gastone72d2302019-12-19 18:32:31 -050030 #Set the initial heap size to match the max heap size,
31 #by replacing a string like "-Xmx1g" with one like "-Xms1g -Xmx1g"
Jeff Gaston77bb2b12021-04-15 12:51:08 -040032 MAX_MEM=24g
Jeff Gastoncca984c2020-10-05 12:54:17 -040033 ORG_GRADLE_JVMARGS="$(echo $ORG_GRADLE_JVMARGS | sed "s/-Xmx\([^ ]*\)/-Xms$MAX_MEM -Xmx$MAX_MEM/")"
Jeff Gaston440e1ac2020-09-09 08:32:22 -040034
35 # tell Gradle where to put a heap dump on failure
36 ORG_GRADLE_JVMARGS="$(echo $ORG_GRADLE_JVMARGS | sed "s|$| -XX:HeapDumpPath=$DIST_DIR|")"
Jeff Gastone72d2302019-12-19 18:32:31 -050037
Jeff Gaston0e3d19a2019-10-02 12:17:39 -040038 # We don't set a default DIST_DIR in an else clause here because Studio doesn't use gradlew
39 # and doesn't set DIST_DIR and we want gradlew and Studio to match
40fi
41
Jeff Gastonc21ecb32020-11-05 17:16:35 -050042# unset ANDROID_BUILD_TOP so that Lint doesn't think we're building the platform itself
43unset ANDROID_BUILD_TOP
Aurimas Liutikas9979d072018-03-13 15:38:56 -070044# ----------------------------------------------------------------------------
45
Xavier Ducrohet0f3d9032014-03-18 17:25:21 -070046# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
Xavier Ducrohet0f3d9032014-03-18 17:25:21 -070047
Jeff Gastonc6df4152021-11-03 10:24:02 -040048if [[ " ${@} " =~ " -PupdateLintBaseline " ]]; then
49 # remove when b/188666845 is complete
50 # Inform lint to not fail even when creating a baseline file
51 JAVA_OPTS="$JAVA_OPTS -Dlint.baselines.continue=true"
52fi
53
Xavier Ducrohet0f3d9032014-03-18 17:25:21 -070054APP_NAME="Gradle"
55APP_BASE_NAME=`basename "$0"`
56
57# Use the maximum available, or set MAX_FD != -1 to use that value.
58MAX_FD="maximum"
59
60warn ( ) {
61 echo "$*"
62}
63
64die ( ) {
65 echo
66 echo "$*"
67 echo
68 exit 1
69}
70
71# OS specific support (must be 'true' or 'false').
72cygwin=false
73msys=false
74darwin=false
75case "`uname`" in
76 CYGWIN* )
77 cygwin=true
78 ;;
79 Darwin* )
80 darwin=true
81 ;;
82 MINGW* )
83 msys=true
84 ;;
85esac
Rahul Ravikumar465ccfc2022-02-14 14:58:20 -080086platform_suffix="x86"
87case "$(arch)" in
88 arm64* )
89 platform_suffix="arm64"
90esac
Xavier Ducrohet0f3d9032014-03-18 17:25:21 -070091# Attempt to set APP_HOME
92# Resolve links: $0 may be a link
93PRG="$0"
94# Need this for relative symlinks.
95while [ -h "$PRG" ] ; do
96 ls=`ls -ld "$PRG"`
97 link=`expr "$ls" : '.*-> \(.*\)$'`
98 if expr "$link" : '/.*' > /dev/null; then
99 PRG="$link"
100 else
101 PRG=`dirname "$PRG"`"/$link"
102 fi
103done
104SAVED="`pwd`"
Yigit Boyarf77697d2016-08-16 10:55:36 -0700105cd "`dirname \"$PRG\"`/" >/dev/null
Xavier Ducrohet0f3d9032014-03-18 17:25:21 -0700106APP_HOME="`pwd -P`"
Yigit Boyarf77697d2016-08-16 10:55:36 -0700107cd "$SAVED" >/dev/null
Xavier Ducrohet0f3d9032014-03-18 17:25:21 -0700108
109CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
110
Jeff Gaston79a43f22019-04-09 16:19:12 -0400111# --------- androidx specific code needed for lint and java. ------------------
112
Alan Viveretted38b36c2017-02-01 16:45:31 -0500113# Pick the correct fullsdk for this OS.
Alan Viverette7df63ff2017-03-06 13:12:24 -0500114if [ $darwin == "true" ]; then
Alan Viveretted38b36c2017-02-01 16:45:31 -0500115 plat="darwin"
116else
117 plat="linux"
118fi
119DEFAULT_JVM_OPTS="-DLINT_API_DATABASE=$APP_HOME/../../prebuilts/fullsdk-$plat/platform-tools/api/api-versions.xml"
120
Matthew Fraschilla6ab84fc32019-11-21 16:40:16 -0800121# Tests for lint checks default to using sdk defined by this variable. This removes a lot of
122# setup from each lint module.
123export ANDROID_HOME="$APP_HOME/../../prebuilts/fullsdk-$plat"
Sergey Vasilinetsefab5eb2019-01-04 12:38:06 +0000124# override JAVA_HOME, because CI machines have it and it points to very old JDK
Rahul Ravikumar465ccfc2022-02-14 14:58:20 -0800125export JAVA_HOME="$APP_HOME/../../prebuilts/jdk/jdk11/$plat-$platform_suffix"
Aurimas Liutikas4b897cb2019-10-14 13:25:08 -0700126export JAVA_TOOLS_JAR="$APP_HOME/../../prebuilts/jdk/jdk8/$plat-x86/lib/tools.jar"
127export STUDIO_GRADLE_JDK=$JAVA_HOME
Oussama Ben Abdelbakif825eb52018-12-04 16:17:00 -0500128
Jeff Gaston79a43f22019-04-09 16:19:12 -0400129# ----------------------------------------------------------------------------
130
Xavier Ducrohet0f3d9032014-03-18 17:25:21 -0700131# Determine the Java command to use to start the JVM.
132if [ -n "$JAVA_HOME" ] ; then
133 if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
134 # IBM's JDK on AIX uses strange locations for the executables
135 JAVACMD="$JAVA_HOME/jre/sh/java"
136 else
137 JAVACMD="$JAVA_HOME/bin/java"
138 fi
139 if [ ! -x "$JAVACMD" ] ; then
140 die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
141
142Please set the JAVA_HOME variable in your environment to match the
143location of your Java installation."
144 fi
145else
146 JAVACMD="java"
147 which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
148
149Please set the JAVA_HOME variable in your environment to match the
150location of your Java installation."
151fi
152
153# Increase the maximum file descriptors if we can.
154if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
155 MAX_FD_LIMIT=`ulimit -H -n`
156 if [ $? -eq 0 ] ; then
157 if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
158 MAX_FD="$MAX_FD_LIMIT"
159 fi
160 ulimit -n $MAX_FD
161 if [ $? -ne 0 ] ; then
162 warn "Could not set maximum file descriptor limit: $MAX_FD"
163 fi
164 else
165 warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
166 fi
167fi
168
169# For Darwin, add options to specify how the application appears in the dock
170if $darwin; then
171 GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
172fi
173
174# For Cygwin, switch paths to Windows format before running java
175if $cygwin ; then
176 APP_HOME=`cygpath --path --mixed "$APP_HOME"`
177 CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
Yigit Boyarf77697d2016-08-16 10:55:36 -0700178 JAVACMD=`cygpath --unix "$JAVACMD"`
Xavier Ducrohet0f3d9032014-03-18 17:25:21 -0700179
180 # We build the pattern for arguments to be converted via cygpath
181 ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
182 SEP=""
183 for dir in $ROOTDIRSRAW ; do
184 ROOTDIRS="$ROOTDIRS$SEP$dir"
185 SEP="|"
186 done
187 OURCYGPATTERN="(^($ROOTDIRS))"
188 # Add a user-defined pattern to the cygpath arguments
189 if [ "$GRADLE_CYGPATTERN" != "" ] ; then
190 OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
191 fi
192 # Now convert the arguments - kludge to limit ourselves to /bin/sh
193 i=0
194 for arg in "$@" ; do
195 CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
196 CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
197
198 if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
199 eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
200 else
201 eval `echo args$i`="\"$arg\""
202 fi
203 i=$((i+1))
204 done
205 case $i in
206 (0) set -- ;;
207 (1) set -- "$args0" ;;
208 (2) set -- "$args0" "$args1" ;;
209 (3) set -- "$args0" "$args1" "$args2" ;;
210 (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
211 (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
212 (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
213 (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
214 (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
215 (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
216 esac
217fi
218
219# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
220function splitJvmOpts() {
221 JVM_OPTS=("$@")
222}
223eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
224JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
225
Jeff Gaston826bdbe2019-11-20 14:56:24 -0500226#TODO: Remove HOME_SYSTEM_PROPERTY_ARGUMENT if https://github.com/gradle/gradle/issues/11433 gets fixed
227HOME_SYSTEM_PROPERTY_ARGUMENT=""
228if [ "$GRADLE_USER_HOME" != "" ]; then
229 HOME_SYSTEM_PROPERTY_ARGUMENT="-Duser.home=$GRADLE_USER_HOME"
230fi
Jeff Gaston38004a62019-12-11 15:43:10 -0500231if [ "$TMPDIR" != "" ]; then
232 TMPDIR_ARG="-Djava.io.tmpdir=$TMPDIR"
233fi
Jeff Gaston826bdbe2019-11-20 14:56:24 -0500234
Jeff Gastonbaa2b202021-04-23 15:44:59 -0400235if [[ " ${@} " =~ " --clean " ]]; then
236 cleanCaches=true
237else
238 cleanCaches=false
239fi
240
Jeff Gaston794b0b72021-09-28 12:47:47 -0400241if [[ " ${@} " =~ " --no-ci " ]]; then
242 disableCi=true
243else
244 disableCi=false
245fi
246
Jeff Gaston829fd822021-09-23 11:42:48 -0400247# workaround for https://github.com/gradle/gradle/issues/18386
248if [[ " ${@} " =~ " --profile " ]]; then
249 mkdir -p reports
250fi
251
Jeff Gaston7eafa5d2021-02-10 16:12:54 -0500252# Expand some arguments
Jeff Gaston794b0b72021-09-28 12:47:47 -0400253for compact in "--ci" "--strict" "--clean" "--no-ci"; do
254 expanded=""
Jeff Gaston7eafa5d2021-02-10 16:12:54 -0500255 if [ "$compact" == "--ci" ]; then
Jeff Gaston794b0b72021-09-28 12:47:47 -0400256 if [ "$disableCi" == "false" ]; then
257 expanded="--strict\
258 --stacktrace\
259 -Pandroidx.summarizeStderr\
260 -Pandroidx.enableAffectedModuleDetection\
261 --no-watch-fs"
262 fi
Jeff Gaston4537e142021-01-27 13:08:50 -0500263 fi
Jeff Gaston7eafa5d2021-02-10 16:12:54 -0500264 if [ "$compact" == "--strict" ]; then
265 expanded="-Pandroidx.allWarningsAsErrors\
266 -Pandroidx.validateNoUnrecognizedMessages\
Jeff Gaston55624742021-04-22 14:05:49 -0400267 -Pandroidx.verifyUpToDate\
Jeff Gaston7eafa5d2021-02-10 16:12:54 -0500268 --no-watch-fs\
269 --no-daemon\
270 --offline"
271 fi
Jeff Gaston794b0b72021-09-28 12:47:47 -0400272 # if compact is something else then we parsed the argument above but
273 # still have to remove it (expanded == "") to avoid confusing Gradle
Jeff Gaston7eafa5d2021-02-10 16:12:54 -0500274
Jeff Gastonbaa2b202021-04-23 15:44:59 -0400275 # check whether this particular compat argument was passed (and therefore needs expansion)
276 if [[ " ${@} " =~ " $compact " ]]; then
277 # Expand an individual argument
278 # Start by making a copy of our list of arguments and iterating through the copy
279 for arg in "$@"; do
280 # Remove this argument from our list of arguments.
281 # By the time we've completed this loop, we will have removed the original copy of
282 # each argument, and potentially re-added a new copy or an expansion of each.
283 shift
284 # Determine whether to expand this argument
285 if [ "$arg" == "$compact" ]; then
286 # Add the expansion to our arguments
287 set -- "$@" $expanded
288 if [ "$expanded" != "" ]; then
289 echo "gradlew expanded '$compact' into '$expanded'"
290 echo
291 fi
292 # We avoid re-adding this argument itself back into the list for two reasons:
293 # 1. This argument might not be directly understood by Gradle
294 # 2. We want to enforce that all behaviors enabled by this flag can be toggled independently,
295 # so we don't want it to be easy to inadvertently check for the presence of this flag
296 # specifically
297 else
298 # Add this argument back into our arguments
299 set -- "$@" "$arg"
300 fi
301 done
302 fi
Jeff Gaston4537e142021-01-27 13:08:50 -0500303done
304
Jeff Gastonb03b05a2022-04-11 11:41:59 -0400305# check whether the user has requested profiling via yourkit
306yourkitArgPrefix="androidx.profile.yourkitAgentPath"
307yourkitAgentPath=""
308if [[ " ${@}" =~ " -P$yourkitArgPrefix" ]]; then
309 for arg in "$@"; do
310 if echo "$arg" | grep "${yourkitArgPrefix}=" >/dev/null; then
311 yourkitAgentPath="$(echo "$arg" | sed "s/-P${yourkitArgPrefix}=//")"
312 fi
313 done
314 if [ "$yourkitAgentPath" == "" ]; then
315 echo "Error: $yourkitArgPrefix must be set to the path of the YourKit Java agent" >&2
316 exit 1
317 fi
318 if [ ! -e "$yourkitAgentPath" ]; then
319 echo "Error: $yourkitAgentPath does not exist" >&2
320 exit 1
321 fi
322 # add the agent to the path
323 export _JAVA_OPTIONS="$_JAVA_OPTIONS -agentpath:$yourkitAgentPath"
324 # add arguments
325 set -- "$@" --no-daemon --rerun-tasks
326
327 # lots of blank lines because these messages are important
328 echo
329 echo
330 echo
331 echo
332 echo
333 # suggest --clean
334 if [ "$cleanCaches" == "false" ]; then
335 echo "When setting $yourkitArgPrefix you may also want to pass --clean"
336 fi
337 COLOR_YELLOW="\u001B[33m"
338 COLOR_CLEAR="\u001B[0m"
339
340 echo -e "${COLOR_YELLOW}Also be sure to start the YourKit user interface and connect to the appropriate Java process (probably the Gradle Daemon)${COLOR_CLEAR}"
341 echo
342 echo
343 echo
344 echo
345 echo
346fi
347
Jeff Gastond2806b32021-09-29 12:20:39 -0400348if [[ " ${@} " =~ " --scan " ]]; then
349 if [[ " ${@} " =~ " --offline " ]]; then
350 echo "--scan incompatible with --offline"
351 echo "you could try --no-ci"
352 exit 1
353 fi
354fi
355
Jeff Gastonbaa2b202021-04-23 15:44:59 -0400356function removeCaches() {
357 rm -rf $SCRIPT_PATH/.gradle
358 rm -rf $SCRIPT_PATH/buildSrc/.gradle
359 rm -f $SCRIPT_PATH/local.properties
360 if [ "$GRADLE_USER_HOME" != "" ]; then
361 rm -rf "$GRADLE_USER_HOME"
362 else
363 rm -rf ~/.gradle
364 fi
Jeff Gaston829fd822021-09-23 11:42:48 -0400365 # https://github.com/gradle/gradle/issues/18386
366 rm -rf $SCRIPT_PATH/reports
Jeff Gaston96eb6012021-09-27 14:55:36 +0000367 rm -rf $SCRIPT_PATH/build
Jeff Gastonbaa2b202021-04-23 15:44:59 -0400368 rm -rf $OUT_DIR
369}
370
371if [ "$cleanCaches" == true ]; then
372 echo "IF ./gradlew --clean FIXES YOUR BUILD; OPEN A BUG."
373 echo "In nearly all cases, it should not be necessary to run a clean build."
374 echo
375 echo "You may be more interested in running:"
376 echo
377 echo " ./development/diagnose-build-failure/diagnose-build-failure.sh $*"
378 echo
379 echo "which attempts to diagnose more details about build failures."
380 echo
381 echo "Removing caches"
382 # one case where it is convenient to have a clean build is for double-checking that a build failure isn't due to an incremental build failure
383 # another case where it is convenient to have a clean build is for performance testing
384 # another case where it is convenient to have a clean build is when you're modifying the build and may have introduced some errors but haven't shared your changes yet (at which point you should have fixed the errors)
385 echo
386
387 removeCaches
388fi
389
Jeff Gaston224eb172020-01-09 12:31:47 -0500390function runGradle() {
Jeff Gaston41b90222020-08-18 11:09:55 -0400391 processOutput=false
Jeff Gastone4b4b872020-08-25 09:02:13 -0400392 if [[ " ${@} " =~ " -Pandroidx.validateNoUnrecognizedMessages " ]]; then
Jeff Gaston41b90222020-08-18 11:09:55 -0400393 processOutput=true
394 fi
395 if [[ " ${@} " =~ " -Pandroidx.summarizeStderr " ]]; then
396 processOutput=true
397 fi
398 if [ "$processOutput" == "true" ]; then
399 wrapper="$SCRIPT_PATH/development/build_log_processor.sh"
400 else
401 wrapper=""
402 fi
Jeff Gaston3febf902021-03-16 11:23:15 -0400403
Jeff Gaston1e67a612021-11-24 13:31:10 -0500404 RETURN_VALUE=0
Jeff Gaston3febf902021-03-16 11:23:15 -0400405 PROJECT_CACHE_DIR_ARGUMENT="--project-cache-dir $OUT_DIR/gradle-project-cache"
406 if $wrapper "$JAVACMD" "${JVM_OPTS[@]}" $TMPDIR_ARG -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain $HOME_SYSTEM_PROPERTY_ARGUMENT $TMPDIR_ARG $PROJECT_CACHE_DIR_ARGUMENT "$ORG_GRADLE_JVMARGS" "$@"; then
Jeff Gaston1e67a612021-11-24 13:31:10 -0500407 RETURN_VALUE=0
Jeff Gaston224eb172020-01-09 12:31:47 -0500408 else
409 # Print AndroidX-specific help message if build fails
410 # Have to do this build-failure detection in gradlew rather than in build.gradle
411 # so that this message still prints even if buildSrc itself fails
412 echo
Jeff Gaston61cef332020-12-22 11:23:09 -0500413 echo For help with unexpected failures, see development/diagnose-build-failure/README.md
414 echo
Jeff Gaston1e67a612021-11-24 13:31:10 -0500415 RETURN_VALUE=1
Jeff Gaston69713292020-06-04 12:53:39 -0400416 fi
Jeff Gaston1e67a612021-11-24 13:31:10 -0500417
418 # If the caller specified where to save data, then also save the build scan data
419 if [ "$DIST_DIR" != "" ]; then
420 if [ "$GRADLE_USER_HOME" != "" ]; then
421 if [[ " ${@} " =~ " -PdisallowExecution " ]]; then
422 zipPath="$DIST_DIR/scan-up-to-date.zip"
423 else
424 zipPath="$DIST_DIR/scan.zip"
425 fi
426 rm -f "$zipPath"
427 cd "$GRADLE_USER_HOME/build-scan-data"
428 zip -q -r "$zipPath" .
429 cd -
430 fi
431 fi
432 return $RETURN_VALUE
Jeff Gaston69713292020-06-04 12:53:39 -0400433}
434
Jeff Gaston400ccb32020-06-08 16:44:58 -0400435if [[ " ${@} " =~ " -PdisallowExecution " ]]; then
Jeff Gaston55624742021-04-22 14:05:49 -0400436 echo "Passing '-PdisallowExecution' directly is forbidden. Did you mean -Pandroidx.verifyUpToDate ?"
Jeff Gaston400ccb32020-06-08 16:44:58 -0400437 echo "See TaskUpToDateValidator.java for more information"
438 exit 1
439fi
440
Jeff Gaston224eb172020-01-09 12:31:47 -0500441if [[ " ${@} " =~ " -PverifyUpToDate " ]]; then
Jeff Gaston55624742021-04-22 14:05:49 -0400442 echo "-PverifyUpToDate has been renamed to -Pandroidx.verifyUpToDate"
443 exit 1
444fi
445
446runGradle "$@"
447# Check whether we were given the "-Pandroidx.verifyUpToDate" argument
448if [[ " ${@} " =~ " -Pandroidx.verifyUpToDate " ]]; then
Jeff Gastoncefdeae2020-03-09 13:12:35 -0400449 # Re-run Gradle, and find all tasks that are unexpectly out of date
Jeff Gastone906e5c2020-11-05 12:33:10 -0500450 if ! runGradle "$@" -PdisallowExecution --continue; then
451 echo >&2
Jeff Gaston20f5e7a2022-01-27 13:39:25 -0500452 echo "TaskUpToDateValidator's second build failed. To reproduce, try running './gradlew -Pandroidx.verifyUpToDate <failing tasks>'" >&2
Jeff Gastone906e5c2020-11-05 12:33:10 -0500453 exit 1
454 fi
Jeff Gastonb89c82b2019-08-21 16:24:09 -0400455fi