paranoid_crypto
paranoid_crypto copied to clipboard
Docker install fails on M1 Mac
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:
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 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
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 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.
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.
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.