Skip to content
This repository was archived by the owner on Oct 14, 2022. It is now read-only.

Commit bb7480e

Browse files
authored
Merge pull request #2 from plangrid/lx/increase_max_param_number
See requery#125 for details. This PR contains code changes that are currently live in the prod artifact (see plangrid/plangrid-android#8016 where the dependency was updated from io.requery:sqlite-android to io.requery:sqlite-android-plangrid). I had to work with devops to manually upload the artifact that I created locally because developers don't have access to uploading things to artifactory. Once JENKINS is setup, it'll have access to uploading artifacts to our artifactory. Follow-ups: - Update README with PlanGrid specific notes about the changes - Setup JENKINS for Publishing - Mark https://github.com/plangrid/SQLite-FTS5-Android as deprecated - Update https://github.com/plangrid/SQLite-FTS5-Synonyms-Android to remove SQLite-FTS5 submodule, update JENKINS to no longer publish SQLite-FTS5, and remove any reference to SQLite-FTS5 from that repo
2 parents 4ece388 + 6fa9ea6 commit bb7480e

File tree

5 files changed

+193
-76
lines changed

5 files changed

+193
-76
lines changed

DeployJenkinsfile

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!groovy
2+
3+
// This file is named DeployJenkins file, so that it won't get picked up by the main PlanGrid Jenkins project
4+
5+
/**
6+
* Devtools team created PlangridStage groovy function uses env.GIT_BRANCH and env.PROJECT_NAME
7+
* Need to set these variables prior to use PlangridStage
8+
* (https://github.com/plangrid/plangrid-build-tools/blob/dev/vars/PlangridStage.groovy)
9+
*/
10+
env.GIT_BRANCH = env.BRANCH_NAME
11+
env.PROJECT_NAME = 'sqlite-android'
12+
13+
def deploy_project = env.DEPLOY_PROJECT
14+
15+
16+
throttle(['BigMem']) {
17+
node() {
18+
19+
deploy_build_dir = 'build'
20+
21+
stage("SCM") {
22+
checkout scm
23+
24+
sh("git checkout origin/${DEPLOY_BRANCH}")
25+
sh("git clean -fdx")
26+
27+
env.GIT_COMMIT = sh(returnStdout: true, script: "git rev-parse HEAD").trim()
28+
29+
if (!env.DOCKER_IMAGE_BASE) {
30+
env.DOCKER_IMAGE_BASE = "${env.PROJECT_NAME}:${env.GIT_COMMIT}"
31+
}
32+
}
33+
34+
stage('Build Docker') {
35+
retry(2) {
36+
sh '/opt/plangrid/build-tools/bin/build-docker'
37+
}
38+
CURRENT_DIR = sh(returnStdout: true, script: "pwd").trim()
39+
40+
DOCKER_ID = sh(returnStdout: true, script: "docker run \
41+
-e BRANCH_NAME=${env.BRANCH_NAME} \
42+
-e BUILD_NUMBER=${env.BUILD_NUMBER} \
43+
-e JENKINS_URL=${env.JENKINS_URL} \
44+
-e CHANGE_URL=${env.CHANGE_URL} \
45+
-e CHANGE_ID=${env.CHANGE_ID} \
46+
-e ARTIFACTORY_USER \
47+
-e ARTIFACTORY_PASSWORD \
48+
-itd \
49+
-v /var/lib/jenkins/gradlecache:/gradle_home/caches/ \
50+
-v " + "${CURRENT_DIR}:/build " + "${env.PROJECT_NAME}:${env.GIT_COMMIT}").trim()
51+
}
52+
53+
stage('Clean') {
54+
sh("docker exec ${DOCKER_ID} bash -c 'find \${GRADLE_USER_HOME}/caches -type f -name \"*.lock\" | xargs -I {} rm \"{}\"'")
55+
}
56+
stage("Build") {
57+
sh("docker exec ${DOCKER_ID} bash -c 'cd ${deploy_build_dir} ; ./gradlew assembleRelease'")
58+
}
59+
stage("Deploy") {
60+
sh("docker exec ${DOCKER_ID} bash -c 'cd ${deploy_build_dir} ; ./gradlew ${deploy_project}:uploadArchives'")
61+
}
62+
}
63+
}

Dockerfile.j2

+81
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Start with JDK8
2+
FROM openjdk:8
3+
4+
ENV PGS_APP=android-test \
5+
APP_MODULE=main:app
6+
7+
# Init dependencies for the setup process
8+
RUN dpkg --add-architecture i386 \
9+
&& apt-get update \
10+
&& apt-get install -y \
11+
build-essential \
12+
expect \
13+
software-properties-common \
14+
unzip \
15+
wget \
16+
python-requests \
17+
patch \
18+
zlib1g-dev \
19+
liblzma-dev \
20+
pkg-config \
21+
# Install 32-bit compatibility for 64-bit environments
22+
libc6:i386 \
23+
libncurses5:i386 \
24+
libstdc++6:i386 \
25+
zlib1g:i386 \
26+
ruby-full \
27+
ruby-dev \
28+
# Cleanup
29+
&& apt-get clean \
30+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
31+
32+
# Install bundler
33+
RUN gem install bundler
34+
35+
# Set desired Android Linux SDK version
36+
# ENV ANDROID_SDK_VERSION 25.2.3
37+
# ENV ANDROID_SDK_ZIP tools_r${ANDROID_SDK_VERSION}-linux.zip
38+
ENV ANDROID_SDK_ZIP sdk-tools-darwin-3859397.zip
39+
ENV ANDROID_SDK_ZIP_URL https://dl.google.com/android/repository/${ANDROID_SDK_ZIP}
40+
ENV ANDROID_HOME /opt/android-sdk-linux
41+
42+
ENV PATH ${PATH}:${ANDROID_HOME}/tools
43+
44+
# Install Android SDK
45+
RUN mkdir -p ${ANDROID_HOME}
46+
47+
RUN cd ${ANDROID_HOME} \
48+
&& wget --quiet ${ANDROID_SDK_ZIP_URL} \
49+
&& unzip -q ${ANDROID_HOME}/${ANDROID_SDK_ZIP} -d ${ANDROID_HOME} \
50+
&& rm ${ANDROID_HOME}/${ANDROID_SDK_ZIP}
51+
52+
RUN mkdir -p ${HOME}/.android
53+
RUN touch ${HOME}/.android/repositories.cfg
54+
55+
RUN yes | ${ANDROID_HOME}/tools/bin/sdkmanager --licenses
56+
57+
RUN yes | ${ANDROID_HOME}/tools/bin/sdkmanager "build-tools;28.0.3"
58+
RUN yes | ${ANDROID_HOME}/tools/bin/sdkmanager "platform-tools"
59+
RUN yes | ${ANDROID_HOME}/tools/bin/sdkmanager "platforms;android-28"
60+
RUN yes | ${ANDROID_HOME}/tools/bin/sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2"
61+
RUN yes | ${ANDROID_HOME}/tools/bin/sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2"
62+
63+
# Make SDK dir writable
64+
RUN chmod -R a+w ${ANDROID_HOME}
65+
66+
# Add a "Home" directory for the user
67+
ENV GRADLE_USER_HOME /gradle_home
68+
69+
RUN mkdir -p ${GRADLE_USER_HOME}
70+
71+
# ENV DUMMY_LOCAL_PROPERTIES local.properties.dummy
72+
ENV DOCKER_GRADLE_HOME container-test-home
73+
# create dummy local.properties to keep host environment's configs from overriding the Dockerfile ENV for android sdk bits
74+
# RUN touch ${DUMMY_LOCAL_PROPERTIES}
75+
76+
# create a directory to mount as the container's GRADLE_USER_HOME to share the gradle cache from run to run
77+
RUN mkdir -p ${DOCKER_GRADLE_HOME}
78+
79+
# Copy source files & install gradle
80+
RUN mkdir build
81+
COPY . ./build
+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// ./gradlew clean build generateRelease
2+
apply plugin: 'maven'
3+
4+
def groupId = project.PUBLISH_GROUP_ID
5+
def artifactId = project.PUBLISH_ARTIFACT_ID
6+
def version = project.PUBLISH_VERSION
7+
8+
task androidJavadocs(type: Javadoc) {
9+
failOnError = false
10+
source = android.sourceSets.main.java.srcDirs
11+
ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
12+
classpath += files(ext.androidJar)
13+
}
14+
15+
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
16+
classifier = 'javadoc'
17+
from androidJavadocs.destinationDir
18+
}
19+
20+
task androidSourcesJar(type: Jar) {
21+
classifier = 'sources'
22+
from android.sourceSets.main.java.srcDirs
23+
}
24+
25+
uploadArchives {
26+
repositories.mavenDeployer {
27+
pom.groupId = groupId
28+
pom.artifactId = artifactId
29+
pom.version = version
30+
// Add other pom properties here if you want (developer details / licenses)
31+
repository(url: "https://plangrid.jfrog.io/plangrid/libs-release-local") {
32+
authentication(userName: System.getenv("ARTIFACTORY_USER"), password: System.getenv("ARTIFACTORY_PASSWORD"))
33+
}
34+
}
35+
}
36+
37+
artifacts {
38+
archives androidSourcesJar
39+
archives androidJavadocsJar
40+
}

