firoorg / firo

The privacy-focused cryptocurrency
https://firo.org
MIT License
718 stars 357 forks source link

Firo will not compile #1100

Closed fanaticalfishing closed 2 years ago

fanaticalfishing commented 2 years ago

I was able to compile Firo last week, but something is broken for the past few days. I get the error below https://pastebin.com/hZ2aAcxb

reubenyap commented 2 years ago

Could you give us more information about your build environment?

psolstice commented 2 years ago

platform/OS/gcc version?

psolstice commented 2 years ago

also try to do make distclean followed by ./autogen.sh, ./configure <your parameters> and make

levonoganesyan commented 2 years ago

Try to run this command before make: cd src/bls-signatures/build && make chiabls_la && cd -

fanaticalfishing commented 2 years ago

Thank you for the fast reply guys. I have tried everything suggested.

cat /etc/os-release "NAME="Ubuntu" VERSION="20.04.3 LTS (Focal Fossa)"

gcc --version "gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

Last week I was able to compile on a Digital Ocean and Amazon VPS with no problems. I also compiled on my laptop and on a raspberry pi 4. Now I am unable to compile on new vps's or the raspberry pi Below are the commands I used to compile. I can still compile without error on my laptop, which has not been updated since last week.

sudo apt-get update sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils libboost-all-dev libgmp-dev cmake sudo apt-get install software-properties-common sudo add-apt-repository ppa:bitcoin/bitcoin sudo sed -i 's/focal/artful/g' /etc/apt/sources.list.d/bitcoin-ubuntu-bitcoin-focal.list #There is no ppa for focal so I used artful sudo apt-get update sudo apt-get install libdb4.8-dev libdb4.8++-dev sudo apt-get install libminiupnpc-dev libzmq3-dev sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler libqrencode-dev git clone https://github.com/firoorg/firo cd firo ./autogen.sh ./configure --with-incompatible-bdb --without-gui make

I tried cd src/bls-signatures/build && make chiabls_la && cd -

"Scanning dependencies of target chiabls_la [100%] Generating ../libchiabls.la [100%] Built target chiabls_la"

But still get this error

/root/firo "make[3]: Leaving directory '/root/firo/src/secp256k1' make[3]: Entering directory '/root/firo/src/tor' make[4]: Entering directory '/root/firo/src/tor' make[4]: Nothing to be done for 'GNUmakefile'. make[4]: Leaving directory '/root/firo/src/tor' make[3]: 'install' is up to date. make[3]: Leaving directory '/root/firo/src/tor' CXXLD firod g++: error: bls-signatures/build/.libs/libchiabls.a: No such file or directory make[2]: [Makefile:6157: firod] Error 1 make[2]: Leaving directory '/root/firo/src' make[1]: [Makefile:15992: all-recursive] Error 1 make[1]: Leaving directory '/root/firo/src' make: *** [Makefile:727: all-recursive] Error 1

I also tried make distclean followed by ./autogen.sh, ./configure and make

"make[5]: Leaving directory '/root/firo/src/bls-signatures/build' make[5]: Entering directory '/root/firo/src/bls-signatures/build' /usr/bin/ar: /root/firo/src/bls-signatures/build/.libs/libchiabls.a: No such file or directory make[5]: [src/CMakeFiles/combined_custom.dir/build.make:60: src/CMakeFiles/combined_custom] Error 1 make[5]: Leaving directory '/root/firo/src/bls-signatures/build' make[4]: [CMakeFiles/Makefile2:220: src/CMakeFiles/combined_custom.dir/all] Error 2 make[4]: Leaving directory '/root/firo/src/bls-signatures/build' make[3]: [Makefile:130: all] Error 2 make[3]: Leaving directory '/root/firo/src/bls-signatures/build' make[2]: [Makefile:5: build/libchiabls.la] Error 2 make[2]: Leaving directory '/root/firo/src/bls-signatures' make[1]: [Makefile:15992: all-recursive] Error 1 make[1]: Leaving directory '/root/firo/src' make: [Makefile:727: all-recursive] Error 1

levonoganesyan commented 2 years ago

Can you also run find . -name libchiabls.la and find . -name libchiabls.a and paste output here?

fanaticalfishing commented 2 years ago

