Skip to content

Provide wheel for Windows ARM64 #1981

@khmyznikov

Description

@khmyznikov

What is the current behavior?

Unable to install the package from pip.

What is the desired behavior?

To have native wheel for WoA. GitHub Actions now supports win-arm64 for free.

How would this improve confluent-kafka?

Due to the library's popularity, a native version for the growing number of Windows on ARM (WoA) devices offers a better user experience

Install log
X:\GitHub\Windows-DevRel\Tools\ML-tests> pip install confluent-kafka            
Collecting confluent-kafka
  Downloading confluent_kafka-2.10.0.tar.gz (193 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: confluent-kafka
  Building wheel for confluent-kafka (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for confluent-kafka (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [132 lines of output]
      C:\temp\pip-build-env-3d5zghfo\overlay\Lib\site-packages\setuptools\config\_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated.
      !!
      
              ********************************************************************************
              Please consider removing the following classifiers in favor of a SPDX license expression:
      
              License :: OSI Approved :: Apache Software License
      
              See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
              ********************************************************************************
      
      !!
        dist._finalize_license_expression()
      C:\temp\pip-build-env-3d5zghfo\overlay\Lib\site-packages\setuptools\dist.py:761: SetuptoolsDeprecationWarning: License classifiers are deprecated.
      !!
      
              ********************************************************************************
              Please consider removing the following classifiers in favor of a SPDX license expression:

              License :: OSI Approved :: Apache Software License

              See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
              ********************************************************************************

      !!
        self._finalize_license_expression()
      running bdist_wheel
      running build
      running build_py
      creating build\lib.win-arm64-cpython-312\confluent_kafka
      copying src\confluent_kafka\deserializing_consumer.py -> build\lib.win-arm64-cpython-312\confluent_kafka
      copying src\confluent_kafka\error.py -> build\lib.win-arm64-cpython-312\confluent_kafka
      copying src\confluent_kafka\serializing_producer.py -> build\lib.win-arm64-cpython-312\confluent_kafka
      copying src\confluent_kafka\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka
      creating build\lib.win-arm64-cpython-312\confluent_kafka\admin
      copying src\confluent_kafka\admin\_acl.py -> build\lib.win-arm64-cpython-312\confluent_kafka\admin
      copying src\confluent_kafka\admin\_cluster.py -> build\lib.win-arm64-cpython-312\confluent_kafka\admin
      copying src\confluent_kafka\admin\_config.py -> build\lib.win-arm64-cpython-312\confluent_kafka\admin
      copying src\confluent_kafka\admin\_group.py -> build\lib.win-arm64-cpython-312\confluent_kafka\admin
      copying src\confluent_kafka\admin\_listoffsets.py -> build\lib.win-arm64-cpython-312\confluent_kafka\admin
      copying src\confluent_kafka\admin\_metadata.py -> build\lib.win-arm64-cpython-312\confluent_kafka\admin
      copying src\confluent_kafka\admin\_records.py -> build\lib.win-arm64-cpython-312\confluent_kafka\admin
      copying src\confluent_kafka\admin\_resource.py -> build\lib.win-arm64-cpython-312\confluent_kafka\admin
      copying src\confluent_kafka\admin\_scram.py -> build\lib.win-arm64-cpython-312\confluent_kafka\admin
      copying src\confluent_kafka\admin\_topic.py -> build\lib.win-arm64-cpython-312\confluent_kafka\admin
      copying src\confluent_kafka\admin\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\admin
      creating build\lib.win-arm64-cpython-312\confluent_kafka\avro
      copying src\confluent_kafka\avro\cached_schema_registry_client.py -> build\lib.win-arm64-cpython-312\confluent_kafka\avro
      copying src\confluent_kafka\avro\error.py -> build\lib.win-arm64-cpython-312\confluent_kafka\avro
      copying src\confluent_kafka\avro\load.py -> build\lib.win-arm64-cpython-312\confluent_kafka\avro
      copying src\confluent_kafka\avro\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\avro
      creating build\lib.win-arm64-cpython-312\confluent_kafka\kafkatest
      copying src\confluent_kafka\kafkatest\verifiable_client.py -> build\lib.win-arm64-cpython-312\confluent_kafka\kafkatest
      copying src\confluent_kafka\kafkatest\verifiable_consumer.py -> build\lib.win-arm64-cpython-312\confluent_kafka\kafkatest
      copying src\confluent_kafka\kafkatest\verifiable_producer.py -> build\lib.win-arm64-cpython-312\confluent_kafka\kafkatest
      copying src\confluent_kafka\kafkatest\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\kafkatest
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry
      copying src\confluent_kafka\schema_registry\avro.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry
      copying src\confluent_kafka\schema_registry\error.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry
      copying src\confluent_kafka\schema_registry\json_schema.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry
      copying src\confluent_kafka\schema_registry\mock_schema_registry_client.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry
      copying src\confluent_kafka\schema_registry\protobuf.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry
      copying src\confluent_kafka\schema_registry\rule_registry.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry
      copying src\confluent_kafka\schema_registry\schema_registry_client.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry
      copying src\confluent_kafka\schema_registry\serde.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry
      copying src\confluent_kafka\schema_registry\wildcard_matcher.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry
      copying src\confluent_kafka\schema_registry\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry
      creating build\lib.win-arm64-cpython-312\confluent_kafka\serialization
      copying src\confluent_kafka\serialization\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\serialization
      creating build\lib.win-arm64-cpython-312\confluent_kafka\_model
      copying src\confluent_kafka\_model\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\_model
      creating build\lib.win-arm64-cpython-312\confluent_kafka\_util
      copying src\confluent_kafka\_util\conversion_util.py -> build\lib.win-arm64-cpython-312\confluent_kafka\_util
      copying src\confluent_kafka\_util\validation_util.py -> build\lib.win-arm64-cpython-312\confluent_kafka\_util
      copying src\confluent_kafka\_util\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\_util
      creating build\lib.win-arm64-cpython-312\confluent_kafka\avro\serializer
      copying src\confluent_kafka\avro\serializer\message_serializer.py -> build\lib.win-arm64-cpython-312\confluent_kafka\avro\serializer
      copying src\confluent_kafka\avro\serializer\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\avro\serializer
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\confluent
      copying src\confluent_kafka\schema_registry\confluent\meta_pb2.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\confluent
      copying src\confluent_kafka\schema_registry\confluent\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\confluent
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules
      copying src\confluent_kafka\schema_registry\rules\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\confluent\types
      copying src\confluent_kafka\schema_registry\confluent\types\decimal_pb2.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\confluent\types
      copying src\confluent_kafka\schema_registry\confluent\types\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\confluent\types
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\cel
      copying src\confluent_kafka\schema_registry\rules\cel\cel_executor.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\cel
      copying src\confluent_kafka\schema_registry\rules\cel\cel_field_executor.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\cel
      copying src\confluent_kafka\schema_registry\rules\cel\cel_field_presence.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\cel
      copying src\confluent_kafka\schema_registry\rules\cel\constraints.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\cel
      copying src\confluent_kafka\schema_registry\rules\cel\extra_func.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\cel
      copying src\confluent_kafka\schema_registry\rules\cel\string_format.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\cel
      copying src\confluent_kafka\schema_registry\rules\cel\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\cel
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption
      copying src\confluent_kafka\schema_registry\rules\encryption\encrypt_executor.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption
      copying src\confluent_kafka\schema_registry\rules\encryption\kms_driver_registry.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption
      copying src\confluent_kafka\schema_registry\rules\encryption\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\jsonata
      copying src\confluent_kafka\schema_registry\rules\jsonata\jsonata_executor.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\jsonata
      copying src\confluent_kafka\schema_registry\rules\jsonata\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\jsonata
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\awskms
      copying src\confluent_kafka\schema_registry\rules\encryption\awskms\aws_driver.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\awskms
      copying src\confluent_kafka\schema_registry\rules\encryption\awskms\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\awskms
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\azurekms
      copying src\confluent_kafka\schema_registry\rules\encryption\azurekms\azure_aead.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\azurekms
      copying src\confluent_kafka\schema_registry\rules\encryption\azurekms\azure_client.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\azurekms
      copying src\confluent_kafka\schema_registry\rules\encryption\azurekms\azure_driver.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\azurekms
      copying src\confluent_kafka\schema_registry\rules\encryption\azurekms\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\azurekms
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\dek_registry
      copying src\confluent_kafka\schema_registry\rules\encryption\dek_registry\dek_registry_client.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\dek_registry
      copying src\confluent_kafka\schema_registry\rules\encryption\dek_registry\mock_dek_registry_client.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\dek_registry
      copying src\confluent_kafka\schema_registry\rules\encryption\dek_registry\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\dek_registry        
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\gcpkms
      copying src\confluent_kafka\schema_registry\rules\encryption\gcpkms\gcp_client.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\gcpkms
      copying src\confluent_kafka\schema_registry\rules\encryption\gcpkms\gcp_driver.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\gcpkms
      copying src\confluent_kafka\schema_registry\rules\encryption\gcpkms\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\gcpkms
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\hcvault
      copying src\confluent_kafka\schema_registry\rules\encryption\hcvault\hcvault_client.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\hcvault
      copying src\confluent_kafka\schema_registry\rules\encryption\hcvault\hcvault_driver.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\hcvault
      copying src\confluent_kafka\schema_registry\rules\encryption\hcvault\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\hcvault
      creating build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\localkms
      copying src\confluent_kafka\schema_registry\rules\encryption\localkms\local_client.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\localkms
      copying src\confluent_kafka\schema_registry\rules\encryption\localkms\local_driver.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\localkms
      copying src\confluent_kafka\schema_registry\rules\encryption\localkms\__init__.py -> build\lib.win-arm64-cpython-312\confluent_kafka\schema_registry\rules\encryption\localkms
      running build_ext
      building 'confluent_kafka.cimpl' extension
      creating build\temp.win-arm64-cpython-312\Release\temp\pip-install-f6jekzuo\confluent-kafka_05eeaee1a331468cb3ecff465b973108\src\confluent_kafka\src
      "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.43.34808\bin\HostARM64\ARM64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -IX:\GitHub\Windows-DevRel\Tools\ML-tests\.temp\env_orange_pyarrow\include -IX:\Python\Python312-arm64\include -IX:\Python\Python312-arm64\Include "-IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.43.34808\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.43.34808\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /TcC:\temp\pip-install-f6jekzuo\confluent-kafka_05eeaee1a331468cb3ecff465b973108\src\confluent_kafka\src\Admin.c /Fobuild\temp.win-arm64-cpython-312\Release\temp\pip-install-f6jekzuo\confluent-kafka_05eeaee1a331468cb3ecff465b973108\src\confluent_kafka\src\Admin.obj
      Admin.c
      C:\temp\pip-install-f6jekzuo\confluent-kafka_05eeaee1a331468cb3ecff465b973108\src\confluent_kafka\src\confluent_kafka.h(23): fatal error C1083: Cannot open include file: 'librdkafka/rdkafka.h': No such file or directory
      error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.43.34808\\bin\\HostARM64\\ARM64\\cl.exe' failed with exit code 2
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for confluent-kafka
Failed to build confluent-kafka

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementRequesting a feature changemaintenanceAny tech debt or routine action tasks that should be tracked with an issueos:windowsFor issues specific to Windows environments. Please add more specific OS details in the issuestatus:help-wantedIssues that would especially appreciate external development or attention

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions