roc-streaming / roc-toolkit

Real-time audio streaming over the network.
https://roc-streaming.org
Mozilla Public License 2.0
1.06k stars 213 forks source link

add CSPRNG #345

Closed fusuiyi123 closed 4 years ago

fusuiyi123 commented 4 years ago

fixes #102

gavv commented 4 years ago

Please ping me when the PR will be ready for review.

fusuiyi123 commented 4 years ago

Hi @gavv the android build fails with build.log and from the libuv supporting platform, https://github.com/libuv/libuv/blob/a62f8ced7af51d1c4fd8abceb521bd24f362ab14/SUPPORTED_PLATFORMS.md, this may not be actively supported

gavv commented 4 years ago

Could you please run our rocproject/cross-aarch64-linux-android:api28 docker container and try build libuv manually inside it?

If non of these helps, could you then try to build different libuv versions and find out which is the latest version the builds correctly?

fusuiyi123 commented 4 years ago
  1. source ./android-configure-arm64 NDK_PATH gyp [API_LEVEL] worked
    root@951ba020b0df:/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0# source ./android-configure-arm64 /tmp/android-ndk-r18/ gyp 28
    HOST_OS=linux
    HOST_EXE=
    HOST_ARCH=x86_64
    HOST_TAG=linux-x86_64
    HOST_NUM_CPUS=2
    BUILD_NUM_CPUS=4
    Toolchain installed to /Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/android-toolchain-arm64.
    ['-Dtarget_arch=arm64', '-DOS=android', '-f', 'make-android', '-I', 'common.gypi', 'test/test.gyp', '--depth=.', '-Goutput_dir=/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out', '--generator-output', '/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out', '-Dhost_arch=x64', '-Duv_library=static_library']
  2. make -C out fails with
    root@951ba020b0df:/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0# make -C out
    make: Entering directory `/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out'
    CC(target) /Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out/Debug/obj.target/libuv/src/fs-poll.o
    /Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/android-toolchain-arm64/bin/aarch64-linux-android-gcc: line 2: /Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/android-toolchain-arm64/bin/../../../../llvm/prebuilt/linux-x86_64/bin/clang: No such file or directory
    make: *** [/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out/Debug/obj.target/libuv/src/fs-poll.o] Error 127
    make: Leaving directory `/Users/fusuiyi/Desktop/opensource/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.35.0/src/libuv-v1.35.0/out'

    where cat android-toolchain-arm64/bin/aarch64-linux-android-gcc gives #!/bin/bash execdirname $0/../../../../llvm/prebuilt/linux-x86_64/bin/clang -target aarch64-linux-android "$@". Still looking at it.

gavv commented 4 years ago

make -C out fails with

Did you run it inside rocproject/cross-aarch64-linux-android:api28 docker container? The command output looks like it was running on macOS :/

fusuiyi123 commented 4 years ago

yes, it is in docker container mounted from pwd

fusuiyi123 commented 4 years ago

libuv 1.33.1 build succeed, project build fails though :/

       AR   build/aarch64-linux-android/clang-7.0.2-release/libroc_core.a
645   RANLIB   build/aarch64-linux-android/clang-7.0.2-release/libroc_core.a
646       LD   build/aarch64-linux-android/clang-7.0.2-release/libroc_unstripped.so.0.1
6473rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.33.1/lib/libuv.a(libuv_la-random.o): In function `uv__random':
648/opt/roc/3rdparty/aarch64-linux-android/clang-7.0.2-release/build/libuv-1.33.1/src/libuv-v1.33.1/src/random.c:40: undefined reference to `uv__random_getentropy'
649clang70++: error: linker command failed with exit code 1 (use -v to see invocation)
650scons: *** [build/aarch64-linux-android/clang-7.0.2-release/libroc_unstripped.so.0.1] Error 1
651The command "scripts/travis/docker.sh rocproject/cross-aarch64-linux-android:api28 scripts/travis/android/aarch64-linux-android.sh" exited with 2.
gavv commented 4 years ago

Thanks, so it seems that the autotools libuv build is just broken on Android. I think this can be fixed by switching to cmake libuv build. I'm now trying to do it.

Useful documentation on cmake & android:

gavv commented 4 years ago

Done. See c5bb75f0c25a11d7c2dc6eb76c36b7f9fe91c7aa

Now we're using libuv 1.35.0 by default and use cmake for android builds. The issue with undefined references should be fixed, please rebase on fresh develop branch and try again.

fusuiyi123 commented 4 years ago

wow that's cool 👍 !!

gavv commented 4 years ago

The build is failing because dist.libuv.org is unstable currently and scons can't download libuv. I've added libuv 1.35.0 to our vendor/ directory, so now scons doesn't have to download it. Rebasing on fresh develop should fix the build.

gavv commented 4 years ago

Thanks!