sqlite-android/build.gradle

+8-76
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ group = 'io.requery'
1111
version = '3.30.1'
1212
description = 'Android SQLite compatibility library'
1313

14+
ext {
15+
PUBLISH_ARTIFACT_ID = name + "-plangrid"
16+
PUBLISH_GROUP_ID = group
17+
PUBLISH_VERSION = version
18+
}
19+
1420
android {
1521
compileSdkVersion 28
1622

@@ -56,84 +62,8 @@ dependencies {
5662
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
5763
}
5864

59-
publish.dependsOn "assembleRelease"
60-
bintrayUpload.dependsOn "assembleRelease"
61-
6265
ext {
6366
sqliteDistributionUrl = 'https://sqlite.org/2019/sqlite-amalgamation-3300100.zip'
64-
pomXml = {
65-
resolveStrategy = DELEGATE_FIRST
66-
name project.name
67-
description project.description
68-
url 'https://github.com/requery/sqlite-android'
69-
scm {
70-
url 'https://github.com/requery/sqlite-android.git'
71-
connection 'scm:git:git://github.com/requery/sqlite-android.git'
72-
developerConnection 'scm:git:git@github.com/requery/sqlite-android.git'
73-
}
74-
licenses {
75-
license {
76-
name 'The Apache Software License, Version 2.0'
77-
url 'http://www.apache.org/license/LICENSE-2.0.txt'
78-
distribution 'repo'
79-
}
80-
}
81-
developers {
82-
developer {
83-
id 'npurushe'
84-
name 'Nikhil Purushe'
85-
}
86-
}
87-
}
88-
}
89-
90-
android.libraryVariants
91-
publishing {
92-
publications {
93-
maven(MavenPublication) {
94-
groupId project.group
95-
artifactId project.name
96-
version project.version
97-
artifact "build/outputs/aar/${project.name}-release.aar"
98-
artifact sourcesJar
99-
artifact javadocJar
100-
pom.withXml {
101-
asNode().children().last() + project.pomXml
102-
def dependencies = asNode().appendNode('dependencies')
103-
configurations.compile.allDependencies.each {
104-
def dependency = dependencies.appendNode('dependency')
105-
dependency.appendNode('groupId', it.group)
106-
dependency.appendNode('artifactId', it.name)
107-
dependency.appendNode('version', it.version)
108-
dependency.appendNode('scope', 'compile')
109-
}
110-
}
111-
}
112-
}
113-
}
114-
115-
Properties properties = new Properties()
116-
File localProperties = project.rootProject.file('local.properties')
117-
if (localProperties.exists()) {
118-
properties.load(localProperties.newDataInputStream())
119-
}
120-
121-
bintray {
122-
user = properties.getProperty('bintray.user')
123-
key = properties.getProperty('bintray.apikey')
124-
publications = ['maven']
125-
pkg {
126-
repo = 'requery'
127-
name = 'sqlite-android'
128-
userOrg = 'requery'
129-
licenses = ['Apache-2.0']
130-
vcsUrl = 'https://github.com/requery/sqlite-android.git'
131-
version {
132-
name = project.version
133-
desc = project.description
134-
released = new Date()
135-
}
136-
}
13767
}
13868

13969
task sourcesJar(type: Jar) {
@@ -167,3 +97,5 @@ task installSqlite(dependsOn: downloadSqlite, type: Copy) {
16797
}
16898

16999
preBuild.dependsOn installSqlite
100+
101+
apply from: 'android-release-aar.gradle'

sqlite-android/src/main/jni/sqlite/Android.mk

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ sqlite_flags := \
3030
-DSQLITE_DEFAULT_MEMSTATUS=0 \
3131
-DSQLITE_MAX_EXPR_DEPTH=0 \
3232
-DSQLITE_USE_ALLOCA \
33+
-DSQLITE_MAX_VARIABLE_NUMBER=32768 \
3334
-DSQLITE_ENABLE_BATCH_ATOMIC_WRITE \
3435
-O3
3536

0 commit comments

Comments
 (0)