Can you also run find . -name libchiabls.la and find . -name libchiabls.a and paste output here?

~/firo# find . -name libchiabls.a ~/firo# find . -name libchiabls.la ./src/bls-signatures/build/libchiabls.la

levoncrypto commented 2 years ago

Try to manually create src/bls-signatures/build/.lib folder and run make again: mkdir src/bls-signatures/build/.lib

fanaticalfishing commented 2 years ago

Try to manually create src/bls-signatures/build/.lib folder and run make again: mkdir src/bls-signatures/build/.lib

I still get this error Scanning dependencies of target combined_custom make[5]: Leaving directory '/root/firo/src/bls-signatures/build' make[5]: Entering directory '/root/firo/src/bls-signatures/build' /usr/bin/ar: /root/firo/src/bls-signatures/build/.libs/libchiabls.a: No such file or directory make[5]: [src/CMakeFiles/combined_custom.dir/build.make:60: src/CMakeFiles/combined_custom] Error 1 make[5]: Leaving directory '/root/firo/src/bls-signatures/build' make[4]: [CMakeFiles/Makefile2:220: src/CMakeFiles/combined_custom.dir/all] Error 2 make[4]: Leaving directory '/root/firo/src/bls-signatures/build' make[3]: [Makefile:130: all] Error 2 make[3]: Leaving directory '/root/firo/src/bls-signatures/build' make[2]: [Makefile:5: build/libchiabls.la] Error 2 make[2]: Leaving directory '/root/firo/src/bls-signatures' make[1]: [Makefile:15992: all-recursive] Error 1 make[1]: Leaving directory '/root/firo/src' make: [Makefile:727: all-recursive] Error 1

psolstice commented 2 years ago

Please try to remove the .la file

rm ./src/bls-signatures/build/libchiabls.la
fanaticalfishing commented 2 years ago

I found the problem. It is in this file. firo/src/bls-signatures/src/CMakeLists.txt

--- CMakeLists.txt.old 2022-01-20 17:16:46.266703000 -0600 +++ CMakeLists.txt 2022-01-19 18:10:45.473944000 -0600 @@ -13,7 +13,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/../contrib/catch )

-set(C_LIB ${CMAKE_BINARY_DIR}/.libs/libchiabls.a) +set(C_LIB ${CMAKE_BINARY_DIR}/libchiabls.a)

add_library(chiabls ${CMAKE_CURRENT_SOURCE_DIR}/privatekey.cpp)

justanwar commented 2 years ago

Fixed in #1138, please try with the new updated readme.

PanderMusubi commented 2 years ago

Building Firo 0.14.9.5. on RPi4 with Raspbian 11 is now stuck on this

cd depends

NO_QT=true make -j`nproc`
...
/home/pi/firo-0.14.9.5/depends/work/download/openssl-1.1.1m/openssl-1.1.1m.tar.gz.temp: OK
Extracting openssl...
/home/pi/firo-0.14.9.5/depends/sources/openssl-1.1.1m.tar.gz: OK
Preprocessing openssl...
Configuring openssl...
Configuring OpenSSL version 1.1.1m (0x101010dfL) for 
Using os-specific seed configuration
Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-egd] [sctp] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--config=FILE] os/compiler[:flags]

