Age | Commit message (Collapse) | Author |
|
|
|
|
|
Android SDK version
|
|
|
|
|
|
|
|
adapt the ndk path
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* on remote builds, failure of Android SDK Platform 23 to properly
install was causing build failures undetected in local container.
see: <https://0xacab.org/aguestuser/bitmask_android/builds/9906>
* to fix this, tweak order of `sdkmanager` calls and remove `echo -y`
flags to ensure platform installation completes successfully and
build step never tries to install Platform 23
|
|
|
|
|
|
* HACK: replace all toolchain references to `linux-x86_64` with `linux-x86`
* FIX: provide dependency on `file` package that will allow `ndk-build` to
detect 32-bit userland, making this
* side-effects:
* group sdk/env vars with installation code that uses them
* add explanatory note about why we use outdated version of `android-ndk`
------------------
*Explanation:*
More careful analysis of the meaning of the word `file` in this (subtle!) error message:
```shell
/opt/android-sdk-linux/android-ndk-r12b/build/ndk-build: 143: /opt/android-sdk-linux/android-ndk-r12b/build/ndk-build: file: not found
```
led to inspecting line 143 of `ndk-build`, revealing an undefined variable
called `file` that would allow `ndk-build` to detect a 32-bit userland:
```shell
file -L "$SHELL" | grep -q "x86[_-]64"
```
Thus the error messsage was *not* trying to tell us that a file could
not be found, but that the program called `file` could not be
found. FUN! :)
|
|
* PROBLEM:
* most recent version (r14b) of `android-ndk` uses `clang` for cross-compilation
* BUT: `openssl` cannot compile successfully w/ `clang`
* AND: we depend on `openssl` transitively through `ics-openvpn`
while trying to use `android-ndk` r14b
* FIX:
* downgrade to `android-ndk` (12b) (most recent versoin that still
uses `gcc` instead of `clang`)
* modify some of the default
* REMAINING PROBLEMS:
* some string translations for Jamaica now break the build (unclear
why -- outdated country abbreviation? ja for jm???)
* we are now using a version of ndk that is 2 versions old and a
version of ics-openvpn (pinned to a 3.1.2016 commit via submodule)
that depends on an outdated version of `openssl`, which raises
security concerns. updating to the most recent version will force
us to wade into all the dependency problems amongst `ics-openvpn`/`openssl`/`ndk`
* REFERENCES:
* on `openssl` incompatibility w/ clang: https://github.com/openssl/openssl/pull/2229
* on `ics-openvpn` problems with `ndk`: https://github.com/android-ndk/ndk/issues/144
|
|
* PROBLEM: the build fails on gitlab in a debian-based docker container
* BUT: i (@aguestuser) have a recently-achieved passing build on a
debian laptop
* ATTEMPTED SOLUTION: construct a dockerfile that matches my local
configuration as precisely as possible
* PROGRESS: the build gets further than it did before -- getting part of
the way through the `buildNative` gradle script before failing
* REMAINING FAILURE: several arm64 cross-compile steps in the
`ndk-build` step fail because they depend on
[neon](https://developer.android.com/ndk/guides/cpu-arm-neon.html):
```shell
[arm64-v8a] Compile : crypto_static <= aesv8-armx-64.S
openssl/crypto/aes/asm/aesv8-armx-64.S:35:2: error: instruction requires: neon
eor v0.16b,v0.16b,v0.16b
^
openssl/crypto/aes/asm/aesv8-armx-64.S:36:2: error: instruction requires: neon
ld1 {v3.16b},[x0],#16
^
openssl/crypto/aes/asm/aesv8-armx-64.S:38:2: error: instruction requires: neon
ld1 {v1.4s,v2.4s},[x3],#32
```
* PROPOSED NEXT STEPS:
* consult team to see if there's any collective wisdom about `neon`
* look for ways to analyze diff of c dependencies in local machine
v. docker instance
* consider using ubuntu or debian:sid as the base image for the
android container?
|