summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYigit Boyar <yboyar@google.com>2015-09-11 22:58:15 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-09-11 22:58:15 +0000
commit32074b0202a7232df8c8ceab9077f4ca3af3335a (patch)
tree0ca129e48c4ac25512f93e1536834bde7e43ae21
parent2573102ac98a69ff9a804496cb8947031ad4c229 (diff)
parentd6ddc647acae6d322cb7d41100c087530b249e80 (diff)
downloaddata-binding-32074b0202a7232df8c8ceab9077f4ca3af3335a.tar.gz
Merge "Support lib deployment script" into studio-master-dev
-rw-r--r--build.gradle14
-rw-r--r--databinding.properties4
-rw-r--r--extensions/baseAdapters/build.gradle2
-rw-r--r--propLoader.gradle9
-rw-r--r--supportBundle.gradle132
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