Merge "Conditionally sets OnCreateContextMenuListener" into androidx-master-dev
diff --git a/build.gradle b/build.gradle
index 394c42c..cd5ad2d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -15,8 +15,7 @@
*/
import androidx.build.AndroidXPlugin
-import androidx.build.DacOptions
-import androidx.build.PublishDocsRulesKt
+import androidx.build.SdkHelperKt
import androidx.build.jacoco.Jacoco
def currentJvmVersion = org.gradle.api.JavaVersion.current()
@@ -32,8 +31,8 @@
apply from: 'buildSrc/repos.gradle'
apply from: 'buildSrc/init.gradle'
apply from: 'buildSrc/build_dependencies.gradle'
- init.setSdkInLocalPropertiesFile()
repos.addMavenRepositories(repositories)
+ SdkHelperKt.setSdkInLocalPropertiesFile(ext.supportRootFolder)
dependencies {
classpath build_libs.gradle
diff --git a/buildSrc/init.gradle b/buildSrc/init.gradle
index 3866c18..e13b62f 100644
--- a/buildSrc/init.gradle
+++ b/buildSrc/init.gradle
@@ -21,7 +21,6 @@
import androidx.build.license.CheckExternalDependencyLicensesTask
import com.android.build.gradle.internal.coverage.JacocoReportTask
import com.android.build.gradle.internal.tasks.DeviceProviderInstrumentTestTask
-import org.gradle.api.logging.configuration.ShowStacktrace
def supportRoot = ext.supportRootFolder
if (supportRoot == null) {
@@ -35,71 +34,6 @@
apply from: "${supportRoot}/buildSrc/dependencies.gradle"
apply from: "${supportRoot}/buildSrc/build_dependencies.gradle"
-apply from: "${supportRoot}/buildSrc/unbundled_check.gradle"
-
-
-def getFullSdkPath() {
- if (isUnbundledBuild(ext.supportRootFolder)) {
- Properties properties = new Properties()
- File propertiesFile = new File('local.properties')
- if (propertiesFile.exists()) {
- propertiesFile.withInputStream {
- properties.load(it)
- }
- }
- File location = findSdkLocation(properties, supportRootFolder)
- return location.getAbsolutePath()
- } else {
- final String osName = System.getProperty("os.name").toLowerCase();
- final boolean isMacOsX =
- osName.contains("mac os x") || osName.contains("darwin") || osName.contains("osx");
- final String platform = isMacOsX ? 'darwin' : 'linux'
- return "${repos.prebuiltsRoot}/fullsdk-${platform}"
- }
-}
-
-/**
- * Adapted from com.android.build.gradle.internal.SdkHandler
- */
-public static File findSdkLocation(Properties properties, File rootDir) {
- String sdkDirProp = properties.getProperty("sdk.dir");
- if (sdkDirProp != null) {
- File sdk = new File(sdkDirProp);
- if (!sdk.isAbsolute()) {
- sdk = new File(rootDir, sdkDirProp);
- }
- return sdk
- }
-
- sdkDirProp = properties.getProperty("android.dir");
- if (sdkDirProp != null) {
- return new File(rootDir, sdkDirProp);
- }
-
- String envVar = System.getenv("ANDROID_HOME");
- if (envVar != null) {
- return new File(envVar);
- }
-
- String property = System.getProperty("android.home");
- if (property != null) {
- return new File(property);
- }
- return null;
-}
-
-def setSdkInLocalPropertiesFile() {
- final File fullSdkPath = file(getFullSdkPath())
- if (fullSdkPath.exists()) {
- project.ext.fullSdkPath = fullSdkPath
- File props = file("local.properties")
- props.write "sdk.dir=${fullSdkPath.getAbsolutePath()}"
- ext.usingFullSdk = true
- } else {
- throw Exception("You are using non ub-supportlib-* checkout. You need to check out "
- + "ub-supportlib-* to work on support library. See go/supportlib for details.")
- }
-}
def setupRepoOutAndBuildNumber() {
// common support repo folder which works well for prebuilts.
@@ -301,7 +235,6 @@
}
}
-ext.init.setSdkInLocalPropertiesFile = this.&setSdkInLocalPropertiesFile
ext.init.setupRepoOutAndBuildNumber = this.&setupRepoOutAndBuildNumber
ext.init.configureSubProjects = this.&configureSubProjects
ext.init.configureBuildOnServer = this.&configureBuildOnServer
diff --git a/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt b/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt
index 32c68bc..2140927 100644
--- a/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt
@@ -21,12 +21,12 @@
import androidx.build.checkapi.ApiXmlConversionTask
import androidx.build.checkapi.CheckApiTask
import androidx.build.checkapi.UpdateApiTask
-import androidx.build.doclava.DoclavaTask
-import androidx.build.doclava.DEFAULT_DOCLAVA_CONFIG
import androidx.build.doclava.CHECK_API_CONFIG_DEVELOP
-import androidx.build.doclava.CHECK_API_CONFIG_RELEASE
import androidx.build.doclava.CHECK_API_CONFIG_PATCH
+import androidx.build.doclava.CHECK_API_CONFIG_RELEASE
import androidx.build.doclava.ChecksConfig
+import androidx.build.doclava.DEFAULT_DOCLAVA_CONFIG
+import androidx.build.doclava.DoclavaTask
import androidx.build.docs.ConcatenateFilesTask
import androidx.build.docs.GenerateDocsTask
import androidx.build.jdiff.JDiffTask
@@ -46,24 +46,11 @@
import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.api.tasks.javadoc.Javadoc
import java.io.File
+import java.net.URLClassLoader
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
-import kotlin.collections.Collection
-import kotlin.collections.List
-import kotlin.collections.MutableMap
-import kotlin.collections.emptyList
-import kotlin.collections.filter
-import kotlin.collections.find
-import kotlin.collections.forEach
-import kotlin.collections.listOf
-import kotlin.collections.mapNotNull
-import kotlin.collections.minus
-import kotlin.collections.mutableMapOf
-import kotlin.collections.plus
-import kotlin.collections.set
-import kotlin.collections.toSet
-import java.net.URLClassLoader
import javax.tools.ToolProvider
+import kotlin.collections.set
private const val DOCLAVA_DEPENDENCY = "com.android:doclava:1.0.6"
@@ -799,10 +786,10 @@
create(name, taskClass) { task -> task.config() }
fun androidJarFile(project: Project): FileCollection =
- project.files(arrayOf(File(project.fullSdkPath(),
+ project.files(arrayOf(File(project.sdkPath(),
"platforms/android-${SupportConfig.CURRENT_SDK_VERSION}/android.jar")))
-private fun androidSrcJarFile(project: Project): File = File(project.fullSdkPath(),
+private fun androidSrcJarFile(project: Project): File = File(project.sdkPath(),
"platforms/android-${SupportConfig.CURRENT_SDK_VERSION}/android-stubs-src.jar")
private fun PublishDocsRules.resolve(extension: SupportLibraryExtension): DocsRule? {
@@ -818,7 +805,7 @@
// Nasty part. Get rid of that eventually!
private fun Project.docsDir(): File = properties["docsDir"] as File
-private fun Project.fullSdkPath(): File = rootProject.properties["fullSdkPath"] as File
+private fun Project.sdkPath(): File = getSdkPath(rootProject.projectDir)
private fun Project.version() = Version(project.version as String)
diff --git a/buildSrc/src/main/kotlin/androidx/build/SdkHelper.kt b/buildSrc/src/main/kotlin/androidx/build/SdkHelper.kt
new file mode 100644
index 0000000..6d4d95c
--- /dev/null
+++ b/buildSrc/src/main/kotlin/androidx/build/SdkHelper.kt
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.build
+
+import java.io.File
+import java.util.Properties
+
+/**
+ * Writes the appropriate SDK path to local.properties file.
+ */
+fun setSdkInLocalPropertiesFile(supportRoot: File) {
+ val sdkPath = getSdkPath(supportRoot)
+ if (sdkPath.exists()) {
+ val props = File(supportRoot, "local.properties")
+ props.printWriter().use { out ->
+ out.println("sdk.dir=${sdkPath.getAbsolutePath()}")
+ }
+ } else {
+ throw Exception("You are using non androidx-master-dev checkout. You need to check out " +
+ "androidx-master-dev to work on support library. See go/androidx for details.")
+ }
+}
+
+/**
+ * Returns the appropriate SDK path.
+ */
+fun getSdkPath(supportRoot: File): File {
+ if (isUnbundledBuild(supportRoot)) {
+ val properties = Properties()
+ val propertiesFile = File("local.properties")
+ if (propertiesFile.exists()) {
+ properties.load(propertiesFile.inputStream())
+ }
+ return findSdkLocation(properties, supportRoot)
+ } else {
+ val osName = System.getProperty("os.name").toLowerCase()
+ val isMacOsX = osName.contains("mac os x") || osName.contains("darwin") ||
+ osName.contains("osx")
+ val platform = if (isMacOsX) "darwin" else "linux"
+ // Making an assumption that prebuilts directory is in ../../prebuilts/
+ return File(supportRoot.parentFile.parentFile, "prebuilts/fullsdk-$platform")
+ }
+}
+
+/**
+ * Adapted from com.android.build.gradle.internal.SdkHandler
+ */
+private fun findSdkLocation(properties: Properties, rootDir: File): File {
+ var sdkDirProp = properties.getProperty("sdk.dir")
+ if (sdkDirProp != null) {
+ var sdk = File(sdkDirProp)
+ if (!sdk.isAbsolute()) {
+ sdk = File(rootDir, sdkDirProp)
+ }
+ return sdk
+ }
+
+ sdkDirProp = properties.getProperty("android.dir")
+ if (sdkDirProp != null) {
+ return File(rootDir, sdkDirProp)
+ }
+
+ val envVar = System.getenv("ANDROID_HOME")
+ if (envVar != null) {
+ return File(envVar)
+ }
+
+ val property = System.getProperty("android.home")
+ if (property != null) {
+ return File(property)
+ }
+ throw Exception("Could not find your SDK")
+}
+
+private fun isUnbundledBuild(supportRoot: File): Boolean {
+ return (File(supportRoot, "unbundled-build")).exists()
+}
\ No newline at end of file