paranoid_crypto icon indicating copy to clipboard operation
paranoid_crypto copied to clipboard

Docker install fails on M1 Mac

Open legrego opened this issue 2 years ago • 6 comments

Hello,

I tried following the docker installation in the project readme, but it is not able to complete successfully on my M1 Macbook Pro. I don't have a non-M1 machine to test on, so I can't say if this is caused by having an M1 or not. Here is the full output from the install command:

➜  paranoid_crypto git:(main) docker build -t paranoid-img .
[+] Building 14.4s (10/10) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                       0.0s
 => => transferring dockerfile: 37B                                                                                                                                        0.0s
 => [internal] load .dockerignore                                                                                                                                          0.0s
 => => transferring context: 2B                                                                                                                                            0.0s
 => [internal] load metadata for docker.io/library/debian:latest                                                                                                           0.8s
 => [1/6] FROM docker.io/library/debian:latest@sha256:82bab30ed448b8e2509aabe21f40f0607d905b7fd0dec72802627a20274eba55                                                     0.0s
 => [internal] load build context                                                                                                                                          0.0s
 => => transferring context: 7.12kB                                                                                                                                        0.0s
 => CACHED [2/6] RUN useradd -ms /bin/bash paranoid-user                                                                                                                   0.0s
 => CACHED [3/6] RUN apt update && apt install -y python3 python3-pip python3-pybind11 python3-fpylll libgmp-dev protobuf-compiler                                         0.0s
 => CACHED [4/6] COPY ./ /home/paranoid-user/                                                                                                                              0.0s
 => CACHED [5/6] WORKDIR /home/paranoid-user                                                                                                                               0.0s
 => ERROR [6/6] RUN python3 -m pip install .                                                                                                                              13.6s
------
 > [6/6] RUN python3 -m pip install .:
