MPC-SoK / frameworks

Sample code and build environments for MPC frameworks
Other
486 stars 111 forks source link

emp docker image cannot be build on all platforms #47

Closed chart21 closed 3 years ago

chart21 commented 3 years ago

Hi, first of all great project! Building the docker images often does not work for me even on different machines with different OS. I tried Ubuntu 20.04.2.0, MAC OS, Windows 10. Building the EMP docker image fails at the last step on all platforms. Below are the relevant logs when building the image on MAC OS. Does anyone know how to get it running?

=> ERROR [8/8] RUN ["bash", "install.sh"] 100.7s

12 98.98 -- Found emp-tool: /usr/local/include

12 98.99 -- Found emp-ot: /usr/local/include

12 98.99 -- Found emp-sh2pc: /usr/local/include

12 99.00 -- Found EMP-AG2PC: /usr/local/include

12 99.00 -- Configuring done

12 99.01 -- Generating done

12 99.01 -- Build files have been written to: /root/ag_test

12 99.06 Scanning dependencies of target mult3.ag2pc

12 99.07 [ 25%] Building CXX object CMakeFiles/mult3.ag2pc.dir/test/mult3.ag2pc.cpp.o

12 100.0 In file included from /root/ag_test/test/mult3.ag2pc.cpp:3:0:

12 100.0 /root/ag_test/test/single_execution.h: In function 'void test(int, T*, std::cxx11::string, std::cxx11::string)':

12 100.0 /root/ag_test/test/single_execution.h:41:2: error: 'CircuitFile' was not declared in this scope

12 100.0 CircuitFile cf(file.c_str());

12 100.0 ^

12 100.0 /root/ag_test/test/single_execution.h:43:28: error: 'cf' was not declared in this scope

12 100.0 C2PC twopc(io, party, &cf);

12 100.0 ^

12 100.0 /root/ag_test/test/mult3.ag2pc.cpp: In function 'void test(int, emp::NetIO*, std::cxx11::string, std::cxx11::string)':

12 100.0 /root/ag_test/test/mult3.ag2pc.cpp:12:2: error: 'CircuitFile' was not declared in this scope

12 100.0 CircuitFile cf(file.c_str());

12 100.0 ^

12 100.0 /root/ag_test/test/mult3.ag2pc.cpp:16:32: error: 'cf' was not declared in this scope

12 100.0 C2PC twopc(io, party, &cf);

12 100.0 ^

12 100.6 CMakeFiles/mult3.ag2pc.dir/build.make:62: recipe for target 'CMakeFiles/mult3.ag2pc.dir/test/mult3.ag2pc.cpp.o' failed

12 100.6 make[2]: *** [CMakeFiles/mult3.ag2pc.dir/test/mult3.ag2pc.cpp.o] Error 1

12 100.6 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/mult3.ag2pc.dir/all' failed

12 100.6 make[1]: *** [CMakeFiles/mult3.ag2pc.dir/all] Error 2

12 100.6 Makefile:83: recipe for target 'all' failed

12 100.6 make: *** [all] Error 2


executor failed running [bash install.sh]: exit code: 2 The terminal process "/bin/bash '-c', 'docker build --pull --rm -f "frameworks/emp/Dockerfile" -t emp:latest "frameworks/emp"'" terminated with exit code: 1.

chart21 commented 3 years ago

Logs on Ubuntu:

Found OpenSSL: /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.0.2g") -- Found emp-tool: /usr/local/include
-- Found emp-ot: /usr/local/include
-- Found emp-sh2pc: /usr/local/include
-- Found EMP-AG2PC: /usr/local/include
-- Configuring done -- Generating done -- Build files have been written to: /root/ag_test Scanning dependencies of target mult3.ag2pc [ 25%] Building CXX object CMakeFiles/mult3.ag2pc.dir/test/mult3.ag2pc.cpp.o In file included from /root/ag_test/test/mult3.ag2pc.cpp:3:0: /root/ag_test/test/single_execution.h: In function 'void test(int, T, std::cxx11::string, std::cxx11::string)': /root/ag_test/test/single_execution.h:41:2: error: 'CircuitFile' was not declared in this scope CircuitFile cf(file.c_str()); ^ /root/ag_test/test/single_execution.h:43:28: error: 'cf' was not declared in this scope C2PC twopc(io, party, &cf); ^ /root/ag_test/test/mult3.ag2pc.cpp: In function 'void test(int, emp::NetIO, std::cxx11::string, std::cxx11::string)': /root/ag_test/test/mult3.ag2pc.cpp:12:2: error: 'CircuitFile' was not declared in this scope CircuitFile cf(file.c_str()); ^ /root/ag_test/test/mult3.ag2pc.cpp:16:32: error: 'cf' was not declared in this scope C2PC twopc(io, party, &cf); ^ CMakeFiles/mult3.ag2pc.dir/build.make:62: recipe for target 'CMakeFiles/mult3.ag2pc.dir/test/mult3.ag2pc.cpp.o' failed CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/mult3.ag2pc.dir/all' failed make[2]: [CMakeFiles/mult3.ag2pc.dir/test/mult3.ag2pc.cpp.o] Error 1 make[1]: [CMakeFiles/mult3.ag2pc.dir/all] Error 2 make: *** [all] Error 2 Makefile:83: recipe for target 'all' failed The command 'bash install.sh' returned a non-zero code: 2 The terminal process "/bin/bash '-c', 'docker build --pull --rm -f "emp/Dockerfile" -t emp:latest "emp"'" terminated with exit code: 2.

marsella commented 3 years ago

Thanks for the kind words.

EMP-toolkit updated their circuit representation classes, they're now called BristolFormat and BristolFashion instead of CircuitFile. The example code in emp/ag_test is not up to date with this representation.

I will try to fix this in the next few days. You can probably get around the issue by commenting out line 7 of emp/install.sh, which will skip building the active-secure library for now.

marsella commented 3 years ago

Fixed. Let me know if you have other issues.