pick os/compiler from:
BS2000-OSD BSD-generic32 BSD-generic64 BSD-ia64 BSD-sparc64 BSD-sparcv8 
BSD-x86 BSD-x86-elf BSD-x86_64 Cygwin Cygwin-i386 Cygwin-i486 Cygwin-i586 
Cygwin-i686 Cygwin-x86 Cygwin-x86_64 DJGPP MPE/iX-gcc UEFI UWIN VC-CE VC-WIN32 
VC-WIN32-ARM VC-WIN32-ONECORE VC-WIN64-ARM VC-WIN64A VC-WIN64A-ONECORE 
VC-WIN64A-masm VC-WIN64I aix-cc aix-gcc aix64-cc aix64-gcc android-arm 
android-arm64 android-armeabi android-mips android-mips64 android-x86 
android-x86_64 android64 android64-aarch64 android64-mips64 android64-x86_64 
bsdi-elf-gcc cc darwin-i386-cc darwin-ppc-cc darwin64-arm64-cc darwin64-ppc-cc 
darwin64-x86_64-cc gcc haiku-x86 haiku-x86_64 hpux-ia64-cc hpux-ia64-gcc 
hpux-parisc-cc hpux-parisc-gcc hpux-parisc1_1-cc hpux-parisc1_1-gcc 
hpux64-ia64-cc hpux64-ia64-gcc hpux64-parisc2-cc hpux64-parisc2-gcc hurd-x86 
ios-cross ios-xcrun ios64-cross ios64-xcrun iossimulator-xcrun iphoneos-cross 
irix-mips3-cc irix-mips3-gcc irix64-mips4-cc irix64-mips4-gcc linux-aarch64 
linux-alpha-gcc linux-aout linux-arm64ilp32 linux-armv4 linux-c64xplus 
linux-elf linux-generic32 linux-generic64 linux-ia64 linux-mips32 linux-mips64 
linux-ppc linux-ppc64 linux-ppc64le linux-sparcv8 linux-sparcv9 linux-x32 
linux-x86 linux-x86-clang linux-x86_64 linux-x86_64-clang linux32-s390x 
linux64-mips64 linux64-riscv64 linux64-s390x linux64-sparcv9 mingw mingw64 
nextstep nextstep3.3 sco5-cc sco5-gcc solaris-sparcv7-cc solaris-sparcv7-gcc 
solaris-sparcv8-cc solaris-sparcv8-gcc solaris-sparcv9-cc solaris-sparcv9-gcc 
solaris-x86-gcc solaris64-sparcv9-cc solaris64-sparcv9-gcc solaris64-x86_64-cc 
solaris64-x86_64-gcc tru64-alpha-cc tru64-alpha-gcc uClinux-dist 
uClinux-dist64 unixware-2.0 unixware-2.1 unixware-7 unixware-7-gcc vms-alpha 
vms-alpha-p32 vms-alpha-p64 vms-ia64 vms-ia64-p32 vms-ia64-p64 vos-gcc 
vxworks-mips vxworks-ppc405 vxworks-ppc60x vxworks-ppc750 vxworks-ppc750-debug 
vxworks-ppc860 vxworks-ppcgen vxworks-simlinux 

NOTE: If in doubt, on Unix-ish systems use './config'.
make: *** [funcs.mk:283: /home/pi/firo-0.14.9.5/depends/work/build/armv7l-unknown-linux-gnueabihf/openssl/1.1.1m-e7b68f6dcd7/./.stamp_configured] Error 1

echo $?
2

How to continue building the depends?

justanwar commented 2 years ago

Is this a 64-bit OS?

PanderMusubi commented 2 years ago

Not sure, does this help:

pi@xxxx:~ $ uname -a
Linux xxxx 5.15.32-v7l+ #1538 SMP Thu Mar 31 19:39:41 BST 2022 armv7l GNU/Linux
fanaticalfishing commented 2 years ago

Not sure, does this help:

pi@xxxx:~ $ uname -a
Linux xxxx 5.15.32-v7l+ #1538 SMP Thu Mar 31 19:39:41 BST 2022 armv7l GNU/Linux

Raspberry pi Os comes in 64 bit now https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit

PanderMusubi commented 2 years ago

Installed that, now kernel

Linux xxxx 5.15.32-v8+ #1538 SMP PREEMPT Thu Mar 31 19:40:39 BST 2022 aarch64 GNU/Linux

Buiding depends goes well. For make in the top-level directory on a RPi 4, use -j3 with make, otherse the process runs out of memory and fails. With make check, I get the following error:

../build-aux/test-driver: line 109: 157184 Aborted                 "$@" > $log_file 2>&1
FAIL: test/test_bitcoin
============================================================================
Testsuite summary for Firo Core 0.14.9
============================================================================
# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0
============================================================================
See src/test-suite.log
Please report to https://github.com/firoorg/firo/issues
============================================================================
make[4]: *** [Makefile:15877: test-suite.log] Error 1
make[4]: Leaving directory '/root/firo-0.14.9.5/src'
make[3]: *** [Makefile:15985: check-TESTS] Error 2
make[3]: Leaving directory '/root/firo-0.14.9.5/src'
make[2]: *** [Makefile:16083: check-am] Error 2
make[2]: Leaving directory '/root/firo-0.14.9.5/src'
make[1]: *** [Makefile:15769: check-recursive] Error 1
make[1]: Leaving directory '/root/firo-0.14.9.5/src'
make: *** [Makefile:726: check-recursive] Error 1
root@xxxx:~/firo-0.14.9.5# echo $?
2