#10 0.700 Processing /home/paranoid-user
#10 0.913 Collecting absl-py
#10 1.025   Downloading absl_py-1.2.0-py3-none-any.whl (123 kB)
#10 1.273 Collecting cryptography
#10 1.310   Downloading cryptography-37.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl (3.7 MB)
#10 1.629 Collecting gmpy
#10 1.649   Downloading gmpy-1.17.zip (147 kB)
#10 1.892 Collecting protobuf==3.20.*
#10 1.911   Downloading protobuf-3.20.1-cp39-cp39-manylinux2014_aarch64.whl (917 kB)
#10 2.108 Collecting scipy
#10 2.141   Downloading scipy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (40.1 MB)
#10 5.260 Collecting sympy
#10 5.281   Downloading sympy-1.10.1-py3-none-any.whl (6.4 MB)
#10 5.913 Collecting cffi>=1.12
#10 5.933   Downloading cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (448 kB)
#10 5.989 Collecting pycparser
#10 6.008   Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)
#10 6.016 Requirement already satisfied: numpy<1.25.0,>=1.18.5 in /usr/lib/python3/dist-packages (from scipy->paranoid-crypto==1.1.0) (1.19.5)
#10 6.043 Collecting mpmath>=0.19
#10 6.061   Downloading mpmath-1.2.1-py3-none-any.whl (532 kB)
#10 6.104 Building wheels for collected packages: paranoid-crypto, gmpy
#10 6.104   Building wheel for paranoid-crypto (setup.py): started
#10 6.230   Building wheel for paranoid-crypto (setup.py): finished with status 'error'
#10 6.230   ERROR: Command errored out with exit status 1:
#10 6.230    command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-aozg_3dr/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-aozg_3dr/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-2v1o_zm5
#10 6.230        cwd: /tmp/pip-req-build-aozg_3dr/
#10 6.230   Complete output (83 lines):
#10 6.230   running bdist_wheel
#10 6.230   running build
#10 6.230   running build_py
#10 6.230   creating build
#10 6.230   creating build/lib.linux-aarch64-3.9
#10 6.230   creating build/lib.linux-aarch64-3.9/paranoid_crypto
#10 6.230   copying paranoid_crypto/__init__.py -> build/lib.linux-aarch64-3.9/paranoid_crypto
#10 6.230   copying paranoid_crypto/paranoid_pb2.py -> build/lib.linux-aarch64-3.9/paranoid_crypto
#10 6.230   creating build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/paranoid.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/ntheory_util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/consts.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/ec_aggregate_checks.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/paranoid_rsa_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/roca.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/ec_util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/paranoid_ec_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/cr50_u2f_weakness_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/small_roots_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/keypair_generator.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/rsa_aggregate_checks.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/__init__.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/rsa_util_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/special_case_factoring.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/rsa_single_checks.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/paranoid_ecdsa_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/base_check.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/linalg_util_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/ec_util_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/rsa_util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/cr50_u2f_weakness.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/ecdsa_sig_checks.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/ec_single_checks.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/regression_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/small_roots.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/lcg_constants.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/lll.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/resources.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/hidden_number_problem.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/special_case_factoring_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/hidden_number_problem_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/paranoid_base_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/ntheory_util_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   copying paranoid_crypto/lib/linalg_util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   creating build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/berlekamp_massey.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/rng.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/__init__.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/random_test_suite.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/exp1.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/berlekamp_massey_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/util_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/nist_suite_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/lattice_suite.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/lattice_suite_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/nist_suite.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/extended_nist_suite.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/extended_nist_suite_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   copying paranoid_crypto/lib/randomness_tests/rng_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   creating build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 6.230   copying paranoid_crypto/lib/data/storage.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 6.230   copying paranoid_crypto/lib/data/default_storage.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 6.230   copying paranoid_crypto/lib/data/data_pb2.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 6.230   copying paranoid_crypto/lib/data/unseeded_rands.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 6.230   copying paranoid_crypto/lib/data/__init__.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 6.230   copying paranoid_crypto/lib/data/weak_keylist.RSA-1024.dat -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 6.230   copying paranoid_crypto/lib/data/weak_keylist.RSA-2048.dat -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 6.230   copying paranoid_crypto/lib/data/weak_keylist.RSA-4096.dat -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 6.230   copying paranoid_crypto/lib/data/keypair_table_small.lzma -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 6.230   running build_ext
#10 6.230   aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.9 -c flagcheck.cpp -o flagcheck.o -std=c++17
#10 6.230   building 'paranoid_crypto.lib.randomness_tests.cc_util.pybind.berlekamp_massey' extension
#10 6.230   creating build/temp.linux-aarch64-3.9
#10 6.230   creating build/temp.linux-aarch64-3.9/paranoid_crypto
#10 6.230   creating build/temp.linux-aarch64-3.9/paranoid_crypto/lib
#10 6.230   creating build/temp.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 6.230   creating build/temp.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests/cc_util
#10 6.230   creating build/temp.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests/cc_util/pybind
#10 6.230   aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I./ -I/usr/lib/python3/dist-packages/pybind11/include -I/usr/include/python3.9 -c paranoid_crypto/lib/randomness_tests/cc_util/berlekamp_massey.cc -o build/temp.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests/cc_util/berlekamp_massey.o -std=c++17 -fvisibility=hidden -g0 -mpclmul
#10 6.230   aarch64-linux-gnu-gcc: error: unrecognized command-line option ‘-mpclmul’
#10 6.230   error: command '/usr/bin/aarch64-linux-gnu-gcc' failed with exit code 1
#10 6.230   ----------------------------------------
#10 6.231   ERROR: Failed building wheel for paranoid-crypto
#10 6.231   Running setup.py clean for paranoid-crypto
#10 6.300   Building wheel for gmpy (setup.py): started
#10 7.873   Building wheel for gmpy (setup.py): finished with status 'done'
#10 7.874   Created wheel for gmpy: filename=gmpy-1.17-cp39-cp39-linux_aarch64.whl size=242167 sha256=9dea1bbe6e197e8938c309325ece84c87777e6da3aa7d4dbbaf3a9c45929c205
#10 7.874   Stored in directory: /home/paranoid-user/.cache/pip/wheels/51/cd/a9/d2cbef6019ffcb5d63560bf572a00956ce0ebf043519eaef5c
#10 7.875 Successfully built gmpy
#10 7.875 Failed to build paranoid-crypto
#10 7.901 Installing collected packages: pycparser, mpmath, cffi, sympy, scipy, protobuf, gmpy, cryptography, absl-py, paranoid-crypto
#10 11.46   WARNING: The script isympy is installed in '/home/paranoid-user/.local/bin' which is not on PATH.
#10 11.46   Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
#10 13.22     Running setup.py install for paranoid-crypto: started
#10 13.34     Running setup.py install for paranoid-crypto: finished with status 'error'
#10 13.34     ERROR: Command errored out with exit status 1:
#10 13.34      command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-aozg_3dr/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-aozg_3dr/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-j2dkl7xk/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/paranoid-user/.local/include/python3.9/paranoid-crypto
#10 13.34          cwd: /tmp/pip-req-build-aozg_3dr/
#10 13.34     Complete output (83 lines):
#10 13.34     running install
#10 13.34     running build
#10 13.34     running build_py
#10 13.34     creating build
#10 13.34     creating build/lib.linux-aarch64-3.9
#10 13.34     creating build/lib.linux-aarch64-3.9/paranoid_crypto
#10 13.34     copying paranoid_crypto/__init__.py -> build/lib.linux-aarch64-3.9/paranoid_crypto
#10 13.34     copying paranoid_crypto/paranoid_pb2.py -> build/lib.linux-aarch64-3.9/paranoid_crypto
#10 13.34     creating build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/paranoid.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/ntheory_util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/consts.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/ec_aggregate_checks.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/paranoid_rsa_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/roca.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/ec_util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/paranoid_ec_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/cr50_u2f_weakness_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/small_roots_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/keypair_generator.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/rsa_aggregate_checks.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/__init__.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/rsa_util_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/special_case_factoring.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/rsa_single_checks.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/paranoid_ecdsa_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/base_check.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/linalg_util_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/ec_util_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/rsa_util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/cr50_u2f_weakness.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/ecdsa_sig_checks.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/ec_single_checks.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/regression_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/small_roots.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/lcg_constants.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/lll.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/resources.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/hidden_number_problem.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/special_case_factoring_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/hidden_number_problem_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/paranoid_base_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/ntheory_util_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     copying paranoid_crypto/lib/linalg_util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     creating build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/berlekamp_massey.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/rng.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/__init__.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/random_test_suite.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/exp1.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/berlekamp_massey_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/util_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/util.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/nist_suite_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/lattice_suite.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/lattice_suite_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/nist_suite.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/extended_nist_suite.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/extended_nist_suite_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     copying paranoid_crypto/lib/randomness_tests/rng_test.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     creating build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 13.34     copying paranoid_crypto/lib/data/storage.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 13.34     copying paranoid_crypto/lib/data/default_storage.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 13.34     copying paranoid_crypto/lib/data/data_pb2.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 13.34     copying paranoid_crypto/lib/data/unseeded_rands.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 13.34     copying paranoid_crypto/lib/data/__init__.py -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 13.34     copying paranoid_crypto/lib/data/weak_keylist.RSA-1024.dat -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 13.34     copying paranoid_crypto/lib/data/weak_keylist.RSA-2048.dat -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 13.34     copying paranoid_crypto/lib/data/weak_keylist.RSA-4096.dat -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 13.34     copying paranoid_crypto/lib/data/keypair_table_small.lzma -> build/lib.linux-aarch64-3.9/paranoid_crypto/lib/data
#10 13.34     running build_ext
#10 13.34     aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.9 -c flagcheck.cpp -o flagcheck.o -std=c++17
#10 13.34     building 'paranoid_crypto.lib.randomness_tests.cc_util.pybind.berlekamp_massey' extension
#10 13.34     creating build/temp.linux-aarch64-3.9
#10 13.34     creating build/temp.linux-aarch64-3.9/paranoid_crypto
#10 13.34     creating build/temp.linux-aarch64-3.9/paranoid_crypto/lib
#10 13.34     creating build/temp.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests
#10 13.34     creating build/temp.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests/cc_util
#10 13.34     creating build/temp.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests/cc_util/pybind
#10 13.34     aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-PN012d/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I./ -I/usr/lib/python3/dist-packages/pybind11/include -I/usr/include/python3.9 -c paranoid_crypto/lib/randomness_tests/cc_util/berlekamp_massey.cc -o build/temp.linux-aarch64-3.9/paranoid_crypto/lib/randomness_tests/cc_util/berlekamp_massey.o -std=c++17 -fvisibility=hidden -g0 -mpclmul
#10 13.34     aarch64-linux-gnu-gcc: error: unrecognized command-line option ‘-mpclmul’
#10 13.34     error: command '/usr/bin/aarch64-linux-gnu-gcc' failed with exit code 1
#10 13.34     ----------------------------------------
#10 13.34 ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-aozg_3dr/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-aozg_3dr/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-j2dkl7xk/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/paranoid-user/.local/include/python3.9/paranoid-crypto Check the logs for full command output.
------
executor failed running [/bin/sh -c python3 -m pip install .]: exit code: 1

