android: 16kb alignment updates
p4a ref: electrum_20240930_android_16kb_page_alignment Dockerfile: obtain 16kb aligned NDK r23 from google CI (dl-ndk-ci.sh) barcode, zxing-cpp: add 16kb align patch build_tools_util.sh: add function to apply a patch
This commit is contained in:
@@ -25,30 +25,48 @@ ENV LANG="en_US.UTF-8" \
|
||||
RUN apt -y update -qq \
|
||||
&& apt -y install -qq --no-install-recommends --allow-downgrades \
|
||||
curl \
|
||||
wget \
|
||||
unzip \
|
||||
ca-certificates \
|
||||
python3 \
|
||||
&& apt -y autoremove
|
||||
|
||||
|
||||
ENV ANDROID_NDK_HOME="${ANDROID_HOME}/android-ndk"
|
||||
ENV ANDROID_NDK_VERSION="23b"
|
||||
ENV ANDROID_NDK_HASH="c6e97f9c8cfe5b7be0a9e6c15af8e7a179475b7ded23e2d1c1fa0945d6fb4382"
|
||||
#ENV ANDROID_NDK_VERSION="23b"
|
||||
#ENV ANDROID_NDK_HASH="c6e97f9c8cfe5b7be0a9e6c15af8e7a179475b7ded23e2d1c1fa0945d6fb4382"
|
||||
#ENV ANDROID_NDK_VERSION="27d"
|
||||
#ENV ANDROID_NDK_HASH="601246087a682d1944e1e16dd85bc6e49560fe8b6d61255be2829178c8ed15d9"
|
||||
ENV ANDROID_NDK_VERSION="23d-canary"
|
||||
ENV ANDROID_NDK_HASH="6944ffc20ab018ff4ef6a403048d0a99d50a0630c3eae690c8f803c452f46f3e"
|
||||
ENV ANDROID_NDK_HOME_V="${ANDROID_NDK_HOME}-r${ANDROID_NDK_VERSION}"
|
||||
|
||||
# get the latest version from https://developer.android.com/ndk/downloads/index.html
|
||||
ENV ANDROID_NDK_ARCHIVE="android-ndk-r${ANDROID_NDK_VERSION}-linux.zip"
|
||||
ENV ANDROID_NDK_DL_URL="https://dl.google.com/android/repository/${ANDROID_NDK_ARCHIVE}"
|
||||
|
||||
# download and install Android NDK
|
||||
RUN curl --location --progress-bar \
|
||||
"${ANDROID_NDK_DL_URL}" \
|
||||
--output "${ANDROID_NDK_ARCHIVE}" \
|
||||
&& echo "${ANDROID_NDK_HASH} ${ANDROID_NDK_ARCHIVE}" | sha256sum -c - \
|
||||
&& mkdir --parents "${ANDROID_NDK_HOME_V}" \
|
||||
&& unzip -q "${ANDROID_NDK_ARCHIVE}" -d "${ANDROID_HOME}" \
|
||||
&& ln -sfn "${ANDROID_NDK_HOME_V}" "${ANDROID_NDK_HOME}" \
|
||||
&& rm -rf "${ANDROID_NDK_ARCHIVE}"
|
||||
# below disabled in favor of CI build download
|
||||
|
||||
# download and install Android NDK
|
||||
#RUN curl --location --progress-bar \
|
||||
# "${ANDROID_NDK_DL_URL}" \
|
||||
# --output "${ANDROID_NDK_ARCHIVE}" \
|
||||
# && echo "${ANDROID_NDK_HASH} ${ANDROID_NDK_ARCHIVE}" | sha256sum -c - \
|
||||
# && mkdir --parents "${ANDROID_NDK_HOME_V}" \
|
||||
# && unzip -q "${ANDROID_NDK_ARCHIVE}" -d "${ANDROID_HOME}" \
|
||||
# && ln -sfn "${ANDROID_NDK_HOME_V}" "${ANDROID_NDK_HOME}" \
|
||||
# && rm -rf "${ANDROID_NDK_ARCHIVE}"
|
||||
|
||||
# temporary build using NDK from CI
|
||||
ENV CI_REV="12186248"
|
||||
ENV CI_NDK_FILE="android-ndk-${CI_REV}-linux-x86_64.zip"
|
||||
COPY contrib/android/dl-ndk-ci.sh /tmp/
|
||||
RUN /tmp/dl-ndk-ci.sh https://ci.android.com/builds/submitted/${CI_REV}/linux/latest/${CI_NDK_FILE} \
|
||||
&& echo "${ANDROID_NDK_HASH} android-ndk-ci-linux-x86_64.zip" | sha256sum -c - \
|
||||
&& mkdir --parents "${ANDROID_NDK_HOME_V}" \
|
||||
&& unzip -q "android-ndk-ci-linux-x86_64.zip" -d "${ANDROID_HOME}" \
|
||||
&& ln -sfn "${ANDROID_NDK_HOME_V}" "${ANDROID_NDK_HOME}" \
|
||||
&& rm -rf "android-ndk-ci-linux-x86_64.zip"
|
||||
|
||||
ENV ANDROID_SDK_HOME="${ANDROID_HOME}/android-sdk"
|
||||
|
||||
@@ -190,8 +208,8 @@ RUN cd /opt \
|
||||
&& /opt/venv/bin/python3 -m pip install --no-build-isolation --no-dependencies -e .
|
||||
|
||||
# install python-for-android
|
||||
ENV P4A_CHECKOUT_COMMIT="32a05cdedd41f0f569e9126fdfce23069c36fd9a"
|
||||
# ^ from branch electrum_20240930 (note: careful with force-pushing! see #8162)
|
||||
ENV P4A_CHECKOUT_COMMIT="003451604321deb1f10d879b63450ec76db4a758"
|
||||
# ^ from branch electrum_20240930_android_16kb_page_alignment (note: careful with force-pushing! see #8162)
|
||||
RUN cd /opt \
|
||||
&& git clone https://github.com/spesmilo/python-for-android \
|
||||
&& cd python-for-android \
|
||||
|
||||
9
contrib/android/barcode_16kb.patch
Normal file
9
contrib/android/barcode_16kb.patch
Normal file
@@ -0,0 +1,9 @@
|
||||
diff --git a/wrappers/aar/zxingcpp/src/main/cpp/CMakeLists.txt b/wrappers/aar/zxingcpp/src/main/cpp/CMakeLists.txt
|
||||
index 11332e48..78f514f1 100644
|
||||
--- a/wrappers/aar/zxingcpp/src/main/cpp/CMakeLists.txt
|
||||
+++ b/wrappers/aar/zxingcpp/src/main/cpp/CMakeLists.txt
|
||||
@@ -13,3 +13,4 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core ZXing EXCLUD
|
||||
add_library(zxingcpp_android SHARED ZxingCpp.cpp)
|
||||
|
||||
target_link_libraries(zxingcpp_android PRIVATE ZXing::ZXing jnigraphics)
|
||||
+target_link_options(zxingcpp_android PRIVATE "-Wl,-z,max-page-size=16384")
|
||||
8
contrib/android/dl-ndk-ci.sh
Executable file
8
contrib/android/dl-ndk-ci.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
if [ -z "$1" ]; then
|
||||
echo "missing url"
|
||||
exit 1
|
||||
fi
|
||||
echo $1
|
||||
|
||||
curl $1 | grep "var JSVariables" | python3 -c "import sys; line=sys.stdin.read(); line=line[line.find('{'):-2]; import json; j=json.loads(line); print(j['artifactUrl'])" | wget -i - -O android-ndk-ci-linux-x86_64.zip
|
||||
@@ -65,6 +65,7 @@ else
|
||||
info "Building zxing-cpp for $ZXING_CPP_BUILD_ID..."
|
||||
ZXING_CPP_DIR="$BUILDDIR/zxing-cpp"
|
||||
clone_or_update_repo "$ZXING_CPP_REPO" "$ZXING_CPP_COMMIT_HASH" "$ZXING_CPP_DIR"
|
||||
apply_patch "${CONTRIB_ANDROID}/barcode_16kb.patch" "$ZXING_CPP_DIR"
|
||||
cd "$ZXING_CPP_DIR/wrappers/aar"
|
||||
chmod +x gradlew
|
||||
|
||||
|
||||
@@ -72,6 +72,24 @@ clone_or_update_repo() {
|
||||
fi
|
||||
}
|
||||
|
||||
apply_patch() {
|
||||
local patch=$1
|
||||
local path=$2
|
||||
|
||||
if [ -z "$patch" ] || [ -z "$path" ]; then
|
||||
fail "apply_patch: invalid arguments: patch='$patch', path='$path'"
|
||||
fi
|
||||
|
||||
if [ -d "$path" ]; then
|
||||
info "Patching: $patch"
|
||||
cd "$path"
|
||||
patch -p1 <"$patch"
|
||||
cd -
|
||||
else
|
||||
fail "apply_patch: path='$path' not found"
|
||||
fi
|
||||
}
|
||||
|
||||
# https://github.com/travis-ci/travis-build/blob/master/lib/travis/build/templates/header.sh
|
||||
function retry() {
|
||||
local result=0
|
||||
|
||||
Reference in New Issue
Block a user