additional info is

==========================================
   Firo Core 0.14.9: src/test-suite.log
==========================================

# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: test/test_bitcoin
=======================

Running 476 test cases...
34
unknown location(0): ^[[4;31;49mfatal error: in "mtp_tests/mtp_impl_integrity_test": memory access violation at address: 0x00000000: no mapping at fault address^[[0;39;49m
test/mtp_tests.cpp(18): ^[[1;36;49mlast checkpoint: "mtp_impl_integrity_test" test entry^[[0;39;49m

^[[1;31;49m*** 1 failure is detected in the test module "Firo Test Suite"
^[[0;39;49mtest_bitcoin: /root/firo-0.14.9.5/depends/aarch64-unknown-linux-gnu/include/boost/thread/pthread/condition_variable_fwd.hpp:81: boost::condition_variable::~condition_variable(): Assertion `!posix::pthread_mutex_destroy(&internal_mutex)' failed.
FAIL test/test_bitcoin (exit status: 134)

How to continue on this?

PanderMusubi commented 2 years ago

PS I have monitored the amount of free memory during the make check and that is not the cause of this error.

justanwar commented 2 years ago

Did you allocated any swap space?

PanderMusubi commented 2 years ago

No, just use the os without any changes. I think swap on RPi is risky as it more quickly deteriorates the SD card.

This particular test needs swap? Can I also skip this test? The device has 4 GB RAM so Firo can run without swap.

More info:

cat /proc/meminfo 
MemTotal:        3705692 kB
MemFree:         2133836 kB
MemAvailable:    3193644 kB
Buffers:           27684 kB
Cached:          1144708 kB
SwapCached:            0 kB
Active:           156464 kB
Inactive:        1106348 kB
Active(anon):        896 kB
Inactive(anon):   158596 kB
Active(file):     155568 kB
Inactive(file):   947752 kB
Unevictable:       68188 kB
Mlocked:              32 kB
SwapTotal:        102396 kB
SwapFree:         102396 kB
Dirty:               132 kB
Writeback:             0 kB
AnonPages:        158616 kB
Mapped:           187696 kB
Shmem:             69072 kB
KReclaimable:      26508 kB
Slab:              51644 kB
SReclaimable:      26508 kB
SUnreclaim:        25136 kB
KernelStack:        3520 kB
PageTables:         3208 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1955240 kB
Committed_AS:     840764 kB
VmallocTotal:   259653632 kB
VmallocUsed:        9064 kB
VmallocChunk:          0 kB
Percpu:              640 kB
CmaTotal:         327680 kB
CmaFree:          168692 kB
fanaticalfishing commented 2 years ago

By default the raspberry pi has 100mb of swap allocated. In my case, increasing the swap temporarily solved the problem. Maybe your issue is different, maybe not. If you don't want to try it, perhaps you can use the precompiled binaries that Anwar has generously provided for raspberry pi users.

PanderMusubi commented 2 years ago

The application works, just that that particular test fails and I was wondering why. If it is only because I do not have enough swap, than it will be fine as I will also test the application by using it and that does not need so much swap space.

For precompiled, I would prefer ones that get distributed by Firo officially.

fanaticalfishing commented 2 years ago

The binaries for the pi are official

PanderMusubi commented 2 years ago

Super. Do you have a link to them?

fanaticalfishing commented 2 years ago

https://github.com/firoorg/firo/releases Add binaries for Raspberry Pi (64-bit only)

PanderMusubi commented 2 years ago

Ah, right, I dismissed those when I was trying to get Firo working on 32 bit arch RPi and forgot about them. Anyway, building from src works too. Thanks for all the help.

fanaticalfishing commented 2 years ago

Cool. I'm glad you got it working. I think if we could get firo to use a tor onion address it would be better for decentralization. Tor would take care of routing the masternode traffic on a home network.