System information: CleanShot 2022-08-09 at 15 33 09@2x

legrego avatar Aug 09 '22 19:08 legrego

I can't really test this. Probably removing the compiler flag will help. I.e. in setup.py replacing line 41 extra_compile_args=['-mpclmul']) with extra_compile_args=[]) There is likely an some way to determine which compiler flags can be used. I'm just not sure what a clean way would be.

bleichen avatar Aug 11 '22 08:08 bleichen

@bleichen thanks for the response.

Probably removing the compiler flag will help.

Yep, I should have tested this first 🙂

Would you accept a PR removing this compiler flag? I expect that it's probably important for other architectures, so I understand if not.

I am able to build the image & pass all tests without it:

 paranoid_crypto git:(main) ✗ docker run --name paranoid-container -it paranoid-img
paranoid-user@f040bc83d92a:~$ cd paranoid_crypto && python3 -m unittest discover -b -p "*test.py"
.................................................................................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 305 tests in 236.603s

OK

legrego avatar Aug 11 '22 12:08 legrego

Unfortunately, I don't have enough knowledge with setups. If I tried to fix this myself, I would likely break more than it would fix.

Anyway here is a short explanation of the compiler flag. The tests include an implementation of the FIPS 800-22 tests. One test computes the linear complexity using the Berlekamp-Massey algorithm. We noticed that some common random number generators (such as the Mersenne twister) can be recognized by computing the linear complexity but requires much larger input sizes than what NIST proposes. To run Berlekamp-Massey with those input sizes in reasonable time we had to find a fast version. We noticed that one CPU instruction, namelly the carry less multiplication on Intel CPUs is really useful if the algorithm is modified accordingly. The compiler flag enables this instruction. Without the flag slower fallback code is being used. Ideally similar speedups could be implemented on ARM CPUs.

bleichen avatar Aug 11 '22 13:08 bleichen

@bleichen I appreciate you taking the time to give me the background, that makes a lot of sense.

I'll see if I can find a way to determine which compiler flags can be used for the target architecture, but if there isn't a clean enough way to do this, then perhaps I'll just document this as a known issue with a workaround of removing that compiler flag if ARM support is required.

legrego avatar Aug 11 '22 13:08 legrego

You don't need to do anything. The issue will be fixed by someone at Google who is more familiar with the project setup and who knows how to run all the tests. I'm really grateful that you raised the issue.

bleichen avatar Aug 11 '22 14:08 bleichen

If you are familiar with python setup and knows a proper way to include the compiler flag only for Intel CPUs for now (a temporary solution as we still don't have speedups for other architectures), a PR would be welcome.

pedroysb avatar Aug 11 '22 14:08 pedroysb