# Cross-compilling Bulwark wallet for armhf architecture (Raspberry Pi 2) ## Build successful tested on Ubuntu Server 18.04 LTS (x86-64) ### 1. Install build essential packages (for non-GUI wallet) ``` sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3 libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev git ``` ### 2. Install ARM cross compiler toolchain ``` sudo apt-get install g++-arm-linux-gnueabihf ``` ### 3. Clone bulwark repo ``` git clone https://github.com/bulwark-crypto/Bulwark.git ``` ### 4. Switch branch to specific wallet version ``` cd Bulwark git checkout 1.3.1 ``` ### 5. Pull and build all dependencies ``` cd depends make HOST=arm-linux-gnueabihf NO_QT=1 NO_UPNP=1 -j$(nproc) ``` ### 6. Generate configure file ``` cd .. ./autogen.sh ``` ### 7. Change some autogenerated options (if you need so) _Below disabled graphical UI, UPNP (firewall-jumping support) and ZMQ notifications._ ``` ./configure --prefix=`pwd`/depends/arm-linux-gnueabihf --with-gui=no --without-miniupnpc --disable-zmq ``` ### 8. Compile using all cores ``` make -j$(nproc) ``` ### 9. Find built in last step binaries and manual copy them to RPi 2 device ``` find src -maxdepth 1 -type f -executable -exec file {} \; | grep -Eo "^([^,]+,){6}" ``` ## On RPi 2 device (tested with ArchLinuxARM-rpi-2) _Better to do all steps from non-root user_ ### 1. Copy binaries to system directories ``` sudo cp bulwarkd /usr/local/bin sudo cp bulwark-cli /usr/local/bin sudo cp bulwark-tx /usr/local/bin ``` ### 2. Write required parameters to bulwark.conf (also add staking=1 if you want to stake coins) ``` cat > ~/.bulwark/bulwark.conf << EOL rpcuser=bulwark rpcpassword=some_strong_password EOL ``` ### 3. Create systemd service _Change username `SOMEUSER` to yours_ ``` cat > /etc/systemd/system/bulwarkd.service << EOL [Unit] Description=Bulwarks's distributed currency daemon After=network.target [Service] Type=forking User=SOMEUSER WorkingDirectory=/home/SOMEUSER PIDFile=/home/SOMEUSER/.bulwark/bulwarkd.pid ExecStart=/usr/local/bin/bulwarkd -daemon -conf=/home/SOMEUSER/.bulwark/bulwark.conf -datadir=/home/SOMEUSER/.bulwark ExecStop=/usr/local/bin/bulwark-cli -conf=/home/SOMEUSER/.bulwark/bulwark.conf -datadir=/home/SOMEUSER/.bulwark stop Restart=on-failure RestartSec=1m StartLimitIntervalSec=5m StartLimitInterval=5m StartLimitBurst=10 [Install] WantedBy=multi-user.target EOL ``` ### 4. Activate and run service ``` sudo systemctl enable bulwarkd sudo systemctl start bulwarkd ``` ### 5. Check wallet status (will take some time to sync blocks) ``` watch bulwark-cli getinfo ```