A P2P (peer-to-peer) marketplace for Monero users
✔️ = Currently in use; ⭕ = Optional; ❌ = Not currently in use or removed; ❔ = Not yet in use, but up for consideration
Library | Minimum Ver. | Purpose | Status |
---|---|---|---|
monero-cpp | latest | monero wallet and payment system | ✔️ |
libbcrypt | 1.3 | password hashing | ⭕ |
sqlite3 | 3.38.0 | database management | ✔️ |
QR Code generator | ? | qr code generation | ✔️ |
json | ? | json parsing | ✔️ |
curl | ? | currency conversion | ✔️ |
openssl | 1.1.1 | for curl, sha256 sum and message encryption | ✔️ |
Qt | 5.12.8 | graphical user interface | ✔️ |
libuv | ? | networking and child process | ✔️ |
raft | ? | consensus mechanism | ✔️ |
stduuid | ? | order number generation | ✔️ |
linenoise | ? | command line interface | ✔️ ⭕ |
lua | 5.1.5 | configuration script | ✔️ |
libpng | 1.6.37 | image exportation | ✔️ |
zlib | 1.2.12 | for libpng | ✔️ |
openpgp | ? | public-key encryption and digital signatures | ❔ |
0. Clone neroshop (and its submodules)
git clone --recurse-submodules https://github.com/larteyoh/testshop.git
cd testshop
1. Install dependencies
Debian/Ubuntu
# prerequisites
sudo apt install build-essential cmake git
# neroshop
sudo apt install libcurl4-openssl-dev libssl-dev libuv1-dev qtdeclarative5-dev qml-module-qt-labs-platform qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-shapes
# monero-cpp (monero)
sudo apt update && sudo apt install pkg-config libssl-dev libzmq3-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libpgm-dev qttools5-dev-tools libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler libudev-dev libboost-chrono-dev libboost-date-time-dev libboost-filesystem-dev libboost-locale-dev libboost-program-options-dev libboost-regex-dev libboost-serialization-dev libboost-system-dev libboost-thread-dev python3 ccache
Arch (needs to be updated)
# prerequisites
sudo pacman -Sy --needed base-devel cmake git
# neroshop
sudo pacman -Sy --needed curl openssl libuv
# monero-cpp (monero)
sudo pacman -Syu --needed boost openssl zeromq libpgm libsodium libunwind xz readline gtest python3 ccache qt5-tools hidapi libusb protobuf systemd
Fedora (needs to be updated)
# prerequisites
sudo dnf install gcc gcc-c++ make cmake git
# neroshop
sudo dnf install libcurl-devel openssl-devel libuv-devel libuv-static
# monero-cpp (monero)
sudo dnf install boost-static libstdc++-static pkgconf boost-devel openssl-devel zeromq-devel openpgm-devel libsodium-devel libunwind-devel xz-devel readline-devel gtest-devel ccache qt5-linguist hidapi-devel libusbx-devel protobuf-devel protobuf-compiler systemd-devel
2. Update monero-cpp submodules
cd external/monero-cpp && ./bin/update_submodules.sh
cd external/monero-project
3. Install expat (dependency of unbound) and unbound:
wget https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.bz2
tar -xf expat-2.4.8.tar.bz2
rm expat-2.4.8.tar.bz2
cd expat-2.4.8
./configure --enable-static --disable-shared
make
sudo make install
cd ../
wget https://www.nlnetlabs.nl/downloads/unbound/unbound-1.16.1.tar.gz
tar -xzf unbound-1.16.1.tar.gz
rm unbound-1.16.1.tar.gz
cd unbound-1.16.1
./configure --disable-shared --enable-static --without-pyunbound --with-libevent=no --without-pythonmodule --disable-flto --with-pthreads --with-libunbound-only --with-pic
make
sudo make install
cd ../
For Fedora users, you may need to add this line under the "find_package(Boost .." in case of an "undefined reference to icu_*" error:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -licuio -licui18n -licuuc -licudata")
4. Build monero-project to create .a libraries
make release-static
cd ../../../../
5. Build neroshop
To build with CMake:
# Build external libraries
cd external/
cmake -G"Unix Makefiles"
make
cd ..
# Build neroshop
cd build
cmake ..
make
# Run neroshop
./neroshop
To build with Premake (experimental - broken for now):
# Build external libraries
cd external/
premake5 gmake
cd ../build && make
# Build neroshop
cd ..
premake5 gmake
cd build && make
# Run neroshop
./bin/Debug/neroshop
To build for Android (requires Android NDK):