1*cd0cc2e3SAndroid Build Coastguard Worker#! /bin/bash 2*cd0cc2e3SAndroid Build Coastguard Worker# 3*cd0cc2e3SAndroid Build Coastguard Worker# Copyright (C) 2024 The Android Open Source Project 4*cd0cc2e3SAndroid Build Coastguard Worker# 5*cd0cc2e3SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*cd0cc2e3SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*cd0cc2e3SAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*cd0cc2e3SAndroid Build Coastguard Worker# 9*cd0cc2e3SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*cd0cc2e3SAndroid Build Coastguard Worker# 11*cd0cc2e3SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*cd0cc2e3SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*cd0cc2e3SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*cd0cc2e3SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*cd0cc2e3SAndroid Build Coastguard Worker# limitations under the License. 16*cd0cc2e3SAndroid Build Coastguard Worker 17*cd0cc2e3SAndroid Build Coastguard Worker# Builds and locally publishes an uber jar for local architectures. 18*cd0cc2e3SAndroid Build Coastguard Worker# 19*cd0cc2e3SAndroid Build Coastguard Worker# Normally an uber jar contains JNI binaries for all supported 20*cd0cc2e3SAndroid Build Coastguard Worker# platforms, but that requires those binaries to be built somewhere. 21*cd0cc2e3SAndroid Build Coastguard Worker# This script infers the binary types that can be built locally and 22*cd0cc2e3SAndroid Build Coastguard Worker# adds only those to the jar. This allows end to end testing of the 23*cd0cc2e3SAndroid Build Coastguard Worker# build process as well as testing of the uberjar against multiple 24*cd0cc2e3SAndroid Build Coastguard Worker# Java versions (see testLocalUber.sh) 25*cd0cc2e3SAndroid Build Coastguard Worker 26*cd0cc2e3SAndroid Build Coastguard Worker 27*cd0cc2e3SAndroid Build Coastguard WorkerCONSCRYPT_HOME="${CONSCRYPT_HOME:-$HOME/src/conscrypt}" 28*cd0cc2e3SAndroid Build Coastguard WorkerBUILD="$CONSCRYPT_HOME/build.gradle" 29*cd0cc2e3SAndroid Build Coastguard WorkerM2_REPO="${M2_REPO:-$HOME/.m2/repository}" 30*cd0cc2e3SAndroid Build Coastguard WorkerPUBLISH_DIR="${M2_REPO}/org/conscrypt" 31*cd0cc2e3SAndroid Build Coastguard Worker 32*cd0cc2e3SAndroid Build Coastguard Workerdie() { 33*cd0cc2e3SAndroid Build Coastguard Worker echo "*** " $@ 34*cd0cc2e3SAndroid Build Coastguard Worker exit 1 35*cd0cc2e3SAndroid Build Coastguard Worker} 36*cd0cc2e3SAndroid Build Coastguard Worker 37*cd0cc2e3SAndroid Build Coastguard Workercase $(uname -s) in 38*cd0cc2e3SAndroid Build Coastguard Worker Darwin) 39*cd0cc2e3SAndroid Build Coastguard Worker CLASSIFIERS="osx-x86_64,osx-aarch_64" 40*cd0cc2e3SAndroid Build Coastguard Worker ;; 41*cd0cc2e3SAndroid Build Coastguard Worker Linux) 42*cd0cc2e3SAndroid Build Coastguard Worker CLASSIFIERS="linux-x86_64" 43*cd0cc2e3SAndroid Build Coastguard Worker ;; 44*cd0cc2e3SAndroid Build Coastguard Worker *) 45*cd0cc2e3SAndroid Build Coastguard Worker die "TODO: Finish this switch statement" 46*cd0cc2e3SAndroid Build Coastguard Worker ;; 47*cd0cc2e3SAndroid Build Coastguard Workeresac 48*cd0cc2e3SAndroid Build Coastguard Worker 49*cd0cc2e3SAndroid Build Coastguard Workertest -f "$BUILD" || die "Conscrypt build file not found. Check CONSCRYPT_HOME." 50*cd0cc2e3SAndroid Build Coastguard Worker 51*cd0cc2e3SAndroid Build Coastguard WorkerVERSION=$(sed -nE 's/^ *version *= *"(.*)"/\1/p' $BUILD) 52*cd0cc2e3SAndroid Build Coastguard Workertest "$VERSION" || die "Unable to figure out Conscrypt version." 53*cd0cc2e3SAndroid Build Coastguard Workerecho "Conscrypt version ${VERSION}." 54*cd0cc2e3SAndroid Build Coastguard Worker 55*cd0cc2e3SAndroid Build Coastguard WorkerUBERJAR="$PUBLISH_DIR/conscrypt-openjdk-uber/$VERSION/conscrypt-openjdk-uber-${VERSION}.jar" 56*cd0cc2e3SAndroid Build Coastguard Worker 57*cd0cc2e3SAndroid Build Coastguard Workercd "$CONSCRYPT_HOME" 58*cd0cc2e3SAndroid Build Coastguard Worker./gradlew :conscrypt-openjdk:publishToMavenLocal \ 59*cd0cc2e3SAndroid Build Coastguard Worker --console=plain 60*cd0cc2e3SAndroid Build Coastguard Worker./gradlew :conscrypt-openjdk-uber:publishToMavenLocal \ 61*cd0cc2e3SAndroid Build Coastguard Worker -Dorg.conscrypt.openjdk.uberJarClassifiers="$CLASSIFIERS" \ 62*cd0cc2e3SAndroid Build Coastguard Worker -Dorg.conscrypt.openjdk.buildUberJar=true \ 63*cd0cc2e3SAndroid Build Coastguard Worker --console=plain 64*cd0cc2e3SAndroid Build Coastguard Worker 65*cd0cc2e3SAndroid Build Coastguard Workertest -f "$UBERJAR" || die "Uber jar not published." 66*cd0cc2e3SAndroid Build Coastguard Workerls -l "$UBERJAR" 67