Open romanini-ciandt opened 5 days ago
Hi @romanini-ciandt, thanks for flagging this.
The issue is that Tink binary wheels are built for manylinux
as of 1.10.0 (and most likely 1.11.0), and Alpine Linux
requires musllinux
(https://packaging.python.org/en/latest/specifications/platform-compatibility-tags/#musllinux).
Running pip debug --verbose
in the container reveals that indeed no .*manylinux.*
tag is is considered compatible.
# pip debug --verbose | grep 312
cp312-cp312-musllinux_1_2_x86_64
cp312-cp312-musllinux_1_1_x86_64
cp312-cp312-musllinux_1_0_x86_64
cp312-cp312-linux_x86_64
cp312-abi3-musllinux_1_2_x86_64
cp312-abi3-musllinux_1_1_x86_64
cp312-abi3-musllinux_1_0_x86_64
cp312-abi3-linux_x86_64
cp312-none-musllinux_1_2_x86_64
cp312-none-musllinux_1_1_x86_64
cp312-none-musllinux_1_0_x86_64
cp312-none-linux_x86_64
py312-none-musllinux_1_2_x86_64
py312-none-musllinux_1_1_x86_64
py312-none-musllinux_1_0_x86_64
py312-none-linux_x86_64
cp312-none-any
py312-none-any
So pip
tries to build the sdist, and fails because Bazel
is not installed (protoc seems available).
@morambro thanks for your response, I believe it will be better for my context to change the approach from py-tink
to tink-go
then, since I can't make modifications in the base image. As far as I checked there are some places where tink-go
is used with a CI using CFT image and it is working fine with this base image.
But just FYI, even after installing bazel
into the CFT image in my local, I received the following error when I tried to re run the pip install tink
(logs below).
Is it in py-tink's roadmap to make the usage more smooth with Linux Alpine? I ask because all the repos using Google's CFT uses a shared CI that runs on top of this image (gcr.io/cloud-foundation-cicd/cft/developer-tools) and it would be helpful for developers if the lib can be installed easily.
(venv) [root@5bd985027dac workspace]# bazel --version
bazel 7.2.0-0
(venv) [root@5bd985027dac workspace]# pip install tink
Collecting tink
Downloading tink-1.10.0.tar.gz (211 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 211.4/211.4 kB 4.1 MB/s eta 0:00:00
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting absl-py>=1.3.0 (from tink)
Downloading absl_py-2.1.0-py3-none-any.whl.metadata (2.3 kB)
Collecting protobuf!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0.dev0,>=3.20.2 (from tink)
Downloading protobuf-4.25.3-py3-none-any.whl.metadata (541 bytes)
Downloading absl_py-2.1.0-py3-none-any.whl (133 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.7/133.7 kB 7.4 MB/s eta 0:00:00
Downloading protobuf-4.25.3-py3-none-any.whl (156 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 156.5/156.5 kB 8.2 MB/s eta 0:00:00
Building wheels for collected packages: tink
Building wheel for tink (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for tink (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [283 lines of output]
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-cpython-312
creating build/lib.linux-x86_64-cpython-312/tink
copying tink/_insecure_keyset_handle.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_keyset_writer_test.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_kms_clients_test.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_insecure_keyset_handle_test.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/secret_key_access_import_test.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/__init__.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/tink_config.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/tink_config_test.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_keyset_reader.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_keyset_handle.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_json_proto_keyset_format_test.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_keyset_reader_test.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_json_proto_keyset_format.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_keyset_writer.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/cleartext_keyset_handle_test.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/secret_key_access.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/cleartext_keyset_handle.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_proto_keyset_format.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_secret_key_access.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_kms_clients.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/secret_key_access_test.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_keyset_handle_test.py -> build/lib.linux-x86_64-cpython-312/tink
copying tink/_proto_keyset_format_test.py -> build/lib.linux-x86_64-cpython-312/tink
creating build/lib.linux-x86_64-cpython-312/tink/hybrid
copying tink/hybrid/_hybrid_decrypt.py -> build/lib.linux-x86_64-cpython-312/tink/hybrid
copying tink/hybrid/_hybrid_wrapper.py -> build/lib.linux-x86_64-cpython-312/tink/hybrid
copying tink/hybrid/_hybrid_key_templates_test.py -> build/lib.linux-x86_64-cpython-312/tink/hybrid
copying tink/hybrid/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/hybrid
copying tink/hybrid/_hybrid_key_templates.py -> build/lib.linux-x86_64-cpython-312/tink/hybrid
copying tink/hybrid/_hybrid_wrapper_test.py -> build/lib.linux-x86_64-cpython-312/tink/hybrid
copying tink/hybrid/_hybrid_key_manager.py -> build/lib.linux-x86_64-cpython-312/tink/hybrid
copying tink/hybrid/_hybrid_encrypt.py -> build/lib.linux-x86_64-cpython-312/tink/hybrid
copying tink/hybrid/_hybrid_key_manager_test.py -> build/lib.linux-x86_64-cpython-312/tink/hybrid
creating build/lib.linux-x86_64-cpython-312/tink/signature
copying tink/signature/_signature_wrapper_test.py -> build/lib.linux-x86_64-cpython-312/tink/signature
copying tink/signature/_signature_key_manager.py -> build/lib.linux-x86_64-cpython-312/tink/signature
copying tink/signature/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/signature
copying tink/signature/_signature_key_templates.py -> build/lib.linux-x86_64-cpython-312/tink/signature
copying tink/signature/_signature_wrapper.py -> build/lib.linux-x86_64-cpython-312/tink/signature
copying tink/signature/_signature_key_manager_test.py -> build/lib.linux-x86_64-cpython-312/tink/signature
copying tink/signature/_public_key_verify.py -> build/lib.linux-x86_64-cpython-312/tink/signature
copying tink/signature/_public_key_sign.py -> build/lib.linux-x86_64-cpython-312/tink/signature
creating build/lib.linux-x86_64-cpython-312/tink/integration
copying tink/integration/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/integration
creating build/lib.linux-x86_64-cpython-312/tink/testing
copying tink/testing/bytes_io_test.py -> build/lib.linux-x86_64-cpython-312/tink/testing
copying tink/testing/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/testing
copying tink/testing/helper.py -> build/lib.linux-x86_64-cpython-312/tink/testing
copying tink/testing/keyset_builder_test.py -> build/lib.linux-x86_64-cpython-312/tink/testing
copying tink/testing/fake_kms_test.py -> build/lib.linux-x86_64-cpython-312/tink/testing
copying tink/testing/helper_test.py -> build/lib.linux-x86_64-cpython-312/tink/testing
copying tink/testing/fake_kms.py -> build/lib.linux-x86_64-cpython-312/tink/testing
copying tink/testing/keyset_builder.py -> build/lib.linux-x86_64-cpython-312/tink/testing
copying tink/testing/bytes_io.py -> build/lib.linux-x86_64-cpython-312/tink/testing
creating build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/_aead_key_manager.py -> build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/_kms_aead_key_manager.py -> build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/_kms_aead_key_manager_test.py -> build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/_aead_key_templates_test.py -> build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/_aead_wrapper.py -> build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/_kms_envelope_aead_test.py -> build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/_aead.py -> build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/_aead_wrapper_test.py -> build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/_kms_envelope_aead.py -> build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/_aead_key_templates.py -> build/lib.linux-x86_64-cpython-312/tink/aead
copying tink/aead/_aead_key_manager_test.py -> build/lib.linux-x86_64-cpython-312/tink/aead
creating build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/tink_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/xchacha20_poly1305_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/aes_ctr_hmac_streaming_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/aes_siv_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/ed25519_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/test_proto_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/aes_gcm_siv_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/aes_eax_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/kms_envelope_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/hmac_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/hpke_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/jwt_rsa_ssa_pss_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/kms_aead_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/ecdsa_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/aes_gcm_hkdf_streaming_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/jwt_ecdsa_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/config_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/common_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/aes_ctr_hmac_aead_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/aes_gcm_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/ecies_aead_hkdf_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/rsa_ssa_pss_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/jwt_rsa_ssa_pkcs1_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/hkdf_prf_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/aes_cmac_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/aes_cmac_prf_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/chacha20_poly1305_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/rsa_ssa_pkcs1_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/hmac_prf_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/empty_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/jwt_hmac_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/aes_ctr_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
copying tink/proto/prf_based_deriver_pb2.py -> build/lib.linux-x86_64-cpython-312/tink/proto
creating build/lib.linux-x86_64-cpython-312/tink/mac
copying tink/mac/_mac_key_templates.py -> build/lib.linux-x86_64-cpython-312/tink/mac
copying tink/mac/_mac.py -> build/lib.linux-x86_64-cpython-312/tink/mac
copying tink/mac/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/mac
copying tink/mac/_mac_wrapper.py -> build/lib.linux-x86_64-cpython-312/tink/mac
copying tink/mac/_mac_wrapper_test.py -> build/lib.linux-x86_64-cpython-312/tink/mac
copying tink/mac/_mac_key_manager_test.py -> build/lib.linux-x86_64-cpython-312/tink/mac
copying tink/mac/_mac_key_manager.py -> build/lib.linux-x86_64-cpython-312/tink/mac
copying tink/mac/_mac_key_templates_test.py -> build/lib.linux-x86_64-cpython-312/tink/mac
creating build/lib.linux-x86_64-cpython-312/tink/core
copying tink/core/_crypto_format_test.py -> build/lib.linux-x86_64-cpython-312/tink/core
copying tink/core/_primitive_wrapper.py -> build/lib.linux-x86_64-cpython-312/tink/core
copying tink/core/_registry_test.py -> build/lib.linux-x86_64-cpython-312/tink/core
copying tink/core/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/core
copying tink/core/_key_manager.py -> build/lib.linux-x86_64-cpython-312/tink/core
copying tink/core/_crypto_format.py -> build/lib.linux-x86_64-cpython-312/tink/core
copying tink/core/_tink_error.py -> build/lib.linux-x86_64-cpython-312/tink/core
copying tink/core/_registry.py -> build/lib.linux-x86_64-cpython-312/tink/core
copying tink/core/_primitive_set.py -> build/lib.linux-x86_64-cpython-312/tink/core
copying tink/core/_primitive_set_test.py -> build/lib.linux-x86_64-cpython-312/tink/core
creating build/lib.linux-x86_64-cpython-312/tink/prf
copying tink/prf/_prf_key_manager.py -> build/lib.linux-x86_64-cpython-312/tink/prf
copying tink/prf/_prf_set_wrapper.py -> build/lib.linux-x86_64-cpython-312/tink/prf
copying tink/prf/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/prf
copying tink/prf/_prf_key_templates.py -> build/lib.linux-x86_64-cpython-312/tink/prf
copying tink/prf/_prf_set_wrapper_test.py -> build/lib.linux-x86_64-cpython-312/tink/prf
copying tink/prf/_prf_set.py -> build/lib.linux-x86_64-cpython-312/tink/prf
copying tink/prf/_prf_key_manager_test.py -> build/lib.linux-x86_64-cpython-312/tink/prf
creating build/lib.linux-x86_64-cpython-312/tink/daead
copying tink/daead/_deterministic_aead.py -> build/lib.linux-x86_64-cpython-312/tink/daead
copying tink/daead/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/daead
copying tink/daead/_deterministic_aead_key_manager_test.py -> build/lib.linux-x86_64-cpython-312/tink/daead
copying tink/daead/_deterministic_aead_wrapper.py -> build/lib.linux-x86_64-cpython-312/tink/daead
copying tink/daead/_deterministic_aead_wrapper_test.py -> build/lib.linux-x86_64-cpython-312/tink/daead
copying tink/daead/_deterministic_aead_key_manager.py -> build/lib.linux-x86_64-cpython-312/tink/daead
copying tink/daead/_deterministic_aead_key_templates_test.py -> build/lib.linux-x86_64-cpython-312/tink/daead
copying tink/daead/_deterministic_aead_key_templates.py -> build/lib.linux-x86_64-cpython-312/tink/daead
creating build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_rewindable_input_stream.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_decrypting_stream.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_streaming_aead.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_rewindable_input_stream_test.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_streaming_aead_wrapper.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_streaming_aead_key_templates.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_streaming_aead_key_manager.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_pybind11_python_file_object_adapter_test.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_raw_streaming_aead.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_streaming_aead_key_templates_test.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_decrypting_stream_test.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_streaming_aead_wrapper_test.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_encrypting_stream_test.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_file_object_adapter.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_streaming_aead_test.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_file_object_adapter_test.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_encrypting_stream.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
copying tink/streaming_aead/_streaming_aead_key_manager_test.py -> build/lib.linux-x86_64-cpython-312/tink/streaming_aead
creating build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_verified_jwt_test.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_key_templates.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwk_set_converter.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_hmac_key_manager.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_json_util.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_format_test.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_signature_wrappers_test.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_format.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_validator_test.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_signature_wrappers.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_json_util_test.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwk_set_converter_test.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_mac_wrapper_test.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_signature_key_manager.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_key_templates_test.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_raw_jwt.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_signature_key_manager_test.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_error.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_verified_jwt.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_hmac_key_manager_test.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_public_key_verify.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_public_key_sign.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_raw_jwt_test.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_mac.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_mac_wrapper.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
copying tink/jwt/_jwt_validator.py -> build/lib.linux-x86_64-cpython-312/tink/jwt
creating build/lib.linux-x86_64-cpython-312/tink/internal
copying tink/internal/big_integer_util.py -> build/lib.linux-x86_64-cpython-312/tink/internal
copying tink/internal/big_integer_util_test.py -> build/lib.linux-x86_64-cpython-312/tink/internal
copying tink/internal/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/internal
creating build/lib.linux-x86_64-cpython-312/tink/integration/awskms
copying tink/integration/awskms/_aws_kms_integration_test.py -> build/lib.linux-x86_64-cpython-312/tink/integration/awskms
copying tink/integration/awskms/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/integration/awskms
copying tink/integration/awskms/_aws_kms_client.py -> build/lib.linux-x86_64-cpython-312/tink/integration/awskms
copying tink/integration/awskms/_aws_kms_client_test.py -> build/lib.linux-x86_64-cpython-312/tink/integration/awskms
creating build/lib.linux-x86_64-cpython-312/tink/integration/gcpkms
copying tink/integration/gcpkms/_gcp_kms_client_integration_test.py -> build/lib.linux-x86_64-cpython-312/tink/integration/gcpkms
copying tink/integration/gcpkms/_gcp_kms_client_test.py -> build/lib.linux-x86_64-cpython-312/tink/integration/gcpkms
copying tink/integration/gcpkms/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/integration/gcpkms
copying tink/integration/gcpkms/_gcp_kms_aead_test.py -> build/lib.linux-x86_64-cpython-312/tink/integration/gcpkms
copying tink/integration/gcpkms/_gcp_kms_integration_test.py -> build/lib.linux-x86_64-cpython-312/tink/integration/gcpkms
copying tink/integration/gcpkms/_gcp_kms_client.py -> build/lib.linux-x86_64-cpython-312/tink/integration/gcpkms
creating build/lib.linux-x86_64-cpython-312/tink/integration/hcvault
copying tink/integration/hcvault/__init__.py -> build/lib.linux-x86_64-cpython-312/tink/integration/hcvault
copying tink/integration/hcvault/_hcvault_kms_integration_test.py -> build/lib.linux-x86_64-cpython-312/tink/integration/hcvault
copying tink/integration/hcvault/_hcvault_kms_aead_test.py -> build/lib.linux-x86_64-cpython-312/tink/integration/hcvault
copying tink/integration/hcvault/_hcvault_kms_aead.py -> build/lib.linux-x86_64-cpython-312/tink/integration/hcvault
running build_ext
bazel clean --expunge
Extracting Bazel installation...
Starting local Bazel server and connecting to it...
INFO: Starting clean (this may take a while). Consider using --async if the clean takes more than several minutes.
bazel build //tink/cc/pybind:tink_bindings --compilation_mode=opt
Starting local Bazel server and connecting to it...
Computing main repo mapping:
WARNING: --enable_bzlmod is set, but no MODULE.bazel file was found at the workspace root. Bazel will create an empty MODULE.bazel file. Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel. For more details, please refer to https://github.com/bazelbuild/bazel/issues/18958.
Computing main repo mapping:
Computing main repo mapping:
Computing main repo mapping:
Computing main repo mapping:
Computing main repo mapping:
Computing main repo mapping:
Computing main repo mapping:
Computing main repo mapping:
Loading:
Loading: 0 packages loaded
Analyzing: target //tink/cc/pybind:tink_bindings (1 packages loaded)
Analyzing: target //tink/cc/pybind:tink_bindings (1 packages loaded, 0 targets configured)
Analyzing: target //tink/cc/pybind:tink_bindings (1 packages loaded, 0 targets configured)
[0 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (2 packages loaded, 0 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (5 packages loaded, 8 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (40 packages loaded, 11 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (43 packages loaded, 11 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (76 packages loaded, 221 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (77 packages loaded, 356 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (82 packages loaded, 373 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (110 packages loaded, 995 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (132 packages loaded, 1414 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (143 packages loaded, 1853 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (144 packages loaded, 1896 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (144 packages loaded, 1896 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (144 packages loaded, 1896 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (147 packages loaded, 2692 targets configured)
[1 / 1] checking cached actions
Analyzing: target //tink/cc/pybind:tink_bindings (148 packages loaded, 2885 targets configured)
[1 / 1] checking cached actions
INFO: Analyzed target //tink/cc/pybind:tink_bindings (149 packages loaded, 3618 targets configured).
[317 / 1,324] Creating runfiles tree bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/protobuf~/protoc.runfiles [for tool]; 0s local ... (6 actions, 3 running)
ERROR: /root/.cache/bazel/_bazel_root/16c35be2afea190dd0630e727e9c750d/external/com_google_absl/absl/base/BUILD.bazel:95:11: Compiling absl/base/internal/spinlock_wait.cc failed: (Exit 1): gcc failed: error executing CppCompile command (from target @@com_google_absl//absl/base:spinlock_wait) /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 '-D_FORTIFY_SOURCE=1' -DNDEBUG -ffunction-sections ... (remaining 36 arguments skipped)
Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
In file included from external/com_google_absl/absl/base/internal/spinlock_wait.cc:27:
external/com_google_absl/absl/base/internal/spinlock_linux.inc:17:10: fatal error: linux/futex.h: No such file or directory
17 | #include <linux/futex.h>
| ^~~~~~~~~~~~~~~
compilation terminated.
Target //tink/cc/pybind:tink_bindings failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 31.908s, Critical Path: 1.05s
INFO: 654 processes: 654 internal.
ERROR: Build did NOT complete successfully
error: command '/usr/bin/bazel' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for tink
Failed to build tink
ERROR: Could not build wheels for tink, which is required to install pyproject.toml-based projects
[notice] A new release of pip is available: 24.0 -> 24.1.1
[notice] To update, run: pip install --upgrade pip
(venv) [root@5bd985027dac workspace]#
Describe the bug:
The bug I'll describe has been reported before in an archived tink repo, it was closed and it is not solved yet.
In summary,
pip install tink
doesn't work if you don't have Bazel installed in your environment, but I don't see Bazel listed as a requirement in Tink PYPI page. The only requirement described in that page is:Requires: Python >=3.8
What was the expected behavior?
I would expect a successful Tink installation, like the following test in cloud shell (which contains bazel):
How can we reproduce the bug?
I'm trying to use Tink in Google's Cloud Foundation Toolkit image
Can you tell us more about your development environment?
Python 3.12.3 pip 24.0 Alpine Linux v3.20