| #! /bin/bash |
| # |
| # Copyright (C) 2024 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. |
| |
| # Builds and locally publishes an uber jar for local architectures. |
| # |
| # Normally an uber jar contains JNI binaries for all supported |
| # platforms, but that requires those binaries to be built somewhere. |
| # This script infers the binary types that can be built locally and |
| # adds only those to the jar. This allows end to end testing of the |
| # build process as well as testing of the uberjar against multiple |
| # Java versions (see testLocalUber.sh) |
| |
| |
| CONSCRYPT_HOME="${CONSCRYPT_HOME:-$HOME/src/conscrypt}" |
| BUILD="$CONSCRYPT_HOME/build.gradle" |
| M2_REPO="${M2_REPO:-$HOME/.m2/repository}" |
| PUBLISH_DIR="${M2_REPO}/org/conscrypt" |
| |
| die() { |
| echo "*** " $@ |
| exit 1 |
| } |
| |
| case $(uname -s) in |
| Darwin) |
| CLASSIFIERS="osx-x86_64,osx-aarch_64" |
| ;; |
| Linux) |
| CLASSIFIERS="linux-x86_64" |
| ;; |
| *) |
| die "TODO: Finish this switch statement" |
| ;; |
| esac |
| |
| test -f "$BUILD" || die "Conscrypt build file not found. Check CONSCRYPT_HOME." |
| |
| VERSION=$(sed -nE 's/^ *version *= *"(.*)"/\1/p' $BUILD) |
| test "$VERSION" || die "Unable to figure out Conscrypt version." |
| echo "Conscrypt version ${VERSION}." |
| |
| UBERJAR="$PUBLISH_DIR/conscrypt-openjdk-uber/$VERSION/conscrypt-openjdk-uber-${VERSION}.jar" |
| |
| cd "$CONSCRYPT_HOME" |
| ./gradlew :conscrypt-openjdk:publishToMavenLocal \ |
| --console=plain |
| ./gradlew :conscrypt-openjdk-uber:publishToMavenLocal \ |
| -Dorg.conscrypt.openjdk.uberJarClassifiers="$CLASSIFIERS" \ |
| -Dorg.conscrypt.openjdk.buildUberJar=true \ |
| --console=plain |
| |
| test -f "$UBERJAR" || die "Uber jar not published." |
| ls -l "$UBERJAR" |