Skip to content

Commit 41d7014

Browse files
committed
Try to make build script more versatile
1 parent ebea003 commit 41d7014

File tree

7 files changed

+90
-53
lines changed

7 files changed

+90
-53
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/bash
2+
# Copyright (c) Meta Platforms, Inc. and affiliates.
3+
# All rights reserved.
4+
#
5+
# This source code is licensed under the BSD-style license found in the
6+
# LICENSE file in the root directory of this source tree.
7+
8+
9+
collect_artifacts_to_be_uploaded() {
10+
ARTIFACTS_DIR_NAME="$1"
11+
DEMO_APP_DIR="${ARTIFACTS_DIR_NAME}/llm_demo"
12+
# The app directory is named using its build flavor as a suffix.
13+
mkdir -p "${DEMO_APP_DIR}"
14+
# Collect the app and its test suite
15+
cp examples/demo-apps/android/LlamaDemo/app/build/outputs/apk/debug/*.apk "${DEMO_APP_DIR}" || true
16+
cp examples/demo-apps/android/LlamaDemo/app/build/outputs/apk/androidTest/debug/*.apk "${DEMO_APP_DIR}" || true
17+
# Collect JAR and AAR
18+
cp extension/android/build/libs/executorch.jar "${DEMO_APP_DIR}"
19+
find "${BUILD_AAR_DIR}/" -name 'executorch*.aar' -exec cp {} "${DEMO_APP_DIR}" \;
20+
# Collect MiniBench APK
21+
MINIBENCH_APP_DIR="${ARTIFACTS_DIR_NAME}/minibench"
22+
mkdir -p "${MINIBENCH_APP_DIR}"
23+
cp extension/benchmark/android/benchmark/app/build/outputs/apk/debug/*.apk "${MINIBENCH_APP_DIR}" || true
24+
cp extension/benchmark/android/benchmark/app/build/outputs/apk/androidTest/debug/*.apk "${MINIBENCH_APP_DIR}" || true
25+
# Collect Java library test
26+
JAVA_LIBRARY_TEST_DIR="${ARTIFACTS_DIR_NAME}/library_test_dir"
27+
mkdir -p "${JAVA_LIBRARY_TEST_DIR}"
28+
cp extension/android_test/build/outputs/apk/debug/*.apk "${JAVA_LIBRARY_TEST_DIR}" || true
29+
cp extension/android_test/build/outputs/apk/androidTest/debug/*.apk "${JAVA_LIBRARY_TEST_DIR}" || true
30+
}
31+
32+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
33+
collect_artifacts_to_be_uploaded "$@"
34+
fi

.github/workflows/_android.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,16 @@ jobs:
2828
PYTHON_EXECUTABLE=python bash .ci/scripts/setup-linux.sh --build-tool buck2
2929
export ARTIFACTS_DIR_NAME=artifacts-to-be-uploaded
3030
31+
source build/build_android_library.sh
32+
build_jar
33+
build_android_native_library "arm64-v8a"
34+
build_aar
3135
# Build LLM Demo for Android
32-
bash build/build_android_library.sh ${ARTIFACTS_DIR_NAME}
36+
source build/build_android_demo_app.sh
37+
build_android_llama_demo
38+
build_android_test
39+
# Upload
40+
.ci/scripts/collect_android_artifacts_for_upload.sh $ARTIFACTS_DIR_NAME
3341
3442
# Running Android emulator directly on the runner and not using Docker
3543
run-emulator:

.github/workflows/android-perf.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,8 +362,13 @@ jobs:
362362
PYTHON_EXECUTABLE=python bash .ci/scripts/setup-qnn-deps.sh
363363
PYTHON_EXECUTABLE=python bash .ci/scripts/build-qnn-sdk.sh
364364
365-
export ANDROID_ABIS="arm64-v8a"
366-
PYTHON_EXECUTABLE=python EXECUTORCH_BUILD_QNN=ON QNN_SDK_ROOT=/tmp/qnn/2.28.0.241029 bash build/build_android_library.sh ${ARTIFACTS_DIR_NAME}
365+
source build/build_android_library.sh
366+
PYTHON_EXECUTABLE=python build_jar
367+
PYTHON_EXECUTABLE=python EXECUTORCH_BUILD_QNN=ON QNN_SDK_ROOT=/tmp/qnn/2.28.0.241029 build_android_native_library "arm64-v8a"
368+
build_aar
369+
source build/build_android_demo_app.sh
370+
PYTHON_EXECUTABLE=python build_android_llama_demo
371+
PYTHON_EXECUTABLE=python .ci/scripts/collect_android_artifacts_for_upload.sh $ARTIFACTS_DIR_NAME
367372
368373
# Let's see how expensive this job is, we might want to tone it down by running it periodically
369374
benchmark-on-device:

.github/workflows/android-release-artifacts.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,14 @@ jobs:
5353
export ARTIFACTS_DIR_NAME=artifacts-to-be-uploaded
5454
5555
# Build LLM Demo for Android
56-
bash build/build_android_library.sh ${ARTIFACTS_DIR_NAME}
56+
source build/build_android_library.sh
57+
build_jar
58+
build_android_native_library "arm64-v8a"
59+
build_android_native_library "x86_64"
60+
build_aar
61+
# Upload
62+
.ci/scripts/collect_android_artifacts_for_upload.sh $ARTIFACTS_DIR_NAME
63+
5764
5865
shasum -a 256 "${ARTIFACTS_DIR_NAME}/llm_demo/executorch.aar"
5966

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
__pycache__/
99

1010
# Build and tool-generated files
11+
aar-out/
1112
arm_test/
1213
buck-out/
1314
buck2-bin/

build/build_android_demo_app.sh

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/bin/bash
2+
# Copyright (c) Meta Platforms, Inc. and affiliates.
3+
# All rights reserved.
4+
#
5+
# This source code is licensed under the BSD-style license found in the
6+
# LICENSE file in the root directory of this source tree.
7+
8+
9+
build_android_llama_demo() {
10+
mkdir -p examples/demo-apps/android/LlamaDemo/app/libs
11+
cp ${BUILD_AAR_DIR}/executorch.aar examples/demo-apps/android/LlamaDemo/app/libs
12+
pushd examples/demo-apps/android/LlamaDemo
13+
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew build assembleAndroidTest
14+
popd
15+
}
16+
17+
build_android_benchmark_app() {
18+
mkdir -p extension/benchmark/android/benchmark/app/libs
19+
cp ${BUILD_AAR_DIR}/executorch.aar extension/benchmark/android/benchmark/app/libs
20+
pushd extension/benchmark/android/benchmark
21+
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew build assembleAndroidTest
22+
popd
23+
}
24+
25+
build_android_test() {
26+
pushd extension/android_test
27+
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew testDebugUnitTest
28+
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew build assembleAndroidTest
29+
popd
30+
}

build/build_android_library.sh

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -137,69 +137,21 @@ build_aar() {
137137
popd
138138
}
139139

140-
build_android_demo_apps() {
141-
mkdir -p examples/demo-apps/android/LlamaDemo/app/libs
142-
cp ${BUILD_AAR_DIR}/executorch.aar examples/demo-apps/android/LlamaDemo/app/libs
143-
pushd examples/demo-apps/android/LlamaDemo
144-
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew build assembleAndroidTest
145-
popd
146-
147-
mkdir -p extension/benchmark/android/benchmark/app/libs
148-
cp ${BUILD_AAR_DIR}/executorch.aar extension/benchmark/android/benchmark/app/libs
149-
pushd extension/benchmark/android/benchmark
150-
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew build assembleAndroidTest
151-
popd
152-
153-
pushd extension/android_test
154-
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew testDebugUnitTest
155-
ANDROID_HOME="${ANDROID_SDK:-/opt/android/sdk}" ./gradlew build assembleAndroidTest
156-
popd
157-
}
158-
159-
collect_artifacts_to_be_uploaded() {
160-
ARTIFACTS_DIR_NAME="$1"
161-
DEMO_APP_DIR="${ARTIFACTS_DIR_NAME}/llm_demo"
162-
# The app directory is named using its build flavor as a suffix.
163-
mkdir -p "${DEMO_APP_DIR}"
164-
# Collect the app and its test suite
165-
cp examples/demo-apps/android/LlamaDemo/app/build/outputs/apk/debug/*.apk "${DEMO_APP_DIR}"
166-
cp examples/demo-apps/android/LlamaDemo/app/build/outputs/apk/androidTest/debug/*.apk "${DEMO_APP_DIR}"
167-
# Collect JAR and AAR
168-
cp extension/android/build/libs/executorch.jar "${DEMO_APP_DIR}"
169-
find "${BUILD_AAR_DIR}/" -name 'executorch*.aar' -exec cp {} "${DEMO_APP_DIR}" \;
170-
# Collect MiniBench APK
171-
MINIBENCH_APP_DIR="${ARTIFACTS_DIR_NAME}/minibench"
172-
mkdir -p "${MINIBENCH_APP_DIR}"
173-
cp extension/benchmark/android/benchmark/app/build/outputs/apk/debug/*.apk "${MINIBENCH_APP_DIR}"
174-
cp extension/benchmark/android/benchmark/app/build/outputs/apk/androidTest/debug/*.apk "${MINIBENCH_APP_DIR}"
175-
# Collect Java library test
176-
JAVA_LIBRARY_TEST_DIR="${ARTIFACTS_DIR_NAME}/library_test_dir"
177-
mkdir -p "${JAVA_LIBRARY_TEST_DIR}"
178-
cp extension/android_test/build/outputs/apk/debug/*.apk "${JAVA_LIBRARY_TEST_DIR}"
179-
cp extension/android_test/build/outputs/apk/androidTest/debug/*.apk "${JAVA_LIBRARY_TEST_DIR}"
180-
}
181-
182140
main() {
183141
if [[ -z "${BUILD_AAR_DIR:-}" ]]; then
184-
BUILD_AAR_DIR="$(mktemp -d)"
142+
BUILD_AAR_DIR="$(mkdir -p aar-out)"
185143
fi
186144
export BUILD_AAR_DIR
187145
if [ -z "$ANDROID_ABIS" ]; then
188146
ANDROID_ABIS=("arm64-v8a" "x86_64")
189147
fi
190148
export ANDROID_ABIS
191149

192-
ARTIFACTS_DIR_NAME="$1"
193-
194150
build_jar
195151
for ANDROID_ABI in "${ANDROID_ABIS[@]}"; do
196152
build_android_native_library ${ANDROID_ABI}
197153
done
198154
build_aar
199-
build_android_demo_apps
200-
if [ -n "$ARTIFACTS_DIR_NAME" ]; then
201-
collect_artifacts_to_be_uploaded ${ARTIFACTS_DIR_NAME}
202-
fi
203155
}
204156

205157
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then

0 commit comments

Comments
 (0)