lbry-android/scripts/docker-build.sh

96 lines
3.2 KiB
Bash
Raw Normal View History

#!/bin/bash
set -e
exe() { ( echo "## $*"; $*; ) }
ANDROID_SDK_LICENSE=/home/lbry-android/.buildozer/android/platform/android-sdk-23/licenses/android-sdk-license
## VERSION and REPO variables are optional:
## Use 'none' as a way to detect that none was provided by the user:
VERSION=${VERSION:-none}
REPO=${REPO:-none}
if [ ! -f $ANDROID_SDK_LICENSE ]; then
echo "No Android SDK License provided."
echo "1) Download android-studio."
echo "2) Go to Settings -> Android SDKs -> Select Android 6.0 (Marshmellow)"
echo " and click the little download button and then agree to the license."
echo "3) Retry the build again."
exit 1
fi
## Two options for where the lbry-android source code comes from:
## 1) Clone directly from git via provided VERSION and REPO environment variables.
## 2) User may mount their own lbry-android source tree at /src
## Only one of these two options can be used at a time.
## VERSION is any valid git reference: commit, branch, or tag.
## REPO is the git repository URL to clone.
## User must create their own buildozer.spec and google-services.json
## This may be done in their own fork of lbry-android,
## or done in their own clone mounted to /src
if [ $VERSION != "none" ] || [ $REPO != "none" ]; then
# Build from a fresh git clone
# No /src should be mounted if VERSION or REPO specified:
if mount | grep " /src"; then
echo "Cannot mount /src when VERSION and/or REPO variables are used."
echo "Aborting."
exit 1
fi
# A /dist directory should exist to copy final apk to:
if ! mount | grep " /dist"; then
echo "When using VERSION or REPO you must mount a /dist directory to put the final apk"
echo "Aborting."
exit 1
fi
if [ $VERSION == "none" ]; then
VERSION=master
fi
if [ $REPO == "none" ]; then
REPO="https://github.com/lbryio/lbry-android.git"
fi
## Clone from $REPO and checkout $VERSION:
exe git clone $REPO /src
cd /src
exe git checkout $VERSION
## Create config from samples if none exists:
if [ ! -f /src/buildozer.spec ]; then
exe cp /src/buildozer.spec.sample /src/buildozer.spec
fi
if [ ! -f /src/p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.json ]; then
exe cp /src/p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.sample.json /src/p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.json
fi
fi
if [ ! -f /src/buildozer.spec ]; then
echo "You must create a buildozer.spec file (See buildozer.spec.sample)"
echo "Aborting."
exit 1
elif [ ! -f /src/p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.json ]; then
echo "You must create p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.json "
echo " (See p4a/pythonforandroid/bootstraps/lbry/build/templates/google-services.sample.json)"
echo "Aborting."
exit 1
fi
## Setup npm for non-root user:
NPM_PACKAGES="${HOME}/.npm-packages"
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
PATH="$NPM_PACKAGES/bin:$PATH"
## Build:
cd /src/app
exe npm install
exe /src/app/bundle.sh
cd /src
exe buildozer android debug
if mount | grep " /dist"; then
exe cp /src/bin/* /dist
fi