dashpay / dash

Dash - Reinventing Cryptocurrency
https://www.dash.org
MIT License
1.49k stars 1.2k forks source link

aarch64-linux-android build fails #3998

Open BlockMechanic opened 3 years ago

BlockMechanic commented 3 years ago

@PanderMusubi can you verify this branch builds for you? We can then close this issue and I'll work on support for building under aarch64 separately.

Originally posted by @strophy in https://github.com/dashpay/dash/issues/2562#issuecomment-451048517

Hello, i note in the above quoted text that aarch64 was mentioned but never elaborated on. Was an aarch64 build ever managed ? Despite adding relevant triplets and managing to build all other dependencies, chia-bls fails for aarch64-linux-android. Is there a work around or patch out there ?

I keep getting error: unknown type name '__uint128_t' typedef __uint128_t uint128_t;

strophy commented 3 years ago

I cannot reproduce this with the latest develop branch on a Raspberry Pi 4 with these instructions. The build completes without errors. Note that the build artifacts from building depends may be in the depends/aarch64-unknown-linux-gnu dir instead of depends/aarch64-linux-gnu, depending on your distro.

Please provide more details on your environment and the steps you are following if you are still getting errors.

BlockMechanic commented 3 years ago

Please note I am building for aarch64-linux-android not aarch64-linux-gnu More info :

Configuring chia_bls...
-- Android: Targeting API '30' with architecture 'arm', ABI 'armeabi-v7a', and processor 'armv7-a'
-- Android: Selected unified Clang toolchain
-- The C compiler identification is Clang 9.0.8
-- The CXX compiler identification is Clang 9.0.8
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /opt/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done

The above may be the source of the issue, instead of ABI aarch64 and processor armv8-a , its configuring for 'armeabi-v7a', and processor 'armv7-a'

And since we do not use the bls origin repository, instead relying on a custom this means the issue could be in the configure script for bls

PanderMusubi commented 3 years ago

On 32 bit Raspberry Pi OS Buster I can confirm that the following works:

sudo apt-get install curl build-essential libtool autotools-dev automake pkg-config python3 bsdmainutils cmake
cd depends
make -j
cd ..
./autogen.sh
./configure --prefix=`pwd`/depends/armv7l-unknown-linux-gnueabihf
make -j

The host triplet I got from the result of the first make -j. Omitting the prefix for configure results in an error.

The build daemon runs, unfortunately, near the end of synchronization it aborts because there is not enough memory. Retried it many times. Limitation of 32 bit system I think. When I find the time, will also try on 64 bit beta of Raspberry Pi OS.

PastaPastaPasta commented 3 years ago

I don't understand the actual issue here. @BlockMechanic please provide more details of your environment (OS, etc)

Is this issue still occuring? Does it happen when building depends, or when building src?

At this point android builds aren't REALLY supported, so I wouldn't be surprised if there are issues that need to be solved.

PanderMusubi commented 3 years ago

I ended up here for builds on Raspberry Pi.

BlockMechanic commented 3 years ago

@PastaPastaPasta Enviroment :- ubuntu 20.04 droplet with 4GB ram all other dependencies are downloading and compiling just fine, as i mentioned earlier the issue is likely the failure to configure for the aarch64-linux-android triplet

PastaPastaPasta commented 3 years ago

Hey, @BlockMechanic if you can provide me a bitcoin PR to backport or something like that, we can maybe get this fixed

BlockMechanic commented 3 years ago

@PastaPastaPasta

https://github.com/bitcoin/bitcoin/pull/16110 This added android NDK support