To build SPDZ-2 on Arch Linux
, besides installing necessary packages (mpir
, libsodium
, etc.), You also need to do following steps:
(1) Add following line in CONFIG.mine
:
MY_CFLAGS = -DINSECURE
Otherwise, you will meet errors when executing Scripts/setup-online.sh
:
# Scripts/setup-online.sh
terminate called after throwing an instance of 'std::runtime_error'
what(): You are trying to use insecure benchmarking functionality for preprocessing.
You can activate this at compile time by adding -DINSECURE to the compiler options.
Make sure to run make clean as well.
Scripts/setup-online.sh: line 33: 10355 Aborted (core dumped) $SPDZROOT/Fake-Offline.x ${players} -lgp ${bits} -lg2 ${g} --default ${default}
dd: failed to open 'Player-Data/Private-Input-0': No such file or directory
dd: failed to open 'Player-Data/Private-Input-1': No such file or directory
(2) Execute make
command;
(3) Run Scripts/setup-online.sh
;
(4) SPDZ-2
requires python2
, but the default python
is python3
on Arch Linux
. So you need to install python2
manually:
# pacman -S python2
Then modify compile.py
:
#!/usr/bin/env python2
Otherwise, you will encounter following errors when running ./compile.py tutorial
:
# ./compile.py tutorial
Traceback (most recent call last):
File "./compile.py", line 19, in <module>
import Compiler
File "/root/SPDZ-2/Compiler/__init__.py", line 3, in <module>
import compilerLib, program, instructions, types, library, floatingpoint
ModuleNotFoundError: No module named 'compilerLib'
Execute ./compile.py tutorial
.
Now you can play the example:
# ./Server.x 2 5000 &
# Scripts/run-online.sh tutorial