diff options
author | Yigit Boyar <yboyar@google.com> | 2015-09-11 22:58:15 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-09-11 22:58:15 +0000 |
commit | 32074b0202a7232df8c8ceab9077f4ca3af3335a (patch) | |
tree | 0ca129e48c4ac25512f93e1536834bde7e43ae21 | |
parent | 2573102ac98a69ff9a804496cb8947031ad4c229 (diff) | |
parent | d6ddc647acae6d322cb7d41100c087530b249e80 (diff) | |
download | data-binding-32074b0202a7232df8c8ceab9077f4ca3af3335a.tar.gz |
Merge "Support lib deployment script" into studio-master-dev
-rw-r--r-- | build.gradle | 14 | ||||
-rw-r--r-- | databinding.properties | 4 | ||||
-rw-r--r-- | extensions/baseAdapters/build.gradle | 2 | ||||
-rw-r--r-- | propLoader.gradle | 9 | ||||
-rw-r--r-- | supportBundle.gradle | 132 |
5 files changed, 152 insertions, 9 deletions
diff --git a/build.gradle b/build.gradle index 825e868b..bd6d4c91 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ buildscript { ext.rootFolder = project.projectDir apply from: 'propLoader.gradle' + apply from: 'supportBundle.gradle' ext.addRepos(repositories) if (ext.config.addRemoteRepos) { dependencies { @@ -20,10 +21,11 @@ subprojects { group = config.group version = config.version + def url = (config.inReleaseBuild && it.name == "library") ? "file://${config.sharedSupportRepoDir}" : "file://${config.mavenRepoDir}" uploadArchives { repositories { mavenDeployer { - repository(url: "file://${config.mavenRepoDir}") + repository(url: url) } } } @@ -58,13 +60,15 @@ task deleteEap(type: Delete) { def buildExtensionsTask = project.tasks.create "buildExtensionsTask", Exec buildExtensionsTask.workingDir file('extensions').getAbsolutePath() buildExtensionsTask.commandLine './gradlew' -buildExtensionsTask.args 'clean', 'uploadArchives', '--info', '--stacktrace' +buildExtensionsTask.args 'clean', 'uploadArchives', '--info', '--stacktrace', "-PuseReleaseVersion=${config.inReleaseBuild ? 'true' : 'false'}" buildExtensionsTask.dependsOn subprojects.uploadArchives +tasks['bundleSupportLib'].dependsOn buildExtensionsTask + def prepareExtensionPrebuilds = project.tasks.create "prepareExtensionPrebuilds", Exec prepareExtensionPrebuilds.workingDir file('extensions').getAbsolutePath() prepareExtensionPrebuilds.commandLine './gradlew' -prepareExtensionPrebuilds.args 'clean', 'preparePrebuilds', '--info', '--stacktrace' +prepareExtensionPrebuilds.args 'clean', 'preparePrebuilds', '--info', '--stacktrace', "-PuseReleaseVersion=${config.inReleaseBuild ? 'true' : 'false'}" prepareExtensionPrebuilds.dependsOn subprojects.uploadArchives file('integration-tests').listFiles().findAll { it.isDirectory() }.each { @@ -73,7 +77,7 @@ file('integration-tests').listFiles().findAll { it.isDirectory() }.each { testTask.workingDir it.getAbsolutePath() //on linux testTask.commandLine './gradlew' - testTask.args 'clean', 'connectedCheck', '--info', '--stacktrace' + testTask.args 'clean', 'connectedCheck', '--info', '--stacktrace', "-PuseReleaseVersion=${config.inReleaseBuild ? 'true' : 'false'}" testTask.dependsOn subprojects.uploadArchives testTask.dependsOn buildExtensionsTask } @@ -150,7 +154,7 @@ def fullJar(project) { localizeTask.dependsOn project.tasks.findByName('buildLicenseNotice') } - if (config.version.endsWith('SNAPSHOT')) { + if (!config.inReleaseBuild) { return } def jarName = project.uploadArchives.repositories.mavenDeployer.pom.artifactId diff --git a/databinding.properties b/databinding.properties index 6f39e6b4..16329ffc 100644 --- a/databinding.properties +++ b/databinding.properties @@ -1,7 +1,7 @@ # global settings for projects kotlinVersion = 0.12.613 -version = 1.0-rc2-SNAPSHOT -releaseVersion = 1.0-rc2-SNAPSHOT +version = 1.0-rc3-SNAPSHOT +releaseVersion = 1.0-rc2 androidPluginVersion = 1.3.0 javaTargetCompatibility = 1.7 javaSourceCompatibility = 1.7 diff --git a/extensions/baseAdapters/build.gradle b/extensions/baseAdapters/build.gradle index 9450d42f..0edcc596 100644 --- a/extensions/baseAdapters/build.gradle +++ b/extensions/baseAdapters/build.gradle @@ -81,7 +81,7 @@ android.libraryVariants.all { variant -> uploadArchives { repositories { mavenDeployer { - repository(url: "file://${config.mavenRepoDir}") + repository(url: "file://${config.inReleaseBuild ? config.sharedSupportRepoDir : config.mavenRepoDir}") pom.artifactId = "adapters" pom.project { licenses { diff --git a/propLoader.gradle b/propLoader.gradle index e082b863..a3702047 100644 --- a/propLoader.gradle +++ b/propLoader.gradle @@ -1,9 +1,13 @@ /** * Helper build script that reads data binding variables and sets up the projects. */ +def forceReleaseVersion = project.hasProperty('useReleaseVersion') && project.getProperty('useReleaseVersion').equals("true") def root = ext.rootFolder Properties databindingProperties = new Properties() databindingProperties.load(new FileInputStream("${root}/databinding.properties")) +if (forceReleaseVersion) { + databindingProperties.version = databindingProperties.releaseVersion +} def repoBase = databindingProperties.mavenRepoAbsolutePath == "." ? root : databindingProperties.mavenRepoAbsolutePath databindingProperties.mavenRepoDir = "${repoBase}/${databindingProperties.mavenRepoName}" databindingProperties.extraPluginsRepoDir = "${root}/${databindingProperties.extraPluginsRepoName}" @@ -25,12 +29,14 @@ new File(ext.config.prebuildFolder).mkdir() def addRemoteRepos = project.hasProperty('addRemoteRepos') && project.getProperty('addRemoteRepos').equals("true") ext.config.addRemoteRepos = addRemoteRepos +ext.config.sharedSupportRepoDir = "${ext.config.externalPrebuiltsBase}/maven_repo/android" +ext.config.inReleaseBuild = !databindingProperties.version.endsWith("SNAPSHOT") def config = ext.config def localRepositories = ["${config.extraPluginsRepoDir}", "${config.megaRepoDir}", "${config.mavenRepoDir}", "${config.externalPrebuiltsBase}/tools/common/offline-m2", - "${config.externalPrebuiltsBase}/maven_repo/android", + config.sharedSupportRepoDir, "${config.externalPrebuiltsBase}/gradle-plugin", "${config.externalPrebuiltsBase}/tools/common/m2/repository"] ext.config.localRepositories = localRepositories @@ -72,3 +78,4 @@ subprojects { } } } + diff --git a/supportBundle.gradle b/supportBundle.gradle new file mode 100644 index 00000000..fdcb4f52 --- /dev/null +++ b/supportBundle.gradle @@ -0,0 +1,132 @@ +buildscript { + ext.addRepos(repositories) + dependencies { + classpath 'com.google.guava:guava:18.0' + } +} +import com.google.common.io.Files +import com.google.common.base.Charsets +import com.google.common.hash.HashCode +import com.google.common.hash.HashFunction +import com.google.common.hash.Hashing +import java.nio.charset.Charset + + +ext.extraVersion = 20 +ext.supportRepoOut = '' +ext.buildToolsVersion = '22.1.0' +ext.buildNumber = Integer.toString(ext.extraVersion) + +/* + * With the build server you are given two env variables. + * The OUT_DIR is a temporary directory you can use to put things during the build. + * The DIST_DIR is where you want to save things from the build. + * + * The build server will copy the contents of DIST_DIR to somewhere and make it available. + */ +if (System.env.DIST_DIR != null && System.env.OUT_DIR != null) { + buildDir = new File(System.env.OUT_DIR + '/gradle/frameworks/support/build').getCanonicalFile() + project.ext.distDir = new File(System.env.DIST_DIR).getCanonicalFile() + + // the build server does not pass the build number so we infer it from the last folder of the dist path. + ext.buildNumber = project.ext.distDir.getName() +} else { + buildDir = file('../../out/host/gradle/frameworks/support/build') + project.ext.distDir = file('../../out/dist') +} +project.ext.distDir.mkdirs() + +ext.supportRepoOut = new File(buildDir, 'support_repo') + +// Main task called by the build server. +task(createArchive) << { +} + + +// upload anchor for subprojects to upload their artifacts +// to the local repo. +task(mainUpload) << { +} + +// repository creation task +task createRepository(type: Zip, dependsOn: mainUpload) { + from project.ext.supportRepoOut + destinationDir project.ext.distDir + into 'm2repository' + baseName = String.format("sdk-repo-linux-m2repository-%s", project.ext.buildNumber) +} +createArchive.dependsOn createRepository + +// prepare repository with older versions +task unzipRepo(type: Copy) { + from "$rootDir/../../prebuilts/maven_repo/android" + into project.ext.supportRepoOut +} + +unzipRepo.doFirst { + project.ext.supportRepoOut.deleteDir() + project.ext.supportRepoOut.mkdirs() +} + +// anchor for prepare repo. This is post unzip + sourceProp. +task(prepareRepo) << { +} + +task(createXml) << { + def repoArchive = createRepository.archivePath + def repoArchiveName = createRepository.archiveName + def size = repoArchive.length() + def sha1 = getSha1(repoArchive) + + def xml = + "<sdk:sdk-addon xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:sdk=\"http://schemas.android.com/sdk/android/addon/6\">\n\ + <sdk:extra>\n\ + <sdk:revision>\n\ + <sdk:major>${project.ext.extraVersion}</sdk:major>\n\ + </sdk:revision>\n\ + <sdk:vendor-display>Android</sdk:vendor-display>\n\ + <sdk:vendor-id>android</sdk:vendor-id>\n\ + <sdk:name-display>Local Maven repository for Support Libraries</sdk:name-display>\n\ + <sdk:path>m2repository</sdk:path>\n\ + <sdk:archives>\n\ + <sdk:archive>\n\ + <sdk:size>${size}</sdk:size>\n\ + <sdk:checksum type=\"sha1\">${sha1}</sdk:checksum>\n\ + <sdk:url>${repoArchiveName}</sdk:url>\n\ + </sdk:archive>\n\ + </sdk:archives>\n\ + </sdk:extra>\n\ +</sdk:sdk-addon>" + + Files.write(xml, new File(project.ext.distDir, 'repo-extras.xml'), Charsets.UTF_8) +} +createArchive.dependsOn createXml + +task(createSourceProp) << { + def sourceProp = + "Extra.VendorDisplay=Android\n\ +Extra.Path=m2repository\n\ +Archive.Arch=ANY\n\ +Extra.NameDisplay=Android Support Repository\n\ +Archive.Os=ANY\n\ +Pkg.Revision=${project.ext.extraVersion}.0.0\n\ +Extra.VendorId=android" + + Files.write(sourceProp, new File(project.ext.supportRepoOut, 'source.properties'), Charsets.UTF_8) +} +createSourceProp.dependsOn unzipRepo +prepareRepo.dependsOn createSourceProp + + +def getSha1(File inputFile) { + HashFunction hashFunction = Hashing.sha1() + HashCode hashCode = hashFunction.hashString(inputFile.getAbsolutePath(), Charset.forName("UTF-8")) + return hashCode.toString() +} + +task(bundleSupportLib) << { + +} + +createRepository.dependsOn unzipRepo +unzipRepo.dependsOn bundleSupportLib |